본문 바로가기

사이드 프로젝트/SportsStore (ASP.NET MVC5)

[ASP.NET Project] 도메인 모델 작성하기

도메인 모델부터 시작하기


MVC 프레임워크를 활용한 응용프로그램의 핵심은 도메인 모델이다.
응용프로그램의 모든 부분이 도메인 모델을 중심으로 구성되기 때문에, 가장 먼저 작성해야 한다.

 

 

1. 도메인 모델 작성하기

프로젝트의 도메인 모델을 정의하기 위해 Entities라는 폴더를 만들고, 여기에 Product 클래스를 추가했다.
Product 클래스는 상품 정보를 담는 도메인 모델이다.

namespace SportsStore.Domain.Entities
{
    public class Product
    {
        public int ProductID { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public decimal Price { get; set; }
        public string Category { get; set; }
    }
}

 

이 모델은 제품의 ID, 이름, 설명, 가격, 카테고리 정보를 포함하고 있다.

 

2. 추상 레파지토리 생성하기

도메인 모델이 작성되었으니, 이제 데이터를 관리할 추상 레파지토리를 정의한다.
Abstract라는 폴더를 만들고, 여기에 IProductRepository 인터페이스를 추가했다.

namespace SportsStore.Domain.Abstract
{
    internal interface IProductRepository
    {
        IEnumerable<Product> Products { get; }
    }
}

 

이 추상화는 나중에 데이터베이스를 연결하거나 다른 저장소를 사용할 때 쉽게 확장할 수 있도록 돕는다.

 

3. Mock 레파지토리로 데이터 연동 준비

데이터베이스 연동 작업을 하기 전에, Mock 레파지토리를 사용해 임시 데이터를 제공하도록 설정했다.
NinjectDependencyResolver 클래스에서 DI(의존성 주입)를 설정했다:

namespace SportsStore.WebClient.Infrastructure
{
    public class NinjectDependencyResolver : IDependencyResolver
    {
        ...
        private void AddBindings()
        {
            Mock<IProductRepository> mock = new Mock<IProductRepository>();
            mock.Setup(m => m.Products).Returns(new List<Product>
            {
                new Product { Name = "Football", Price = 25 },
                new Product { Name = "Surfboard", Price = 179 },
                new Product { Name = "Running shoes", Price = 95 }
            });

            kernel.Bind<IProductRepository>().ToConstant(mock.Object);
        }
    }
}
  • Mock: 실제 데이터베이스 없이도 Product 데이터를 사용할 수 있게 한다.
  • DI 설정을 통해 인터페이스와 Mock 객체를 연결했다.