2011-03-10 5 views
1

나는 매우 세밀한 느슨한 결합 디자인을 조립하려고합니다.느슨하게 결합 된 디자인의 일반적인 정의

하지만 일반적인 정의를 처리하는 방법을 결정할 수 없습니다.

지금 당장은 외부 DLL로 추가하여 우려를 분리합니다. 주입 및 인터페이스를 통해 내 도메인은 구현을 알지 못해도 내 비즈니스 로직을 사용할 수 있습니다.

내가 갖고있는 문제는 모든 구성 요소가 느슨하게 결합되어 동일한 인터페이스를 구현해야한다는 것입니다. 내 솔루션은 단지 모든 정의가있는 별도의 프로젝트 (dll)입니다. 이것은 잘 시작되었지만,이 하나의 dll 의존성에 모든 코드를 함께 묶어서 연상케하는 것으로 보입니다.

가장 실용적인 방법은 무엇입니까?

감사합니다.

답변

0

편집

죄송합니다 제가 처음에 질문을 오해 생각합니다. 따라서 인터페이스가 포함 된 어셈블리가 하나 있고 DI를 사용하여 종속 객체를 만드는 다른 어셈블리에 구현되어 있습니다. 필자는 응용 프로그램의 주요 동작 (스마트 엔터티, 열거 형 및 인터페이스)을 보유하고있는 응용 프로그램에서 핵심 어셈블리를 만드는 경향이 있습니다. 이 어셈블리는 거의 다르지 않지만 애플리케이션의 나머지 부분에 따라 많이 달라집니다. 이 프로젝트를 예로 들면 - whocanhelpme.codeplex.com을 확인하십시오. 당신은 부풀어 오른이 핵심을 부를 수 있지만, 정의상 매우 풍부해야합니다.


많은 추상 단위가 일반적인 디자인 패턴을 따를 수 있습니다. 여기에 각 하나의 좋은 설명을 제공하는 사이트입니다 - 당신이 (옵저버, 공장, 어댑터 등)에서 이름을 파생 할 수 있습니다 :

http://www.dofactory.com/Patterns/Patterns.aspx

+0

제가 사용하는 것은 Factory 메소드에 가장 가깝습니다. 하지만 내 레이어 (GUI, 비즈니스, 서비스, 데이터)를 느슨하게 연결하면 모든 구체적인 객체가 전달 될 수있는 공유 된 정의 (인터페이스, 열거 형 등)를 인식하고 있어야합니다. 그래서 그들은 모두 구체적인 인스턴스를 사용하기위한 인터페이스를 알아야 할 필요가 있습니다.이 인터페이스는 정의에 교차점과 의존성을 만듭니다. 나는 그들을 별도의 DLL을 추출하려고하면, 내 UserManagement 로직에 들어갈 것이고, 필자는 DAO 객체 fe의 정의를로드 할 것이다. (당신이 문을 열고 싶을 때 건물의 청사진을 필요로하는 것처럼) – Tim

+0

미안하지만 처음에는 질문에 대한 오해가있었습니다. 따라서 인터페이스가 포함 된 어셈블리가 하나 있고 DI를 사용하여 종속 객체를 만드는 다른 어셈블리에 구현되어 있습니다. 필자는 응용 프로그램의 주요 동작 (스마트 엔터티, 열거 형 및 인터페이스)을 보유하고있는 응용 프로그램에서 핵심 어셈블리를 만드는 경향이 있습니다. 이 어셈블리는 거의 다르지 않지만 애플리케이션의 나머지 부분에 따라 많이 달라집니다.이 프로젝트를 예로 들면 http://whocanhelpme.codeplex.com/을 확인하십시오. 당신은이 핵심 ** 비 대한 ** 전화 수 있지만 정의에 의해, 매우 풍부해야합니다. –

+0

감사! 나는 그것을 조사하고 아키텍처에 대한 개요를 얻으려고합니다. 좀 더 읽고, 내 인터페이스/열거 형을 "내보내기 가능"하게 만드는 대신 "핵심"기능을 결합하기 위해 프로젝트를 재정렬하려고합니다. – Tim

0

내가 말할 것이라고 층에만해야 다음 레이어와 해당 인터페이스에 대해 잘 알고 있으므로 구현과 함께 인터페이스를 배치 한 다음 체인의 레이어 (어셈블리)간에 참조를 추가하는 것이 좋습니다.

부트 스트 래퍼 패턴을 사용하여 DI를 구성하고 로케이터를 통해 해결할 수 있습니다. 로깅, 캐싱과 같은 교차 절단 문제와 관련하여 각 계층을 참조하는 별도의 어셈블리가 있어야합니다. 여기서도 계약을 고용 할 수 있으며 미래에 이러한 교차 절단 기능을 동일한 계약을 구현하는 다른 어셈블리로 대체 할 수 있습니다.

호프 이것은 적어도 조금 도움이 되겠습니다. :)

관련 문제