В веб-запросе я хочу сделать вызов на другой сервер с помощью Microsoft HttpClient. Я использую MVC4 (размещен в IIS), а lock-windsor - как контейнер IOC. Я прочитал, что HttpClient предназначен для работы во время серверных вызовов, и мой вопрос заключается в том, как я должен это реализовать.Образ жизни HttpClient в MVC4 с использованием lock-windsor
я придумал несколько вариантов:
- игнорировать тот факт, что HttpClient предназначен для нескольких вызовов и создать новую каждый раз, когда мне нужно один.
- Создайте объект Singleton (образ жизни в замке), который хранит HttpClient между вызовами. Есть ли риск с этим? Будет ли производительность плохим, если несколько веб-запросов используют один и тот же HTTP-клиент?
Есть ли лучший образец для этого?
Означает ли это, что 'HttpClient' может обрабатывать сразу несколько вызовов (из разных потоков) с хорошей производительностью? Если вызовы выполняются в блокировке, функция будет плохой, и в этом случае может быть хорошей идеей реализовать пул 'HttpClient' – jabocop
. Это то, что говорит дискуссия. Фактически, это говорит о том, что это не может привести к проблемам с производительностью. У меня нет опыта с большим объемом, поэтому я предложил заблудиться на стороне осторожности, но у меня есть работа такого характера, поэтому я буду продолжать искать что-то окончательное. Но ответ, опросы и комментарии делают для этого хороший аргумент. –
Спасибо большое за ваши комментарии. Я буду использовать HttpClient как одноэлементный. Я также нашел [документацию] (https://msdn.microsoft.com/en-us/library/system.net.http.httpclient%28v=vs.110%29.aspx) для HttpClient из Microsoft (обновлено для. Net Framwork 4.5 и 4.6), что указывает на то, что куча методов на самом деле является потокобезопасной. – jabocop