내 MVC 계층에는 리포지토리가 전혀 없을 것입니다.간단한 인젝터를 비즈니스 계층의 저장소에 사용하는 방법
내 DAL 프로젝트 레이어에서 일반 EFRepository
, IRepository
및 PASContext
(DbContext에서 상속)을 받았습니다.
내 MVC 프로젝트에서 빠른 시작으로 Simple Injector를 설치했고 thats를 사용하여 저장소에서 원하는 각 컨트롤러의 생성자를 얻을 수 있습니다.
하지만 내 솔루션에는 BLL 프로젝트가 있고이 아키텍처는 BLL 레이어와 만 이야기하기를 원합니다. 프로젝트 아키텍처이며 향후 BLL 레이어 내의 클래스에 논리를 추가하고 싶습니다. 내가 BLLProduct
클래스를 시작할 수있는 방법
public class BLLProducts
{
IRepository<Product> ProductRepository;
public BLLProducts(EFRepository<Product> Repository)
{
ProductRepository = Repository;
}
public ICollection<Product> getAll()
{
return ProductRepository.All().ToList();
}
}
:
은 또한 내가 내 BLL 층에서 컨텍스트를 생성하지 않지만, 저장소가 0 인수를 생성자가없는이 내 ProductBLL
클래스 저장소 또는 컨텍스트를 만들지 않고 컨트롤러 또는 unitTest에서? 그래서 여기에 내 추상화를 유지할 수 있습니다.
내가 여기 어떻게 든 간단한 주사기를 사용해야한다는 것을 알고있다. 나는 그저 어떻게하는지 모른다. 컨트롤러의 관점에서
고마워요! 현재의 아키텍처에 가까운 SOLID 아키텍처를 추천 해 주시겠습니까? ('BLL'은 리포지토리를 통해'DAL'과 이야기하고'MVC'는 간단한 인젝터를 사용하여'BLL'과 대화하고 있습니다) – jony89
@ jony89 : 5 가지의 솔리드 원리를 연구하십시오. 그들은 3 계층 아키텍처와 같은 다른 아키텍처 스타일보다 훨씬 중요한 지침을 제공합니다.추상화를 프로그래밍하고, 클래스의 책임을 제한하며, 기능을 추가 할 때 클래스를 변경하지 않아도됩니다. – Steven