現在、Active DirectoryとSQL Server 2008を使用しているイントラネットWebサイトで作業しています。ASP.NETのMVCデザインパターンを使用して、データアクセスに関するプロジェクトの適切なアーキテクチャを取得する方法を理解しようとしています。一部はエンティティフレームワークを使用しています。私は間違った方向に行かないために数日間苦労してきました。私は私の会社の唯一の開発者だということを知っています。これは私の最初の経験であり、最近のフレームワークについては誰も知りません。私はアーキテクチャとそれを正しく行う方法について読んだことがありますが、すべてを正しく把握しているかどうかはわかりません(How do architect an ASP.Net MVC app with EF?)。ASP.NET MVCとEntity Frameworkでアーキテクチャ設計を理解しましたか?
Controller(MVC Project) ---uses---> Service Layer (Project) ---uses--> EFDal (Project)
^ | ^ |
| | | |
|<-------<-----returns ViewModel |<---------<------returns Query Result
EFDalがEntityFrameworkデータアクセス層である:ここで
は、私は(私の描画スキルはご容赦)、やって、独自のプロジェクトを持つそれぞれの層を考えていたものです。
私が理解したところでは、サービスレイヤにはDALを呼び出すメソッドが含まれており、DALはデータにアクセスするために使用されます。
私のアプローチに間違いがありますか?
私はサービスレイヤーと言っていますが、すべての操作を含んでいますか? (例:DB内のユーザーの検索 - >サービスレイヤーが値を返すEFDalを呼び出すことで、検索を起動し、順番にサービス層をコントローラーにViewModelにを返す) (参照:Creating a Service Layer for my MVC application?)
最後に、私のサービス万一レイヤークラスは永続化の目的でインタフェースを実装しますか?
私たちは私たちのプロジェクトにMVCパターンを使用していました。小規模なプロジェクトに取り組んでいたため、新しいプロジェクトでソリューションを拡張する必要はありませんでした。ここで私はアーキテクチャが悲惨な保守性に終わると誤解しているように感じます。ご協力いただきありがとうございます!
アプリケーションのサイズによっては、さまざまなアーキテクチャが考えられます。より小さなアプリケーションの場合は、EFを参照する単一のMVCプロジェクトで手に入るかもしれません。私たちのPOCOモデルのApp.EntitiesとUIのApp.MVCを作成し、Automapperを使用してViewModelsを作成する場合、私たちのほとんどは中規模です。 [CQRS](https://msdn.microsoft.com/en-us/magazine/mt147237.aspx)は別のオプションです。 –
@SteveGreeneあなたの答えをありがとう。それは私がやっていることのようなものです。 Automapperを使用したことはありません。私が必要としていることはわかりません。私のDBテーブルはすべてシンプルで、たくさんあります。少なくともAutomapperは複雑なオブジェクトに使用されていると私が理解したことからですか?私は実際にアプリケーションの大きさを言うことはできませんが、同社には4.5k人の従業員(そしてこの種のものをやっているインターン)と、Active DirectoryやSQL Serverを通じて管理するためのさまざまな操作があるので、良い成果。 –
パフォーマンスとアーキテクチャはしばしばトレードオフです。 EFは最もパフォーマンスの高いデータアクセス技術ではありません。 [ここ](https://stackoverflow.com/questions/8347670/entity-framework-is-too-slow-what-are-my-options)を参照してください。それはSOがDapperと一緒に行った理由の1つです。 –