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

眺める: 15688|答える: 0

[ASP.NET] ASP.NET Web APIのパフォーマンスを向上させる8つの方法

[リンクをコピー]
掲載地 2016/01/11 14:37:43 | | | |
ASP.NET Web APIは素晴らしい技術です。 Web APIの作成は非常に簡単なため、多くの開発者は良い実行パフォーマンスを得るためにアプリケーションの構造化に時間を割きません。
この記事では、ASP.NET Web APIのパフォーマンスを向上させるための8つのテクニックを取り上げます。
1) 最速のJSONシリアライゼーションツールを使う
JSONのシリアライズは、ASP.NET Web API全体のパフォーマンスに重要な影響を与えます。 あるプロジェクトで、JSON.NET シリアライザーからServiceStack.Textに1年半移行しました。
Web APIのパフォーマンスが約20%向上したと測定しました。 このシリアライズツールを試すことを強くおすすめします。 以下は、人気のあるシリアライゼーションツールのパフォーマンスに関する最近の比較データをいくつかご紹介します。
SerializerPerformanceGraf
出典:theburningmonk
追記:StackOverflowは、これまでのJSONシリアライゼーションツールであるJilを使っているようです。 テストデータは彼らのGitHubページ「Jil serializer」で確認できます。
2) DataReaderから手動でJSONをシリアライズする
私はこの方法をプロジェクトで使ってきて、パフォーマンス向上の効果を得ています。
DataReaderから手動でJSON文字列を作成すれば、不要なオブジェクト作成を避けられます。そうすれば、DataReaderから値を取り出してオブジェクトに書き込み、その後それらのオブジェクトから値を取ってJSONシリアライザでJSONを生成する必要がありません。
StringBuilderを使ってJSONを生成し、WebAPIのレスポンス内容として最後にStringContentを返します。

さらに多くの方法については、リック・ストラールのブログでご覧いただけます
3) 可能な限り他のプロトコル形式(プロトコルバッファ、メッセージパック)を使用すること
プロジェクト内でプロトコルバッファやメッセージパックなど、JSONの代わりに他のメッセージフォーマットを使えるなら、
プロトコルバッファはシリアライズが非常に速いだけでなく、返送される結果ではJSONよりも速くフォーマットされるため、パフォーマンスが大幅に向上します。
4) 圧縮を実装する
ASP.NET Web APIでGZIPやDeflateを使ってください。
圧縮はレスポンスパケットのサイズと応答性をシンプルかつ効果的に削減する方法です。
これは非常に重要な機能で、圧縮に関する記事は私のブログでご覧いただけます。8行のコードでWeb API GZip圧縮ActionFilter ASP.NET。
5) キャッシュの利用
Web APIメソッドで出力キャッシュを使うことは非常に深刻です。 例えば、多数のユーザーが1日に1回しか変わらないレスポンスコンテンツにアクセスする場合などです。
ユーザーパスワードをメモリにキャッシュするなどの手動キャッシュを実装したい場合は、私のブログ記事「Web APIでキャッシュを実装する簡単な方法」ASP.NET をご覧ください。
6) 可能な限り典型的な ADO.NET を使用すること
手動で書いた ADO.NET は、データベースから値を取得する最も速い方法です。 もしWeb APIのパフォーマンスが本当に重要なら、ORMは使わないでください。
最も人気のあるORM同士のパフォーマンス比較を見ることができます。
ORMMapper


洗練された手書きのフェッチコードは高速で、案の定、すべてのORMはこれら3つより遅いです。
結果セットキャッシュを持つLLBLGenは高速ですが、結果セットを再度繰り返し、オブジェクトをメモリに再度インスタンス化する必要があります。
7) Web APIに非同期アプローチを実装する
非同期のWeb APIサービスを使用すると、Web APIが処理するHTTPリクエストの数が劇的に増加します。
実装はシンプルで、asyncキーワードを使い、メソッドのリターンバリュータイプをTaskに変更するだけです。

8) 複数の結果集合および集合の組み合わせを返す
転送回数を減らすことは、複数のデータベースにとってだけでなく、結果セットの力を活用できるWeb APIにも有益です。
つまり、DataReaderから複数の結果セットを抽出できるということです。以下のデモコードをご覧ください:

Web APIから単一のレスポンスで複数のオブジェクトを返すことができます。返されたオブジェクトを組み合わせて、以下のオブジェクトを返してみてください。

これにより、WEB APIへのHTTPリクエストが減ります。
この記事をお読みいただきありがとうございます。




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

Mail To:help@itsvse.com