2010-05-10 2 views
2

클라이언트 - 서버 애플리케이션 및 연결이 끊어진 클라이언트 애플리케이션으로 작동하는 애플리케이션을 구축 중입니다. WPF (클라이언트 - 서버 응용 프로그램 용 브라우저 응용 프로그램)를 사용합니다.웹 서비스 레이어와 데이터 액세스 레이어간에 전환 할 수있는 서비스 레이어

서버의 데이터베이스와 상호 작용할 때 WCF 웹 서비스를 사용하여 연결해야합니다. 지역화 된 데이터베이스에 연결할 때 로컬 db의 데이터 액세스 계층을 사용하여 연결해야합니다.

아키텍처의 종류에는 어떤 방법/패턴이 있습니까?

편집 : 나는 찰스이 SO post의 도움으로 아래의 권장으로 모두 데이터/WCF 웹 서비스를위한 공통 서비스 계층을 만들 수 있었다.

답변

4

나는이 문제에 대해 전문가로서 생각하지 않는다. 그러나 나는이 무언가가 사용되기를 바란다. 이것은 내 자신의 경험을 바탕으로합니다.

데이터 액세스 레이어 (DAL)를 두 가지 구현하면됩니다.

비즈니스 계층과 DAL간에 단일 일반 인터페이스를 정의하십시오.

데이터베이스와 통신하는 DAL 구현을 하나 만듭니다.

웹 서비스와 통신하는 DAL 구현을 하나 만듭니다.

두 가지 모두 비즈니스 인터페이스 (BL)에서 현재 어떤 DAL이 사용되고 있는지 알 필요가없는 일반 인터페이스를 구현합니다. 분명히 응용 프로그램과 DAL 중 하나 사이의 연결을 처리하는 데 필요한 특수 논리가 있습니다. 이것은 DAL과 BL 사이의 특수 층 또는 교차 절단 층 (예 : 통신 층)에 상주 할 수 있습니다.

구현을 위해 인터페이스를 구현하는 것이 더 실용적 일 수 있습니다. 이 경우 인터페이스에 덜 구현을 적용해야 할 것입니다. 느슨하게 결합 된 하위 레이어의 실제 구현을 유지하면서 이렇게하려면 어댑터 패턴을 사용합니다.

추가 고려 사항 : DAL 구현을 재사용하고 싶습니다. 본질적으로 API는 자체적으로 API가됩니다. 이 경우 상대적으로 비 공용 공용 인터페이스로 디자인 할 수 있습니다. 이제 DAL은 소비자 (응용 프로그램)에 대한 인터페이스를 지시합니다 (반대의 경우도 마찬가지 임).

그 외에도 직선적 인 레이어 및 추상화입니다. 다음은 애플리케이션 아키텍처에 대한 Microsoft의 발행물입니다 (방금 읽었습니다). http://msdn.microsoft.com/en-us/library/ff650706.aspx

+0

대단히 감사합니다. 이것은 올바른 방향으로 나를 가리켰다! –

+0

대단히 반갑습니다. :) –

0

패턴이 전략을 적용한 팩토리가됩니다. 당신은 다음과 같이 할 수 있습니다 - IDatabase 연결을위한 모든 메소드 등을 정의하는 IDatabase. DB를 액세스하기위한 Idatabase.dblocal에서 상속받은 WCF 서비스에 연결하기위한 DBWCF 클래스도 Idatabase를 상속합니다. config 파일에서 로컬 db 연결 여부 또는 wcf를 지정하십시오. 구성 파일을 읽고 필요한 factory를 호출하는 config 클래스가 있어야합니다. 공장은 wcfdb 또는 dblocal 클래스 중 하나를 instatiate 것입니다. 그리고 어디에서나 Idatabase를 사용하십시오.

관련 문제