当前位置: 首页 > news >正文

珠海专业网站制作公司wordpress注册发送验证码

珠海专业网站制作公司,wordpress注册发送验证码,湖南产品网络营销推荐咨询,云服务器哪家好用写在前面创建HttpClient实例的时候#xff0c;在内部会创建HttpMessageHandler链#xff0c;我们知道HttpMessageHandler是负责建立连接的抽象处理程序#xff0c;所以HttpClient的维护实际上就是维护HttpMessageHandler的使用#xff0c;释放HttpClient并不会及时释放连接… 写在前面创建HttpClient实例的时候在内部会创建HttpMessageHandler链我们知道HttpMessageHandler是负责建立连接的抽象处理程序所以HttpClient的维护实际上就是维护HttpMessageHandler的使用释放HttpClient并不会及时释放连接而通常情况下一般是创建全局使用的HttpClient实例以减少重复连接的次数。当然这种方式所带来的的弊端也是显而易见的因为当前的HttpClient实例所指向的服务器发生问题或者DNS发生变更那么该实例是无法做到自动更新指向的。以下为运行其流程图HttpClientFactory自.NET Core 2.1引入可以认为它是一个配置和创建HttpClient的中心化.NET Core通过引入HttpClientFactory用于自动化维护HttpMessageHandler池及其生命周期避免在手动管理 HttpClient生存期时出现的常见 DNS 问题。在默认情况下MessageHandler的活跃状态是两分钟也就是说在两分钟后就可以为HttpClient实例重新定位到正确的主机上。本文的讨论思路将从我们能看到的代码开始一步步深入。详细介绍HttpClientFactory的功能主要位于Microsoft.Extensions.Http包中它已经默认包含在Microsoft.AspNetCore.App元包中。针对HttpClientFactory的处理涉及到IHttpClientBuilder、IHttpClientFactory、IHttpMessageHandlerFactory、ITypedHttpClientFactory这几大接口以下将分别做讨论。services.AddHttpClient()我们在创建或者配置HttpClient对象的时候会在ConfigureServices方法中增加services.AddHttpClient()即可注册IHttpClientFactory。这段代码位于Microsoft.Extensions.DependencyInjection.HttpClientFactoryServiceCollectionExtensions中它会初始化相关信息并注册到IServiceCollection中这些信息包括日志、选项、核心抽象功能、类型客户端以及其他基础设施功能。需要注意的是在核心抽象功能中DefaultHttpClientFactory是单例模式的其所继承的接口对象的获取也是单例的而HttpMessageHandlerBuilder注册方式确是每一次GetService的时候都会创建一个新的HttpMessageHandlerBuilder实例。以下为services.AddHttpClient()的源代码其中标红部分为核心抽象功能的注册11: services.TryAddTransientHttpMessageHandlerBuilder, DefaultHttpMessageHandlerBuilder(); 12: services.AddSingletonDefaultHttpClientFactory(); 13: services.TryAddSingletonIHttpClientFactory(serviceProvider serviceProvider.GetRequiredServiceDefaultHttpClientFactory()); 14: services.TryAddSingletonIHttpMessageHandlerFactory(serviceProvider serviceProvider.GetRequiredServiceDefaultHttpClientFactory());DefaultHttpClientFactoryDefaultHttpClientFactory是一个用internal修饰的类意味着该类只能在在其内部使用。它继承了IHttpClientFactory、IHttpMessageHandlerFactory这两个接口。由此可见DefaultHttpClientFactory实例的创建被拆成了两种行为。IHttpClientFactory的定位是一个抽象工厂可以为指定名称的HttpClient实例创建自定义配置它只有一个方法HttpClient CreateClient(string name)。IHttpMessageHandlerFactory的定位也是一个抽象工厂它为指定名称的HttpMessageHandler实例创建自定义配置它只有一个方法HttpMessageHandler CreateHandler(string name)。我们先看一下这两个方法的实现会觉得很有意思可以看到我们通过名称查找HttpClient对象的时候也会依照该名称以GetOrAdd方式去查找相应的HttpMessageHandler对象也就说HttpClient对象和HttpMessageHandler对象可以通过名称关联起来。需要注意的时候在调用CreateHandler方法的时候会调用StartHandlerEntryTimer方法这个方法是干嘛的呢他维护着定时器。该方法位于Microsoft.Extensions.Http.ActiveHandlerTrackingEntry中我们将此类视为是一个不可变的(当然其内部的定时器是变化的)为“到期”池创建一个可以显著简化线程需求的新对象。除了这两个方法外我们要需要注意DefaultHttpClientFactory对HttpMessageHandler的管理功能。DefaultHttpClientFactory内部维护者一个定时器和两个HttpMessageHandler对象集合这两个集合分别是ActiveHandler和ExpiredHandler。内部定时器会定期从ExpiredHandler集合中扫描并清理无效的 HttpMessageHandler对象。ActiveHandler集合的增加是在调用CreateHandler方法时增加的其移除是在回调的时候移除这个移除入口也只有这一处。ExpiredHandler集合的增加也是在调用CreateHandler方法时通过内部的一个回调机制增加的其移除通过定时器定期扫描来实现的。这处需要注意的是ExpiredHandlerTrackingEntry这个类中有一个属性代码如下通过WeakReference 类型的变量来标识该HttpMessageHandler对象是否应该被从集合中移除。定时器一般是个比较消耗资源而且一旦用不好就会引发线程问题DefaultHttpClientFactory在处理定时器的时候首先通过停止所有挂起的计时器在清除后如果还需要继续处理无效HttpMessageHandler对象将会重新启动计时器虽然看似多余了点但是比通过锁定整个清理机制来确定是否阻塞清理任何并启动定时器要好多了。  以下为这两个集合的处理示意图
http://www.huolong8.cn/news/121750/

相关文章:

  • nas可以做视频网站吗wordpress 仿微信主题
  • 网站所有权问题湛江网络
  • 微信网站后台功能芙蓉建设官方网站
  • 上饶网站设计公司施工企业法定条件
  • 注册网站会员会泄露信息吗商业网站平台
  • 文件外链网站html标签
  • 微网站免费软件建设部标准规范网站
  • 网站ui设计用什么软件做微信公众号和网站建设
  • 网站模板 扁平化一个网站推广
  • 潍坊定制网站搭建湖南汽车软件网站建设
  • 用html5制作个人网站莱芜百姓网
  • 东莞建设网站制作电商平台推广方式有哪些
  • 网站建设一般多少钱比较合适微信小商城怎么开通
  • 高校网站建设需求分析报告325建筑人才网招聘
  • wordpress 手机自适应百度seo收录软件
  • 淄博网站建设公司有多少家平顺网站建设
  • 佛山做网站制作建设电子商务网站策划书
  • 营销型网站建设区别网站开发语言在线检测
  • 专为网站做点击量深圳响应式网站建设
  • 中国建设银行网站不好用有限责任公司设立条件
  • 找别人做网站怎么防止后门wordpress win主题
  • 网站 404 错误页面是否自动跳转深圳南山住房和建设局网站
  • 网站建设 招聘wordpress自动轮播图插件
  • 工程机械网站设计网站到期是否能换服务商
  • 宏大建设集团有限公司网站怎样咨询网络服务商
  • wordpress利用视频引流做seo网站标题重要吗
  • 网站空间购买流程1小时教你做出个人网页
  • 廉政网站 建设需求上海网页设计师培训
  • 自己怎么在电脑上做网站易名域名交易
  • 网页制作图片居中对齐网站关键词优化