어플리케이션의 구조를 Model(모델), View(), Controller(컨트롤러) 분리하는 패턴

 - Model(모델) : 실제 로직을 구현하는 부분. 일반적으로 데이터베이스로부터 데이터를 가져와서 담아두거나, 데이터 베이스로 저장하는 역할

- View () : 사용자 인터페이스, , UI부분. 화면 출력과 관계된 로직을 포함할 수는 있지만, 사용자 입력이나 인터랙션, 업무와 관계된 로직은 View 가져서는 안된다. 오로지 화면출력!

- Controller (컨트롤러) : mvc에서 가장 핵심이 되는 패턴. 사용자의 인터렉션을 처리하고, 모델을 조작하며, 최종 UI 출력할 있는 뷰를 담당한다.

 

   

이를 사용하는 이유,

  1. 요소 간에 연결을 보다 느슨하게 구성할 수가 있게 되어, 복잡한 애플리케이션을 관리하기에 용이하다.
  2. 병행 개발(동시에 각각의 컴포넌트를 개발하는 방식) 가능하다.
  3. 이러한 분리로 인하여, 기존의 ASP.NET 애플리케이션보다 훨씬 테스트하기가 용이하다.
    1. 기존의 ASP.NET 테스트 하기 위해서는 사용자 입력에 따라 반드시 서버가 요구된다는 제약이 있었지만, MVC 패턴을 적용하면 개별적인 컴포넌트를 독립적으로 테스트 있게 된다. ?? (? 뭔소릴가.)

         

 

  1. View - ViewResult 액션 결과 반환
  2. Redirect - RedirectResult 액션 결과 반환
  3. RedirectToAction - RedirectToRouteResult 액션 결과 반환
  4. RedirectToRoute - RedirectToRouteResult 액션 결과 반환
  5. Json - JsonResult 액션 결과 반환
  6. JavaScriptResult - JavaScriptResult 액션 결과 반환
  7. Content - ContentResult 액션 결과 반환
  8. File - 메서드와 함께 전달된 파라미터에 따라 FileContentResult, FilePathResult, FileStreamResult 액션 결과 반환

     

   

액션 결과는 ActionResult 클래스를 상속한다. 대부분의 경우 ViewResult 반환한다.

 

기반의 애플리케이션의 장점

· 각각의 페이지 단위로 기능을 작성하는 Page Controller 패턴을 사용한다
:
개별 화면 단위 중심적인 업무를 개발하기에 매우 적합하다.

· 이벤트 중심의 프로그래밍 모델을 제공한다
:
다양한 이벤트를 제공하는 많은 서버 컨트롤이 제공되기에, 이벤트 중심적인 개발을 통해 업무 화면을 직관적으로 작성할 있다.

· 뷰상태(ViewState) 서버 기반의 폼을 사용하기에, 상태 정보를 관리하기에 용이하다.

 

MVC 기반의 애플리케이션의 장점

· 모든 요청을 단일 컨트롤러를 통해서 처리하는 Front Controller 패턴을 사용한다 
:
모든 요청을 단일 컨트롤러를 통해 처리하므로, 라우팅(routing) 하부구조를 지원하는 애플리케이션을 개발할 있다.

· 애플리케이션을 3개의 논리 모듈로 분리하기에 애플리케이션의 복잡성을 관리하기 쉽게 한다.

· 뷰상태나 서버 기반의 폼을 사용하지 않는다 
:
개발자가 애플리케이션의 동작방식을 전체적으로 제어할 있으므로 세밀하게 애플리케이션을 조작하고 싶은 이들에게 적합하다. , 이러한 기능(상태정보 관리) 필요할 경우 추가적인 작업이 요구된다.

   

출처 : TAEYO.NET ASP.NET 강좌 기반의 개발과 MVC 기반의 개발 http://www.taeyo.net/Columns/View.aspx?SEQ=214&PSEQ=35&IDX=0

 

반응형

'Backend > .NET Framework' 카테고리의 다른 글

ASP.NET MVC 만들면서 배우기- 배우자(1) - view  (59) 2013.10.07
MVC 시작하기(1)  (60) 2013.10.07
Substring  (61) 2013.08.29
C# 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.  (57) 2013.08.09
c# split  (59) 2013.07.15

+ Recent posts