Informatica en Gnral., MVVM, Xamarin, Xamarin.Forms

MVVM de terceros – Xamarin


Introducción

Como su documentación lo indica, Xamarin es un capa encima de los SDK nativos que en conjunto con una Máquina Virtual de Mono habilita el uso de C# para el desarrollo de aplicaciones Móviles y IoT.

Desarrollo

El uso de MVVM de terceros no está soportado por Xamarin, así mismo no está obligado a mantener la compatibilidad en cada actualización y especifica explícitamente que no está permitido hacer referencia o ejercer control sobre librerías de Xamarin o Mono.

Indagando a fondo, se encontró que Cirrus.MVVM es una solución de código libre por lo tanto no se encuentra garantizada su permanencia y constante actualización.

Así mismo, no provee mayor ventaja contra Xamarin o Xamarin.Forms, ya que oficialmente Xamarin ofrece MVVM bindings que se encuentran probados por sus mismos ingenieros y es parte de la solución que ofrece Xamarin con la licencia.

A continuación se puede demostrar que lejos de ser una ventaja el usar un MVVM de terceros, es contraproducente:

Funcionamiento Normal (Propuesto por Xamarin)

Xamarin.Forms

•Ofrece Bindings Nativos de C# con Weak References que se ejecutan de manera directa sobre el UI sin intermediarios

•Su soporte está garantizado y su RoadMap está acorde a los otros productos y servicios.

Xamarin.Android / Xamarin.iOS

•A través de DependencyService y Renderers se logra la personalización nativa.

Funcionamiento en base a lo desarrollado

MVVM Cirrus

•Busca implementar los Bindings y otras funciones sobre SDK de Xamarin y Xamarin.Forms. Con el fin de cumplir con un modelo MVVM

•No conoce el Roadmap de Xamarin, lo que lo hacer ser vulnerable antes las actualizaciones

•Su arquitectura es Singleton, lo que causa conflicto con la implementación de Xamarin MVC y Async.

•No es necesaria su implementación, Xamarin provee todo acerca del model MVVM y MVC. A su vez hace enorme la pared entre el código nativo, MONO, Xamarin SDK y su propia implementación sobre funciones YA implementadas en Xamarin

Xamarin.Forms

•Se forza a operar bajo un controlador bajo el que no está diseñado, pues debería ser el último extremo.

•No se usa la implementación propuesta por la documentación oficial de Xamarin, por lo que NO hay soporte en caso de bug.

Xamarin.Android / Xamarin.iOS

•Se ven forzados a operar bajo MVVM cuando no les corresponde pues se deberìan usar las implementaciones nativas o en su caso un PCL de Xamarin.Forms

Así mismo el código se repite en las diferentes aplicaciones nativas y se deja el PCL para parte de los ViewModels, no se sigue ninguna de las arquitecturas propuestas y se repite la lógica en cada proyecto.

El controlador de la vista se escribe para cada implementación nativa y no se sigue un patrón, Interface, clase genérica o abstracta como base, causando así problemas de uniformidad entre plataformas.

No se usan CustomRenders para tener una sola vista con ajustes menores en cada plataforma, ni DependencyServices para Singleton y una ejecución segura y anónima de las implementaciones nativas.

No se aprovecha el MessangerCenter que permita la comunicación entre vistas sin conocer entre ellas.

Conclusión

No es necesario ni recomendable el uso de MVVM de terceros pues Xamarin cuenta con el propio y va de la mano con todas las implementaciones y productos que tiene.

Se está repitiendo mucho código que podría simplificarse y es justo lo que se quiere evitar al desarrollar proyectos nativos.

Todos los ejemplos, la documentación y Apps de muestra usan Xamarin.Forms o en su defecto API’s de Xamarin.

El objetivo de usar Xamarin es la rapidez en su desarrollo, compartir la máxima cantidad de código y hacer aplicaciones uniformes.

Anuncios

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s