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 |
댓글