1

임은 같은 4 층 프로젝트를 생성이데이터 액세스 레이어와 비즈니스 레이어에서 구현할 패턴은 무엇입니까?

  • 데이터 액세스 계층
  • 만 POCO 클래스는
  • 웹 사이트 (EF5 통해) 내 기관에 관련이있는 비즈니스 로직 계층
  • 도메인 모델 프론트 엔드로서

저는 항상 지금까지 DAL과 BLL을 혼합하여 웹 사이트에서 직접 DAL을 참조했습니다. 이번에, 나는 진짜 관심사의 분리를 원한다. 나는 실제 DAL과 단위 테스트 할 수있는 DAL을 만들고 싶다. BLL은 정말로 끈질 기게 불가지론 자다. EF5

를 사용하여 나는

은 김 기본적으로 내가 할께 작업 패턴의 공장, 저장소 및 장치를 사용할 필요가 알고 있지만 어떻게 가서 무엇을 잘 모릅니다 내가 할 수있는 단순한 (그러나 충분히 명확한 예)

내가 아는 것은 i가 웹 사이트 bt에서 DAL을 참조해서는 안된다는 것이다. 나는 다리를 만드는 법을 모르고있다.

제품 및 주문 테이블과 같은 예가 있습니까?

답변

0

은 김 기본적으로 내가 할께 공장, 저장소 및 작업 패턴의 장치를 사용할 필요가 알고 있지만 어디서 어떤 일이 일어나는지 잘 모릅니다과 간단한 (그러나 충분히 명확한 예) 내가

을 수행 할 수 것입니다

당신은 당신이 그들을 사용해야합니다 당신이을 알고 말을하지만 당신이 첫번째 장소에 각각 필요한 이유는 정확한 생각 을해야합니까? ;)

"전문가"의 방식을 모방하여 시스템의 모든 패턴을 한꺼번에 던지려는 잘못된 접근 방식을 취하지 않습니까? 어쩌면 당신은 좀 더 일반적인 원칙에 기반하여 요구 사항 (테스트 가능한 DAL + 지속성 - 무식한 BLL)을 충족시키는 가장 단순하고 가장 순진한 구현을 시작할 수 있습니다.

디자인 패턴은 끝내기위한 수단 일뿐입니다. 기회를 설계하거나 구현을 향상 시키려고 노력하는 동안 그들에 대한 필요성을 느낄 수 있지만 어쩌면 그렇지 않을 수도 있습니다.

일반적인 응용 프로그램 아키텍처 가이드 라인에 관한 한, Bob Uncle Bob의 작업을 Clean Architecture에 맡기는 것이 좋습니다. 나는 그가 자신의 어휘로 특정 소프트웨어 구조를 기술 할 때조차도, 그가 설명하는 방식을 사용하면 나중에이를 저장소 (placeholder)로 볼 수있게되었다는 것을 알게되었습니다. 나중에 저장소, 작업 단위 (Unit of work)와 동일시 할 수있는 일반적인 개념 에.

1

Presentation Layer (웹 앱)이 참조하는 Service Layer을 작성하십시오. 그런 다음 Service Layer에는 BLL, EF5 EntitiesDAL에 대한 참조가 있습니다. Service Layer은 단지 Class Library (예 : ASP.NET Web API) 또는 Web Services 레이어 (예 : WCF) 일 수 있습니다.

이제 웹 응용 프로그램은 DAL에 대한 참조가 없지만 Service LayerEF5 Entities 만 알 수 있습니다.

1

나는 당신이 the onion architecture을 찾고 있다고 믿습니다.

... 양파의 "핵심"은 도메인을 나타내는 개체 모델입니다. 이 레이어에는 POCO 항목이 포함됩니다. 도메인 엔티티를 둘러싼 저장소 인터페이스는 차례로 서비스 인터페이스로 둘러 쌓여 있습니다. 리포지토리 및 서비스를 인터페이스로 표현하면 소비자를 구체적인 구현에서 분리 할 수 ​​있으므로 클라이언트 UI 나 테스트와 같이 소비자에게 영향을주지 않으면 서 다른 것을 교환 할 수 있습니다.데이터 액세스 계층은 저장소 계층을 구현하는 저장소 클래스 집합으로 외부 계층에 표시됩니다. 마찬가지로 로깅 구성 요소는 서비스 인터페이스 계층에 로깅 인터페이스를 구현합니다.

(from here)

또한 제어/의존성 주입의 반전을 모색하는 것이 좋습니다. 몇 달 전에 SimpleInjector (herehere 참조)를 채택했습니다. SimpleInjector 뒤의 man에는 (starting with this one) 도움이 될 몇 가지 유용한 게시물이 있습니다.