Uno Platform: la propuesta.

Desarrollo para 4 plataformas en el popular lenguaje C# …y las que se acumulen. En el mundo de del desarrollo de software, web y de aplicaciones móviles, estamos saturados de herramientas, plataformas y frameworks ¿no lo creen?.

Build Mobile, Desktop and WebAssembly apps with C# and XAML.

El ser emprendedor valiente o un experimentado developer no significa que nunca vayas a tener o experimentar miedo y/o preocupaciones sobre lo que viene o te piden implementar; simplemente quiere decir que reconoces esas emociones y que tienes la confianza y que serás capaz de superar los obstáculo, alcanzar las metas y/o tu visión. Con esto dicho vamos a platicar un poco de la Plataforma Uno ¿qué ofrece o de que se trata? ¿ventajas? ¿desventajas? ¿y lo más importante como nos ayuda a lograr estos nuevos retos? y no solo pensar ufff! otra cosa más que aprender.

Sin miedo, echemos un vistazo ahora a la plataforma Uno.

La version inicial fue lanzada en mayo 7 del 2018, liberada bajo la licencia Apache 2.0 , creada por Richard Campbell and Carl Franklin, pueden ver lo joven que es el proyecto. Originalmente solo se centraba en la creación de aplicaciones móviles Universal Windows Platform (UWP), la plataforma Uno Platform fue descrita como un puente UWP que permite UWP-Code correr en iOS, Android y WebAssembly.

Con Uno Platform, podemos darle el poder a los equipos .NET para crear aplicaciones no solo agradables, sino con buen performance y con un solo código base, multi plataforma, para dispositivos móviles, web y escritorio.

Diagrama

Uno is a UWP bridge for iOS, Android and WebAssembly

Algo que ya hemos escuchado eso muchas veces ¿correcto? Peroooo, esta dice que es la única plataforma que puede ser usada para construir aplicaciones móviles, de escritorio y aplicaciones WebAssembly con C# y XAML desde un solo código base.

Image de : https://blog.logrocket.com/webassembly-how-and-why-559b7f96cd71/

Ya hemos escrito en otros artículos al respecto pero en resumen WebAssembly opera una maquina stack-based (podríamos decir una maquina basada en apilado) que permite a las aplicaciones web corren cerca o casi a velocidad nativa usando un formato binario. Esta puede generada por lenguajes de programación de alto nivel como C++ o C#. La idea es que esta corra muchos mas rápido que JavaScript.

Regresando al hilo principal. L a plataforma Uno nos permite escribir la UI (User Interface) una sola vez, luego, usando los controles nativos, entregar un “look and feel nativo para cada plataforma. Esto significa que escribes el mismo código para un botón sin importar a que plataforma corresponda dicho botón y el usuario verá el botón nativo para la plataforma en su dispositivo.

Ay! Papantla tus hijos vuelan.

WebAssembly, que respalda el proyecto de Microsoft Blazor, provee un ensamble de bajo nivel como lenguaje de compilación objetivo para lenguajes de programación de lato nivel como C/C++, C#,Rust, etc) así que pueden ser usados para Desarrollo Web en lugar de JavaScript, el lenguaje que actualmente domina el desarrollo basado en web.

El administrador comercial del proyecto de código abierto Uno project, inventive Inc., el 19 de septiembre anunció una nueva integración con Xamarins Forms que provee los renders de WebAssembly y permite a los desarrolladores extender las apps de los formularios (Xamarin Xamarins.Forms-based apps) a la Web simplemente ejecutando una simple línea en la línea de comandos de Visual Studio.

Arquitectura

En iOS y Android, la Plataforma Uno Platform recae exhaustivamente en el stack nativo de Xamarin. En WebAssembly, la plataforma recae directamente en el runtime de Mono WASM. Al final, la plataforma nos provee con la habilidad de correr un solo código fuente, C#y aplicaciones XAML en todas estas plataformas.

El Stack de Uno

Uno es un framework UI multi plataforma. Tu escribes tu app in C# y un marcado UWP-flavoured XAML. Este corre en Windows por que es una UWP app. Con Uno, esta corre en Android, iOS, y (para los valientes) en el navegadores también a través de WebAssembly.

El siguiente esquema es muy ilustrativo.

Muy ilustrativo ¿no? (Imagen propiedad de Uno Platform)

En iOS y Android, la plataforma Uno usa Xamarin para acceder las frameworks nativos de la plataforma. En la versión web esta corriendo directamente arriba de Mono, el cual resulta esta corriendo arriba de WebAssembly.

Debugging C# en WebAssembly

El equipo Mono ha estado invirtiendo bastante tiempo en la experiencia de debugging y las recientes mejoras han hecho mucho más fácil trabajar con este. Aún es experimental, pero aún así es de gran ayuda en la depuración de los proyectos WebAssembly.

Por ahora solo existe una importante restricción: la depuración solo trabaja en Chrome. Esta utilizando el protocolo de las herramientas de desarrollo de Chrome.

Para ser honestos, la experiencia de depuración es un dolor de muelas, el debugger falla frecuentemente (con el Chrome diciendo que un se desconecto un WebSocket) entendamos que aún hay muchos escenarios sin mucha luz que digamos que no han sido probados aún. Esto significa que tal vez no podrás poner puto de interrupción (breakpoints) , pasos dentro o fuera de algunas secciones de código (ej. métodos parciales).

Aquí les dejo el enlace la presentación que tuve oportunidad de dar del 5 de diciembre de este año en KMMX.

Casos de éxito, algunas apps hechas con esta plataforma.

El primer tutorial

Playground

Cheerleader in chief for KMMX, RPA Enthusiast, DevOps, Technical Writer & International Speaker, Dad & 2 cats.

Cheerleader in chief for KMMX, RPA Enthusiast, DevOps, Technical Writer & International Speaker, Dad & 2 cats.