본문 바로가기

백엔드/닷넷

서버 아키텍처 - 레포지토리 (인터페이스 사용)

반응형

인터페이스는 필요한 사항을 규정하는 일종의 계약서로 레포지토리 패턴에 인터페이스를 추가해 보겠습니다.

프로젝트 구성하기

프로젝트 생성 및 기본구조 구성

 

서버 아키텍처 - 프로젝트 분산하기

서버 구조 인터페이스는 서버에 대한 요청과 응답처리하며 데이터베이스에 전송할 쿼리를 작성하고 데이터를 받는 역할을 수행하는 인프라스트럭처 프로젝트에 의존합니다. 인프라스트럭처

jin-co.tistory.com

MVC 패턴구현하기

 

서버 아키텍처 - 엠브이씨

비즈니스 로직과 데이터를 처리하는 코드는 분산하는 것이 좋습니다. 엔티티프레임워크는 MVC 패턴을 제공하는데요. 사용법을 살펴보겠습니다. 프로젝트 구성하기 프로젝트 생성 및 기본구조

jin-co.tistory.com

레포지토리 구성

 

서버 아키텍처 - 레포지토리

비즈니스 로직과 데이터를 처리하는 코드는 분산하는 것이 좋습니다. 엔티티프레임워크의 디비 콘텍스트 사용으로 두 코드의 분산은 가능하지만 프로젝트의 규모가 커지면 컨트롤러에서 디비

jin-co.tistory.com

인터페이스 사용하기

인터페이스 생성

코어 프로젝트에 인터페이스를 담을 폴더를 생성합니다

생성한 폴더에 인터페이스 추가하고

필요한 메서드를 아래와 같은 형식으로 추가합니다

레포지토리에서 인터페이스 상속받기

레포지토리로 이동하여 생성한 인터페이스를 부모로 추가하고 메서드를 구현합니다.

서비스 추가하기

생성한 인터페이스를 사용하려면 서비스로 등록이 필요합니다. 아래 코드를 Program.cs 파일에 추가합니다

builder.Services.AddScoped<IItemRepo, ItemRepo>();

컨트롤러 클래스에서 레포지토리 메서드 호출하기

인터페이스를 사용하지 않은 레포지토리 패턴은 아래와 같은데요. 먼저, 레포지토리를 지우고 인터페이스를 주입합니다.

private readonly IItemRepo _repo;
public StoreController(IItemRepo repo)
{
  this._repo = repo;
}

레포지토리에서 생성한 메서드를 호출합니다.

[HttpGet]
public ActionResult<List<Item>> GetItems()
{
  return _repo.GetItems();
}

이상으로 레포지토리 패턴을 사용하는 방법을 보았습니다.

 

 

728x90
반응형