해당 분야의 전문 심리치료사가 이 플랫폼에서 묻는 질문에 답변할 수 있는 웹 애플리케이션입니다.
나는 다음을 사용했다:
건축물
프로젝트는 두 개의 레이어로 구성됩니다. 데이터베이스와 연결된 지속성 레이어(Persistence Layer) 와 데이터베이스와 연결되지 않은 코어 레이어(Core Layer)
컨트롤러 => 코어 <= 지속성
이와 같은 종속성 다이어그램에 대해 이야기할 수 있습니다. 코어 레이어에는 인터페이스 클래스가 포함되어 있습니다. 지속성 에는 이러한 인터페이스를 정의하는 클래스가 포함되어 있습니다. 컨트롤러 측에서는 Controller DBContext 종속성을 줄이기 위해 UnitOfWork 클래스를 사용했습니다. 그러나 컨트롤러는 상위 계층임에도 불구하고 하위 계층인 UnitOfWork와 긴밀하게 결합되어 있었습니다. 이를 위해 IUnitOfWork 클래스를 사용했습니다. IUnitOfWork는 IRepository를 포함하는 완전히 추상적인 클래스를 정의합니다. 그런 다음 UnitOfWork 클래스를 IUnitOfWork 클래스에 종속되게 만들었습니다. 마찬가지로 Controller 레이어와 IUnitOfWork 사이에 종속성을 만들었습니다.
컨트롤러 => IUnitOfWork <= UnitOfWork
이제 Controller 상위 레벨 레이어는 Abstract 클래스에 종속됩니다. 마찬가지로 하위 수준의 세부 클래스 인 UnitOfWork에서는 Abstrack이 클래스에 종속되게 되었습니다. 사실 제가 한 일은 Core Layer를 완전히 독립시키는 것이었습니다. 애플리케이션의 테스트 가능성이 향상되었습니다. 또한 Core Layer는 ORM Framework와 독립적인 구조를 가지고 있습니다. UnitOfWork에서 변경된 사항은 IUnitOfWork 레이어에 영향을 주지 않습니다.
반면에 애플리케이션에서는 DbContext 종속성이 여전히 UnitOfWork Layer 에서 계속되었습니다. 이로 인해 컨트롤러 - DbContext가 밀접하게 결합된 문제가 간접적으로 발생했습니다. 이 문제를 해결하기 위해 종속성 주입 프레임워크를 사용했습니다. (닌젝트 3.2.1.0)