我正在为下一个任务寻找最佳实践解决方案。
我使用 ASP.NET Core 6.0。
我创建了一个可与公共 API 配合使用的 SDK。 SDK通过Http请求与API进行通信。我用HttpClient
类来发出http请求。
我的目标是构建一个 Nuget 包,以便消费者只需安装此 SDK 即可与公共 API 进行通信。
最后我们有两个项目:
- 消费项目
- SDK项目
问题:我必须在哪里实例化一个实例HttpClient
class?
我的想法:如果我在Sdk项目中这样做,并且只使用:
HttpClient client = new HttpClient();
不是很好。因为通过以下方式创建 HttpClient 类的实例是不好的做法new()
. See
https://learn.microsoft.com/en-us/dotnet/fundamentals/networking/http/httpclient-guidelines https://learn.microsoft.com/en-us/dotnet/fundamentals/networking/http/httpclient-guidelines
根据 MS 的此指南,我必须在消费者项目中通过 DI 初始化此实例:
services.AddHttpClient();
如果我选择此选项,我认为客户将很难注册我的 SDK,客户必须执行两个步骤:
- 登记
HttpClient
在 DI 容器中
- 在容器中注册SDK
是否可以减少步骤并让我的库的使用变得更容易?
Per https://learn.microsoft.com/en-us/dotnet/fundamentals/networking/http/httpclient-guidelines#recommended-use https://learn.microsoft.com/en-us/dotnet/fundamentals/networking/http/httpclient-guidelines#recommended-use只需使用库中声明的静态或单例 HttpClient 即可。
我同意你不应该依赖 DI,因为应用程序可能不会使用它,或者你可能会被alother无法访问 DI 的库。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)