バックグラウンド
私は、ASP.NET バックグラウンドの 3 層アーキテクチャから来ています。レイヤーで単体テストを直接使用したことがありますが、レイヤーのモックを試みたことはありません。すべてのアプリケーションは EF Database First で開発され、別の POCO とインフラストラクチャ プロジェクトがアプリケーションの配管作業を処理します。開発されるアプリケーションは、小規模から中規模のものです。
これまでの進捗
ASP.NET MVC の学習を開始して以来、最初の質問の 1 つは、ソリューションのレイヤーを作成する方法でした。過去 15 日間、私はこの MVC プロジェクトと将来の MVC プロジェクトで学び、フォローするための優れたアーキテクチャを学び、探しています。私は次のアーキテクチャ パターン/サイトを調べましたが、それらが複雑すぎて自分の利益にはなりませんでした。主な懸念事項のいくつか
- プロジェクトの複雑さを継承し、新しいプログラマーの作業を困難にします
- 急激な学習曲線
- 冗長な動作をテストするには、すべてのレイヤーの単体テストが多すぎます (マイナー)
- 開発中のコンパイルが比較的遅い
私が試したサイト/プロジェクト
- シャープな建築
- タマネギのアーキテクチャ
- 近くのディナー
- プロジェクト SiLK (マイクロソフト)
主なジレンマ
- これらのプロジェクトで最も一般的なのは、Repository Patterns and Dependency Injection (IoC) であることがわかりました。私はそれに反対するものは何もありませんが、プロジェクトを維持して理解するのは難しいと感じました. プロジェクトをテストするための適切な単体テストを備えた、いわゆる「密結合」を使用して、3層アーキテクチャでかなり大規模なプロジェクトを実行しました。これらがなければ、建築はうまくいくと思います。
- TDD と DDD を重視
- 疎結合の概念は拡張されています
- パターンとしての MVC への関心を失い、他の部分でアーキテクチャを支配する
MVC プロジェクトに必要な、シンプルで理解しやすく、保守可能なアーキテクチャ
注: jimmy bogard のOrganizing ASP.NET MVC solutionsから、この優れた実装構造に出会いました。このトピックに関する提案をいただければ幸いです。