2012-05-01 6 views
2

私は最近MVC4 WebApiの例を調べています。これらのサンプルアプリケーションは非常にシンプルで、数ページしか含まれていません。目的はApiControllerの使い方を示すことだけなので、アプリケーションは最小限の構造で保たれます。通常のコントローラとApiControllerを置く場所

大規模なWebアプリケーションでは、多くの標準コントローラとApiコントローラが存在します。どのように組織化された方法でそれらを整理するのですか?すべてのapiコントローラを1つのフォルダに配置し、そこから各ビュー呼び出しで$.ajax()を配置するのがよい方法ですか?または、関連する$.ajax()が配置されているビューをレンダリングする通常のコントローラと一緒に、apiコントローラを配置する方が良いでしょうか?

推奨される方法は何ですか?

いくつかの考えはここに追加:

が、私はそれを上に考えて多くの時間を費やすつもりです。今私の計画は、標準コントローラはビ​​ューのレンダリングにのみ使用されるということです。ビューモデルは標準コントローラを通過しません。すなわち、return View(model)はありません。ビューには、jQueryテンプレートなどのクライアントサイドプログラミングを使用してAPIコントローラから返されたjsonオブジェクトが設定されます。 [私はこれで極端すぎますか?いいえreturn View(model)?本当ですか?]

これが正しければ、通常のコントローラはワーカーサービスを呼び出しません。代わりに、すべてのワーカーサービスをAPIコントローラから呼び出す必要があります。次に、WorkerServicesとそのインターフェースをどのように配置するのですか?

さらに、地域を持ちたい場合はどうすればいいですか?私はAPIとWorkerServicesを領域外に配置する必要がありますか?または各エリアにAPIフォルダとWorkerServicesフォルダがありますか?

私は間違いなく、今日の午後に何度も計算された決定を下すと思います。あなたの提案や経験を教えてください。ありがとうございました。

答えて

4

あなたのAPIコントローラと標準のコントローラ間の分離を維持するために、あなたのControllersフォルダを分岐することができます:

   |--- Api 
Controllers - | 
       |--- Standard 

または、次の分離:

|-- Controllers 
|-- Api 

それは本当に個人の好みの問題です。私は、標準とApiコントローラを同じフォルダに混在させないように注意します。区別するのが難しいからです。

$.ajaxコールに関しては、コントローラがどこに配置されているか、どのようにサーバに配置されているかは問題ではありません。受信したURLを対応するコントローラにディスパッチするのは、ルーティングエンジンによって異なります。

+0

ありがとうございます。そして特に数字のおかげです。それらはまさに私が描こうとしていたものです。 – Blaise

関連する問題