asp.net core 是一个开源的,跨平台的,轻量级模块化框架,可用它来构建高性能的web程序,这篇文章我们将会讨论如何在 asp.net core 中使用 httpclientfactory。

为什么要使用 httpclientfactory

可以用 httpclientfactory 来集中化管理 httpclient,工厂提供了对 httpclient 的创建,配置和调度,值得一提的是:httpclient 一直都是 http 请求业务方面的一等公民。

httpclient 虽好,但它有一些缺点:

  • 创建太多的 httpclient 是一种低效的行为,因为当一个新客户端连接到远程 server 时,你的应用程序还需要承担着重连远程 server 的开销。
  • 如果每一个 request 都创建一个 httpclient,当应用程序负载过大, socket 必将耗尽,比如默认情况下 httpclient 会维持至少4分钟的 connection 连接。

所以推荐的做法是创建一个可供复用的共享式 httpclient 实例,如果你要打破沙锅问到低的话,即使是创建共享式的 httpclient 也会有很多问题,比如它会无视 dns 缓存生效,那怎么办呢?可以用 .net core 2.1 引入的 httpclientfactory 来解决此问题。。。用它来统一化的高效管理 httpclient。

使用 httpclientfactory

httpclientfactory 有两种使用方式。

  • namedclient
  • typedclient

所谓的 namedclient 就是注册带有标记的 httpclient 到 httpclientfactory 工厂中,下面的代码展示了一个名为 idgcustomapi 的 httpclient 的工厂注册。

所谓的 typedclient 就是注册一个你自定义的 httpclient,我想你肯定有点懵逼了,没关系,我现在就来自定义 httpclient, 然后通过 addhttpclient() 注册到容器中。

注入 controller

为了能够在 controller 中使用,可以将 ihttpclientfactory 通过构造函数方式进行注入,参考如下代码:

从 ihttpclientfactory 的默认实现 defaulthttpclientfactory 的源码也可以看出,httpclient 所关联的 httpmessagehandler 和 options 都被工厂跟踪和管控。

译文链接:

以上就是如何在asp.net core中使用httpclientfactory的详细内容,更多关于asp.net core使用httpclientfactory的资料请关注www.887551.com其它相关文章!