この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 3103|答える: 0

[出典] .NET/C# Httpクライアントソースコードの簡単な解析

[リンクをコピー]
掲載地 2023/06/24 13:05:41 | | | |
要件:マイクロサービスアーキテクチャでは、サービス間の呼び出しはHTTPプロトコルを用い、通常はHTTPリクエストを行うためにHttpClientクラスを使用します。Refit.HttpClientFactory、WebApiClientCoreHttpClientカプセル化に基づくサードパーティライブラリ。

HttpClientの使用に関する詳細は、以下をご覧ください:ハイパーリンクのログインが見えます。

HttpClientのソースコード:ハイパーリンクのログインが見えます。

HttpClientパラメータレスコンストラクタでは、HttpClientHandlerオブジェクトがデフォルトでインスタンス化され、HttpClientHandlerはHttpMessageHandler抽象クラスを継承して実装します。デフォルトフロー:HttpClient -> HttpClientHandler -> SocketsHttpHandler -> ...



ソースコード解析によると、HttpMessageHandlerから継承されたオブジェクトはHTTPリクエストを送信するHttpClientの具体的な実装です。 HttpClientはHttpRequestMessageオブジェクトは渡され、その後受け取られますHttpResponseMessageオブジェクトはコンテンツを返します。

新しいTestHttpHandlerクラスを作成し、HttpMessageHandler抽象化クラスを継承し、SendAsyncメソッドを実装し、HttpClientコンストラクタでインスタンス化してみてください。以下のコードで:

以下に示すように:



HttpClientを呼び出してGETリクエストを送信しても、SendAsyncメソッドの特定の実装ではHTTPリクエストは送信されず、ネットワークフローも存在しませんネットワークケーブルを抜くと、プログラムは通常通り動作します

HttpClientオブジェクトを使用する場合、基礎となるソケットはすぐに解放されませんこれがソケットの消耗問題を引き起こすことがあります。 Microsoftはこの問題を認識しており、HttpClientオブジェクトを作成するために ASP.NET コアプロジェクトでIHttpClientFactoryを使用することを推奨しています。IHttpClientFactoryは、工場で作成されたHttpMessageHandlerインスタンスをプールにまとめてリソース消費を削減します。 新しいHttpClientインスタンスを作成する際に、プール内のHttpMessageHandlerインスタンスを再利用することができます(生存期間が終了していなければ)

ASP.NET Core(XV)はHttpClientを使ってHTTPリクエストを送信します
https://www.itsvse.com/thread-10311-1-1.html

IHttpClientFactory for .NET :ハイパーリンクのログインが見えます。

ASP.NET Coreはパイプラインミドルウェアの概念を持っています。実際、HttpClientにはDelegating Handlerの助けを借りたパイプラインミドルウェアの概念もあります、下図に示されているように:



この機能を使うことで、リクエストやレスポンスを傍受でき、例えばリクエスト前のトークン認証の増加、リクエストとレスポンスに必要な時間の記録、レスポンスデータのラッピングなどが可能です。

DelegatingHandlerクラスを継承し、SendAsyncメソッドをオーバーライドします。



HTTPリクエストの記録には時間がかかり、コードは以下の通りです:

IHttpClientFactoryに連絡してHttpClientを作成し、以下の画像のようにリクエストを送信してください:



(終わり)




先の:ウェブ開発用のajaxフックはすべてのXMLHttpRequestリクエストを傍受します
次に:.NET/C# メソッドパラメータ NULL null
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com