2011-12-01 2 views
0

symfony 1.4로 개발 된 웹 애플리케이션이 있습니다. 나는 꽤 큰 코드 기반을 가지고있다. 80,000 줄의 코드 (액션, 폼, 모델, 템플릿 등)REST 프레임 워크에서 Symfony 독트린 모델 사용하기

symfony 1.4와 함께 제공되는 기본 doctrine 버전을 사용하고 있습니다.

저는 Sencha 터치를 사용하여 모바일 버전을 개발하기 시작했습니다. 다음과 같은 이유로 REST 웹 서비스에 symfony를 사용하고 싶지 않습니다.

  1. Symfony 1.4의 REST 서비스는 좋지 않습니다. 예를 들어 PUT 요청을 원하면 요청 메소드가 PUT임을 지정하는 'sf_method'매개 변수를 전달해야합니다. 이것은 진정한 휴식이 아니며 Sencha 터치에는 이상적이지 않습니다.
  2. 표준 웹 응용 프로그램을 개발하는 데 사용할 불필요한 심포니 기능 (예 : ProjectConfiguration 파일, 양식 프레임 워크 등에 자동로드되는 플러그인)이 필요하지 않습니다. 내가 필요로하는 모든 내 REST 경로를 정의하고 내가 같은 비 대한 무료, 효율적이고 신속하게 내 모바일 앱을 유지하려는

(JSON 될 것 센차 터치를 위해 반환하는 데 필요한 모든으로) 지정된 JSON을 반환하는 것입니다 가능한 한. 불행하게도이 작업을 위해 Symfony 1.4는 모바일 앱의 백엔드 아키텍처로 사용하기에 최상의 선택이 아닙니다. 심포니 2를 선택한 경우 (그것은 베타 단계 였고, 아아) Symfony2가 진정한 REST 기능을 지원하는 것과는 다른 이야기 일 것입니다. 그러나 내가해야하는 것은 선택된 REST 프레임 워크에서 현재의 교리 모델 (나는 90 개의 모델을 가지고있다)을 사용할 수있는 능력이다.

기본적으로,이 같은 간단 내가 필요 요컨대 : 당신의 조언이 될 것입니다 무슨

Call a rest route->Query my doctrine models->return the JSON without using symfony. 

그래서 내 질문? 이 질문이 가장 좋은 PHP 휴식 프레임 워크가되고 싶지는 않지만, 내가 알고 싶은 것은 내가 효율적으로 신속하게 서비스를 개발할 수있는 좋은 REST 프레임 워크가 될 것이고, 나의 교리를 사용한다. 모델이며 쉽게 확장 할 수 있습니다.

답변

2

내 고용주는 ExtJS 프론트 엔드와 Symfony 1.4 백엔드를 사용하여 다소 큰 응용 프로그램을 만들었습니다. 그리고 두 사람은 솔직히 Symfony 1.4가 어떤 식 으로든 제한받지 않는다고 느끼십니까?

우선 : 내 자신의 기본 컨트롤러 클래스 (sfActions까지 확장)를 만들었습니다. 이 컨트롤러는 다른 유형의 데이터를 처리 (렌더링) 할 수 있습니다. Doctrine_Query, Doctrine_Collection, Doctrine_Modelarray 유형의 일반 처리 기능을 가지고 있습니다.

또한 플러그인을 사용하면 코드를 구성하는 데 도움이되고, 경우에 따라 플러그인을 다른 프로젝트와 공유 할 수 있으므로 큰 장점이기도합니다. 폼과 같은 추가 기능 : 오토로더에서만 준비되어 있으므로 사용하지 않아도됩니다. 그리고 실제 성능 문제가 발생하지 않는다고 생각합니다. 그러나 데이터가 올바른지 확인하기 위해 여분의 sfValidator 프레임 워크를 사용하고 싶습니다.

실제 "문제"는 실제로 HTTP REST-ful 명령, 특히 PUTDELETE입니다. 이 문제를 해결하기 위해 각 '관리 가능한'모델에 대한 컨트롤러를 생성하고 구체적인 get, list, create, updatedelete 작업을 구현했습니다.따라서 Object을 관리하고 싶다면 executeCreate, executeUpdateexecuteDelete 개의 액션이있는 objects 컨트롤러로 문의하십시오. The reason I read, Symfony는 PHP가 실제로이 점을지지하기 때문에이 기능을 구현할 수 없었습니다. 이것이 사실인지는 모르겠지만 이것이 유일한 '진짜'문제라면 Symfony 코어에서이 문제를 해결할 수 있습니다.

내 조언 : 원시 성능에 문제가있는 경우 : 코드 프로파일 링, opcode (APC) 캐시 설치 및 코드 프로파일 링 (예, 두 번)을 시도하십시오. HTTP PUT 명령이 문제인 경우 :이 문제를 해결하거나 해결 방법을 시도합니다.

관련 문제