Saltar al contenido principal

.NET MAUI: aumentando las posibilidades de negocio

Microsoft sube la apuesta por las aplicaciones multiplataforma con .NET MAUI. Repasaremos el nuevo framework de Microsoft y veremos las novedades respecto a Xamarin.Forms que nos permitirán ser más productivos y desarrollar aplicaciones para MacOS. También veremos las nuevas posibilidades que se abren al pasar de .NET Standard a .NET6. Todo con el objetivo de ver cómo nos ayuda a reducir tiempo de desarrollo y, en definitiva, los costes de un producto.

Introducción

La industria del desarrollo lleva algún tiempo haciendo un esfuerzo importante en mejorar el ecosistema multiplataforma. Por nombrar algunos ejemplos, por un lado tenemos frameworks como Flutter que están evolucionando mucho y muy rápido: llegan incluso a escritorio y web. Por el otro, también tenemos Kotlin multiplatform, cuyo objetivo es escribir la lógica de la aplicación una sola vez y usarla en diferentes proyectos.

Con la llegada de .NET 6, Microsoft también aumenta sus esfuerzos por las aplicaciones móviles y de escritorio y ha presentado .NET Multi-platform App UI (.NET MAUI), un framework que nos permite desarrollar aplicaciones nativas para Android, IOS, MacOS y Windows con C# y XAML. Es decir, teniendo un solo proyecto de código compartido, tanto lógica como UI.

Qué es Maui

.NET MAUI es open source y la evolución de Xamarin.Forms; aumenta el soporte a escritorio y mejora considerablemente el rendimiento. Si has desarrollado en Xamarin.Forms, observarás que comparten muchas similitudes, con la diferencia de que .NET MAUI reduce el tiempo a la hora de usar recursos o diseñar interfaces de usuario: el equipo de .NET MAUI ha centrado esfuerzos en conseguir que solo tengamos la definición de interfaz una sola vez, así como en declarar los recursos como los iconos o fuentes en un solo punto.

De .NET Standard a .NET6

.NET MAUI no solo utiliza .net6, sino que forma parte del sdk de .NET y es una parte de los workloads de dotnet.

Esto tienes varias implicaciones. A nivel empresarial, muestra el compromiso de Microsoft con el desarrollo multiplataforma, incluyéndolo dentro del mismísimo .NET y no como un producto separado. A nivel técnico, significa por un lado usar las últimas novedades de .NET como HotReload, mejoras de rendimiento, global using… Por otro lado, también significa que tenemos compatibilidad con todos los proyectos .net6; por ejemplo, una librería de acceso a datos o modelos entre proyectos ASP.NET, WPF, o cualquier tecnología que use .net6, sin tener que pasar por el.NET Standard, que ponía algunas limitaciones a la hora de aprovechar las últimas ventajas del framework.

Blazor

.NET MAUI nos permite ‘hospedar’ un desarrollo web Blazor dentro de nuestra aplicación. De esta manera, desde Blazor podemos integrar y usar servicios de cada plataforma.

Esta integración puede ser completa (una aplicación web en blazor ‘hospedada’ en una aplicación .NET MAUI) o parcial (una o varias pantallas de la aplicación están realizadas en Blazor).

Esto nos permite llevar las apps ya desarrolladas en Blazor a aplicaciones nativas para mobile y escritorio reutilizando el mismo código fuente. Por otro lado, permite a los desarrolladores web que desarrollan en Blazor la posibilidad de llegar a un mercado más reutilizando sus conocimientos.

Microsoft tiene un buen ejemplo de aplicación en blazor hospedada en .NET MAUI:

Más posibilidades, más negocio

Lo realmente interesante de .NET MAUI es cómo puede ayudar a las empresas a reducir costes, que es quizás el factor más determinante a la hora de elegir una tecnología para desarrollar un producto. Evidentemente esto depende del stack tecnológico del equipo de desarrolladores y sus conocimientos. Vamos a tratar de ver los puntos más relevantes:

Compartir código y recursos

Un solo desarrollador puede desarrollar una aplicación para cuatro plataformas distintas usando la misma lógica y definición de UI. Además, estos desarrollos se hacen en paralelo, es decir, que no se desarrolla una plataforma y luego otra sino a la vez, ya que la logica y UI son compartidas.

En .NET MAUI los recursos como imágenes, fuentes y demás también se comparten, unificando su uso y configuración para todas las plataformas.

Reciclar conocimiento

Al usar C# y XAML, la curva de aprendizaje si vienes de WPF es muy pequeña; incluso, si vienes de ASP.NET, también te resultará todo muy familiar, ya que se usan las mismas herramientas, como VS, por lo que el desarrollador será mucho más productivo desde el primer día que si tiene que aprender un nuevo IDE.

Reducir problemas y disminuir tiempo en resolución de incidencias

Al estar toda la lógica de tu aplicación en un solo punto, se minimizan los problemas y el coste que tiene aplicar estos cambios o reparaciones. En un proyecto en el que el servidor esté desarrollado en Go y las aplicaciones en Kotlin (la de Android), Swift (iOS y MacOS) y WinUI (Windows), un cambio de modelo, o logica de negocios, implicaría modificar los cinco proyectos, con distintos desarrolladores y/o sin ser en paralelo.

Con .NET MAUI podemos directamente compartir modelos con el servidor si es .NET6, y al hacer el cambio en una sola clase tendríamos el problema resuelto en servidor, Android, iOS, MacOS y Windows. A nivel de costes es una diferencia notable.

Llegar a más plataformas

.NET MAUI soporta de forma oficial MacOS, el sistema operativo de escritorio de Apple. Esto es más importante de lo que parece: no solo significa que nuestras aplicaciones funcionarán en MacOS, sino que se abre una nueva cuota de mercado y más oportunidades de negocio. Y no me refiero solo a Mac.

En los últimos años las tecnologías web han ido ganando mercado y la respuesta es muy sencilla: todos los sistemas operativos habituales (IOS, Android, Windows y MacOS) pueden acceder a los servicios que ofrecen dicho software a través de un navegador. .NET MAUI abre la posibilidad de llegar a todos los clientes que alcanza la web con las ventajas de las aplicaciones nativas; de esta forma, es una alternativa interesante y muy para tener en cuenta a la hora de elegir una tecnologia para nuestro siguiente proyecto.

Desventajas

Al hacer un análisis completo de .NET MAUI, hay que hablar de las desventajas. En primer lugar, es un producto nuevo que acaba de salir y, si bien la versión publicada es estable, aún faltan algunos controles imprescindibles como los mapas. Aunque están próximos en el roadmap, no están disponibles cuando escribo este post.

A veces, crear interfaces compartidas para mobile y escritorio puede resultar complejo, por ser mundos diferentes. MAUI está pensado para conseguirlo, pero, a veces, crear interfaces para escritorio y mobile, con las interacciones del usuario, es más difícil que crearlas separadas.

Ejemplos de .NET MAUI

Existen varias aplicaciones disponibles realizadas con .NET MAUI que podemos usar para orientarnos, ver buenas prácticas y observar cómo funciona la plataforma.

Hace unos meses se presentó oficialmente la version GA de .NET MAUI y, junto a ella, una aplicación en cuyo desarrollo ha colaborado Plain Concepts. Os dejo un enlace a dicha app y a otras realizadas con la plataforma. También tenéis disponibles otros ejemplos de .NET MAUI, tanto oficiales como realizadas por la comunidad:

 

picture of miguel ángel barrera muñoz
Autor
Miguel Ángel Barrera Muñoz
Software Development Engineer