HttpClientHandler VS SocketsHttpHandler

.NET Framework 和 .NET Core 2.0 及更低版本中由 HttpClient 使用的默認消息處理程序爲HttpClientHandler。


從 .NET Core 2.1 開始,類SocketsHttpHandler提供了更高級別的 HTTP 網絡類(例如HttpClient )使用的實現。使用SocketsHttpHandler提供了許多優點:

  • 與之前的實施相比,性能顯着提高。
  • 消除平臺依賴性,從而簡化部署和服務。例如,libcurl不再依賴於 macOS 的 .NET Core 和 Linux 的 .NET Core。
  • 所有 .NET 平臺上的行爲一致。

如果不需要進行此更改,並且您使用的是 .NET Core 2.1-3.1,則可以通過多種方式將應用程序配置爲使用較舊的System.Net.Http.HttpClientHandler類:

1.通過調用AppContext.SetSwitch方法,如下所示:
AppContext.SetSwitch("System.Net.Http.UseSocketsHttpHandler", false);
 
2.通過在.netcore.runtimeconfig.json配置文件中定義開關System.Net.Http.UseSocketsHttpHandler:
"runtimeOptions": {
  "configProperties": {
      "System.Net.Http.UseSocketsHttpHandler": false
  }
}

 

3.通過定義名爲的環境變量 DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER 並將其設置爲false或0。

需要注意的是,從 .NET 5 開始,這些配置選項不可用。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章