Webリクエストでは、Microsoft HttpClientを使用して別のサーバーを呼び出したいと思っています。私はMVC4(IISでホストされている)を使用しており、castle-windsorをIOCコンテナとして使用しています。私は、HttpClientがサーバーコール中に生きるように設計されていることを読んで、私の質問はこれをどのように実装すべきかということです。MVC4のHttpClientのライフスタイル(Castle-Windsorを使用)
私はいくつかのオプションを思い付く:
- はHttpClientをが複数の呼び出しのために設計されており、新しいものに私は1つを必要とするたびに作成されているという事実を無視します。
- コール間のHttpClientを格納するシングルトン(城のライフスタイル)オブジェクトを作成します。これにはどんなリスクがありますか?複数のWebリクエストが同じHTTPクライアントを使用している場合、パフォーマンスは悪くなりますか?
これを行うためのパターンはありますか?
これは、 'HttpClient'が複数の(別のスレッドからの)呼び出しを一度に良好なパフォーマンスで処理できることを意味しますか?呼び出しがロックで行われた場合、performaceは悪くなります。その場合、 'HttpClient'のプールを実装することをお勧めします – jabocop
これは議論の内容です。実際には、そうしないとパフォーマンスの問題が発生する可能性があります。私は大量の経験はまだありません。だから私は注意を払って誤っていると示唆していましたが、私はその性質の作品が出てきているので、何かを探し続けるつもりです。しかし、答え、アップフォート、コメントは良い例です。 –
あなたのコメントをありがとう。私はシングルトンとしてHttpClientを実装します。私はまた、MicrosoftのHttpClientのための[documentation](https://msdn.microsoft.com/en-us/library/system.net.http.httpclient%28v=vs.110%29.aspx)を見つけました。 Net Framwork 4.5と4.6)は、メソッドの束が実際にスレッドセーフであることを示します。 – jabocop