2011-09-15 2 views
0

프론트 엔드 웹 사이트 (site이라고 함), 관리 사이트 admin 및 웹 서비스 ws이있는 공유 데이터 모델 (기본적으로 CerealStuff)을 가진 Yii 프로젝트를 만들려고합니다. MVC 전체에 익숙하지 않으며 Yii/MVC 모범 사례와 일관성을 유지하기 위해이 프로젝트를 어떻게 디자인해야하는지 알고 싶었습니다. 지금까지이 두 가지 기본 옵션을 확인했다 :Yii MVC + Web Service = MVC가 아니십니까?

  1. 이 모델을 만들기 루트에 CerealStuff, 세 가지 모듈을 만들을 site, adminws 자신의 컨트롤러와 각;
  2. 루트에서 모델 CerealStuff을 만들고 adminpublicpublic을 만들고 컨트롤러를 포함하는 컨트롤러를 포함하고 사이트를 처리하고 @soap 선언을 처리하여 ws 항목을 처리합니다.

옵션 2는 재생 된 코딩 총량을 줄이지 만 매우 정직하게 느껴지지 않습니다. 또한 "사이트"(보기)조차 웹 서비스를 사용하여 데이터베이스에 액세스하는 현대 웹 응용 프로그램이 있어야 할 것 같은 기분이 듭니다.

의견을 보내주십시오.

답변

0

저는 앱에서 간단한 웹 서비스를 노출하고 있으며 별도의 (비누) 컨트롤러를 사용했습니다.

fat model/skinny controller 패러다임을 따르면, 웹 서비스 프론트 엔드를 모델에 쉽게 적용 할 수 있습니다.

편집 : 지방 모델의 좋은 예 : http://www.therailsway.com/2007/6/1/railsconf-recap-skinny-controllers

+0

이렇게하면 프런트 엔드 및 웹 서비스 컨트롤러에서 공유 기능을 변경하기 위해 두 곳에서 변경해야한다는 단점이 있습니다. 복잡한 출력 형식을 지정하는 컨트롤러가 있다고 가정 해보십시오. –

+0

아닙니다. 스키니 컨트롤러에 대한 링크를 참조하십시오 - 논리가 모델에 적용됩니다. 컨트롤러가 복잡한 출력 형식을 지정해서는 안되며, 이것이 사용자의 관점입니다. –

+0

알았어요 - 고마워요! –

0

front-endback-end에 대해 두 개의 진입 점이있는 MVC 구조화 된 Yii 프로젝트의 예를 보려면 this article을 읽어보십시오. 일단 이것을 배웠 으면 ws에 쉽게 다른 진입 점을 추가 할 수 있습니다.

모든 모델은 모듈간에 공유됩니다. 컨트롤러, 설정 파일 및보기는 별도입니다. 뷰는 공유로 구성 할 수도 있습니다. 많은 프로젝트에서이 유형의 구조를 사용했으며 확장 또는 확장에 대한 문제가 없었습니다.

+0

이 아니 그것이 다른 엔트리 포인트가 있어야 의미하지 않는다. Yii를 사용하면 거의 모든 유형의 구성을 작성할 수 있습니다. 파일 구조를 구성하는 방법은 여러 가지가 있습니다. – Johnatan

+0

워크 플로우 또는 기타 문제로 인해 앞뒤에 별도의 보호 된 디렉토리가있는 것이 좋으며 (이 기사의 예제 사용) 모델 디렉토리를 단순히 소프트 링크 한 적이 있습니다. 기본적으로 모델 디렉토리를 허용하면서 동시에 동일한 작업을 수행합니다 코드의 나머지 부분을 분리합니다. – ldg

관련 문제