2009-10-25 3 views
6

나는 카푸치노에 대해 생각하고있다. StackOverview 동료가 아래의 아키텍처를 검토하고 이해할 수 있는지 확인하십시오. 목표는 장고와 카푸치노의 고유 한 이점을 활용하여 기술이 중복되는 부분을 두 배로 늘리는 것입니다.카푸치노, 장고, AJAX, 그리고 모두 함께 피팅 - 내 아키텍처를 검토!

웹 브라우저가 요청할 때 는 '친절한'URL (예를 들어, /,/기사 등) :

  • 장고의 urls.py는 보기로이 일치합니다.
  • 뷰는, 지역 주민이 DICT에 오히려 템플릿 작성의 DJangos 일반적인 작업을 수행하는 것보다,
    는 카푸치노 응용 프로그램을 직접 에 사용되는 작은 '그루터기'HTML을 반환합니다.
  • 클라이언트는 카푸치노 HTML 클라이언트는 최종 사용자 애플리케이션이 실행되고 브라우저

브라우저에 표시

  • 스터브 HTML에서 설명한 대물 J JS URL을 요청
  • 수신 이제 작동중인 앱이 있습니다. 사용자가 이 서버에서 무엇인가를 요청할 때 :

    • 브라우저는 XMLHTTPRequest를 URL로 전송합니다.
    • Django의 URLs.py는 보기와 일치합니다.
    • 보기가 작동하며 DB 모델과 상호 작용할 수 있습니다. 하지만 템플릿을 반환하는 대신 장고는 JSON을 반환합니다.
    • 클라이언트는 JSON을 수신하고 은 필요한 작업을 수행합니다.

    의미가 있습니까? 우리는 친숙한 URL과 코드를 모델링하기 위해 생성 된 데이터베이스의 이점을 여전히 가지고 있습니다. 그러나 템플릿을 사용하는 대신 사용자에게 실제 앱과 비슷한 HTML 템플릿 엔진과 같은 것을 제공하기 위해 Cappuccino 스텁 페이지와 JSON 응답을 제공합니다.

    더 좋은 방법이 있습니까? 다른 Pythonistas는 무엇을 사용합니까? 귀하의 의견에 감사드립니다.

  • 답변

    4

    소통량이 적은 사이트의 경우 Django의 라우팅 레이어를 사용하는 것이 좋지만 상당한 양의 트래픽을 얻을 계획이라면 프록시 웹 서버에서 스텁을 처리하는 것이 좋습니다.

    나머지는 TurboGears 커뮤니티에서 수년간 해왔으며 (저는 TG 커미터 였으므로 평소 사용하고 있습니다). 사전을 템플릿으로 반환하는 TG 아키텍처는 'json'을 템플릿 엔진으로 설정했기 때문에이 작업을 간단하게 만듭니다.

    장고에서 똑같은 일을하는 것은 훨씬 복잡하지 않습니다. serialization 도구를 사용하여 템플릿 호출을 사용하는 대신 결과에 응답을 씁니다.

    이와 같은 아키텍처를 수행 할 때 모든 응용 프로그램 논리를 한 곳에서 관리하면 관리가 훨씬 쉽습니다. Django에 일부 응용 프로그램 로직을 넣고 브라우저에 일부 응용 프로그램 로직을 넣으면 상당히 빨리 지저분 해지기 시작합니다.당신이 (검증/인증/권한 부여를 제외하고) 바보 영속 계층으로 서버를 치료하면 수명이 용이하다.

    FWIW, 내가 SproutCore를 사용하면 무거운 비 점진적 개선 프레임 워크에 관심이 있다면 카푸치노보다 쉽게 ​​작업 할 찾을 수 있습니다.