Remote Desktop Manager (RDM) ha recorrido un largo camino desde sus inicios en 2008. Lo que comenzó como un proyecto paralelo para probar Internet Explorer 6, 7 y 8 pronto evolucionó hasta convertirse en una herramienta, luego en un producto y, finalmente, en una plataforma integral integrada con Devolutions Server y Devolutions Cloud. Como fundador y desarrollador principal de RDM, he tenido el privilegio de presenciar y dirigir esta transformación. En este blog, compartiré algunas reflexiones sobre la modernización del código base de RDM, desde nuestros humildes comienzos con WinForms hasta nuestro actual recorrido multiplataforma.
De WinForms a .NET 9: construyendo sobre una base sólida
Cuando comencé a desarrollar RDM, elegí WinForms con DevExpress por su sencillez y fiabilidad. A lo largo de los años, este marco de trabajo nos ha permitido mantener un código base limpio y actualizado, al tiempo que aprovechábamos los últimos avances de .NET. A pesar de nuestra satisfacción con WinForms, su limitación inherente es la falta de compatibilidad multiplataforma, lo cual se convirtió en una preocupación cada vez mayor a medida que RDM ampliaba su compatibilidad con Windows, macOS, Linux, Android e iOS.
El año pasado marcó un hito importante para nuestro equipo, ya que completamos la primera fase de modernización al actualizar todos nuestros proyectos a .NET 8 en la versión 2024.1. Este logro supuso un enorme esfuerzo, que requirió dedicación y colaboración por parte de todos. Nos ha proporcionado una base sólida sobre la que seguir construyendo, garantizando tanto un rendimiento óptimo como la compatibilidad. De cara al futuro, nos entusiasma continuar este recorrido migrando a .NET 9 este año.

Superar los retos de la interfaz de usuario con WebView2
Para unificar los componentes de la interfaz de usuario en todas las plataformas, adoptamos WebView2, lo cual nos permitió compartir partes importantes de la interfaz entre plataformas, reduciendo la duplicación y agilizando el desarrollo. Sin embargo, el uso de WebView2 conllevó desafíos, especialmente en las plataformas móviles. A diferencia de los entornos de escritorio, donde podría haber sido posible recurrir a una solución alternativa como un servidor HTTP local para ofrecer contenido, este enfoque no resulta viable en dispositivos móviles. En consecuencia, tuvimos que generar el código y el contenido necesarios directamente, lo cual añadió complejidad al proceso de desarrollo.
A pesar de estos desafíos, WebView2 ha sido fundamental para habilitar funciones como paneles de control, informes y otras herramientas futuras. Sin embargo, sus limitaciones en las plataformas móviles y la creciente demanda de experiencias de usuario de tipo nativo nos han llevado a explorar soluciones alternativas.
La adopción de Avalonia UI: una nueva era del desarrollo multiplataforma
Avalonia UI ha resultado ser un cambio radical para RDM, ya que proporciona un marco unificado para crear componentes de interfaz de usuario multiplataforma que sean tanto eficientes como visualmente consistentes. Antes de adoptar Avalonia, teníamos que reimplementar los componentes de la interfaz de usuario para cada plataforma, lo cual generaba duplicación de esfuerzos y ciclos de desarrollo más lentos. Con Avalonia, ahora podemos agilizar el desarrollo, reduciendo la redundancia y garantizando al mismo tiempo una experiencia fluida y coherente en todas las plataformas.
Este cambio no solo mejora la experiencia del usuario, sino que también nos posiciona para llevar nuevas herramientas y funciones a múltiples plataformas más rápido que nunca. Avalonia UI nos permite innovar de manera más eficiente, lo cual la convierte en una piedra angular de nuestra estrategia de desarrollo futura.
Migración de C a Rust y .NET: priorizar la seguridad y el rendimiento
Otra iniciativa importante ha sido la migración de nuestro código base de C y C++ para cumplir con las recomendaciones gubernamentales que favorecen los lenguajes con seguridad de memoria. Hemos adoptado Rust para muchas de nuestras implementaciones de protocolos, incluyendo RDP (integrando IronRDP como una alternativa más segura a FreeRDP), VNC, ARD y otros. Las garantías de seguridad y el rendimiento de Rust lo convierten en una opción ideal para estos componentes críticos.
También hemos aprovechado los avances recientes de .NET, como la función Span, la cual ha permitido que nuestra implementación de SSH alcance un rendimiento equiparable, o incluso superior, al de las implementaciones nativas en C. Este cambio ha reforzado nuestro compromiso de ofrecer un código base totalmente administrado que priorice la seguridad y la facilidad de mantenimiento.
Capacidades multiplataforma únicas
Nuestros esfuerzos de modernización han dado como resultado componentes que ni siquiera los proveedores de origen poseen, tales como:
- Una pila de PowerShell WinRM basada en web
- Una robusta pila SSPI escrita en Rust
- Hasta donde sabemos, el único cliente web de Apple Remote Desktop disponible en el mercado
Estas innovaciones nos permiten hacer frente a los desafíos futuros y seguir ofreciendo herramientas asequibles y productivas para los profesionales de TI. Una ventaja adicional de Rust es que ha adoptado WebAssembly como plataforma de destino y cuenta con algunas de las mejores herramientas para ello. Esto hace posible usar bibliotecas de Rust directamente en el navegador y abre nuevas posibilidades para los clientes basados en web.
Mirando hacia el futuro
Nuestro recorrido de modernización está lejos de terminar. Mientras nos esforzamos por ofrecer una plataforma aún mejor, seguimos comprometidos con el aprovechamiento de tecnologías de vanguardia y la colaboración con los líderes del sector. Al migrar a bibliotecas totalmente administradas, nuestro objetivo es establecer nuevos estándares de rendimiento, seguridad y compatibilidad multiplataforma.
En el centro de todo esto se encuentra nuestra dedicación a los profesionales de TI. Nos apasiona simplificar su trabajo, mejorar su productividad y ofrecer herramientas que se adapten a sus necesidades cambiantes. Con un código base sólido y modernizado, estamos en una posición inmejorable para seguir cumpliendo esta misión durante muchos años más. Esperamos contar con ustedes en este recorrido y seguir creciendo juntos a medida que ampliamos los límites de la innovación.


Adam Listek
Steven Lafortune
Marc Beausejour