문제

저는 Python 애플리케이션을 만들고 있는데 MVC를 염두에 두고 구현하고 싶습니다.이 작업을 수행하기 위해 pubsub를 사용하려고 했으나 PureMVC를 발견했습니다.

누구든지 나에게 이 두 가지, 둘 사이의 차이점과 둘 중 하나를 사용하는 것의 의미를 설명해 줄 수 있습니까?

도움이 되었습니까?

해결책

당신이 언급하고있는 것 같아요 pypubsub 나는 그것에 대해 많이 알고 있습니다 (나는 저자입니다;).하지만 나는 별로 아는 바가 없다. Python용 PureMVC.

PureMVC 문서에 따르면 둘은 매우 다릅니다.문서를 검색하고 프레젠테이션을 듣는 것을 토대로 선택 시 중요하다고 생각되는 몇 가지 차이점은 다음과 같습니다.

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

모든 디커플링 전략에는 장단점이 있으므로 각각을 저울질해야 합니다.학습 곡선, 투자 수익, 재사용성, 성능, 테스트 가능성 등

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top