프로젝트를 설계하고 아키텍처를 배치 할 때 두 가지 방향에서 시작합니다. 먼저 설계중인 프로젝트를보고 어떤 비즈니스 문제를 해결해야하는지 결정합니다. 나는 그것을 사용할 사람들을보고 조잡한 UI 디자인으로 시작합니다. 이 시점에서 나는 데이터를 무시하고 사용자가 무엇을 요구하고 누가 사용할 것인지 살펴보고 있습니다.
일단 그들이 무엇을 요구하는지에 대한 기본적인 이해를 마치면 핵심 데이터가 무엇인지를 결정하고 그 데이터에 대한 기본 데이터베이스 레이아웃을 시작합니다. 그런 다음 데이터를 둘러싼 비즈니스 규칙을 정의하기 위해 질문을 시작합니다.
양 끝에서 독립적으로 시작함으로써 양 끝을 하나로 통합하는 방식으로 프로젝트를 배치 할 수 있습니다. 나는 항상 디자인을 서로 융합하기 전에 가능한 한 오랫동안 분리되도록 노력하지만 앞으로 나아갈 때마다 각각의 요구 사항을 명심하십시오.
일단 문제의 각 끝을 잘 이해하면 문제를 해결하기 위해 만들어 질 프로젝트의 구조를 세우기 시작합니다.
프로젝트 솔루션의 기본 레이아웃이 만들어지면 프로젝트의 기능을 살펴보고 수행되는 작업 유형에 따라 사용되는 기본 네임 스페이스 집합을 설정합니다. 계정, 쇼핑 카트, 설문 조사 등이 될 수 있습니다.
다음은 항상 시작하는 기본 솔루션 레이아웃입니다. 프로젝트가 더 잘 정의됨에 따라 각 프로젝트의 특정 요구를 충족하도록 수정합니다. 일부 영역은 다른 영역과 병합 될 수 있으며 필요에 따라 몇 가지 특수 영역을 추가 할 수 있습니다.
솔루션 이름
.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.