MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
C Sharpとネットワーク - HttpClientのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
C Sharpとネットワーク - HttpClient
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == HttpClientは、アプリケーションにおいてHTTPリクエストを投げたい時に使用するクラスである。<br> .NET Framework 4.5から提供された機能で、それまではHttpWebRequestやWebClientが存在したが、<br> 簡単にHTTPリクエストを投げられるクラスとして追加された。<br><br> == HttpClientの仕様 == HttpClientをインスタンス生成した時、内部では新しいソケットをオープンしている。<br> つまり、メソッドでHttpClientのインスタンスを生成すると、常に新しいソケットをオープンして、リソースを消費することになる。<br> HttpClientのインスタンスを破棄した場合、ソケットがクローズされるタイミングは、状態がTIME_WAITに遷移して、暫く時間が経ってから解放される。<br> これはリクエストする回数が少ないのであれば問題は無いが、大量にリクエストを行う場合は大きなボトルネックとなる。<br><br> == 解決策 == Microsoftの公式ドキュメント[https://docs.microsoft.com/ja-jp/azure/architecture/antipatterns/improper-instantiation/ 不適切なインスタンス化のアンチパターン]の中でこの問題について取り上げており、<br> HttpClientを使用した実装をする時は、インスタンスを静的変数(static)にして使用するとの記載がある。<br> 下記のサンプルコードに実装方法を示す。<br><br> == サンプルコード == <source lang="cpp"> class SmapleClass { private static readonly HttpClient httpclient = null; static SampleClass() { httpclient = new HttpClient(); } public async Task<SomeResponse> CallAPI() { await httpclient.PostAsync("{URL}"); ... } } </source> <br> 上記のように記述して、HttpClientのオブジェクトを使用する。(TimeOutの設定等はコンストラクタで行う)<br> 同時実行の場合も、HttpClientはそのような利用を想定した設計となっている。<br><br> また、他の注意点を挙げると、1つのHttpClientオブジェクトで1つのソケット(1つのホスト)なので、<br> 異なるホストにもリクエストを投げる場合は、別のオブジェクトを生成する方が良い。<br><br> __FORCETOC__ [[カテゴリ:C_Sharp]]
C Sharpとネットワーク - HttpClient
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse