[当有多个客户端(公司)使用ASP.NET Core应用程序并且必须为每个这些公司在ASP.NET应用程序中维护带有相应客户端证书的HttpClient的单独实例时,最佳的应用程序设计是什么?] >
首先,关于应用程序的一些重要事实:
据我所知,对于每次对外部Web服务的调用都创建新的HttpClient对象不是最佳实践。我考虑过HttpClientFactory,但就我而言,每个HttpClient对象必须包含公司的相应客户端证书。我知道ASP.NET Core支持命名HttpClient来为每个公司维护单独的HttpClient,但是AFAIK这个命名客户端只能在Startup类中创建。这还不够,因为可以在ASP.NET应用程序运行时随时注册新公司,公司可以在应用程序运行时上载新证书,从而使现有的命名客户端无效,等等。
我正在考虑为每个公司维护一个包含一个HttpClient对象的静态列表。首次提出对公司的请求时,将使用相应的客户端证书创建新的HttpClient并将其添加到此列表中。对于来自同一公司(或办公室)的所有后续请求,从提到的静态列表中获取相应的HttpClient并重新使用。当然,我将必须在公司的HttpClient实例上建立一些锁定,以便在同一公司同时发出请求的情况下它不会中断。我对这种设计有一个担心,就是可能会有数百家公司,而且HTTP客户列表可能会很长。
您还有其他想法或建议吗?
[当有多个客户端(公司)使用ASP.NET Core应用程序以及带有相应客户端的HttpClient的单独实例时,最好的应用程序设计是什么……]
我正在考虑为每个公司维护一个包含一个HttpClient对象的静态列表。