Я создаю.NET-оболочку для некоторого API типа REST. Я использую HttpClient для связи (отправка/получение Json). Существует много асинхронных методов.
Проверка осуществляется через файл cookie, который я получаю и храня в cookiecontainer. Должен ли я иметь отдельный httpclient для каждой функции или одного глобального httpClient? Если один для каждой функции отдельно, то какой лучший способ делиться файлами cookiecontainer и настраиваемыми заголовками, которые привязаны к каждому запросу?
Определенно за функцию, в using
утверждении. Пользовательские заголовки могут храниться в статической переменной, если они только считываются. Контейнер cookie, вероятно, потребует блокировки при работе с любыми членами экземпляра.
Я предлагаю сохранить номер так же, как API, который вы вызываете (так я закодировал мой), то есть, если вы звоните в Twitter API, просто держите один экземпляр HttpClient для этого, и если вы получаете доступ к API Facebook в в то же время, держите еще один для этого.
Имейте в виду, что некоторые метаданные не могут быть изменены после создания HttpClient (например, DefaultRequestHeaders), что имеет смысл, поскольку HttpClient предназначен для повторного использования для совершения нескольких вызовов (например, для куки файлов или для обмена информацией с помощью Auth).
per function
только если это не используется часто. Если вы используете HttpClient для доступа к своей базе данных, нет смысла многократно создавать одно и то же снова и снова, однако, если вы просто запускаете задание cron, то просто выполняйте его для каждой функции.