0

我已经实现了 Xamgirl 在这篇文章中概述的方法:

https://xamgirl.com/sumption-restful-web-service-xamarin-forms-using-refit-part-3/

如果您查看代码,她正在为 MakeUpApi 和 RedditApi 实例化 2 个 ApiServices,从而为 2 个 HttpClient 实例实例化。

HttpClient 被设计为用作单个实例,所以我想知道是否有人知道如何做到这一点,记住 Fusillade 优先级可能会根据每个请求而有所不同。

提前致谢

4

1 回答 1

3

HttpClient 旨在被实例化一次并在应用程序的整个生命周期中重用。为每个请求实例化一个 HttpClient 类将耗尽重负载下可用的套接字数量。该问题将导致 SocketException 错误。解决该问题的可能方法是基于将 HttpClient 对象创建为单例或静态的。

但是当您将 HttpClient 用作单例或静态对象时,您可能会遇到另一个问题。在这种情况下,单例或静态 HttpClient 不遵守 DNS 更改,如.NET Core GitHub 存储库的本期所述

为了解决上述问题并使 HttpClient 实例的管理更容易,.NET Core 2.1 引入了一个新的HttpClientFactory,它还可以通过将 Polly 与其集成来实现弹性 HTTP 调用。

更详细的信息,请看:

https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/implement-resilient-applications/use-httpclientfactory-to-implement-resilient-http-requests

于 2019-06-05T05:33:43.453 回答