본문 바로가기
C#/기본

관심사의 분리 (Separation of Concerns, SoC)

by ddanss 2025. 5. 7.
728x90

BusinessLayer과 DataAccessLayer를 나눈 이유

는 관심사의 분리

코드의 역할을 명확히 구분해서 유지보수성, 테스트 용이성, 확장성을 확보하려는 것

 

DataAccessLayer (DAL)

DB와 직접 소통하는 층 (데이터 저장소 접근)

Models : DB 테이블과 매핑되는 클래스 (Entity, Table 구조)

Mappers : DB 결과를 DTO로 변환하거나, DTO를 DB 모델로 변환

역할: 데이터를 읽고/쓰는 것에 집중

 

 

BusinessLayer (BL)

비즈니스 로직을 처리하는 층

DTO (Data Transfer Object) : 계층 간 데이터 전달용 객체 (DB와 무관한 구조)

Services : 비즈니스 규칙, 유효성 검사, 처리 흐름 등 실행

역할: 데이터를 어떻게 처리할지, 규칙에 따라 어떻게 흘러갈지 결정

 

 

Controller -> BusinessLayer -> DataAccessLayer -> Database

Controller : 요청만 받아서 Service에 전달

Service : 비즈니스 규칙 판단하고 Mapper를 통해 DB접근

Mapper는 DTO <->Model 변환 담당

Model은 DB테이블과 구조가 1:1로 연결됨

 

 

계층분리의 장점

1. 유지보수 용이

- DB구조 바뀌어도 BusinessLayer는 영향 적음

2. 재사용성 증가

- Service만 따로 테스트 가능(단위 테스트 용이)

3. 책임 분리

- 각 Layer가 하나의 책임만 가지므로 버그 추적이 쉬움

4. 확장성 높음

- 나중에 REST API나 gRPC등 다양한 인터페이스 대응 가능

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

'C# > 기본' 카테고리의 다른 글

View/Shared  (0) 2025.05.07
.cshtml  (1) 2025.05.07
Program.cs  (0) 2025.05.07
launchSettings.json  (0) 2025.05.06
appsettings.json과 appsettings.Development.json  (0) 2025.05.06

댓글