プロジェクトを設計し、アーキテクチャをレイアウトするとき、2つの方向から始めます。最初に、設計中のプロジェクトを見て、解決する必要があるビジネス上の問題を判断します。私はそれを使用する人々を見て、粗いUIデザインから始めます。この時点で、データを無視し、ユーザーが何を求めているのか、誰がそれを使用するのかを検討しています。
彼らが求めているものの基本的な理解が得られたら、コアデータが何を操作するのかを判断し、そのデータの基本的なデータベースレイアウトを開始します。次に、データを取り巻くビジネスルールを定義するために質問を始めます。
両端から独立して開始することで、2つの端を結合する方法でプロジェクトをレイアウトできます。私は常に、それらを一緒に結合する前に、可能な限り長い間別々にデザインを維持しようとしますが、私が前進するとき、それぞれの要件に留意してください。
問題の両端をしっかりと理解したら、問題を解決するために作成されるプロジェクトの構造のレイアウトを開始します。
プロジェクトソリューションの基本レイアウトが作成されたら、プロジェクトの機能を確認し、実行する作業の種類に応じて使用される名前空間の基本セットを設定します。これには、アカウント、ショッピングカート、アンケートなどがあります。
これは、私がいつも始めている基本的なソリューションレイアウトです。プロジェクトの定義が良くなると、各プロジェクトの特定のニーズを満たすようにプロジェクトを改良します。一部の領域は他の領域と統合される場合があり、必要に応じていくつかの特別な領域を追加する場合があります。
ソリューション名
.ProjectNameDocuments
For large projects there are certain documents that need to be kept with
it. For this I actually create a separate project or folder within the
solution to hold them.
.ProjectNameUnitTest
Unit testing always depends on the project - sometimes it is just really
basic to catch edge cases and sometimes it is set up for full code
coverage. I have recently added graphical unit testing to the arsenal.
.ProjectNameInstaller
Some projects have specific installation requirements that need to be
handled at a project level.
.ProjectNameClassLibrary
If there is a need for web services, APIs, DLLs or such.
.ProjectNameScripts (**Added 2/29/2012**)
I am adding this because I just found a need for one in my current project.
This project holds the following types of scripts: SQL (Tables, procs,
views), SQL Data update scripts, VBScripts, etc.
.ProjectName
.DataRepository
Contains base data classes and database communication. Sometimes
also hold a directory that contains any SQL procs or other specific
code.
.DataClasses
Contains the base classes, structs, and enums that are used in the
project. These may be related to but not necessarily be connected
to the ones in the data repository.
.Services
Performs all CRUD actions with the Data, done in a way that the
repository can be changed out with no need to rewrite any higher
level code.
.Business
Performs any data calculations or business level data validation,
does most interaction with the Service layer.
.Helpers
I always create a code module that contains helper classes. These
may be extensions on system items, standard validation tools,
regular expressions or custom-built items.
.UserInterface
The user interface is built to display and manipulate the data.
UI Forms always get organized by functional unit namespace with
additional folders for shared forms and custom controls.