2010-04-16 3 views
1

내 프로젝트 내의 코드 조직에 대한 모범 사례를 처리하려고합니다. 나는 좋은 예제를 위해 인터넷을 둘러 보았고, 지금까지 나는 하나 또는 여러 개의 지원을 가진 웹 프로젝트의 예를 보았습니다. 클래스 라이브러리 또는 웹 프로젝트 이름 공간 규칙을 따르는 웹 프로젝트를 참조합니다. .코드 조직 Connundrum : 여러 개의 지원 DLL이있는 웹 프로젝트?

MyProjectWeb

이 내 웹 사이트 : 더 정답이없는 가정

이 내가 현재 코드의 조직에있는 것입니다. 나는 여기에서 나의 수업 도서관을 언급하고있다. 기본 네임 스페이스로 MyProject.DLL

, 나는 일반적으로 소비해야 파일이 DLL을 사용하고 있습니다. 예를 들어 내 프로젝트의 모든 열거 형을 가지고있는 "Enums"클래스 이 거기에 계속 살고 있습니다. 은 모든 예외 처리에 대해 MyProjectException 클래스를 수행합니다.

MyProject.IO.DLL는

이 파일 업로드 및 다운로드 (지금까지) 처리 아마도 20 파일의 그룹입니다.

내 일반적인 클래스와 메소드가 하나 일반적으로 소모품 DLL에서 함께 오므 모든

MyProject.Utilities.DLL

. 각 클래스는 "XHelper"규칙을 다음과 예 : "SqlHelper, AuthHelper, SerializationHelper, 등등과 같은 ...

I 메인 클라이언트 인터페이스로이 DLL을 사용하고

MyProject.Web.DLL. 오른쪽 지금, 여기에 클래스 파일의 대부분은 다음과 같은 학교, 위치, 계정, 게시물) 2) 인증 재료로

1) 특성 ((예

사용자 지정 멤버, 사용자 지정 역할, & 사용자 정의 프로파일 제공) 등

제 질문은 간단합니다 - 이것이 논리적으로 보입니까?

또한 프로젝트 라이브러리에서 다음으로 참조 DLL을 교차하지 않아도되는 방법은 무엇입니까? 예를 들어 MyProject.Web.DLL 은 MyProject.Utilities.DLL 및 MyProject.Utilities.DLL의 코드를 사용합니다. 은 MyProject.DLL의 코드를 사용합니다. 속성을 클릭하고 "종속성"을 선택하면 해결됩니까? 나는 그것을 시도했지만 그래도 여전히 선택한 어셈블리의 의 네임 스페이스에 액세스하지 않는 것 같습니다. 각 클래스 라이브러리에 필요한 어셈블리를 모두 참조해야합니까?

감사합니다. 양해 해 주셔서 감사합니다.

답변

0

귀하의 가정에서 논리적으로 진행된다는 것은 논리적입니다. 당신이 질문을하고 있다는 사실은 당신이 그것이 합리적인이라고 생각하지 않을 수도 있다고 믿게합니다.

일반적으로 기술적인 개념보다는 개념적인 경계를 따라 분류해야합니다. MyProject.IO.DLL은 현재 디자인에서 표면화 된이 원리의 예입니다. 모든 IO 항목들 은 논리적으로이되어 하나의 바이너리로 끝납니다. 말이된다.

기술 유형 (열거 형, 클래스 등)을 기반으로 네임 스페이스에 속하는 것을 좀 더 문제가 될 것입니다.

종속성 문제는 하나의 클래스를 여러 클래스로 나누는 것과 동일한 문제이며 동일한 기술, 즉 종속성의 반전을 사용하여 해결됩니다. 두 가지가 겉으로는 서로 의존해야하는 경우 처음 두 계약 사이의 계약을 나타내는 중개 물건을 추가하십시오. 이것은 추상화, 상수, 중개자 등이 될 수 있습니다. 당신이 그것을 만들 필요가있는 모든 것은 A가 B에 의존하고 A가 B에 의존하고 B가 C에 의존하는 것입니다.