Las aplicaciones móviles hoy en día se vuelven cada vez mas complejas y los requerimientos para las mismas cambian constantemente. Es imperativo construir una arquitectura flexible y moderna tanto en la aplicación como para el back-end, esto significa que las aplicaciones deben construirse a partir de varios componentes más pequeños que funcionen juntos sin problemas. En esta sesión, exploraremos una arquitectura de extremo a extremo para construir una aplicación móvil empresarial moderna y su back-end. La aplicación está construida con Xamarin.Forms, basada en los principios de MVVM. En el back-end, la aplicación conecta con una API basada en microservicios, construida con ASP.NET Core y alojada con Docker.
3. Contenidos
• Estructura general de la aplicación
• La arquitectura de la aplicación Xamarin
• MVVM
• Inyección de dependencia
• Loosely-coupled Messaging
• Navegación
• Servicio de comunicación
• Pruebas
• Arquitectura de back-end
• Microservicios basados en .NET Core
• Docker
www.ymatias.com
19. Beneficios de usar MVVM
• Testable
• Los desarrolladores y
diseñadores pueden trabajar
independientemente
• Se puede agregar una nueva
vista XAML encima de los
modelos de visualización sin
problemas
• Se pueden realizar cambios
en el ViewModel sin arriesgar
problemas con el modelo
www.ymatias.com
21. Respondiendo a los cambios en el modelo (vista)
• Manejalos a través de la interfaz INotifyPropertyChanged
• PropertyChanged es provocado por cambios en el modelo
de vista o cambios en el valor de propiedad del modelo
• No llamar PropertyChanged en un bucle
• No llamar PropertyChanged desde el constructor
• No llamar PropertyChanged cuando el valor no a
cambiando
24. Commanding
• La acción se define en un lugar y
se puede invocar desde varios
lugares en la interfaz de usuario
• Disponible a través de la interfaz
ICommand
• Define Execute () y CanExecute
()
• Podemos crear nuestros propios
comandos o usar los ya
incorporados
25.
26. Behaviors
• Propiedad de comando
disponible solo en controles
derivados de ButtonBase
• Otros controles e
interacciones solo posibles a
través de “behaviors”
• Uso de un behaviors adjunto
• Uso de un behaviors
Xamarin.Forms
www.ymatias.com
33. Inyección de
dependencia
• Tipo de inversión de control (IoC)
• Otra clase es responsable de
obtener la dependencia requerida
• Resultados en un acoplamiento
más flexible
• El contenedor maneja la creación
de instancias así como la vida útil
de los objetos
• Autofac se usa comúnmente
• Muchos otros existen
39. Navegación y
MVVM
• La navegación no siempre es fácil de
incluir en un escenario de MVVM
• No se puede introducir un
acoplamiento hermético
• ¿Quién es responsable de la
navegación? ViewModel? ¿View?
• ¿Cómo podemos pasar parámetros
durante la navegación?
• Xamarin.Forms viene con la interfaz
INavigation
• Tiene lo básico para escenarios de la
vida real
42. REST
• REST: Representational State
Transfer
• Basado en estándares abiertos de
HTTP
• Abierto para todo tipo de
aplicaciones
• Enviaremos solicitudes para
acceder a estos recursos URI y
el método HTTP se utilizan para
esto
• Resultados en el código de
estado HTTP
• 200, 404 ... basado en el
resultado de la solicitud
43. Comunicándose con una API REST
• Las aplicaciones suelen utilizar servicios para realizar la solicitud
de datos
• Son responsables de la comunicación con la API
• Controladores en microservicios API devuelven DTO
• Se transfieren a la aplicación
• La aplicación puede usar la clase HttpClient
• Funciona con JSON
• Devuelve HttpResponseMessage después de recibir una
solicitud
• Luego se puede leer y analizar
• Json.NET
47. ".NET Core es una plataforma de desarrollo de propósito
general mantenida por Microsoft y la comunidad .NET en
GitHub. Es multiplataforma, admite Windows, macOS y
Linux, y se puede usar en dispositivos, en la nube y en
escenarios integrados / IoT ".
fuente: https://docs.microsoft.com/en-
us/dotnet/articles/core
48. "ASP.NET Core es un nuevo framework de código
abierto y multiplataforma para la construcción de
aplicaciones modernas conectadas a Internet basadas
en la nube, como aplicaciones web, aplicaciones IoT y
backends móviles".
fuente: https://docs.microsoft.com/en-
us/aspnet/corefuente: https://docs.microsoft.com/en-
us/dotnet/articles/core
49. ASP.NET Core
•Construido sobre .NET Core
•Ligero
•Multiplataforma
•Windows, Mac y Linux
Fácil en combinación con Docker y
Microservicios
51. Monoliticas
• Cliente-servidor a menudo resulta
en aplicaciones escalonadas
• Tecnología específica utilizada
por nivel
• Conocidas como aplicaciones
monolíticas
• A menudo tienen un
acoplamiento estrecho entre los
componentes en cada nivel
• Los componentes no se
pueden escalar fácilmente
• Probando componentes
individuales también puede
ser difícil
52. Monoliticas
• No poder escalar puede ser un
problema para la preparación a la
nube
• Todas las capas son
típicamente requeridas
• Escalar significa clonar la
aplicación completa en varias
máquinas
53. Un vistazo a los microservicios
•Los microservicios son más fáciles de implementar y
desarrollar
•Mejor agilidad
•Mejor combinación con la nube
•La aplicación se descompondrá en varios componentes
• Los componentes entregan la funcionalidad de la aplicación
•Microservicio = aplicación pequeña, preocupación
independiente
• Tiene contratos para comunicarse con otros servicios
•Microservicios típicos
• carrito de compras
• Sistema de pago
• Sistema de inventario
54. Un vistazo a los microservicios
• Puede escalar de forma independiente
• Si un área requiere más potencia de procesamiento, puede
ampliarse por separado
• Otras partes pueden permanecer igual
•La ampliación puede ser instantánea
•Interfaz web es para manejar más tráfico
entrante
55. Un vistazo a los microservicios
• Los microservicios administran sus propios
datos
• Localmente en el servidor en el que se ejecutan
• Evite la sobrecarga de la red
• Procesamiento mas rapido
• Incluso elimina la necesidad de almacenar en
caché
• Soporte para actualizaciones independientes
• Una evolución más rápida
• Actualizaciones continuas, en un subconjunto de instancias de
reversión de soporte de servicio único
56. Beneficios de
usar
microservicios
• Evoluciona fácilmente
• Escalan de forma
independiente
• Aislar problemas del
microservicio defectuoso
• Puede usar lo último y lo
mejor
• No está obligado a usar
tecnologías antiguas
57. Desventajas
de usar
microservicios
• Particionar una aplicación real es
difícil
• Compleja Intercomunicación entre
servicios
• Consistencia eventual
• Las transacciones atómicas a
menudo no
soportado
• La implementación (inicial) puede ser
más difícil
• La comunicación directa entre cliente
y microservicio podría no ser una
buena idea
59. “La Containerización es un enfoque para el desarrollo
de software en el que una aplicación y su conjunto
versionado de dependencias, más su configuración
de entorno abstraída como archivos de manifiesto de
implementación, se empaquetan juntos como una
imagen de contenedor, se prueban como una unidad
y se implementan en un sistema operativo host.”
60. Agregando contenedores a la mezcla
• El contenedor es un entorno
operativo aislado, controlado por
recursos y portátil
• Las aplicaciones en contenedores
se ejecutan sin tocar los recursos
del host u otros contenedores
• Actúa como una VM o máquina
física
• Funciona muy bien en
combinación con microservicios
• Docker es el enfoque utilizado
más comúnmente aquí
61. ¿Qué es un contenedor realmente?
• Un Contenedor ejecuta un sistema operativo
• Contiene sistema de archivos
• Se puede acceder a través de la red como una máquina / VM real
• Contiene la aplicación (y dependencias)
• •En general, requieren menos recursos para funcionar que las
máquinas virtuales comunes.
• Permiten escalar de forma fácil y rápida al agregar contenedores
nuevos.
64. Usando Docker
para alojar los
microservicios
• Cada contenedor alberga una
parte separada de la aplicación
• Área única de funcionalidad
• Cada microservicio tiene su
propia base de datos
• Permite el desacoplamiento completo
• Se puede mejorar usando eventos de
aplicación
• Service bus
65. Resumen
• MVVM es el estándar de referencia para construir
aplicaciones Xamarin.Forms de nivel empresarial
• .NET Core es una buena opción para crear microservicios
• Docker ayuda con el despliegue de microservicios