MVCとWebAPI:どのASP.NETテクノロジを使用する必要がありますか?


この記事では、ASP.NET Model View Controller(MVC)とASP.NET Web APIの違いについて説明します。これらは、さまざまな要件に使用する必要があります。 深く掘り下げる前に、MVCが実際に何であるかについて簡単に紹介しましょう。

MVCまたはModel-View-Controllerは、アプリケーションを実際に分割するものです。

  • モデル-これらは、データベース内のモデル状態をフェッチするオブジェクトです。つまり、データベースからデータを取得し、特定の操作を実行して、データをデータベースに保存します。
  • 見る-ここで、開発者はデータモデルによって作成されたアプリケーションのUIまたはユーザーインターフェイスを「表示」できます。
  • コントローラー-コントローラーまたはコンポーネントは、ユーザーインタラクションを管理し、クエリ文字列値を管理し、値をモデルに転送します。

MVCは「System.Web.MVC」アセンブリにあります。 MVCフレームワークは、メンバーシップベースの認証、マスターページなどのASP.NET機能を利用します。 ASP.NET Webフォームを使用してWebアプリケーションを作成するために、ASP.NETのさまざまなオプションを試すことができます。

ASP.NET Web APIを介して、XMLやJSONなどの形式のデータを表示できます。 このフレームワークはオープンソースであり、HTTPサービスを使用しており、クライアントの要求に応答するのは簡単です。 リクエスト自体(たとえば、Get、Post、Delete、Putなど)は、HTTPプロトコルを使用して管理されます。 ASP.NET Web APIは、IISまたはアプリケーションでホストできます。

初心者は通常、使用するASPNETテクノロジーの選択について混乱します。 これらの各テクノロジーを使用できるいくつかの例を次に示します。

1)機能を公開するプロセス

ASP.NET MVCコントローラーは、(1)単一のアプリケーション内で機能を公開する場合、または(2)任意のアプリケーションで汎用機能として使用する場合に適しています。 毎回機能を公開するために新しいAPIを作成する必要がないため、この方法で時間を節約できます。 通常、コントローラーは特定のWebアプリケーションに接続されており、Ajaxを介してすばやく消費される機能を公開します。

単一のアプリケーションに接続されていない本格的なRESTサービスを作成する場合は、Web APIを使用できます。これは、エレガントで優れたソリューションを提供するためです。

HTMLフラグメントの読み込みやAJAX駆動型ページの作成など、機能がUIまたはビュー中心の場合は、ASP.NETMVCの方が適しています。 スタンドアロンのRESTfulサービスを作成する場合は、WebAPIが適しています。

機能がデータ中心の場合は、WebAPIサーバーを選択します。 例、CRUD操作。 通常のMVCアプリケーションでは、データとビューの両方を返すにはコントローラーだけで十分です。

2)処理するデータ形式

コントローラーはActionResultまたはJsonResultのいずれかを返します。つまり、コントローラーの出力はHTMLマークアップまたはJSON形式のデータのいずれかです。 これらのデータ形式のいずれかで十分な場合は、アクションメソッドを使用して機能を公開できます。 ただし、複数のデータ形式が関係する場合は、WebAPIの方が適しています。 これは、このテクノロジーがAcceptヘッダーを確認することでWeb形式を自動的に決定できるためです。 MVCコントローラーでは、アクションメソッドを作成するためのデータ形式を具体的に指定する必要があります。

Web APIは、データのみに応答するHTTPサービスの生成に使用できますが、MVCは、ビューとデータの両方として応答するWebアプリケーションの開発に適しています。

Web APIは、さまざまな形式でデータを返すリクエストのAcceptヘッダーを確認するため、XML、JSONなどのさまざまな形式で返すことができます。 ただし、MVCの場合、返されるデータはJSONResultを使用したJSON形式のみです。

3)MVCとWebAPIを組み合わせる場合

開発者は、MVCコントローラーとAPIの両方を組み合わせると、いくつかの利点を享受できます。

(1)AJAXリクエストを管理し、両方を組み合わせると複数の形式でレスポンスを返すことができます。

(2)アプリケーションの承認用に2つの異なるフィルターを作成できます。要求はHTTP動詞のアクションにマップされますが、MVCのアクション名にマップされます。 APIはスタンドアロンのサービスレイヤーとして使用でき、ASP.NETでも使用できます。

モデルのバインド、ルーティング、フィルターはすべてWeb APIで異なり、System.web.httpアセンブリに存在します。 これらの機能は、MVCフレームワークのSystem.web.MVCに存在します。

4)セルフホスティングが必要かどうか


ご存知のように、ASP.NET MVCアプリケーションの一部であるコントローラーには、ホスティング環境としてIISが必要です。 ただし、APIはサービスフレームワークであり、セルフホストすることができます。 これにより、IISのオーバーヘッドを回避できるため、軽量になります。 これは、デスクトップ、Webアプリケーション、コンソールアプリケーションなど、さまざまなプラットフォームでアプリをリリースする必要がある場合に最適です。

結びの考え

Flickr、Amazon、Deliciousなどの本格的なHTTPサービスを生成している場合は、WebAPIを選択できます。 コンテントネゴシエーションが必要な場合にも適しています。 コンテンツネゴシエーションは、Acceptヘッダーに記載されている形式でコンテンツを返すプロセスです。 ただし、データをJSONおよびXMLとして送信することがほとんど必要なため、すべてのプロジェクトで必要になるとは限りません。 Web APIを使用すると、画像やファイルなど、さまざまな形式でコンテンツを送信するオプションがあります。

WebAPIは、データやサービスをさまざまなデバイスに表示する場合に、おそらくより優れたフレームワークです。 また、オープンソースであるため、DotNetフレームワーク上でRESTfulサービスを作成するための完璧なプラットフォームです。 また、デバイスごとに個別に追加の構成設定を実行する必要はありません。 最近では、デスクトップアプリケーションに比べてモバイルアプリを多く使用することを好むため、両方のタイプのアプリを開発することが非常に重要になっています。

一方、MVCは、関心の分離を明確にし、レンダリングされたHTMLを完全に制御し、Javascriptフレームワークと簡単に統合でき、テスト駆動開発を可能にします。

興味深い記事:
WebAPIがMVCより優れているのはなぜですか
MVCとAPIの簡単なポイント

画像出典:Flickr.com/ Dennis / Yamashita


著者:Reema Oamkumarは、YUHIROグループの一員であるwww.Software-Developer-India.comでソートリーダーとして従事しています。 YUHIROは、IT企業、代理店、IT部門にプログラマーを提供するドイツとインドの企業です。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください