天天看點

基于Yarp的http内網穿透庫HttpMouse

前幾天發表了《基于Yarp實作内網http穿透》,當時剛剛從原理圖變成了粗糙的代碼實作,項目連名字都還沒有,也沒有開放源代碼。在之後幾天的時間,我不斷地重構,朝着“可內建、可二次開發”的要求來完善項目,并項目取名為HttpMouse,象征着穿越能力很強的老鼠,同時把代碼開源在Github/HttpMouse上。

HttpMouse以庫的形式提供給開發者,讓開發者可以建構符合自身業務的http内網穿透系統。相比提供編譯好的二進制可執行檔案,庫的方式更靈活,對于沒有特殊定制要求的項目,samples裡的例子就可以直接滿足。

HttpMouse庫做為服務端庫,基于Yarp開發與擴充,遵循Yarp的設計,将自身設計為asp.netcore的中間件。開發者除了可以使用asp.netcore生态裡豐富的其它功能,還可以繼續使用Yarp靈活的配置功能。

HttpMouse在Yarp之上實作了以下功能:

可重寫的路由提供者;

可重寫的叢集提供者;

可重寫的内網用戶端連接配接認證者;

内網用戶端連接配接管理功能;

反向連接配接管理功能;

配置反向連接配接的ForwarderHttpClientFactory;

HttpMouse.Client庫做為用戶端庫,其作為公網的HttpMouse和區域網路的http服務的通訊橋梁,它既是公網HttpMouse的用戶端,也是區域網路http服務的用戶端。

HttpMouse.Client的內建方式可以如下:

獨立部署,與區域網路http服務不同程序或不同機器

內建部署,在區域網路http伺服器直接引用HttpMouse.Client

開源不容易,尤其是.net生态,以下是部落客開源的其它一些項目,歡迎來start

<col>

項目

簡介

WebApiClient

可擴充的聲明式的Http用戶端庫

Influxdb2.Client

Influxdb2讀寫性能最快的dotnet用戶端

FastGithub

github定制版的dns服務,解析github最優的ip

PredicateLib

謂詞篩選表達式Expression&lt;Func&lt;T, bool&gt;&gt;的一個擴充庫