MAIN MENU
Blog di Devolutions

Annunci, aggiornamenti e approfondimenti di Devolutions.

Modernization of remote desktop manager rdm devolutions blog

Modernizzare il codice di RDM: un viaggio dal 2008 al 2024

Remote Desktop Manager (RDM) ha vissuto un'evoluzione straordinaria dai suoi primi passi nel 2008, come strumento per testare Internet Explorer, fino a diventare una soluzione completa e integrata con funzionalità multipiattaforma. Questo articolo racconta il percorso di modernizzazione del codice di RDM. Scopra come questi progressi e il nostro impegno per l'innovazione e la produttività posizionano RDM per soddisfare le esigenze in continua evoluzione dei professionisti IT.

Remote Desktop Manager (RDM) ha fatto molta strada dalla sua nascita nel 2008. Quello che è iniziato come un progetto secondario per testare Internet Explorer 6, 7 e 8 si è presto evoluto in uno strumento, poi in un prodotto e, infine, in una piattaforma completa integrata con Devolutions Server e Devolutions Cloud. In qualità di fondatore e sviluppatore principale di RDM, ho avuto il privilegio di assistere a questa trasformazione e di guidarla. In questo blog, condividerò alcune riflessioni sulla modernizzazione del codice di RDM, dai nostri umili inizi con WinForms fino al nostro attuale percorso multipiattaforma.

Da WinForms a .NET 9: costruire su solide fondamenta

Quando ho iniziato a sviluppare RDM, ho scelto WinForms con DevExpress per la sua semplicità e affidabilità. Nel corso degli anni, questo framework ci ha permesso di mantenere un codice pulito e aggiornato, sfruttando al contempo i più recenti progressi di .NET. Nonostante la nostra soddisfazione per WinForms, il suo limite intrinseco è la mancanza di supporto multipiattaforma, un aspetto diventato sempre più critico man mano che RDM si è espanso per supportare Windows, macOS, Linux, Android e iOS.

L’anno scorso ha segnato una tappa fondamentale per il nostro team, con il completamento della prima fase di modernizzazione grazie all’aggiornamento di tutti i nostri progetti a .NET 8 nella versione 2024.1. Questo traguardo ha richiesto un enorme impegno, dedizione e collaborazione a tutti i livelli. Ci ha fornito una base solida su cui costruire, garantendo al contempo prestazioni e compatibilità ottimali. Guardando al futuro, siamo entusiasti di continuare questo percorso passando a .NET 9 quest’anno.

An old screenshot of RDM

Superare le sfide dell’interfaccia utente con WebView2

Per unificare i componenti dell’interfaccia utente su tutte le piattaforme, abbiamo adottato WebView2, che ci ha permesso di condividere gran parte dell’interfaccia utente tra le piattaforme, riducendo le duplicazioni e semplificando lo sviluppo. Tuttavia, l’utilizzo di WebView2 ha comportato alcune difficoltà, in particolare sulle piattaforme mobili. A differenza degli ambienti desktop, dove è possibile sfruttare soluzioni alternative come un server HTTP locale per fornire i contenuti, questo approccio non è praticabile su mobile. Di conseguenza, abbiamo dovuto generare direttamente il codice e i contenuti necessari, aggiungendo complessità al processo di sviluppo.

Nonostante queste difficoltà, WebView2 si è rivelato fondamentale per abilitare funzionalità come dashboard, report e altri strumenti in arrivo. Tuttavia, i suoi limiti sulle piattaforme mobili e la crescente richiesta di esperienze utente sempre più simili a quelle native ci hanno spinto a esplorare soluzioni alternative.

L’adozione di Avalonia UI: una nuova era per lo sviluppo multipiattaforma

Avalonia UI si è rivelato un vero punto di svolta per RDM, offrendo un framework unificato per la creazione di componenti dell’interfaccia utente multipiattaforma sia performanti che visivamente coerenti. Prima di adottare Avalonia, dovevamo reimplementare i componenti dell’interfaccia utente per ogni piattaforma, con conseguente duplicazione degli sforzi e cicli di sviluppo più lenti. Con Avalonia, possiamo ora semplificare lo sviluppo, riducendo la ridondanza e garantendo al contempo un’esperienza fluida e coerente su tutte le piattaforme.

Questo cambiamento non solo migliora l’esperienza utente, ma ci consente anche di introdurre nuovi strumenti e funzionalità su più piattaforme più rapidamente che mai. Avalonia UI ci consente di innovare in modo più efficiente, diventando un pilastro della nostra strategia di sviluppo futura.

Migrazione da C a Rust e .NET: priorità a sicurezza e prestazioni

Un’altra iniziativa importante è stata la migrazione del nostro codice da C e C++ per conformarci alle raccomandazioni governative che favoriscono linguaggi memory-safe. Abbiamo adottato Rust per molte delle nostre implementazioni di protocollo, tra cui RDP (integrando IronRDP come alternativa più sicura a FreeRDP), VNC, ARD e altri. Le garanzie di sicurezza e le prestazioni di Rust lo rendono una scelta ideale per questi componenti critici.

Abbiamo inoltre sfruttato i recenti progressi di .NET, come la funzionalità Span, che ha permesso alla nostra implementazione SSH di raggiungere prestazioni paragonabili, o addirittura superiori, a quelle delle implementazioni native in C. Questo cambiamento ha rafforzato il nostro impegno a offrire un codice completamente gestito, che dia priorità alla sicurezza e alla manutenibilità.

Funzionalità multipiattaforma uniche

I nostri sforzi di modernizzazione hanno generato componenti che nemmeno i fornitori di prima parte possiedono, come:

  • Uno stack PowerShell WinRM basato sul web
  • Un solido stack SSPI scritto in Rust
  • A quanto ci risulta, l’unico client Apple Remote Desktop basato sul web disponibile sul mercato

Queste innovazioni ci consentono di affrontare le sfide future e di continuare a offrire strumenti convenienti e produttivi per i professionisti IT. Un ulteriore vantaggio di Rust è che ha adottato WebAssembly come piattaforma di destinazione e dispone di alcuni degli strumenti migliori a questo scopo. Ciò rende possibile utilizzare le librerie Rust direttamente nel browser, aprendo nuove possibilità per i client basati sul web.

Uno sguardo al futuro

Il nostro percorso di modernizzazione è ben lontano dall’essere concluso. Nel nostro impegno a offrire una piattaforma sempre migliore, continuiamo a puntare sulle tecnologie più avanzate e sulla collaborazione con i leader del settore. Passando a librerie completamente gestite, il nostro obiettivo è stabilire nuovi standard in termini di prestazioni, sicurezza e compatibilità multipiattaforma.

Al centro di tutto questo c’è la nostra dedizione ai professionisti IT. Siamo appassionati nel semplificare il loro lavoro, migliorare la produttività e offrire strumenti che si adattano alle loro esigenze in continua evoluzione. Con un codice solido e modernizzato, siamo nella posizione ideale per continuare a realizzare questa missione negli anni a venire. Siamo lieti di averla al nostro fianco in questo percorso e di continuare a crescere insieme, spingendo sempre più in là i confini dell’innovazione.