Remote Desktop Manager (RDM) hat seit seinen Anfängen im Jahr 2008 einen langen Weg zurückgelegt. Was als Nebenprojekt zum Testen von Internet Explorer 6,7 und 8 begann, entwickelte sich schon bald zu einem Tool, einem Produkt und schließlich in Kombination mit Devolutions Server und Devolutions Hub zu einer umfassenden Plattform. Als Gründer und Hauptentwickler von RDM hatte ich das Privileg, diesen Wandel mitzuerleben und zu lenken. In diesem Blog gebe ich Einblicke in die Modernisierung der Codebasis von RDM, von unseren bescheidenen Anfängen mit WinForms bis zu unserer aktuellen Multiplattform-Reise.
Von WinForms zu .NET 9: Auf einem starken Fundament aufbauen
Als ich mit der Entwicklung von RDM begann, habe ich mich wegen seiner Einfachheit und Zuverlässigkeit für WinForms mit DevExpress entschieden. Im Laufe der Jahre hat dieses Framework es ermöglicht, eine saubere, aktuelle Codebasis zu pflegen und gleichzeitig die neuesten Fortschritte in .NET zu nutzen. Obwohl wir mit WinForms zufrieden waren, ist die fehlenden plattformübergreifenden Unterstützung eine inhärente Einschränkung, die zu einem wachsenden Problem wurde, als RDM erweitert wurde, um Windows, macOS, Linux, Android and iOS zu unterstützen.
Das vergangene Jahr war ein wichtiger Meilenstein für unser Team, denn wir haben die erste Phase der Modernisierung abgeschlossen, indem wir alle unsere Projekte in der Version 2024.1 auf .NET 8 umgestellt haben. Diese Leistung war eine enorme Anstrengung, die das Engagement und die Zusammenarbeit aller Beteiligten erfordert hat. Sie hat uns eine solide Grundlage verschafft, auf der wir aufbauen können, um sowohl optimale Leistung als auch Kompatibilität zu gewährleisten. Wir freuen uns darauf, diese Reise fortzusetzen und noch in diesem Jahr auf .NET 9 umzusteigen.
UI-Herausforderungen mit WebView2 überwinden
Um unsere UI-Komponenten plattformübergreifend zu vereinheitlichen, setzten wir WebVIew2 ein, das es uns ermöglichte, große Teile der UI auf verschiedenen Plattformen gemeinsam zu nutzen und so doppelte Arbeit zu vermeiden und die Entwicklung zu rationalisieren. Allerdings war die Verwendung von WebView2 mit Herausforderungen verbunden, insbesondere auf mobilen Plattformen. Im Gegensatz zu Desktop-Umgebungen, wo es möglich gewesen wäre, einen Workaround wie einen lokalen HTTP-Server für die Bereitstellung von Inhalten zu nutzen, ist dieser Ansatz auf mobilen Geräten nicht durchführbar. Folglich mussten wir den erforderlichen Code und Inhalt direkt generieren, was den Entwicklungsprozess noch komplexer machte.
Trotz dieser Herausforderungen hat WebView2 entscheidend dazu beigetragen, Funktionen wie Dashboards, Berichte und andere kommende Tools zu ermöglichen. Die Einschränkungen auf mobilen Plattformen und die wachsende Nachfrage nach nativen Nutzererfahrungen haben uns jedoch dazu veranlasst, nach alternativen Lösungen zu suchen.
Einführung von Avalonia UI: Eine neue Ära der plattformübergreifenden Entwicklung
Avalonia UI hat sich für RDM als bahnbrechend erwiesen, da es ein einheitliches Framework für die Erstellung plattformübergreifender UI-Komponenten bietet, die sowohl leistungsstark als auch visuell konsistent sind. Vor der Einführung von Avalonia mussten wir UI-Komponenten für jede Plattform neu implementieren, was zu doppeltem Aufwand und langsameren Entwicklungszyklen führte. Mit Avalonia können wir nun die Entwicklung rationalisieren, Redundanzen reduzieren und gleichzeitig eine nahtlose und konsistente Erfahrung auf allen Plattformen gewährleisten.
Diese Umstellung verbessert nicht nur die Nutzererfahrung, sondern versetzt uns auch in die Lage, neue Tools und Funktionen schneller als je zuvor auf mehrere Plattformen zu bringen. Avalonia UI ermöglicht uns effizientere Innovationen und ist damit ein Eckpfeiler unserer zukünftigen Entwicklungsstrategie.
Umstellung von C auf Rust und .NET: Vorrang für Sicherheit und Leistung
Eine weitere wichtige Aktion war die Migration unserer Codebasis weg von C und C++, um den Empfehlungen der Regierung zu entsprechen, die speichersichere Sprachen bevorzugen. Wir haben Rust für viele unserer Protokollimplementierungen eingeführt, darunter RDP (wobei IronRDP als sicherere Alternative zu FreeRDP integriert wurde), VNC, ARD und andere. Die Sicherheitsgarantien und die Leistung von Rust machen es zu einer idealen Wahl für diese kritischen Komponenten.
Wir haben auch die jüngsten Fortschritte von .NET genutzt, wie z. B. die Span-Funktion, die es unserer SSH-Implementierung ermöglicht hat, eine Leistung zu erreichen, die mit nativen C-Implementierungen vergleichbar ist oder diese sogar übertrifft. Dieser Wechsel hat unser Engagement für die Bereitstellung einer vollständig verwalteten Codebasis bekräftigt, bei der Sicherheit und Wartungsfreundlichkeit im Vordergrund stehen.
Einzigartige plattformübergreifende Funktionen
Unsere Modernisierungsbemühungen haben Komponenten hervorgebracht, die selbst bei Erstanbietern fehlen, wie z. B.:
- Ein webbasierter PowerShell WinRM-Stack
- Ein solider, in Rust geschriebener SSPI-Stack
- Nach unserem Kenntnisstand der einzige webbasierte Apple Remote Desktop-Client, der auf dem Markt erhältlich ist.
Mit diesen Innovationen sind wir in der Lage, künftige Herausforderungen zu meistern und weiterhin erschwingliche und produktive Tools für IT-Experten bereitzustellen. Ein zusätzlicher Vorteil von Rust besteht darin, dass es WebAssembly als Zielplattform integriert hat und über einige der besten Tools dafür verfügt. Dadurch ist es möglich, Rust-Bibliotheken direkt im Browser zu verwenden, wodurch sich neue Möglichkeiten für webbasierter Clients eröffnen.
Ein Blick in die Zukunft
Unsere Modernisierungsreise ist noch lange nicht zu Ende. In unserem Bestreben, eine noch bessere Plattform anzubieten, setzen wir uns weiterhin für die Nutzung modernster Technologien und die Zusammenarbeit mit Branchenführern ein. Mit der Umstellung auf vollständig verwaltete Bibliotheken wollen wir neue Standards für Leistung, Sicherheit und plattformübergreifende Kompatibilität setzen.
Im Mittelpunkt steht dabei unser Engagement für IT-Experten. Unsere Leidenschaft ist es, ihre Arbeit zu vereinfachen, die Produktivität zu steigern und Tools bereitzustellen, die sich an ihre sich entwickelnden Bedürfnisse anpassen. Mit einer soliden und modernisierten Codebasis sind wir gut positioniert, um diese Mission auch in den kommenden Jahren zu erfüllen. Wir freuen uns darauf, Sie auf dieser Reise an unserer Seite zu haben und gemeinsam weiter zu wachsen, während wir die Grenzen der Innovation erweitern.