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

眺める: 4002|答える: 2

[出典] ASP.NET Core(24)はRefit、MemoryPackによる高性能通信をベースにしています

[リンクをコピー]
2023年9月30日 22:10:36に投稿 | | | |
要件:ASP.NET Coreで使用されるマイクロサービスアーキテクチャに基づくと、一部のサービスはインフラストラクチャ(基本サービス)であり、特定のサービスと頻繁に通信する必要があるため、高性能かつ低遅延が特に重要です。

MemoryPackプロトコルを使ってデータをシリアライズすることは、JSONよりも2つの利点があります。すなわち、高速なシリアライズとコンテンツの小さな転送であり、これがパフォーマンス向上です。

復習:

MessagePackおよびprotobuf-netのパフォーマンスベンチマーク
https://www.itsvse.com/thread-10655-1-1.html

.net/c# Xml、JSON、ヘッシアン、プロトコルバッファのシリアライズ比較
https://www.itsvse.com/thread-4675-1-1.html

インターフェースはMemoryPackとJSONを使って20万回呼び出され、結果は以下の通りです。



MemoryPackは29,895ミリ秒かかります
JSONは34,283ミリ秒かかります

なぜなら、私は局所検査では、ギャップはあまり目立ちませんホスト間の通話やフィールドの増加、データ量の増加が起きれば、そのギャップはより明確になると思います。

ASP.NET Core構成はMemoryPackプロトコルをサポートしています

オブジェクトはMemoryPackプロトコルでシリアライズされ、その後HTTPプロトコルで送信されるため、ASP.NET CoreはMemoryPackプロトコルをサポートする必要があり、新しいMemoryPackInputFormatterクラスが作成されます。コードは以下の通りです。

その後、MvcOptionsは以下のコードでMemoryPackプロトコルのサポートを追加します。

以下のUserProfileコードでトランスポートオブジェクトを定義します:


コントローラメソッドは以下のコードでインターフェースを追加します:

コンソールはRefitを使ってHTTPリクエストを送信します

コンソールアプリケーションはMemoryPackを使ってオブジェクトをシリアライズし、HTTPリクエストをインターフェースに送信します。以下のコードで行われます:

テストは以下の通りです:



MemoryPackSerializerを使ってオブジェクトをシリアライズすると、以下のコードがエラーを出します:


System.Objectはこのプロバイダーに登録されていません

これはMemoryPackのバグで、以下のように修正されているはずです:

(終わり)





先の:Windows 11のファイルエクスプローラーのカクつき、行き詰まった解決策
次に:.NET/C# 新しい特徴レコードタイプ
 地主| 2023年10月1日 08:06:35に投稿 |
System.Objectはこのプロバイダーに登録されていません

この問題はリフィットで発生する問題で、以下の通りです。




 地主| 2024年12月31日 21:47:28に投稿 |
Refitでファイルをダウンロードして応答の流れを得られます(注:ダウンロードされたファイルストリーム全体はメモリに読み込まれません



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

Mail To:help@itsvse.com