Migrando Mitawi a .NET MAUI
Tags: dotnet, dotnetmaui, xamarinforms, xaml
Published: 2022-12-29 22:44:24

_**En esta publicación comparto mi experiencia de migrar mi aplicación Mitawi a .NET MAUI y descubrir oportunidades prometedoras para mejorar la eficiencia de mis proyectos móviles.**_

Mitawi es una aplicación de pronóstico del tiempo open source que ofrece pronósticos precisos y actualizados del clima diario y semanal para ubicaciones alrededor del mundo. Recientemente, fue migrada a .NET MAUI para mejorar su rendimiento y facilidad de uso. Con Mitawi, puedes planificar tus actividades al aire libre con confianza, ya que siempre tendrás acceso a la previsión del tiempo para los próximos días.

Gracias a Mitawi, he podido realizar una comparación entre Xamarin.Forms y .NET MAUI en cuatro aspectos importantes: arquitecturas, rendimiento, controles útiles y proceso de migración. Mi intención es compartir mis observaciones y experiencias en estos aspectos para ayudar a otros desarrolladores que estén considerando migrar a .NET MAUI.

---

## Arquitecturas

.NET MAUI ofrece una mayor integración con el ecosistema .NET y una arquitectura más limpia y moderna que Xamarin.Forms. Esto permite una mejor reutilización del código y una mayor facilidad para mantener y actualizar la aplicación. .NET MAUI también está basado en el marco de aplicaciones móviles de Microsoft, lo que significa que puedes aprovechar todas las herramientas y recursos disponibles en el ecosistema .NET.

![Arquitecturas](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m223q66jupjtyxkq2xw8.jpg)

---

## Rendimiento

Después de comparar el rendimiento de .NET MAUI y Xamarin.Forms en la aplicación Mitawi, he de admitir que no he observado una diferencia significativa en velocidad y uso de recursos. Sin embargo, es importante mencionar que .NET MAUI utiliza el marco de aplicaciones móviles de Microsoft, el cual está optimizado para brindar eficiencia y desempeño. Además, permite el uso de compilación AOT (Ahead-of-Time) para mejorar el rendimiento en tiempo de ejecución. Estas características son valiosas y espero poder aprovecharlas en el futuro, especialmente cuando se actualice a .NET 7.

> Es importante tener en cuenta que el rendimiento puede variar dependiendo del caso de uso y de la implementación de la aplicación, por lo que es recomendable hacer pruebas y mediciones para evaluar el rendimiento en cada caso específico.

<div style="display: flex; height: 500px; justify-content: center;">
  <video src="https://raw.githubusercontent.com/danielmonettelli/danielmonettelli.github.io/main/assets/img/images/7_1_performance_in_Xamarin_Forms.mp4" style="max-width: 50%; margin-right: 20px"  controls></video>
  <video src="https://raw.githubusercontent.com/danielmonettelli/danielmonettelli.github.io/main/assets/img/images/7_1_performance_in_NET_MAUI.mp4" style="max-width: 50%;"  controls></video>
</div>

---

## Controles útiles

.NET MAUI ofrece algunos controles útiles que no están disponibles en Xamarin.Forms y que pueden simplificar el desarrollo de la interfaz de usuario de la aplicación. Por ejemplo, .NET MAUI cuenta con un control Border que permite crear bordes personalizados con facilidad. Este control ofrece características como sombras y gradientes que pueden ser útiles para el desarrollo de la interfaz de usuario de la aplicación y pueden ahorrar tiempo y esfuerzo al no tener que utilizar otras bibliotecas para lograr el mismo resultado.

```xml
<!--#region Top layer lower 1-->
<Border
    x:Name="topLayerLower1"
    sk:Skeleton.Hide="True"
    sk:Skeleton.IsBusy="{Binding IsBusy}"
    BackgroundColor="{StaticResource col_thirt}"
    Style="{StaticResource vsm_orientation_topLayerLower1}">
    <Border.Shadow>
        <Shadow
            Brush="{StaticResource col_thirt}"
            Opacity="0.93"
            Radius="45"
            Offset="20,20" />
    </Border.Shadow>
    <Border.StrokeShape>
        <RoundRectangle CornerRadius="0,0,43,43" />
    </Border.StrokeShape>
</Border>
<!--#endregion-->
```

---

## Proceso de migración

Durante la migración de Mitawi a .NET MAUI, tomé medidas para asegurarme de tener todas las herramientas y dependencias necesarias para trabajar con esta tecnología. Aunque fue algo relativo, pude lograr adaptar la aplicación para aprovechar las características únicas de .NET MAUI, como el control Border. Además, realicé pruebas exhaustivas para minimizar cualquier posible error tras la migración. En resumen, el proceso fue desafiante pero logré completarlo con éxito.

---

## Repositorio

El proyecto es de código abierto y puedes verlo haciendo clic en la siguiente imagen. ¡No dudes en echarle un vistazo!

<a href="https://github.com/danielmonettelli/netmaui-mitawi-app-challenge" target="_blank">
  <img src="https://raw.githubusercontent.com/danielmonettelli/danielmonettelli.github.io/main/assets/img/images/7_x_github_repository.jpg" />
</a>

---

## Bibliografía

- <a href="https://askxammy.com/talk-net-conf-2022-recap/" target="_blank">[Talk] .NET Conf 2022 Recap - Speaker Leomaris Reyes</a>.
- <a href="https://learn.microsoft.com/en-us/dotnet/maui/user-interface/controls/border?view=net-maui-7.0" target="_blank">Border - Official .NET MAUI documentation</a>.
- <a href="https://learn.microsoft.com/en-us/dotnet/communitytoolkit/maui/" target="_blank">.NET Multi-platform App UI (.NET MAUI) Community Toolkit documentation</a>.
- <a href="https://www.youtube.com/watch?v=EXmSmv5ifkk" target="_blank">Migrating & Upgrading Xamarin.Forms to .NET MAUI - Tutorial video made by James Montemagno</a>.
- <a href="https://www.youtube.com/watch?v=OP9g5dM0bgk" target="_blank">.NET Community Toolkit 8.0 - MVVM Goodness for .NET MAUI | .NET Conf: Focus on MAUI - Tutorial video made by Sergio Pedri</a>.

---

## Conclusiones

Al migrar Mitawi de Xamarin.Forms a .NET MAUI he podido apreciar algunas de las ventajas de este nuevo marco multiplataforma en cuatro áreas clave: arquitecturas, rendimiento, controles útiles y proceso de migración.

- En cuanto a las arquitecturas, .NET MAUI ofrece una mayor integración con el ecosistema .NET y una arquitectura más sencilla y flexible.
- Aunque todavía no he notado una mejora significativa en el rendimiento de Mitawi con .NET MAUI en comparación con Xamarin.Forms, estoy optimista de que al actualizar a .NET 7 pueda ver una mejora mayor. .NET MAUI tiene características prometedoras y estoy dispuesto a trabajar duro para aprovechar al máximo éstas herramientas y mejorar el rendimiento de Mitawi en el futuro.
- .NET MAUI tiene controles útiles como el control Border que pueden simplificar el desarrollo de la interfaz de usuario y ahorrar tiempo y esfuerzo.
- Después de completar la migración de Mitawi a .NET MAUI, me he encontrado con algunos obstáculos de adaptabilidad en la segunda interfaz de la aplicación. Espero poder solucionarlos pronto y seguir disfrutando de las ventajas de .NET MAUI.

Por favor, no dudes en brindarme tu retroalimentación y, con la ayuda de mi repositorio, sacar tus propias conclusiones. Si tienes alguna pregunta o sugerencia constructiva, me gustaría mucho leerla. Muchas gracias por tu tiempo.