Какова рекомендация по повторному использованию graphserviceclient в microsoft graph .net sdk?

Я понял, что Microsoft Graph .Net SDK использует класс HttpClient.

https://github.com/microsoftgraph/msgraph-sdk-dotnet/blob/dev/src/Microsoft.Graph.Core/Requests/HttpProvider.cs

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

Есть ли аналогичная рекомендация по максимально возможному повторному использованию GraphServiceClient? Есть ли какие-то особые опасения по поводу создания экземпляра нового GraphServiceClient по запросу?

5
0
2 053
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Мне не известны какие-либо рекомендации, но если вы посмотрите на код как от GraphServiceClient, так и от базового BaseClient, состояние не сохраняется. Только входящий или дефолтный HttpProvider, и вот в чем проблема. Если вы полагаетесь на то, что GraphServiceClient каждый раз генерирует новый HttpProvider (и, следовательно, новый HttpClient), у вас возникает та же проблема, что и при создании нескольких экземпляров HttpClient.

Поэтому, если вы воссоздаете клиентов, вы должны, по крайней мере, предоставить им кэшированный HttpProvider. Кроме того, не так уж больно хранить весь клиент в кеше.

Ага. Те же правила, что и HttpClient. Попробуйте повторно использовать экземпляр, чтобы мы могли воспользоваться преимуществами существующих TCP-соединений.

Darrel Miller 15.09.2018 15:49

Это спасло мне жизнь :) Моя производительность api улучшилась примерно на 50% после того, как я использую HttpProvider как одноэлементный объект.

SanjayD 03.01.2019 20:42

Другие вопросы по теме