Remote Desktop Manager (RDM) er nået langt siden starten i 2008. Det, der begyndte som et sideprojekt til at teste Internet Explorer 6, 7 og 8, udviklede sig hurtigt til et værktøj, et produkt og til sidst en omfattende platform, integreret med Devolutions Server og Devolutions Cloud. Som stifter og hovedudvikler af RDM har jeg haft det privilegium at opleve og styre denne forvandling. I det her indlæg deler jeg indsigter om moderniseringen af kodebasen i RDM, fra vores ydmyge begyndelse med WinForms til vores nuværende rejse på tværs af platforme.
Fra WinForms til .NET 9: Vi bygger på et stærkt fundament
Da jeg begyndte at udvikle RDM, valgte jeg WinForms med DevExpress på grund af enkelheden og pålideligheden. Gennem årene har frameworket ladet os holde en ren og opdateret kodebase og samtidig udnytte de seneste fremskridt i .NET. Selv om vi er tilfredse med WinForms, er den iboende begrænsning den manglende understøttelse på tværs af platforme, og det blev en voksende bekymring, efterhånden som RDM blev udvidet til Windows, macOS, Linux, Android og iOS.
Sidste år var en vigtig milepæl for vores team, da vi afsluttede den første fase af moderniseringen ved at opgradere alle vores projekter til .NET 8 i version 2024.1. Den bedrift var en kæmpe indsats, som krævede dedikation og samarbejde over hele linjen. Den har givet os et solidt fundament at bygge videre på og sikrer både optimal ydeevne og kompatibilitet. Vi glæder os til at fortsætte rejsen ved at gå over til .NET 9 i år.

Vi overvinder UI-udfordringer med WebView2
For at samle vores UI-komponenter på tværs af platforme tog vi WebView2 i brug, så vi kunne dele store dele af brugergrænsefladen mellem platforme, mindske dobbeltarbejde og strømline udviklingen. Brugen af WebView2 kom dog med udfordringer, især på mobilplatforme. I modsætning til desktopmiljøer, hvor det kunne være muligt at bruge en omvej som en lokal HTTP-server til at levere indhold, er den tilgang ikke mulig på mobil. Derfor måtte vi generere den nødvendige kode og det nødvendige indhold direkte, hvilket gjorde udviklingsprocessen mere kompleks.
På trods af de udfordringer har WebView2 været afgørende for at muliggøre funktioner som dashboards, rapporter og andre kommende værktøjer. Begrænsningerne på mobilplatforme og den voksende efterspørgsel efter native-lignende brugeroplevelser har dog fået os til at undersøge alternative løsninger.
Vi tager Avalonia UI til os: en ny æra for udvikling på tværs af platforme
Avalonia UI har vist sig at være et vendepunkt for RDM ved at give et samlet framework til at skabe UI-komponenter på tværs af platforme, der både yder godt og ser ensartede ud. Før vi tog Avalonia i brug, måtte vi genimplementere UI-komponenter til hver platform, hvilket førte til dobbeltarbejde og langsommere udviklingsforløb. Med Avalonia kan vi nu strømline udviklingen, mindske overflødigt arbejde og samtidig sikre en gnidningsfri og ensartet oplevelse på tværs af platforme.
Skiftet løfter ikke kun brugeroplevelsen, men gør os også i stand til at bringe nye værktøjer og funktioner ud på flere platforme hurtigere end nogensinde før. Avalonia UI gør det muligt for os at udvikle nyt mere effektivt og er en hjørnesten i vores fremtidige udviklingsstrategi.
Migrering fra C til Rust og .NET: Sikkerhed og ydeevne først
Et andet stort initiativ har været migreringen af vores kodebase væk fra C og C++ for at følge myndighedernes anbefalinger, der foretrækker hukommelsessikre sprog. Vi har taget Rust til os til mange af vores protokolimplementationer, herunder RDP (hvor vi integrerer IronRDP som et sikrere alternativ til FreeRDP), VNC, ARD og andre. Sikkerhedsgarantierne og ydeevnen i Rust gør det til et ideelt valg til de kritiske komponenter.
Vi har også udnyttet de seneste fremskridt i .NET, såsom Span-funktionen, som har gjort det muligt for vores SSH-implementation at nå en ydeevne på højde med eller endda over native C-implementationer. Skiftet har styrket vores engagement i at levere en fuldt administreret kodebase, der prioriterer sikkerhed og vedligeholdelse.
Unikke muligheder på tværs af platforme
Vores moderniseringsindsats har givet komponenter, som selv førstepartsleverandører mangler, for eksempel:
- En webbaseret PowerShell WinRM-stak
- En robust SSPI-stak skrevet i Rust
- Så vidt vi ved er det den eneste webbaserede Apple Remote Desktop-klient på markedet
Disse innovationer gør os i stand til at tage fremtidige udfordringer op og fortsætte med at levere prisvenlige og produktive værktøjer til IT-professionelle. En ekstra fordel ved Rust er, at sproget har taget WebAssembly til sig som målplatform og har noget af det bedste værktøj til det. Det gør det muligt at bruge Rust-biblioteker direkte i browseren, og det åbner nye muligheder for webbaserede klienter.
Vi ser fremad
Vores moderniseringsrejse er langt fra slut. Mens vi stræber efter at tilbyde en endnu bedre platform, er vi fortsat engagerede i at udnytte banebrydende teknologier og samarbejde med brancheledere. Ved at gå over til fuldt administrerede biblioteker sigter vi mod at sætte nye standarder for ydeevne, sikkerhed og kompatibilitet på tværs af platforme.
I hjertet af det hele ligger vores dedikation til IT-professionelle. Vi brænder for at gøre deres arbejde enklere, øge produktiviteten og levere værktøjer, der tilpasser sig deres skiftende behov. Med en robust og moderniseret kodebase er vi godt rustet til at fortsætte den mission i mange år frem. Vi glæder os til at have dig med på rejsen og til at vokse sammen, mens vi rykker grænserne for innovation.
