济南专业网站优化,wordpress生成微信小程序,湘潭关键词优化公司,做的的网站怎样上传早在2016年我们就报道过 #xff0c;.NET的HttpClient存在一些问题。随着.NET Core 2.1中HttpClientFactory的引入#xff0c;其中部分问题已经得到缓解。HttpClient的根本问题是#xff0c;每次调用资源好像都应该在使用后立即释放。在现实中#xff0c;那意味着每个目标服… 早在2016年我们就报道过 .NET的HttpClient存在一些问题。随着.NET Core 2.1中HttpClientFactory的引入其中部分问题已经得到缓解。HttpClient的根本问题是每次调用资源好像都应该在使用后立即释放。在现实中那意味着每个目标服务器都要创建一次然后在应用程序运行期间一直保留。除非是比如说需要清理DNS缓存。新增的HttpClientFactory让用户可以在应用程序启动时预先配置HttpClient。每项配置都有名称让使用正确的配置请求HttpClient变得简单。为了防止用户不需要自定义配置它也提供了未命名配置。考虑到字符串容易出错HttpClient的配置可以指定为特定的类型。例如用户可以创建GitHubService类配置。然后DI框架会确保为使用那个配置而非默认配置的HttpClient提供GitHubService实例。这个管理HttpClient的新框架不会改变基本的使用规则销毁HttpClient仍然是危险的。对于DNS缓存问题Karel Zikmund写到我们正在积极地讨论设计以期直接在ManagedHandler中解决DNS变化问题。目前我们正在考虑两个选项要么支持DNS TTL#24257要么是类似ConnectionLeaseTimeout这样的API#26331。我们会结合2.1中的HttpClientFactory确保DNS变化的情况得到解决。消息处理程序和自动重试HttpClient有一个鲜为人知的特性是能够添加消息处理程序。开箱即用HttpClientHandler控制着诸如是否允许自动重定向Cookie容器会用到、预认证如何发挥作用这样的特性。通过实现DelegatingHandler的子类可以进一步扩展。在Channel 9的一个示例中Daniel Roth展示了如何创建一个简单的重试处理程序。HttpClientFactory完善了这个特性它允许开发人员将HttpClientHandler作为HttpClient配置的一部分。这是有意为DI提供便利。SocketHttpHandlerHttpClientHandler子系统不只是为了改变行为它还可以完全改变HttpClient与网络通信的方式。微软正在通过引入SocketHttpHandler对此加以利用。这是一个“全新的托管HttpClientHandler”可以消除对“libcurl 对于Linux和WinHTTP对于Windows的平台依赖”。公告继续写到对于预览版1用户可以通过下面两种方式中的一种使用SocketHTTPHandler环境变量COMPlus_UseManagedHttpClientHandlertrue AppContextSystem.Net.Http.UseManagedHttpClientHandlertrue用户也可以开启ASP.NET的套接字模式。随着当前原生实现的引入这最终可能会成为默认设置。原文http://www.infoq.com/cn/news/2018/03/HttpClientFactory.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com