5

Web プラットフォームとモバイル プラットフォームの両方で実行されているアプリケーションがあり、そのユーザーはアプリを使用して写真をアップロードできます。Web アプリケーションとモバイル アプリケーションの両方で画像のアップロードと表示を処理する Web サービスが必要です。

ASP.NET Web API をイメージ サービスとして使用し、写真をアップロードするために POST 要求を行うのは良い考えですか? このアプローチの長所と短所は何ですか? このようなサービスに ASP.NET Web API オーバーヘッドを使用していますか?

4

2 に答える 2

12

ASP.NET Web API は、非同期 I/O でうまく機能します。.NET 4 (および特定の .Net 4.5) で新しいタスクベースの非同期モデルを使用しているため、非同期コントローラーを簡単に構築し、複数の非同期操作を調整できます。このモデルが初めての場合は、channel9 でのこのプレゼンテーションをお勧めします。

アップロードの場合、ASP.NET Web API は、フォームからの一般的な HTML ファイル アップロード モデルに基づいて、完全に非同期の MIME マルチパート ファイルのアップロードをサポートします。source として利用可能な FileUploadSampleで、この例を確認できます。

StreamContent を使用してファイルを非同期的に提供することも簡単です。ここで (コントローラーで) ファイルを開き、HttpResponseMessage を作成し、ファイルをラップする StreamContent の形式で HttpContent を添付します。それだけです。

これはすべて、I/O でスレッドをブロックすることなく行われます。

お役に立てれば、

ヘンリク

于 2012-08-04T18:07:37.550 に答える
2

これは、アプリケーションの同時実行性とユーザー数によって異なります。

この種のアプリケーションの性質はI/O中心です。つまり、ASP.NETサーバーは、ほとんどの場合、I/O操作が完了するのを待機します。同時実行性が高いシナリオでは、これによりASP.NET管理対象スレッドプールがスレッド不足でクラッシュします。

私がお勧めします:

1)ASP.NETイニシアチブを維持する場合は、IAsyncプログラミングモデルを実装してください。これにより、Webアプリケーションをより拡張できるようになります。

2)IAsyncResultを処理したくない場合は、ロードバランサーを中央に配置し、水平方向にスケーリングして、必要に応じてサーバーを追加します。これにより、ASP.NETアプリケーションをWebファームとして再設計する必要が生じ、少し複雑になります(セッション状態管理、認証、承認など)。

3)別のテクノロジーを試してみてください。Node.jsは、I/Oの高レイテンシーのプログラミングモデルをうまく処理することでよく知られています。

于 2012-08-03T18:36:31.750 に答える