MVC

tacoyaggi ㅣ 2024. 2. 13. 08:55

정의

MVC는 Model, View, Converoller의 약자로 소프트웨어 디자인 패턴 중 하나임.

이 패턴은 웹 어플리케이션을 개발할 때 주로 사용함. 

 

웹에서 사용하는 이유

 

분리된 역할

MVC는 데이터, 사용자 인터페이스 및 비즈니스 로직을 분리함으로써 각 부분을 개별적으로 개발하고 유지 관리할 수 있음. 이로 인해 코드의 가독성과 유지 보수성이 향상

 

재사용성

각 부분이 분리되어 있기 때문에, 모델이나 뷰를 변경하더라도 다른 부분에 영향을 미치지 않음. 이는 코드의 재사용성을 향상 시킴.

 

유연성

사용자 인터페이스를 변경하거나 업데이트하는 경우에도 비즈니스 로직이나 데이터 모델에 영향을 미치지 않음.

이는 어플리케이션을 보다 유연하게 유지할 수 있게함.

 

효율성

MVC는 개발 프로세스를 효율적으로 만들어줌. 각 부분을 개별적으로 테스트할 수 있으며, 개발자들 간의 협업에 용이함.

 

적합한 구조

웹 어플리케이션은 데이터 처리, 사용자 인터페이스 및 비즈니스 로직의 분리가 중요함. MVC는 이러한 요구 사항을 충족시키며 웹 어플리케이션의 복작성을 다를 수 있음

 

MVC 디자인 패턴은 내가 개발을 시작하기 전부터 자주 들었던 패턴으로 오랜 기간동안 사용되고 검증된 디자인 패턴임.

각 구성 요소가 서로 독립적으로 개발되고 유지 보수될 수 있도록 하여 코드의 가독성과 유연성을 높임.

사용자 인터페이스의 변경이나 확장에 용이하며, 코드의 재사용성을 높이고 어플리케이션의 구조를 명확하게함.

이러한 이점으로 MVC는 웹 어플리케이션에 널리 사용되고 있음.

 

 

구조

Model

데이터와 비즈니스 로직을 포함. 모델은 어플리케이션의 상태와 데이터를 관리하고, 이러한 데이터에 대한 조작 및 업데이트를 수행함.

데이터베이스에서 정보를 가져오고나 저장하는 등의 작업이 모델에 해당함.

 

View

사용자에게 데이터를 시각적으로 표시하는 역할. 뷰는 일반적으로 화면에 표시되는 UI 요소들을 구성하고, 사용자와 상호 작용할 수 있는 인터페이스를 제공함. 

사용자에게 정보를 표시하고 사용자의 입력을 받아 컨트롤러에 전달함.

 

Controller

사용자의 입력을 처리하고, 모델과 뷰 사이의 상호 작용을 관리함.

컨트롤러는 사용자의 요청을 받아 모델을 업데이트하거나 그 결과를 적절한 뷰에 전달하여 사용자에게 표시함.

주로 이벤트 핸들링과 라우팅을 담당함.

 

 

예제

MVC 프로젝트를 생성하면 아래와 같은 기본 구조임.

 

모델에 Entity와 Dto를 생성해줌.

Entity는 실제 DB와 ORM 역할의 모델이고, Dto는 파라미터 및 주고 받는 데이터가 될 모델임.

namespace MVC.Models
{
    public class TacoEntity
    {
        public int No { get; set; }
        public string Name { get; set; }
    }
}



namespace MVC.Models
{
    public class TacoDto
    {
        public string NickName  { get; set; }
    }
}

 

뷰소스임. ORM을 제외한 모델은 Dto를 사용한다고 하였음. 

뷰에서는 Dto 모델의 프로퍼티를 UI로 보여줌.

@model TacoDto

<h1>@Model.NickName</h1>

 

컨트롤러에서는 Entity 와 Dto를 사용하여 데이터를 가공할 수 있음. 

Dapper를 통해 ORM을 적용했고 뷰에 Dto를 전달함.

ViewModel 을 사용해도 무관. (ViewModel은 컨트롤러에서 뷰로 전달하는 모델형)

using Dapper;
using Microsoft.AspNetCore.Mvc;
using MVC.Models;
using System.Data;
using System.Data.SqlClient;

namespace MVC.Controllers
{
    public class HomeController : Controller
    {
        public IActionResult Index()
        {
            string db = "";
            string query = "select No, Name from TacoMember";

            TacoDto responseDto = new TacoDto();

            using (IDbConnection conn = new SqlConnection(db))
            {
                TacoEntity tacoEntity = conn.QueryFirst<TacoEntity>(query);
                responseDto.NickName = tacoEntity.Name;

            };
            
            return View(responseDto);
        }
    }
}

 

 

결론

MVC는 디자인 패턴으로 웹 어플리케이션에서 오랜 기간동안 사용된 패턴이다.

모델 뷰 컨트롤러는 각각의 맞는 역할을 가지고 있으며 개발자는 역할에 맞게 개발을 해야 한다. 

워낙 유명하고 많이 사용하는 디자인 패턴이라 정리 해봄.

'SW 구조 > 디자인패턴' 카테고리의 다른 글

DTO 디자인패턴  (0) 2023.11.08