Переоснащение форм Xamarin - использование одного экземпляра HttpClient - PullRequest
0 голосов
/ 04 июня 2019

Я реализовал методологию, изложенную Xamgirl в этом посте:

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

Если вы посмотрите на код, он создает 2 ApiServices для MakeUpApi и RedditApi и, следовательно, 2 HttpClientinstances.

HttpClient предназначен для использования в качестве единственного экземпляра, поэтому мне интересно, знает ли кто-нибудь, как это сделать, учитывая, что приоритет Fusillade может варьироваться в зависимости от каждого запроса.

Спасибозаранее

1 Ответ

1 голос
/ 05 июня 2019

HttpClient предназначен для однократного создания экземпляра и повторного использования в течение всего жизненного цикла приложения. Создание класса HttpClient для каждого запроса приведет к исчерпанию количества сокетов, доступных при больших нагрузках. Эта проблема приведет к ошибкам SocketException. Возможные подходы к решению этой проблемы основаны на создании объекта HttpClient как одноэлементного или статического.

Но есть и другая проблема с HttpClient, которая может возникнуть при использовании его в качестве одноэлементного или статического объекта. В этом случае одноэлементный или статический HttpClient не учитывает изменения DNS, как объяснено в этой проблеме в репозитории .NET Core GitHub .

Чтобы устранить указанные выше проблемы и упростить управление экземплярами HttpClient, в .NET Core 2.1 был представлен новый HttpClientFactory , который также можно использовать для реализации устойчивых HTTP-вызовов путем интеграции с ним Polly.

Более подробная информация, пожалуйста, посмотрите:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...