Entwicklung & Code

GUI-Frameworks für .NET – Teil 5: Wisej.NET und Avalonia


Nicht nur Microsoft bietet GUI-Frameworks für .NET an. In den letzten beiden Teilen dieser Artikelserie soll es um die Vor- und Nachteile solcher Frameworks gehen. Dieser Beitrag stellt zunächst Wisej.NET vor, das Windows Forms sehr ähnlich ist, aber plattformneutral läuft. Der zweite plattformneutrale Kandidat, Avalonia, ist hingegen an Windows Presentation Foundation (WPF) angelehnt.




Dr. Holger Schwichtenberg ist Chief Technology Expert bei der MAXIMAGO-Softwareentwicklung. Mit dem Expertenteam bei www.IT-Visions.de bietet er zudem Beratung und Schulungen im Umfeld von Microsoft-, Java- und Webtechniken an. Er hält Vorträge auf Fachkonferenzen und ist Autor zahlreicher Fachbücher.

Wisej.NET – von 2016 bis 2022 in den Versionen 1.x und 2.x nur Wisej genannt – ist ein Rapid-Application-Development-Werkzeug für HTML-basierte Web- und Hybridanwendungen. Dahinter steht die 1998 gegründete US-amerikanische Firma Ice Tea Group LLC mit Sitz in Washington, D.C., die aus dem Umfeld von Gupta/Centura stammt, sich aber seit vielen Jahren auf dem .NET-Markt etabliert hat.

Wisej.NET verfolgt die gleiche Grundidee wie Blazor Server, das heißt, die Anwendung läuft auf dem Server, empfängt Benutzeraktionen und sendet Änderungen der HTML-Oberfläche über das Netzwerk zum Webbrowser. Der Chefentwickler von Wisej.NET, Gianluca Pivato, hält darauf sogar ein Patent unter dem Titel „Pixel perfect real-time web application framework„, bei dem man sich fragen kann, ob Blazor Server nicht dagegen verstößt.

Serverseitig lief Wisej.NET in den Versionen 1.0 und 2.0 nur auf dem klassischen .NET Framework auf Windows. Seit Version 3.0 ist auch das moderne .NET möglich, mit Windows oder Linux als Server. Der Serverprozess basiert dann auf ASP.NET Core. Als Programmiersprachen sind neben C# auch Visual Basic .NET und F# möglich. Auf der Clientseite setzt Wisej.NET auf das von der deutschen Firma 1&1 entwickelte JavaScript-basierte Webfrontend-Framework qooxdoo (gesprochen „kuckst du“).

Bei der Datenübertragung zwischen Server und Client ist neben WebSockets auch HTTP(S) möglich. Die Übertragung der DOM-Unterschiede vom Server zum Client ist effizienter als bei Blazor Server. Allerdings wird beim ersten Seitenaufruf mehr in den Browser geladen. Genau wie Blazor Server ist Wisej.NET nicht offlinefähig und alle Nutzer teilen sich die Serverressourcen. Wisej.NET kommt aber besser mit einem Reload im Browser zurecht als Blazor Server, da es den Anwendungszustand erhält. Bei Blazor Server geht der Anwendungszustand derzeit bei einem Reload immer verloren, wobei Microsoft für .NET 10.0 hier eine Verbesserung plant.




(Bild: coffeemill/123rf.com)

Das Programm steht fest: Am 18. November 2025 zeigt die Online-Konferenz betterCode() .NET 10.0 von iX und dpunkt.verlag in Kooperation mit www.IT-Visions.de die Neuerungen im LTS-Release – bei SDK, Runtime und der neuen Sprachversion C# 14.0 sowie bei der Windows-, Cross-Platform- und Webentwicklung.

Wisej.NET ist Windows Forms sehr ähnlich. Es gibt sogar die Möglichkeit, bestehende Windows-Forms-Anwendungen nach Wisej.NET zu migrieren, also klassische Windows-Desktop-Anwendungen in den Browser und auf Mobilgeräte zu bringen. Im Wesentlichen muss man Assembly-Referenzen und Namensräume (aus dem Namensraum System.Windows.Forms wird Wisej.Web) ändern, was per Suchen und Ersetzen geht. Im Detail gibt es aber kleinere Unterschiede.

Abbildung 1 zeigt eine Windows-Forms-Anwendung und das nach Wisej.NET migrierte Pendant: Der modale Dialog graut das Hauptfenster aus, was bei Windows Forms nicht automatisch passiert. Die Steuerelemente sind bei Wisej.NET moderner und im Standard größer. Das Browserfenster in der Abbildung läuft dabei nur mit Zoomfaktor 80 Prozent.

Auch bei der API gibt es Unterschiede, die schon bei der kleinen Beispielanwendung in Abbildung 1 auffallen. Zum Beispiel setzt man in Wisej.NET die Hintergrundfarbe im GridView-Steuerelement mitthis.C_Tasks.BackColor = SystemColors.GradientInactiveCaption statt dem in Windows Forms verwendeten this.C_Tasks.BackgroundColor = SystemColors.GradientInactiveCaption. Wisej.NET ist hier einheitlicher, denn BackColor verwenden die meisten Steuerelemente in Windows Forms.

Bei den Steuerelementen ToolBar, StatusBar, ContextMenu, MainMenu und MenuBar ist Wisej.NET ebenfalls konsistenter, zum Beispiel wird aus


C_Status.AutoSize = true;


ein


C_Status.AutoSize = Wisej.Web.StatusBarPanelAutoSize.Spring;


In Windows Forms hat das Steuerelement StatusBarPanel die Eigenschaft StatusBarPanelAutoSize, dahingegen ToolStripStatusLabel nur ein AutoSize = true oder false.

Auch nach dem Setzen der Farbe für den GridView-Hintergrund und den zugehörigen Zellhintergrund auf hellblau erscheinen die Zeilen bei Wisej.NET immer noch in Weiß (siehe rechts in Abbildung 1). Um das zu lösen, muss man zusätzlich in das Theme in der Datei App.mixin.theme eingreifen:


{
 "colors": {
   "table-row-background": "#d7e4f2"
 }
}


Ein solches Theming gibt es in Windows Forms gar nicht, zumindest nicht ohne Drittanbieterbibliothek. Abbildung 2 zeigt im Hintergrund das GridView-Steuerelement mit einheitlicher Hintergrundfarbe, wie in der Windows-Forms-Anwendung links in Abbildung 1.



Eine Windows-Forms-Anwendung (links) wurde nach Wisej.NET migriert und läuft nun im Browser (rechts) (Abb. 1).

Für die Migration von Windows Forms zu Wisej.NET gibt es auch ein Werkzeug, das man allerdings nicht erwerben kann. Die Migration ist vielmehr eine angebotene Dienstleistung, an deren Ende der Auftraggeber eine lauffähige Wisej.NET-Anwendung inklusive Quellcode erhält. In unseren Gefilden macht diese Migration die Firma Fecher GmbH. Sie bietet die Migration nach Wisej.NET nicht nur von Windows Forms, sondern auch von WPF, Visual Basic 6, Microsoft Access und Gupta an. Projekte für die Migration von Windows-Lösungen bietet auch die Ice Tea Group direkt an.

Anders als Blazor Server hat Wisej.NET ein Session-Timeout nach 120 Sekunden Inaktivität und zeigt dann einen einminütigen Countdown zum Beenden der Anwendung (siehe Abbildung 2). Wenn der Benutzer oder die Benutzerin nicht reagiert, wird die Wisej.NET-Anwendung beendet und alle Ressourcen auf dem Webserver freigegeben. Entwicklerinnen und Entwickler können diese Zeit anpassen und wie bei Blazor Server auf unbegrenzt setzen, also solange der Browser lebt. Auch der Countdown lässt sich anpassen.

Anders als bei der aktuellen Blazor-Server-Version in .NET 9.0 können Entwicklerinnen und Entwickler in dem Wisej.NET-Serverprozess auch einstellen, dass Sitzungen nach Beenden des Browsers erhalten bleiben und auf Basis einer im Local Storage des Browsers abgelegten Session-ID später wieder aufgenommen werden können.



Session-Timeout bei Wisej.NET (Abb. 2)

Wisej.NET bietet für die Entwicklung einen in Visual Studio integrierten WYSIWYG-Designer an, den man über die Visual Studio Extensions oder die Wisej-Website installieren kann und der dem Windows-Forms-Designer sehr ähnlich ist (siehe Abbildung 3). Genau wie bei Windows Forms generiert der Designer kein Markup, sondern Programmcode.



Der WYSIWYG-Designer von Wisej.NET sieht aus wie der Windows-Forms-Designer und hat die gleiche Funktionsweise (Abb. 3).

Wisej.NET liefert zahlreiche Steuerelemente im Grundpaket (.NET-Namensraum Wisej.Web) oder als Extension, auch höherwertige Steuerelemente wie ein editierbares Datagrid, verschiedene Diagrammtypen, einen Kalender, ein Ribbon, Anzeige von Microsoft-Office-Dokumenten sowie ein Theming (dafür gibt es einen eigenen Theme Builder als Windows-Anwendung). Die Steuerelemente kann man sich auf einer webbasierten Demonstrationsseite ansehen.

Entwicklerinnen und Entwickler müssen sich bei der Webentwicklung mit Wisej.NET nicht mit HTML, CSS und JavaScript auseinandersetzen, denn es ermöglicht eine komponentenbasierte Abstraktion von den Webtechniken, aus denen das Document Object Model generiert wird. Freilich kann man Inseln von HTML erschaffen; dafür gibt es Wisej.NET-Steuerelemente wie HtmlPanel und einen Extender für JavaScript und CSS. Entwicklerinnen und Entwickler können also wahlweise selbst JavaScript schreiben.

Es gibt zwar keine dedizierte Komponentenbibliothek eines Drittanbieters für Wisej.NET, aber das GUI-Framework kann beliebige Web-Komponentenbibliotheken nutzen, die auf HTML, CSS und JavaScript basieren (zum Beispiel jQuery, DevExpress DevExtreme, Syncfusion EJ1/EJ2, Telerik Kendo UI, Infragistics Ignite UI und TextControl). Premium Extensions vereinfachen deren Integration. Genau wie Microsoft mit seinen Smart Components arbeitet auch Wisej.NET an der KI-Integration in die Steuerelemente.

Neben dem Deployment auf einen Webserver kann Wisej.NET auch eine ausführbare Datei für das Self-Hosting erzeugen. AOT-Kompilierung ist bisher nicht möglich.

Genau wie Blazor lässt sich Wisej.NET in .NET-MAUI-Anwendungen einbetten und dann ohne Webbrowser direkt auf Windows, macOS, iOS und Android betreiben (siehe Wisej.NET Hybrid). Diese hybriden Wisej.NET-Anwendungen können auch offline ohne einen Webserver laufen.

Wisej.NET hat einige namhafte Kunden (siehe Case Studies auf der Wisej-Website und unter madewithwisej.com) und ist regelmäßig auf deutschen Entwicklerkonferenzen vertreten. Man braucht für jeden Entwickler und jede Entwicklerin eine Lizenz, die je nach Leistungsumfang zwischen 1190 und 1690 Dollar kostet, wobei es Mengenrabatte gibt. Für nicht-kommerzielle Zwecke ist eine kostenfreie Community-Lizenz verfügbar. Der Betrieb der Wisej.NET-Anwendung erfordert eine Serverlizenz. Dabei reicht das Spektrum von einer kostenfreien Lizenz für bis zu 100 Clients ohne Premium Extensions und ohne Support bis hin zu einer Lizenz für rund 29.000 Dollar für bis zu 10.000 Clients.



Source link

Leave a Reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Beliebt

Die mobile Version verlassen