웹 프레젠테이션

지난 몇 년간 엔터프라이즈 애플리케이션에서 가장 큰 변화 중 하나는 웹 브라우저 기반 사용자 인터페이스의 등장입니다. 이는 클라이언트 소프트웨어 설치가 필요 없고, 공통된 UI 접근 방식과 손쉬운 보편적 접근성을 제공하는 등의 많은 이점을 가져왔습니다. 또한 많은 환경에서 웹 애플리케이션을 쉽게 구축할 수 있습니다.

웹 애플리케이션 준비

웹 애플리케이션 준비는 서버 소프트웨어 자체에서 시작됩니다. 보통 이는 어떤 URL이 어떤 프로그램에 의해 처리되는지를 나타내는 구성 파일을 포함합니다. 단일 웹 서버는 여러 종류의 프로그램을 처리할 수 있으며, 이러한 프로그램은 동적일 수 있고 적절한 디렉토리에 배치하여 서버에 추가할 수 있습니다. 웹 서버의 역할은 요청의 URL을 해석하고 웹 서버 프로그램에 제어를 넘기는 것입니다. 프로그램을 웹 서버에 구조화하는 두 가지 주요 형태는 스크립트와 서버 페이지입니다.

HTML 응답을 스트림 명령을 통해 작성하는 것은 프로그래머에게 불편하고, HTML 페이지 작성을 편하게 할 수 있는 비 프로그래머에게는 거의 불가능합니다. 이로 인해 서버 페이지의 아이디어가 등장하게 되었으며, 프로그램은 반환되는 텍스트 페이지를 중심으로 구조화됩니다. HTML을 작성하고 특정 지점에서 코드를 실행하는 스크립틀릿을 HTML에 삽입하는 방식입니다. 이러한 접근 방식의 예로는 PHP, ASP, JSP가 있습니다.

Model View Controller (MVC) 패턴

스크립트 스타일은 요청을 해석하는 데 적합하고, 서버 페이지 스타일은 응답을 형식화하는 데 적합하므로, 스크립트를 요청 해석에 사용하고 서버 페이지를 응답 형식화에 사용하는 것이 적절합니다. 이 분리는 모델-뷰-컨트롤러(Model View Controller) 패턴의 기본 개념과 잘 맞아떨어집니다.

MVC의 작동 방식

모델-뷰-컨트롤러(MVC)는 종종 오해되는 패턴 중 하나입니다. 요청이 들어오면 입력 컨트롤러가 요청 정보를 가져옵니다. 그런 다음 비즈니스 로직을 적절한 모델 객체에 전달합니다. 모델 객체는 데이터 소스와 통신하고 요청에 의해 지시된 모든 작업을 수행하며, 응답을 위한 정보를 수집합니다.

작업이 완료되면 입력 컨트롤러에 제어를 반환하고, 입력 컨트롤러는 결과를 보고 어떤 뷰가 응답을 표시하는 데 필요한지를 결정합니다. 그런 다음 입력 컨트롤러는 제어와 응답 데이터를 뷰에 전달합니다.

MVC를 적용하는 첫 번째이자 가장 중요한 이유는 모델을 웹 프레젠테이션에서 완전히 분리하는 것입니다. 이를 통해 프레젠테이션을 수정하기 쉽고, 나중에 추가 프레젠테이션을 추가하기도 쉬워집니다. 처리 로직을 별도의 트랜잭션 스크립트 또는 도메인 모델 객체로 분리하면 테스트도 용이해집니다.

애플리케이션 컨트롤러

많은 사용자 인터페이스 설계는 프레젠테이션 객체와 도메인 객체를 중간 계층의 애플리케이션 컨트롤러(Application Controller) 객체로 분리합니다. 애플리케이션 컨트롤러의 목적은 애플리케이션의 흐름을 처리하고, 어떤 화면이 어떤 순서로 나타나야 하는지를 결정하는 것입니다.

이는 프레젠테이션 레이어의 일부로 나타날 수도 있고, 프레젠테이션과 도메인 레이어 사이를 중재하는 별도의 레이어로 생각할 수도 있습니다.

애플리케이션 컨트롤러는 특정 프레젠테이션에 독립적으로 작성될 수 있으며, 이 경우 여러 프레젠테이션 간에 재사용될 수 있습니다. 이는 기본 흐름과 탐색이 동일한 여러 프레젠테이션이 있는 경우에 잘 작동하지만, 서로 다른 프레젠테이션에 다른 흐름이 필요한 경우에는 적합하지 않습니다.

뷰 패턴

Template View

Template View는 페이지 구조에 프레젠테이션을 작성하고, 동적 콘텐츠가 들어갈 위치에 마커를 삽입하는 방식입니다. 많은 인기 있는 플랫폼이 이 패턴을 기반으로 하며, 대부분 서버 페이지 기술(ASP, JSP, PHP)을 사용하여 페이지에 전체 프로그래밍 언어를 삽입할 수 있습니다. 이는 많은 힘과 유연성을 제공하지만, 코드가 매우 복잡해지고 유지보수가 어려워질 수 있습니다.

Transform View

Transform View는 변환 스타일의 프로그램을 사용합니다. 일반적인 예는 XSLT입니다. 이는 도메인 데이터가 XML 형식으로 되어 있거나 쉽게 변환될 수 있는 경우 매우 효과적입니다. 입력 컨트롤러는 적절한 XSLT 스타일시트를 선택하고, 모델에서 얻은 XML에 이를 적용합니다.

두 단계 뷰

단일 단계 뷰는 애플리케이션의 각 화면에 하나의 뷰 구성 요소가 있는 경우가 많습니다. 뷰는 도메인 지향 데이터를 받아 HTML로 렌더링합니다. 반면, 두 단계 뷰는 이 과정을 두 단계로 나눕니다. 첫 번째 단계에서는 도메인 데이터를 논리적 화면으로 변환하고, 두 번째 단계에서는 이를 HTML로 렌더링합니다. 두 단계 뷰의 장점은 HTML 사용 결정을 한 곳에서 처리할 수 있어 사이트의 모든 화면에 대해 글로벌 변경을 쉽게 할 수 있다는 점입니다.

입력 컨트롤러 패턴

입력 컨트롤러에는 두 가지 패턴이 있습니다. 가장 일반적인 것은 웹 사이트의 각 페이지에 대한 입력 컨트롤러 객체를 가지는 것입니다. 가장 간단한 경우, 이 페이지 컨트롤러는 뷰와 입력 컨트롤러의 역할을 결합한 서버 페이지 자체일 수 있습니다. 많은 구현에서 입력 컨트롤러를 별도의 객체로 분리하는 것이 더 쉽습니다.

입력 컨트롤러는 적절한 모델을 생성하여 처리를 수행하고, 결과를 반환할 뷰를 인스턴스화할 수 있습니다. 종종 페이지 컨트롤러와 뷰 간에는 일대일 관계가 있지 않지만, 대부분의 경우에는 페이지 당 하나의 컨트롤러가 존재합니다.

Last updated