2014-04-11 3 views
0

나는 파이썬 응용 프로그램을 만들고있어 MVC를 염두에두고 구현하고 싶다. 이 작업을 수행하기 위해 pubsub를 사용하려고했지만 PureMVC를 발견했습니다.파이썬 PureMVC 대 Pubsub

누구나 내게이 두 가지를 설명 할 수 있을까요, 그것들과 다른 것의 차이점과 그것들을 사용함의 의미.

+0

왜 아래 표를 얻습니까? – bteres

+0

너무 넓게 보인 SO 회원처럼 보입니다. 받아 들일 수 있도록 내 대답을 업데이트 할 수 있다면 알려주십시오. – Schollii

답변

5

나는 당신이 내가 많이 알고있는 pypubsub을 가리키고 있다고 추정한다 (나는 저자 다). 그러나 나는 PureMVC for Python에 대해서 많이 모른다.

두 가지는 PureMVC 문서를 기반으로 매우 다릅니다. 여기에이 문서를 검색하고 프레젠테이션을 듣고에 따라, 선택에 중요 것이라고 생각 몇 가지 차이점은 다음과 같습니다

  • 학습 곡선 : 앱에서 pypubsub을 통합
    • 쉽습니다 : "메시지의 주제에 대한 결정 ", 메서드 및 함수를 구독하고 해당 주제에 대한 메시지를 보내십시오. 메시지를 대상으로 전송하는 작업은 자동으로 수행됩니다. "크루징 속도"API는 작습니다. pub.subscribepub.sendMessage을 학습하면됩니다.
    • PureMVC와 함께라면 중재자, 명령, 프록시 등에 대해 배워야합니다. 이들은 모두 선전해야 할 중요한 기능을 갖춘 강력한 개념입니다. 그들의 목적에 대한 "지식"에서 벗어나기 전에 몇 가지 응용 프로그램을 작성해야 할 수도 있습니다. 1 대 1 앱의 경우 오버 헤드 가끔 가치가 있습니다. 프레임 워크를 사용하는 많은 응용 프로그램을 만들면 그만한 가치가 있습니다. 응용 프로그램 디자인에
  • 영향 :
    • PyPubsub : 익명 관찰자 디자인 패턴.
    • PureMVC : MVC 아키텍처 패턴.
    • pypubsub "표준 사용"에는 사용할 클래스가 없습니다. 주로 메시지를 주제로 분류하고 데이터로 포함 할 내용을 결정해야합니다. 이것은 유기적으로 진화 할 수 있습니다. 즉, 새로운 대화 상자가 필요하며 일부 국가를 사용할 수 있도록해야합니다. 필드를 변경하면 라벨이 다른 곳으로 변경됩니다. 대화 상자에 게시를 포함하고 레이블을 업데이트하는 코드 pypubsub를 사용하면 디자인에 대해 걱정할 필요가 없습니다. 오히려 한 장소에서 다른 장소로 데이터를 가져 오는 대신 디자인에 초점을 맞추어 기능에 집중할 수 있습니다.
    • PureMVC를 사용하면 사용할 클래스가 많기 때문에 구성 요소를 파생 시켜서 등록하고 기본 클래스 기능을 구현해야합니다. 몇 가지 새로운 클래스를 만들지 않고도 애플리케이션의 한 위치에서 데이터를 쉽게 게시하고 다른 클래스에서 데이터를 캡처하여 프레임 워크에서 호출 할 때 올바른 작업을 수행 할 수 있다는 것은 분명하지 않습니다. 물론, 오버 헤드 (설계 시간)는 어떤 경우에는 가치가 있습니다.
  • 다시 유용성 다음 경우 구성 요소가 발행 어떤 메시지 주제 문서, 무엇을 듣고, 그것은 다른 응용 프로그램에 통합 될 수있는만큼
    • , 단위 등, 행동 테스트 다른 응용 프로그램은 pypubsub를 사용하지 않으며, 그것은 추가하기 쉽습니다, 거기에 아키텍처에 영향을 미치지 않습니다. 모든 응용 프로그램에서 pubsub을 사용해야하는 것은 아니며 필요한 경우에만 사용할 수 있습니다.
    • OTOH PureMVC 구성 요소는 이미 PureMVC를 기반으로하는 응용 프로그램에만 통합 될 수 있습니다.
  • 테스트 용이성 : 시각, 논리 데이터 :
    • PureMVC 레이어 걸쳐 문제를 분리하여 테스트를 용이하게한다.
    • publish-subscribe (pypubsub)는 계층에 관계없이 게시자와 소비자를 분리하여 쉽게 사용할 수 있습니다. 따라서 pypubsub를 사용하여 테스트하는 것은 테스트에서 구성 요소에서 사용하는 데이터를 게시하고 구성 요소에서 게시 한 데이터를 구독하도록하는 것입니다. PureMVC의 경우 테스트는 시각적 인 레이어와 데이터 레이어 인 것처럼 가장해야합니다. PureMVC에서 얼마나 쉬운 지 모르겠습니다.
    • 응용 프로그램이 특정 크기에 도달하면 올바른 도구가 없으면 모든 게시 - 가입 시스템을 디버그하기가 어려워 질 수 있습니다. 메시지 경로를 추적하기가 어려울 수 있습니다. Pypubsub는 개발하는 동안 사용되는이 클래스와 게시자와 수신기가 호환되는지 여부를 확인하는 기능을 제공합니다.
    • 비슷한 문제가 발생할 수있는 PureMVC 다이어그램을 기반으로 한 것처럼 보입니다. 외관상을 통해 프록시, 명령 및 중재자를 거쳐 어떤 방식으로 문제가 발생했는지 파악해야합니다. PureMVC가이 문제를 해결하기 위해 제공하는 도구를 모르겠습니다.
  • 목적 : 관찰자 패턴은 "데이터 버스"일종의 통해 다음 한 곳에서 데이터를 얻는 방법에 관한 것입니다
    • ; 구성 요소가 버스에 연결될 수있는 한 상태는 소스 또는 싱크에 대한 지식 없이도 교환 될 수 있습니다.
    • PureMVC는 아키텍처 패턴입니다. PureMVC의 역할은보기, 제어 및 데이터에 대한 우려로 응용 프로그램을 쉽게 설명 할 수있게하는 것입니다. 모델은 컨트롤이 컨트롤과 상호 작용하는 방식에 대해 신경 쓰지 않습니다. 컨트롤은 어떻게 표시되는지 신경 쓰지 않습니다. 뷰는 사용자 동작을 처리하고 표시 할 데이터의 원하는 하위 집합을 표시하는 특정 서비스를 제공하고 (일반적으로 사용 가능한 모든 데이터가 표시되지 않기 때문에) 컨트롤에 특정 서비스를 제공하는 모델이 필요합니다 (데이터를 가져 오거나 유효성 검사, 저장 등), 컨트롤은 적절한 시점에 뷰 구성 요소를 인스턴스화해야합니다.
  • 상호 배제 : 동일한 응용 프로그램에서 사용되는 두 개의 라이브러리를 방해하는 워드 프로세서를 기반으로 내가 생각할 수있는 이유는, 없다. 그들은 서로 다른 차원에서 일하고, 서로 다른 목적을 가지고 있으며, 공존 할 수 있습니다.

모든 디커플링 전략에는 장단점이 있으므로 각각의 무게를 재십시오. 학습 곡선, 투자 수익, 재사용 가능성, 성능, 테스트 가능성 등