ashx またはハンドラーを使用する利点は何ですか? また、MVC を使用する場合、それらが必要ですか (なぜ必要でないのですか)?
フレームワークは重要ですか (2.0+)?
なぜハンドラーを使用する必要があるのですか? 最近、画像の取得に使用するように勧められましたが、理由がわかりません。
お時間をいただきありがとうございます。
編集 - ハンドラーの方が速いですか?
ほんの数例:
動的画像生成: 画像データを返す ASHX ハンドラーを作成し、その URL をタグで使用することにより、データ駆動型の画像を返すハンドラーを作成できます。例えば<img alt="user's custom icon" src="Icon.ashx?username=bob"></img>
REST ベースの XML または JSON データをクライアントの AJAX コードに返す。
これは1.0から利用できると思います
非 MVC プロジェクトでのハンドラーの目的は、HTML の外部で、何らかのタイプのエンコードされた応答を提供することです。通常、ハンドラーは XML (rss、RESTful など)、jQuery やその他の Javascript の JSON、またはファイル バイナリ ダウンロードなどの純粋なデータを返します。「デマンドオンリー」アプローチで大きなバイナリまたは要件を遅延読み込みする方法として、クライアントで実行される特別な JavaScript を返すためにハンドラーを使用しました。多かれ少なかれ、ハンドラーは「HTML 以外のもの」を返すために使用されます。
MVC では、ハンドラーから離れて、コントローラーを利用して好きなデータを返します。したがって、次のような方法で:
mywebsite.com/restapi/content/56223
RestfulContentController には、View() を返すのではなく、純粋な XML または JSON を返す Index() のメソッドがあります。
public class JSONContentController : Controller
{
public JsonResult Index(int ContentID)
{
// get Content() by ContentID
//
// return a JSON version
return Content().SerializeToJSON();
}
}
これらは、IIS にアクセスできない環境で作業しているが、css、画像、JavaScript などのファイルのキャッシュを最適化するために、遠い将来の有効期限応答ヘッダーなどを変更したい場合に非常に役立ちます。
画像の場合、その場で最適化のようなことを実行できるため、image.jpg.ashx?w=180&quality=70 のような画像をリクエストし、ハンドラーを使用して、クエリ文字列で渡された設定に基づいて画像を配信できます。