2012-05-18 10 views
5

いくつかの検索を実行しましたが、この問題に対して利用可能な答えが見つかりませんでした。MVC4 WebAPIの正しいアーキテクチャは何ですか

さて、私のMVC 3アーキテクチャは、このようなものです:私たちは、他のアプリケーションからのCRUD操作を呼び出すことができるようになりますので、

- Project.EDM (contains only the entity framework edmx file and its .tt and .cs entity classes) 
- Project.DAL (contains IXxxRepositiory and XxxRepository where CRUD is performed on the entity classes) 
- Project.Web (the MVC3 project. Controllers transfer data from ViewModels into entity models and call the CRUD functions in the DAL repositories.) 

MVC4WebApiはとても魅力的な表示されます。私たちはすべてこのアイデアが大好きです。

しかし、私が見つけた既存の例では、MVC4プロジェクト内でCRUD操作がApiControllerの下にあります。私はこれらの操作を別のDALプロジェクトに組み込むことに慣れています。推奨される選択肢は何ですか?別のDALクラスを引き続き使用できますか?あなたはどのように専門家がアーキテクチャを設計していますか?

ありがとうございました。

+2

この質問はちょっと主観的です。 – MilkyWayJoe

+0

あなたが見ているサンプルへのリンクを提供すると便利かもしれません。 – Bull

答えて

7

私は何をやっていることは、これは次のとおりです。

  • リポジトリがものを検証するために
    • サービス層データベースを照会すると、コードの重複を避けるために
      • のWeb UI
      • ウェブAPI

したがって、UIとAPIの両方に1つ以上のサービスがあり、そのサービスには1つまたは複数のリポジトリオブジェクトがあります。

ほとんどの例がApiControllerから直接データベースに問い合わせる唯一の理由は、おそらく単純さのためです。

+0

Web APIは別のMVC4プロジェクトですか? – Blaise

+2

はい、通常はすべてのプロジェクトを別々に作成します。 だから私のソリューションは、次のようになります。 - コンテキスト(保持EDMX) - リポジトリ - サービス(サービス層) - エンティティ - のviewmodels - WebUIの - WebAPIの - 依存性の注入(DIカーネルがなければならないので、 APIプロジェクトとUIプロジェクトの両方から呼び出すことができます) –

+0

うわー!あなたは本当にすべてを分けました! CRUDの操作はどこに行きますか?彼らはまだリポジトリにいますか? – Blaise