Blazor oder WPF für interne Werkzeuge?
- Matt
Die Frage kommt in fast jedem Projekt: Ein kleines internes Werkzeug soll gebaut werden, drei Masken, eine Datenbank dahinter, fünf bis zwanzig Leute benutzen es. Desktop oder Web?
Ich habe beides mehrfach gemacht und entscheide inzwischen nicht mehr nach Vorliebe, sondern an vier Fragen.
Braucht es das Dateisystem oder Hardware?
Wenn ja, ist die Frage beantwortet. Ein Werkzeug, das Ordner überwacht, Dateien im Netzlaufwerk umbenennt, einen Scanner anspricht oder Drucker direkt steuert, ist im Browser ein Kampf gegen die Sandbox. WPF hat dort keine Konkurrenz.
Der umgekehrte Fall gilt genauso: Wenn das Werkzeug nur mit einer API redet, spricht wenig für Desktop.
Wie kommt die nächste Version zu den Leuten?
Das ist der Punkt, der Desktop-Projekte im Nachhinein teuer macht. Eine Weboberfläche wird einmal ausgerollt und alle haben sie. Bei WPF braucht es einen Verteilweg, und die Antwort darauf ist selten so einfach wie erhofft. ClickOnce lebt zwar noch, aber wer schon einmal ein Zertifikatsproblem auf zwanzig Rechnern hatte, plant das nicht mehr nebenbei ein.
Wer baut es und wer pflegt es?
Ein .NET-Team ohne Frontend-Erfahrung baut in WPF schneller ein brauchbares Ergebnis, weil Datenbindung, Steuerelemente und Layout vertraut sind. Blazor verschiebt zwar die Sprache nach C#, aber CSS, Layout und Browser-Eigenheiten bleiben. Wer glaubt, mit Blazor keine Weboberfläche bauen zu müssen, wird enttäuscht.
Wie lange soll es halten?
Bei einem Werkzeug, das erkennbar zwei Jahre lebt, würde ich nehmen, was schneller fertig wird. Bei etwas, das zehn Jahre läuft, sieht es anders aus. WPF ist ausgereift und wird gepflegt, bekommt aber keine Impulse mehr. Wer heute Leute für ein WPF-Projekt sucht, sucht länger.
Was ich zuletzt gemacht habe
Beim letzten Werkzeug dieser Art ist es Blazor Server geworden, aus einem unspektakulären Grund: Die Daten lagen ohnehin auf einem Server im selben Netz, und die Anforderung “die Kollegin im Homeoffice soll auch draufkommen” stand schon im Raum, bevor es losging. Mit WPF hätte das VPN und Verteilung bedeutet, mit dem Browser war es eine URL.
Wäre dieselbe Anforderung nicht gekommen, hätte ich WPF genommen und wäre schneller fertig gewesen.