2

ASP.NET WebAPI は、IIS 内で (Web ロールとして) ホストすることも、自己ホスト (worker ロールとして) することもできます。

var server = new HttpSelfHostServer(config);
server.OpenAsync().Wait();

上記で Node.JS を思い出しました。とにかく、これら 2 つのアプローチ間の技術的なトレードオフをすべてリストアップしようとしています。私はあなたが好むトレードオフについての意見を求めているわけではありません- それらのトレードオフが技術的な観点からどうであるかだけです。現在、実際の API 呼び出しのセルフホステッド モードで API 呼び出しあたりの応答時間が約 8% 高速化されていることがわかります (= Azure SQL + API 呼び出しの背後で処理される重い数値)。ただし、IIS の投棄が将来的に再発するのではないかと懸念しています。

では、WebAPI セルフ ホスティング ルートを使用する際に IIS を回避すると失われる主なトレードオフや機能は何ですか?

4

1 に答える 1

2
  • IISのすべての機能(ログ、アプリケーションプールのスケーリング、サイトのスロットリング/構成)が失われます...必要なすべての機能を自分で構築する必要があります
  • HttpContext?ASP.NETがそれを提供するので、あなたはそれを失います。ですから、認証などをもっと難しくしていることがわかりました
  • WebDeploy?あなたはそれを失うでしょう
  • IISには、要求の処理とサービスのウォームアップに関するIIS8の優れた特定の機能がいくつかあります。

それは本当にあなたのアプリケーションに依存します。必要な機能をそれぞれ書き直す必要があります。Node.jsは、Nginxサーバーにはない機能(Express)を実行するモジュールを提供します...(イベントループ非同期アーキテクチャ)以外は、より高速です。

これがあなたの質問の一部ではないことは知っていますが、8%のパフォーマンスの向上について言及しました...その向上は、IISパイプラインが関与していないためです。失ったIIS機能を模倣する独自のコードを作成すると、最終的にそのパフォーマンスが失われます。

Windows 2008 R2 / IIS 8を試しましたか?これには、IIS 7.xよりも「無料」のパフォーマンスの向上が含まれます:http: //blog.bitdiff.com/2012/06/performance-comparison-iis-75-and-iis-8.html

于 2012-11-14T21:15:57.853 に答える