top of page
  • Foto del escritorIsra Saucedo

Calendario de Adviento .NET MAUI 2022 - Patrón servicio

Este es mi aporte al primer calendario de adviento .NET MAUI.


En esta ocasion conoceremos de forma básica el uso del patrón servicio combinado con la inyección de dependencia en un app .NET MAUI.


La demo es muy simple y me limitaré en explicar el patrón y como utilizarlo.


No usaremos plug-in's ni librerías externas, el soporte al patrón viene nativo dentro del framework de dotnet.


Si has programado alguna vez en .NET Core, sobre todo ASP .Net Core este patrón te será muy familiar ya que se utiliza de la misma forma.


El código del ejemplo esta aqui: https://github.com/iperezmx87/AdvientoMAUI2022


Para no hacerles el cuento largo, comentaremos los aspectos más importantes del proyecto


  1. Estructura



Como verás y, como recordarás, el objetivo del patrón servicio es proveer desacoplamiento entre las diferentes funcionalides y responsabilidades, para respetar algunos de los principios del acrónimo SOLID.


Aqui tienes una referencia a SOLID: https://es.wikipedia.org/wiki/SOLID


En esta demo, coloque los siguientes componentes basicos del patrón:

  • Interfaz IServicioSeguridad que es el contrato que deberán implementar los diferentes servicios

  • En las plataformas destino, se colocan las clases de implementación del contrato, en este caso de seguridad, donde cada pataforma tendria su propia implementación.

2. Contrato e implementaciones:




Se muestran las implementaciones del contrato establecido para la seguridad, aqui la diferencia es que la validacion es diferente, para efectos de la demo, pero en teoría se establecerían diferentes mecanismos dependiendo del fabricante. Si gustan una demo mas compleja, déjamelo en los comentarios.


3. Inyección de los servicios




En este caso, se muestran fragmentos de la clase MauiProgram.cs donde se hacen uso de las directivas de preprocesador de MAUI para la detección de la plataforma donde se este compilando el proyecto.


Recordemos que, cada que se cambia el target de ejecución del proyecto de MAUI, estas variables de preprocesador cambian a la siguiente estructura


Emulador o dispositivo android - #ANDROID


Emulador o dispositivo iOS - #IOS


Dispositivo o PC Windows - #WINDOWS


Dispositivo macos - #MACCATALYST


Por lo tanto, las variables de preprocesador cambian y el servicio que se cargará debe ser el de cada plataforma.


Usamos el método "AddScoped" para generar una instancia que se inyectará dentro del app de MAUI, por lo que no es necesario utilizar en ningun momento la palabra "new" invirtiendo el control e inyectando la dependencia.


MAUI app builder posee tambien la capacidad de inyectar las páginas xaml a traves de la clase Program, en otro post o en un live de youtube (https://www.youtube.com/channel/UCLmSu2dae4bepE_FQzEOZzg) les enseñaré como hacerlo.


4. Inyeccion de la dependencia

Esta es la clase App.xaml.cs, el punto de entrada del app MAUI, aqui es donde la dependencia generada es inyectada y enviada a las paginas dentro del app. En tiempo de ejecución la instancia generada será la previamente configurada en MauiProgram.


5. Uso del servicio

Aqué se muestra el fuente del code-behind de la página que usamos en la demo. Como puedes observarla dependencia del servicio es inyectada y usada en un botón, aqui el truco es que en cada dispositivo se validará la credencial de una forma diferente, quizas en windows tengas un SQL y en moviles un web api, entonces necesitas diferentes logicas pero que entreguen el mismo resultado.


¿Cómo se ve reflejado en el app?


6. prueba en emuladores





Si logras ejecutar el codigo (el cual está hecho para que lo clones y lo ejecutes) notarás que al ingresar otras credenciales o intercambiar la palabra secreta esta no se va a validar, por lo que se comprueba que nuestra lógica es inyectada en base a las condiciones mencionadas anteriormente.


7. Conclusión


A lo largo de esta lectura, aprendimos cómo implementar el patrón de servicio en un app de .NET MAUI y comprobamos que funciona de forma correcta.


Los siguientes pasos es que experimentes con este y verás que el realizar aplicaciones escalables y mantenibles nunca ha sido tan fácil :)


Por favor, si tienes dudas o quieres contactrme, te dejo mi Twitter @pesimx87, y te dejé mi canal de YT para que me puedas visitar, ahí tengo algunos videos de Xamarin y de MAUI.


Felices lineas.

39 visualizaciones0 comentarios

Entradas Recientes

Ver todo

Feliz año 2023

Hace mucho que no ando por aquí, de hecho mi última entrada fue hace casi 2 años. Pero no quiero dejar la oportunidad de agradecer todo el apoyo brindado y desearles unas muy felices fiestas y un muy

Feliz año 2021

#añonuevo A todos mis lectores, les deseo aún un muy feliz 2021 lleno de mucho éxito y aprendizaje. De este lado habrá más contenido suculento :D Saludos

bottom of page