ホームページ バックエンド開発 C#.Net チュートリアル ASP.NET Web APIのパフォーマンスを向上させる8つの方法

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

Nov 24, 2016 pm 01:06 PM
asp.net

ASP.NET Web APIは素晴らしいテクノロジーです。 Web API の作成は非常に簡単であるため、多くの開発者は、優れたパフォーマンスを実現するためにアプリケーションの構築に時間を費やしません。

この記事では、ASP.NET Web APIのパフォーマンスを向上させる8つのテクニックを紹介します。

1) 最速の JSON シリアル化ツールを使用します

JSON シリアル化は、ASP.NET Web API 全体のパフォーマンスに重大な影響を与えます。私のプロジェクトの 1 つでは、1 年半にわたって JSON.NET シリアル化ツールから ServiceStack.Text に切り替えました。

Web APIのパフォーマンスが約20%向上していることを計測しました。このシリアル化ツールを試してみることを強くお勧めします。ここでは、人気のあるシリアル化ツールのパフォーマンスに関する最近の比較データをいくつか紹介します。

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

出典: theburningmonk

更新: StackOverflow が Jil を使用しているようで、これはこれまでで最速の JSON シリアル化ツールであると主張されています。 テストデータは GitHub ページにあります Jil シリアライザー

2) DataReader から JSON を手動でシリアル化します

私は自分のプロジェクトでこの方法を使用し、パフォーマンスの利点を得ました。

DataReader から JSON 文字列を手動で作成し、不要なオブジェクトの作成を回避できるため、DataReader から値を取得してオブジェクトを書き込み、これらのオブジェクトから値を取得して JSON Serializer を使用して JSON を生成する必要がありません。

StringBuilder を使用して JSON を生成し、WebAPI の応答のコンテンツとして最後に StringContent を返します。

var response = Request.CreateResponse(HttpStatusCode.OK);
 
response.Content = new StringContent(jsonResult, Encoding.UTF8, "application/json");
 
return response;
ログイン後にコピー

Rick Strahl のブログでその他の方法を確認できます

3) 可能な限り他のプロトコル形式 (プロトコル バッファー、メッセージ パック) を使用します

プロジェクトでプロトコル バッファーやメッセージ パックなどの他のメッセージ形式を使用できる場合は、 JSON プロトコル形式を使用する代わりに MessagePack を使用します。

プロトコル バッファーのシリアル化が非常に高速であるだけでなく、返された結果のフォーマットも JSON よりも高速であるため、パフォーマンスが大幅に向上します。

4) 圧縮を実装します

ASP.NET Web APIでGZIPまたはDeflateを使用します。

圧縮は、応答パケットのサイズと応答速度を削減するための簡単で効果的な方法です。

これは使用するのに非常に必要な機能です。私のブログで圧縮に関する記事をもっと見ることができます。 ASP.NET Web API GZip 圧縮 ActionFilter with 8 行のコード。

5) Web API でのキャッシュの使用

出力の使用たとえば、1 日に 1 回だけ変更される同じ応答コンテンツに多数のユーザーがアクセスする場合、この方法でのキャッシュは重大な意味を持ちます。

ユーザーパスワードをメモリにキャッシュするなど、手動キャッシュを実装したい場合は、私のブログ投稿「ASP.NET Web APIでキャッシュを実装する簡単な方法」を参照してください。 6) できる限り一般的なADO.NETを使用してください

ADO.NET での手動書き込みは、依然としてデータベースから値を取得する最速の方法です。 Web API のパフォーマンスが本当に重要な場合は、ORM を使用しないでください

最も人気のある ORM 間のパフォーマンスの比較を確認できます。

Dapper 和hand-written fetch code 很快,果不其然,所有的ORM都比这三种慢.

  带有resultset缓存的LLBLGen 很快,但它要重新遍历一遍resultset并重新再内存中实例化对象。

 7)在 Web API 中实现异步方法

  使用异步的 Web API 服务大幅增加 Web API 对于Http 请求的处理数量。

  实现是简单的,只需使用 async 的关键字和 将你方法的返回值类型改为 Task 即可。

[HttpGet] 
public async Task OperationAsync() 
{  
    await Task.Delay(2000); 
}
ログイン後にコピー

 8) 返回多个结果集和集合的组合

  减少传输的次数不仅多数据库有好处,对于 Web API同样 ,你才有可能使用结果集的功能。

  也就是说你可以从DataReader去提取多个结果集 参见以下演示代码:

// read the first resultset
var reader = command.ExecuteReader();
   
// read the data from that resultset
while (reader.Read())
{
    suppliers.Add(PopulateSupplierFromIDataReader( reader ));
}
   
// read the next resultset
reader.NextResult();
   
// read the data from that second resultset
while (reader.Read())
{
    products.Add(PopulateProductFromIDataReader( reader ));
}
ログイン後にコピー

你可以在一个 Web API 的一次响应中返回多个对象,试着将你的返回的多个对象进行组合后返回 如下:

public class AggregateResult
{
     public long MaxId { get; set; }
     public List<Folder> Folders{ get; set; }
     public List<User>  Users{ get; set; }
}
ログイン後にコピー

这种方式将减少对你的WEB API的HTTP请求。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

次のレベルのCコンパイラを追加する方法 次のレベルのCコンパイラを追加する方法 Mar 03, 2025 pm 05:44 PM

この記事では、printf内の\ nエスケープシーケンスを使用してcで新しいライン文字を作成し、関数を置く方法について説明します。 機能を詳しく説明し、出力のラインブレークに使用することを示すコード例を提供します。

C言語のnullの代替案は何ですか C言語のnullの代替案は何ですか Mar 03, 2025 pm 05:37 PM

この記事では、CのNull Poernter recerferenceの課題を調査します。問題は、問題はnullではなく、その誤用であると主張しています。 記事では、参照前のチェック、ポインターInitialiなど、非参照を防止するためのベストプラクティスの詳細

どの言語コンパイラが優れていますか? どの言語コンパイラが優れていますか? Mar 03, 2025 pm 05:39 PM

この記事は、Cコンパイラの選択に関する初心者を案内しています。 GCCは、使いやすさ、幅広い可用性、広範なリソースが初心者に最適であるため、最適であると主張しています。 ただし、GCC、Clang、MSVC、およびTCCも比較して、その違いを強調しています

nullは、C言語での最新のプログラミングではまだ重要ですか? nullは、C言語での最新のプログラミングではまだ重要ですか? Mar 03, 2025 pm 05:35 PM

この記事では、現代のCプログラミングにおけるNullの継続的な重要性を強調しています。 進歩にもかかわらず、Nullは明示的なポインター管理にとって重要なままであり、有効なメモリアドレスがないことをマークすることにより、セグメンテーションの障害を防ぎます。 最高のPRAC

C言語コンパイラのWebバージョンは何ですか? C言語コンパイラのWebバージョンは何ですか? Mar 03, 2025 pm 05:42 PM

この記事では、初心者向けのオンラインCコンパイラをレビューし、使いやすさとデバッグ機能に焦点を当てています。 OnlineGDBとRepl.itは、ユーザーフレンドリーなインターフェイスと役立つデバッグツールのために強調表示されます。 プログラムやコンパイルなどのその他のオプション

C言語コンパイラによるコードをコピーする方法 C言語コンパイラによるコードをコピーする方法 Mar 03, 2025 pm 05:43 PM

この記事では、C IDEでの効率的なコードコピーについて説明します。 コピーはコンパイラ機能ではなくIDE機能であり、IDE選択ツールの使用、コード折りたたみ、検索/交換、テンプラなど、効率を向上させるための詳細戦略であることを強調しています。

c言語オンラインプログラミングウェブサイトc言語コンパイラ公式ウェブサイトの要約 c言語オンラインプログラミングウェブサイトc言語コンパイラ公式ウェブサイトの要約 Mar 03, 2025 pm 05:41 PM

この記事では、オンラインCプログラミングプラットフォームを比較し、デバッグツール、IDE機能、標準コンプライアンス、メモリ/実行の制限などの機能の違いを強調しています。 「最良の」プラットフォームはユーザーのニーズに依存していると主張しています。

c言語コンパイラインストールチュートリアル(コンピューターバージョン) c言語コンパイラインストールチュートリアル(コンピューターバージョン) Mar 03, 2025 pm 05:41 PM

このチュートリアルは、Windows、MacOS、LinuxにCコンパイラをインストールすることでユーザーをガイドします。 人気のコンパイラ(MINGW、Visual Studio、XCode、GCC)のインストールを詳述し、環境可変構成を説明し、トラブルシューティング手順を提供します

See all articles