완전히 모듈 식 웹 애플리케이션을 구축하는 방법


34

앞으로 몇 달 안에 우리는 클라이언트 (v1) 용으로 구축 한 시스템을 처음부터 다시 빌드하는 프로젝트를 시작할 것입니다. v2의 목표는 모듈화하여이 특정 클라이언트가 사용하는 고유 한 모듈 세트를 갖도록하고 다른 클라이언트가 다른 모듈 세트를 모두 사용할 수 있도록하는 것입니다. 여기서 요점은 회사 A에 시스템 작동 방식을 변경하는 일련의 체크 아웃 및 사용자 모듈이있을 수 있다는 것입니다. 회사 B는 표준 결제 절차를 따르지만 제품 탐색 방법을 사용자 정의 할 수 있습니다.

응용 프로그램을 처음부터 새로 작성할 때 Core모든 클라이언트간에 공유 하려는 응용 프로그램 아키텍처에 대한 좋은 접근 방법 은 무엇입니까?

CodeIgniter의 후크를 보았고 250 후크로 끝날 수 있지만 여전히 유연하지 않기 때문에 이것이 좋은 해결책이라고 생각하지 않습니다. 다른 해결책은 무엇입니까? 이상적으로는 모래에 선을 그릴 필요가 없습니다.

답변:


26

고도로 조직화되고 분리 된 모듈성을 달성하기 위해 프리젠 테이션-추상-제어라고도 하는 계층 적 MVC 아키텍처 패턴을 따를 수 있습니다 (단, 동일한 패턴은 아니지만). Kohana , 합금 , 유창성FuelPHP 지원 HMVC 기본적으로 * 및 Kohana의 HMVC의 접근 방식에 설명되어 HMVC와 스케일링 웹 응용 프로그램성능을위한 최적화 HMVC 웹 응용 프로그램 에 의해, 샘 드 프레시 네 .

불행히도 CodeIgniter는 기본적으로 HMVC를 지원하지 않습니다. wiredesignz의 codeigniter-modular-extensions-hmvc 에서 영감을 받아 CodeIgniter에서 일종의 HMVC 지원을 제공하기 위해 자체 라이브러리를 만들었습니다 . nettus +에는 CodeIgniter와 wiredesignz의 확장에 대해 다루는 HMVC 기사에 대한 아주 좋은 소개가 있습니다. 다음 이미지와 인용문은 해당 튜토리얼에서 가져온 것입니다.

여기에 이미지 설명을 입력하십시오

각 트라이어드는 서로 독립적으로 작동합니다. 트라이어드는 컨트롤러를 통해 다른 트라이어드에 대한 액세스를 요청할 수 있습니다. 이 두 지점을 통해 필요한 경우 응용 프로그램을 여러 위치에 분산시킬 수 있습니다. 또한 MVC 트라이어드의 계층화는보다 심층적이고 강력한 응용 프로그램 개발을 가능하게합니다. 이로 인해 다음과 같은 몇 가지 장점이 있습니다.

마지막으로 HMVC 아키텍처를 채택하더라도 구현과 원하는 자동화 수준에 따라 후크로 해결해야 할 몇 가지 문제가 있습니다. . pre_controller예를 들어, 후크를 잘 사용하면 설치된 모듈에 대한 모든 종속성이 존재 하도록하는 후크가됩니다.

* 내가 모르는 다른 사람들이있을 수 있습니다.


1
ASP.NET MVC가이를 지원합니까?
Robert Harvey

@RobertHarvey 나는 전혀 모른다 ...
yannis

@Robert Harvey 나에게 이것은 프레임 워크보다 더 많은 패턴처럼 보입니다. 어쩌면 내가 뭔가를 잃어 버렸지 만 ASP.NET MVC에서 상속 으로이 작업을 수행 할 수없는 이유를 알 수 없습니다.
Jeremy

3
@ Jeeremy : 특히 뷰의 일부를 재사용하려는 경우 뷰에서 까다로워집니다. 흥미로워 보이지만 너트와 볼트 수준에서 시각화하기가 어렵습니다.
Robert Harvey

위의 다이어그램에서 상위 수준보기는 계층 구조에서 낮은 위치에있는 작은보기로 구성되어 있습니다. 즉, 이미와 어느 정도 수행 할 수 있습니다RenderAction()
로버트 하비

5

나는 PHP 녀석이 아니지만 가능한 한 독립적으로 유지하고 싶은 많은 모듈을 가지고 싶다면 자바 스크립트쪽에 RequireJS 와 같은 몇 가지 시스템이 있습니다. 다른 모듈에 대한 종속성을 선언하는 모듈 및 프레임 워크는 필요할 때로드되도록합니다.

다양한 프레임 워크는 종속성 선언 방법, 서버 빌드 단계, 페이지로드 또는 요청시 동적으로 수행되는 종속성 처리량 및 Java 작성 방법을 얼마나 많이 변경 해야하는지에 따라 다릅니다. 스크립트.

이러한 프레임 워크는 서버 측 프레임 워크가이를 처리하거나 Java 스크립트를 생성하는 경우 그다지 많지 않거나 전혀 적용되지 않지만 Java 스크립트가 서버 측 프레임 워크와 독립적이기를 원할 수 있습니다.

자바 스크립트가 너무 많지 않지만 모듈성을 원한다면 항상 의존성을 가진 스크립트 태그를 정렬하고 단일 객체로 자신을 등록하여 서로를 참조하여 의존성을 처리하는 익명의 자체 호출 함수를 고수 할 수 있습니다 글로벌 네임 스페이스 그것은 적어도 그것들을 거의 모듈화시키고 구현하는데 많은 비용을 들이지 않습니다.


0

다음은 모듈 식 설계를 수행하는 방법에 대한 지침입니다. https://class.coursera.org/saas/lecture/preview/9

" 이전 : 분산 컴퓨팅 및 모듈 식 프로그래밍 의 오래된 개념 부터 SOA를 통한 최신 매쉬업 사례, SaaS 까지 연속체로 SOA 를 볼 수 있습니다 ."

HMVC 코드 구성 자체가 반드시 모듈화로 이어지지는 않습니다.

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