모델 뷰 컨트롤러 설명


13

동적 웹 사이트 개발 경험은 주로 Java 서블릿으로 제한됩니다. Tomcat을 사용하여 다양한 Java 서블릿을 개발했으며,이 기술과 프론트 엔드 용 클라이언트 측 HTML / CSS / Javascript에 대해 능숙하다고 말하고 주저하지 않을 것입니다.

"동적 웹 사이트"라고 생각할 때 : 사용자는 쿼리 문자열이있는 URL을 요청하고 서버는 쿼리를 수신 한 다음 쿼리에 응답하기 위해 HTML을 동적으로 출력합니다. 여기에는 종종 요청 된 데이터를 표시하기 위해 데이터베이스와 통신하는 것이 포함됩니다. 이것은 기본 적으로 doGetJava 메소드의 기본 개념 HttpServlet입니다.

그러나 요즘에는 Django 및 Ruby on Rails와 같은 새로운 프레임 워크에 대해 점점 더 많이 듣고 있습니다.이 모든 프레임 워크는 "모델 뷰 컨트롤러"아키텍처를 활용합니다. MVC를 설명하는 다양한 기사 를 읽었 지만 실제로 이점을 이해하는 데 어려움을 겪고 있습니다. 일반적인 아이디어는 비즈니스 로직을 UI 로직과 분리하는 것임을 이해하지만 이것이 일반적인 웹 프로그래밍과 어떻게 다른지 알 수 없습니다. 웹 프로그래밍은 본질적으로 비즈니스 로직 (백엔드 서버 측 프로그래밍)을 UI 프로그래밍 (클라이언트 측 HTML 또는 Javascript)과 분리해야합니다. 두 가지가 완전히 다른 프로그래밍 영역에 존재하기 때문입니다.

질문 : MVC가 Java 서블릿과 같은 기능을 제공하는 것은 무엇이며, 더 중요한 것은 MVC 정확히 무엇이며 Java 서블릿과 같은 전통적인 접근 방식을 사용하여 동적 웹 사이트를 개발하기 위해 일반적으로하는 것과 어떻게 다른가? CGI와 같은 오래된 것)? 가능하면 MVC를 설명 할 때 MVC가 웹 개발 프로세스에 적용되는 방법과 그것이 유익한 방법을 보여주는 를 제공하십시오 .

답변:


7

먼저 MVC 아키텍처가 무엇인지에 대해 가장 잘 이야기하고 현재 프로그래밍 방식으로 나아가는 것이 좋습니다.

MVC 아키텍처는 소프트웨어 시스템 내부에서 워크 플로우를 구성하는 방법입니다. 시스템 동작을 구현하는 계층 적 방법으로 생각하십시오. 이 레이어는 다음과 같습니다.

  1. 모델 : 관련 모든 정보를 현지화해야하는 시스템 코어 인 데이터 모델을 나타냅니다. 예를 들어 게임을 삭제하려는 경우 플레이어, 규칙, 장애물 및 다음과 같은이 요소의 상호 작용과 관련된 일부 논리가 필요합니다. 규칙 세트가 적용될 때 플레이어는 장애물을 정렬 할 수 있어야합니다.

    모델 에 첫 번째로하기 때문에 오프 생각해야한다고 생각입니다 그것의 응용 프로그램의 중심이 될 것 .

  2. Controller : 마술이 일어나고 Layered Architecture가 사용하려는 객체 지향 패러다임을 충족시키는 곳입니다. 여기에서는 일부 응용 프로그램 사용자가 사용자 인터페이스를 통해 응용 프로그램에 대해 무언가를 요청할 때 시스템이 어떻게 반응하는지 구현합니다.

    컨트롤러는 모델 객체를 처리하고, 사용자가 요청한 것을 달성하기 위해 모델 객체를 조작 한 다음 해당 뷰 레이어에 결과를 위임하여 사용자에게 다시 렌더링 할 수 있어야합니다.

  3. 보기 : 사용자의 시작 및 끝 지점 상호 작용입니다. 여기에서 사용자가 응용 프로그램과 상호 작용하는 방법을 정의합니다. 요즘 꽤 일반적인 사용자는 예를 들어 휴대폰, 테이블, PC, 랩톱 등과 같은 다양한 종류의 미디어에서 웹 응용 프로그램에 액세스하려고합니다.

    일반적으로 각 기술은 뷰를 작성하기 위해 다른 언어가 필요하므로 데이터 모델과 모델이 상호 작용하는 방식 및 해당 상호 작용을 렌더링하는 방법이 모두 하드 코딩되어 있다고 가정하면 CopyPaste가 아닌 방식으로 코드를 재사용 할 수있는 방법이 절대 없다 . 결과적으로 냄새가 나고 HOLE 시스템에 적응하는 데 많은 시간이 낭비됩니다.

    분리 된 레이어에 를 갖는 장점으로 인해 현재 작업중인 모델과 독립적 으로 작업 할 수 있습니다. 컨트롤러가 전송 한 객체 목록을 렌더링하는 방법 만 알면됩니다. 그가 어떻게 그것을 생성 했습니까?

결국, 우리는 현재의 필요에 따라 적절하게 적용 할 수 있는 독립 모델 을 얻었습니다 (오늘 나는 규칙이없는 모노 유저 게임을 처리해야합니다. 내일은 친구와 멀티 플레이 등을하고 싶습니다). 사용자에게 어떻게 렌더링 할 것인지에 달려 있지 않습니다. 그런 다음 컨트롤러 캡처 사용자가 요청하는 것을 그 뷰, 프로세스 모델 개체에서 온 한 다음 렌더링 할 수있는 볼 수있는 정보 등을 제공합니다.

첫 번째 질문으로 돌아 가기 : MVC는 소프트웨어 제작 기술이 아닌 일을하는 길입니다. 자바 서블릿을 사용하고 그 아래에 MVC Achitecture를 구현할 수 있습니다.

다음은 MVC 아키텍처를 사용한 Q & A 예제 사이트입니다. 여기에 이미지 설명을 입력하십시오


6

질문에 대답하기 위해

What does MVC offer over something like a Java servlet

MVC는 기술이 아닌 패턴입니다. 따라서 서블릿으로 프로그래밍 할 때 패턴을 적용 할 수도 있습니다.

서블릿 자체로 MVC 패턴을 설명하려고합니다. 따라서 MVC 적용에 대해 이야기 할 때 모델 (비즈니스 로직), 뷰 (프레젠테이션 로직) 및 컨트롤러 (컨트롤을 적절한 비즈니스 로직에 위임하는 컨트롤러 서블릿)를 분리해야합니다.

이 경우 MVC는 비즈니스를 프레젠테이션 계층과 컨트롤러 계층에서 분리하는 것이 아니라 비즈니스 계층이 컨트롤러 나 프레젠테이션이 존재한다는 사실조차 알지 못합니다.

Struts와 같은 Java의 주요 프레임 워크는이 패턴을 따릅니다. 나는 당신이 개념을 잘못 생각합니다. 인터넷에서 자세한 내용을 읽을 수 있습니다.


2

MVC는 실제로 이해하기 쉽고 디자인 패턴 일뿐입니다. 그러나 가장 어려운 / 이해 된 모델은 모델 부분입니다.

  • Model : 귀하의 데이터 (독점적으로 데이터베이스가 아닙니다! 모델은 ini 또는 xml 파일이거나 웹 서비스의 데이터 일 수도 있습니다). 모델 클래스는 데이터를 정의, 조립 및 처리 할 목적으로 사용됩니다. " MVC의 M : 모델이 잘못 이해되고 이해되지 않는 이유 "라는 훌륭한 기사를 읽으십시오 . 모델은 컨트롤러에서만 액세스해야합니다.
  • Views : GUI (프레젠테이션) 코드. 컨트롤러에만 액세스해야합니다
  • 컨트롤러 : 당신의 논리. 모델과 뷰 간의 통신을 처리합니다.

1

모델 - 뷰 - 컨트롤러의 개념은 새로운 것이 아니다. 1979 년경 스몰 토크에서 시작되었습니다.

핵심적으로 MVC는 코드의 책임을 체계적으로 구성하여 예측 가능하고 견고하게 만들 수있는 방법입니다.

분리는 다음과 같은 자유를 허용합니다.

  • 응용 프로그램 논리에 영향을 주거나 데이터를 표시하지 않고 모델을 발전시키는 기능
  • 모델에 영향을주지 않고 비즈니스 로직을 변경하는 기능 (예 : 새 단계 추가 등)
  • 여러 가지 다른 방법으로 모델을 표현하는 기능

주의를 기울이면 모델과 컨트롤러를 설계하여 데스크톱 응용 프로그램을 웹 응용 프로그램으로 프런트 엔드로 완전히 대체 할 수 있습니다.

최근에 MVC에 대한 Ruby on Rails 접근 방식은 거의 모든 MVC 스타일 웹 애플리케이션 프레임 워크에서 복사 된 몇 가지 새로운 개념을 도입했습니다. 여기에는 "컨벤션 오버 컨벤션", 컨트롤러 작업을 클래스 메서드에 매핑 및 URL 요청을 기본 코드로 라우팅하는 개념이 포함되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.