[解決済み] ASP.NET MVCにおけるApiControllerとControllerの相違点
質問
ASP.NET MVC 4ベータ版で遊んでいるのですが、現在2種類のコントローラがあるようです。
ApiController
と
Controller
.
どのような場合に特定のコントローラを選択することができるのか、少し混乱しています。
例えば、ビューを返したい場合は
ApiController
または通常の
Controller
? WCF Web APIがMVCと統合されたことは承知しています。
今、私たちは両方のコントローラを使用することができるので、誰か、対応するコントローラのために行くためにどのような状況を指摘することができます。
どのように解決するのですか?
通常のビューをレンダリングするには、Controllerを使用します。ApiControllerのアクションは、シリアライズされてクライアントに送信されるデータのみを返します。
引用元
注 ASP.NET MVCを使用したことがある方なら、すでにコントローラについてご存知でしょう。Web APIでも同様に動作しますが、Web APIのコントローラはControllerクラスの代わりにApiControllerクラスから派生します。最初の大きな違いは、Web API コントローラのアクションはビューを返さず、データを返すということです。
ApiControllerは、データを返すことに特化しています。例えば、クライアントから要求されたフォーマットにデータを透過的にシリアライズすることを引き受けます。また、デフォルトで異なるルーティングスキーム(URLからアクションへのマッピングなど)に従い、慣習的にREST-full APIを提供する。
ApiControllerの代わりにControllerを使えば、多少の(?)手書きコーディングで何でもできるかもしれませんね。結局のところ、どちらのコントローラもASP.NETの基盤の上に構築されています。しかし、REST-fulなAPIを持つことは、今日では一般的な要件であり、WebAPIはそのようなAPIの実装を簡素化するために作られたのです。
HTMLベースのWeb/インターネット/イントラネットアプリケーションを書くのであれば、MVC/Controllerを使い続けることです。もし、システムに対してデータ駆動型/RESTフルインターフェイスを提供したいのであれば、WebAPIを使いましょう。もちろん、両方を組み合わせることも可能で、ApiControllerがMVCページからAJAXコールを処理することもできます。
実例を挙げますと 私は現在、REST-full APIをエンティティに提供するERPシステムで仕事をしています。このAPIでは、WebAPIが良い候補になるでしょう。同時に、ERPシステムは、REST-ful API用のクエリを作成するために使用できる高度にAJAX化されたWebアプリケーションを提供します。Webアプリケーション自体はMVCアプリケーションとして実装することができ、メタデータなどを取得するためにWebAPIを利用することができます。
関連
-
[解決済み】Automapperにタイプマップの設定がない、またはマッピングがサポートされていない - エラー
-
[解決済み] Razor View throwing "The name 'model' does not exist in the current context".
-
[解決済み] ファイルアップロード ASP.NET MVC 3.0
-
[解決済み] ASP.NET MVC Frameworkで複数のサブミットボタンを処理する方法は?
-
[解決済み] ASP.NET MVCでenumからドロップダウンリストを作成するにはどうすればよいですか?
-
[解決済み] ASP.NET MVC - カスタムIIdentityまたはIPrincipalの設定
-
[解決済み] ASP.NET MVCでビューをコンパイルする
-
[解決済み] ASP.NET MVCのビューを文字列としてレンダリングする方法は?
-
[解決済み] ASP.NET MVCコントローラは、Imageを返すことができますか?
-
[解決済み】1つのビューに複数のモデルを表示する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Razor View Engine : 式ツリーには、動的な操作を含めることができません。
-
[解決済み] MVC 3 - 辞書に渡されたモデル項目の型は 'System.Collections.Generic.List`1 です。
-
[解決済み】ASP.NET MVCのフォームでチェックボックスを処理するにはどうすればよいですか?
-
[解決済み】MVC 4 @Scripts "does not exist".
-
[解決済み] mvc 4 で部分ビューにパラメータを渡すにはどうすればよいですか?
-
[解決済み] Visual Studio 2012 または Visual Studio 2013 で古い MVC プロジェクトを開くにはどうすればよいですか?
-
[解決済み] ASP.NET MVCとIIS7で生のHTTPリクエスト/レスポンスをログに記録する
-
[解決済み] NerdDinnerでASP.NET MVCでModelState.IsValidは何のために有効なのか?
-
[解決済み] ASP.NET WebApiとMVCの比較?[クローズド]
-
[解決済み] ASP.NETでWebAPIやMVCを使ってJSONを返す。