2008-08-31 17 views
33

Actualmente estoy usando y disfrutando del uso del marco Flex MVC PureMVC. He oído algunas cosas buenas sobre Cairngorm, que cuenta con el respaldo de Adobe y tiene un impulso inicial en el mercado. Y hay un nuevo jugador llamado Mate, que tiene mucho ruido.Marcos Flex MVC

¿Alguien ha intentado dos o tres de estos marcos y se ha formado una opinión?

Gracias!

Respuesta

48

Mate es mi elección. La primera y más importante razón es que es completamente discreto. Mi código de aplicación no tiene dependencias en el marco, está altamente desacoplado, reutilizable y comprobable.

Una de las características más agradables de Mate es la configuración declarativa, esencialmente conectas tu aplicación para usar etiquetas en lo que se llama un mapa de eventos, básicamente una lista de eventos que genera tu aplicación y qué acciones tomar cuando ellos ocurren El mapa del evento ofrece una buena visión general de lo que hace su aplicación. Mate usa el propio mecanismo de evento de Flex, no inventa el suyo como la mayoría de los otros marcos. Puede enviar un evento desde cualquier lugar de la jerarquía de vistas y hacer que suba al marco automáticamente, en lugar de tener que tener una línea directa, como Cairngorms CairngormEventDispatcher o el sistema de notificación de PureMVC.

Mate también utiliza una forma de inyección de dependencia (aprovechamiento de enlaces) que hace posible conectar sus modelos a sus vistas sin que ninguno de ellos conozca el otro. Esta es probablemente la característica más poderosa del marco.

En mi opinión, ninguno de los otros frameworks de aplicaciones Flex se acercan a Mate. Sin embargo, estos son los contendientes y por qué los considero que son menos útiles:

PureMVC niega activamente muchos de los beneficios de Flex (por ejemplo, enlaces y eventos de burbujeo) para que el marco sea portátil: una duda objetivo en mi opinión. También está sobrediseñado y es tan invasivo como viene. Cada parte de tu aplicación depende del marco. Sin embargo, PureMVC no es terrible, simplemente no es una buena opción para Flex. Una alternativa es FlexMVCS, un esfuerzo para hacer que PureMVC sea más adecuado para Flex (lamentablemente todavía no hay documentación, solo fuente).

Cairngorm es un conjunto de antipatrones que conducen a aplicaciones que están estrechamente relacionadas con variables globales. Nuff dijo (pero si estás interesado, here are some more of my thoughts y here too).

Swiz es un marco inspirado en el marco Spring para Java y Cairngorm (tratando de compensar las peores partes de este último). Proporciona un contenedor de inyección de dependencia y utiliza metadatos para habilitar el auto-cableado de dependencias. Es interesante, pero un poco extraño en eso llega a tal extremo para evitar las variables globales de Cairngorm mediante el uso de inyección de dependencia, pero luego utiliza una variable global para el envío de eventos centrales.

Esos son los que he probado o investigado. Hay algunos otros de los que he oído hablar, pero ninguno que creo que sea ampliamente utilizado. Mate y Swiz se presentaron en la reciente conferencia 360 | Flex, y hay videos disponibles (the Mate folks have instructions on how to watch them)

+0

Buen análisis y, en general, estoy de acuerdo con usted. Cabe señalar que el despachador central en Swiz es opcional y realmente solo es necesario cuando tienes un evento que muchas vistas/componentes requieren notificación, como inicio de sesión, cierre de sesión, etc. –

+0

Hace mucho tiempo, pero gracias por la respuesta. Ya estaba comprometido con PureMVC en ese momento. Y encontré algunas ventajas (separación limpia entre capas) y menos (cantidad de código, capacidad de prueba y sistema de notificación). En base a sus comentarios y los de otros, acabo de comenzar un nuevo proyecto con Mate. – Rydell

+0

Sentí exactamente lo mismo cuando comencé a buscar en Cairngorm. Lo primero que me cuentan es un ModelLocator, para hacer un seguimiento de los modelos y el estado de la aplicación. Eso sonó algunas campanas, especialmente como un tutorial de Introducción. – seanmonstar

0

Tenga en cuenta que Cairngorm es el marco patrocinado de adobe, y ahora alojado en opensource.adobe.com. También tenga en cuenta que es de lejos el más prolífico entre los desarrolladores en este momento.

Si conoce Cairngorm y está buscando trabajo, no se equivocará demasiado.

1

Actualmente estamos trabajando en una implementación MVCS en el marco Spring ActionScript. Utiliza toda la potencia del contenedor Inversión de control para que tenga administración de dependencias centralizada y pueda intercambiar cosas fácilmente. No es muy prescriptivo en la forma de hacer las cosas, pero le proporciona una infraestructura muy flexible.

Si usted es nuevo en la primavera ActionScript y MVCS, tengo un puesto de introducción en mi blog: http://www.herrodius.com/blog/158

5

que he visto este tipo de discusiones muchas veces. Por lo general, comienzan con el marco de WHICH Flex que utiliza. No muchas personas hacen la pregunta ¿POR QUÉ incluso necesita usar un marco de trabajo sobre Flex framework?

No estoy a favor de usar ningún framework MVC (Cairngorm, PureMVC) en código Flex. Mate es un mejor candidato. Al menos es fácil de entender y no intrusivo. Prefiero usar componentes mejorados
a la carta. Hemos creado y abierto varios de ellos (consulte clear.swc en Clear Toolkit en http://sourceforge.net/projects/cleartoolkit/.

El primer capítulo de nuestro próximo libro de O'Reilly "Desarrollo empresarial con Flex" tiene una comparación detallada de varios Flex marcos:. http://my.safaribooksonline.com/9780596801465

+0

Gracias por agregar la única respuesta sensata: no use un marco. Finalmente, se ha introducido cierta sensatez en la discusión. Si desea convertir una solución simple en una pila imposiblemente difícil e hinchada de código spagetti, los marcos son para usted. Si prefiere un código limpio y pulido que realmente funcione y que sea fácil de escribir y mantener, le sugiero que se mantenga alejado de todos los marcos. Creo que esto se confirma por el hecho de que el marco más popular en esta discusión es el que es "menos intrusivo". Prueba la intrusión cero, es muy refrescante. – chris

0

MATE es la manera de marco go.A el que hace lo que debe hacer un marco arquitectura simple pequeña huella Eficiencia

0

de acoplada-yo un poco mis dudas sobre estos MVC. frameworks (Mate, Cairgnorm, etc ...) con la forma en que implementan e Los mapas de ventilación y los controladores de eventos me recuerdan demasiado a wxWidgets y otros kits de herramientas GUI de ese tipo.

Sin embargo, sería muy bueno si Flex o uno de estos frameworks MVC usa el paradigma Signal/Slots que ofrece Qt.

0

se recomienda utilizar el MATE para el desarrollo de grandes proyectos y complicados, como otros marcos, mate direcciones de las preocupaciones arquitectónicas comunes en Flex, tales como el manejo de eventos, el enlace de datos y el procesamiento asincrónico, pero el objetivo más importante es que es única etiqueta basado en lo que es muy fácil de usar en nuestras aplicaciones Flex.

7

Echa un vistazo Robotlegs.

"Proporciona el pegamento que su aplicación necesita para funcionar fácilmente de forma desacoplada. Mediante el uso de la inyección de dependencia basada en metadatos automatizados Robotlegs elimina el código repetitivo en una aplicación. Al promover el acoplamiento libre y evitar el uso de Singletons y estática en el marco, Robotlegs puede ayudarlo a escribir código que sea altamente comprobable ".

+1

1+ vote for robotlegs, Cairngorm fue uno de los peores frameworks que he usado especialmente debido al uso excesivo de singletons. – Eran

0

Yes Mate es el mejor marco para flex. Lo he usado en una aplicación que tenía varias revisiones tanto en términos de GUI como del servicio de datos back-end. Solo necesitaba cambiar mi mapa de eventos cada vez que había algún cambio.

Mate también tiene implementación de MockService que hace que las pruebas sean fáciles, no una ventaja para el compañero, pero es bueno tenerlas.

1

Estoy usando (y lo recomiendo) Swiz framework. No es tan complejo y PureMVC, pero hace el trabajo bien. Además, es un contenedor IoC, y me gusta IoC.

Nunca usé Mate, así que no puedo comentar sobre eso. Pero sí recomiendo contra Cairngorm. Se dice que Cairngorm es de código abierto, pero la comunidad no lo admite bien. Su ciclo de lanzamiento también es lento. He estado esperando FOREVER para que la Biblioteca de navegación salga de la versión beta.

0

Debe diseñar su propio "marco" MVC según sus propias necesidades. Si conoce un poco los patrones de diseño, Flex tiene mucho que ofrecer de forma nativa.

Lo mejor de diseñar su propio MVC es que puede ser ligero o complejo según lo necesite.

Mi experiencia con frameworks es que básicamente tiene que escribir el doble de código del que usaría sin usar un framework. Lo bueno de los frameworks es que te obliga a trabajar de forma consistente, pero si puedes trabajar de forma consistente haciendo uso de Patrones de diseño, mejores prácticas y sentido común, te sugiero que te mantengas alejado de los frameworks.

0

Es muy difícil llegar a una conclusión sobre qué marco es mejor que otros. Dependiendo de la naturaleza y complejidad del proyecto y experiencia de los miembros del equipo & preferencia uno puede ser más adecuado que otro en una situación dada

He compilado una lista de Flex Frameworks con sus descripciones breves y consejos para obtener más información al respecto en este URL. http://practicalflex.blogspot.com/2011/08/list-of-adobe-flex-tools-frameworks.html la url puede ser útil para cualquiera que busque evaluar un marco Flex para su proyecto.

Después de evaluar la mayoría de los frameworks de Flex encontré que el framework Swiz es más simple y fácil de usar para un nuevo desarrollador. Por lo tanto, garantiza una fácil mantenibilidad & extensiblity de su aplicación.

0

He trabajado en marcos de cairngorm y mate. Empecé con el framework cairngorm. Es bueno trabajar, pero es difícil de entender al principio. Maneja el despacho de eventos inteligentemente. Puede despachar eventos de las clases en sí y las clases de comandos de cableado de la estructura lo ocuparán. Hay un único repositorio para almacenar los datos, por lo que es fácil manejar los datos. Es una clase singleton. Una vez que obtenga el marco, el trabajo es más fácil. Mate por otro lado es marco basado en etiquetas. Es un marco impulsado por eventos, por lo que todos los eventos se manejan en el archivo de mapas de eventos. Sí escucha, inyección de propiedad y muchas otras cosas de esta clase. Puede despachar eventos de las clases pasándole la instancia de dispatcher de eventos de framework. No tiene que usar una clase singleton como cairngorm en esto. Puede vincular la propiedad de una clase a las vistas utilizando directamente la inyección de propiedad, por lo que no es necesario utilizar ninguna clase singleton. En mate, todas las clases y vistas están libres de código de marco, por lo que está desacoplado. Es fácil mover los componentes de un lugar a otro.