Pregunta

Estoy creando una aplicación Python y quiero implementarla teniendo en cuenta MVC.Iba a usar pubsub para lograr esto pero me encontré con PureMVC.

¿Alguien podría explicarme estas dos cosas, las diferencias entre ellas y las implicaciones de usar una sobre la otra?

¿Fue útil?

Solución

Supongo que te refieres a pypubsub del cual sé mucho (soy el autor;).Sin embargo no sé mucho sobre PureMVC para Python.

Los dos son muy diferentes, según los documentos de PureMVC.Aquí hay algunas diferencias que creo que serían importantes a la hora de elegir, según la exploración de los documentos y la escucha de la presentación:

  • Curva de aprendizaje:
    • Incorporar pypubsub en tu aplicación es fácil:decidir sobre "temas de mensajes", suscribir métodos y funciones, agregar enviar mensajes para esos temas.El transporte de los mensajes al destino es automático.La API de "velocidad de crucero" es pequeña:tienes pub.subscribe y pub.sendMessage para aprender y listo.
    • con PureMVC tienes que aprender sobre mediadores, comandos, proxies, etc.Todos estos son conceptos poderosos con una funcionalidad significativa que tendrá que aprender de antemano.Es posible que incluso tengas que escribir un par de aplicaciones antes de pasar del "conocimiento" de su propósito a la "comprensión" de cuándo y cómo usarlas.Para una aplicación única, los gastos generales a veces valen la pena.Probablemente valga la pena si crea muchas aplicaciones que utilicen el marco.
  • Impacto en el diseño de la aplicación:
    • PyPubsub:patrón de diseño de observador anónimo.
    • PuroMVC:Patrón arquitectónico MVC.
    • No hay clases para usar con pypubsub "uso estándar".Principalmente tienes que clasificar tus mensajes en temas y decidir qué incluir como datos.Esto puede evolucionar de forma bastante orgánica:necesita un nuevo cuadro de diálogo y debe hacer que parte de su estado esté disponible para que cuando cambie un campo, una etiqueta cambie en otro lugar:todo lo que necesita hacer es incluir una publicación en el cuadro de diálogo y una suscripción en el código que actualiza la etiqueta.En todo caso, pypubsub te permite no preocuparte por el diseño;o más bien, le permite centrar su diseño en la funcionalidad en lugar de en cómo llevar datos de un lugar a otro.
    • Con PureMVC hay muchas clases para usar, requieren que diseñe sus componentes para derivar de ellos, registrarlos e implementar la funcionalidad de la clase base.No es obvio que pueda publicar fácilmente datos desde un lugar de su aplicación y capturarlos en otro sin crear varias clases nuevas e implementarlas de modo que hagan lo correcto cuando las llame el marco.Por supuesto, los gastos generales (tiempo de diseño) en algunos casos valdrán la pena.
  • Reutilizabilidad:
    • Siempre que un componente documente qué temas de mensajes publica y qué escucha, se puede incorporar en otra aplicación, realizar pruebas unitarias de comportamiento, etc.Si la otra aplicación no usa pypubsub, es fácil de agregar y no hay impacto en la arquitectura.No todas las aplicaciones necesitan usar pubsub, solo se puede usar donde sea necesario.
    • OTOH, un componente PureMVC solo se puede incorporar a una aplicación que ya esté basada en PureMVC.
  • Comprobabilidad:
    • PureMVC facilita las pruebas al separar las preocupaciones en capas:imágenes, lógica, datos.
    • Mientras que publicar-suscribir (pypubsub) lo facilita al separar entre editores y consumidores, independientemente de la capa.Por lo tanto, probar con pypubsub consiste en hacer que la prueba publique los datos utilizados por su componente y suscribirse a los datos publicados por su componente.Mientras que con PureMVC la prueba tendría que pretender ser capas visuales y de datos.No sé qué tan fácil es eso en PureMVC.
    • Cada sistema de publicación-suscripción puede resultar difícil de depurar sin las herramientas adecuadas, una vez que la aplicación alcanza un cierto tamaño:Puede resultar difícil rastrear la ruta de los mensajes.Pypubsub proporciona clases que ayudan con esto (para usar durante el desarrollo) y funcionalidad que verifica si los editores y los oyentes son compatibles.
    • Me parece que, según los diagramas de PureMVC, surgirían problemas similares:tendrías que seguir tu camino a través de representantes, comandos y mediadores, a través de fachadas, para descubrir por qué algo salió mal.No sé qué herramientas proporciona PureMVC para solucionar esto.
  • Objetivo:
    • El patrón de observador trata sobre cómo llevar datos de un lugar a otro a través de una especie de "bus de datos";Siempre que los componentes puedan conectarse al bus, el estado se puede intercambiar sin conocer la fuente o el sumidero.
    • PureMVC es un patrón arquitectónico:su trabajo es facilitar la descripción de su aplicación en términos de aspectos de vista, control y datos.Al modelo no le importa cómo interactúa el control con él;al control no le importa cómo se muestra;pero la vista necesita el control para proporcionar servicios específicos para manejar las acciones del usuario y mostrar el subconjunto de datos deseado (ya que normalmente no se muestran todos los datos disponibles), y el control necesita que el modelo proporcione servicios específicos (para obtener datos, cambiar validarlo, guardarlo, etc.) y el control necesita crear una instancia de los componentes de la vista en el momento adecuado.
  • Exclusión mutua:No se me ocurre ninguna razón, según los documentos, que impida que las dos bibliotecas se utilicen en la misma aplicación.Trabajan en diferentes niveles, tienen diferentes propósitos y pueden coexistir.

Todas las estrategias de desacoplamiento tienen pros y contras, y hay que sopesar cada una de ellas.Curva de aprendizaje, retorno de la inversión, reutilización, rendimiento, testabilidad, etc.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top