VCR.NET 4.1 – Ein paar Erfahrungen bei der Erstellung des neuen Web Clients

Die Umstellung auf den neuen auf JavaScript (jQuery), HTML und REST Web Diensten basierenden Web Client von VCR.NET 4.1 ist erst einmal abgeschlossen. Es ist zwar noch einiges an Feintuning insbesondere des Layouts und Aufräumarbeiten zu leisten, aber ich erwarte nun keine grundsätzlichen Änderungen mehr. Die alten ASP.NET Web Seiten wurden vollständig deaktiviert, selbst die Startseite ist nun eine HTML Seite und wird vom Web Server nicht mehr gesondert aufbereitet.

Wie geplant habe ich mich bei der Entwicklung auf jQuery als kleinstes JavaScript Framework beschränkt – jQueryUI wird in einem sehr beschränkten Maße etwa für die Visualisierung von Schaltflächen oder der in die Seiten eingebetteten Erläuterungstexte zusätzlich genutzt. Zur Vereinfachung der Anzeige von Listen und Details zu einzelnen Listeneinträge wird ein eigener, sehr rudimentärer Vorlagenmechanismus genutzt. Dazu ein entsprechendes Gegenstück für das Binden von Werten an Eingabefelder in Formularen und der zugehörigen Validierung von Eingabedaten. Diese wenigen (vielleicht ein bis zwei Hundert) Zeilen JavaScript Code machten es so möglich, den VCR.NET 4.1 Web Client ohne die Koppelung an ein viele tausende Zeilen umfassendes Framework zu erstellen. Ich hoffe, dass es so auch in Zukunft möglich wird, den Web Client ohne allzu viel Rücksicht auf externe Komponenten weiterentwickeln zu können. Natürlich muss die Zeit zeigen, ob erweiterte Anforderungen an den Web Client nicht doch Hilfe von außen benötigen – dieses Thema wird aber erst mit VCR.NET 4.2 angegangen.

Anstelle von CSS wurde bei der Entwicklung auf LESS gesetzt, wobei ich allerdings fairer Weise sagen muss, dass ich hier nur an der Oberfläche kratze – mangels Erfahrung im UI Umfeld. Lediglich die Definition von Konstanten (für Farben, Zeichensätze, etc.) und die Schachtelung von Konfigurationen werden in einem beschränkten Umfang genutzt. Vielleicht wird es bei der nun folgenden Endphase der Entwicklung von VCR.NET 4.1 etwas mehr, aber da bin ich eher skeptisch.

Als extrem nützlich habe ich den Einsatz von TypeScript zur Entwicklung des JavaScript Client Codes empfunden – auch wenn ich hier sicher noch nicht das volle Potential ausgeschöpft habe. Die Möglichkeit der typsicheren Programmierung erweist sich immer wieder als extrem hilfreich bei der Früherkennung von Fehlbedienungen. Sehr elegant ist auch die Definition der Kommunikationsstrukturen für den Aufruf der REST Web Dienste als Schnittstellen (interface): diese erzeugen keinerlei JavaScript Code, erlauben aber trotzdem eine typsichere Programmierung wobei die Namen von Feldern einer jeden Struktur an genau einer Stelle im JavaScript Projekt festgelegt werden.

Gerade bei dem letzten Punkt habe ich allerdings auch mehrfach das Gefühl gehabt, dass JavsScript einfach mehr bietet, als durch das enge TypeScript Korsett angesprochen werden kann. Ich erhalte zum Beispiel vom Web Dienst eine Kontrollstruktur, die ich mit weiteren Feldern anreichern möchte. Dazu gibt es natürlich einige Alternativen (etwa Ausstieg aus TypeScript via any oder die Definition erweiterter Schnittstellen), die aber an die Eleganz von JavaScript nicht herankommen (einfacher Zugriff via data[‘…’]) und zudem die Typsicherheit austricksen müssen – wer weiß, ob das dann in einer Zukunft von TypeScript überhaupt noch geht.

Was mich allerdings sehr behindert hat ist die Integration von TypeScript in Visual Studio 2012. Mein erster Ansatz war es wie aus C# et al gewohnt möglichst viele kleine, übersichtliche TypeScript Quelldateien zu verwenden – so etwa für jede Klasse eine. Beim Übersetzen kommt es aber dann dazu, dass am Ende extrem viele Prozesse gestartet werden, die den Rechner für viele Sekunden unter Volllast setzen – ich vermute, für jede TypeScript Datei mindestens ein Prozess. In VCR.NET 4.1 ist daher sämtlicher Client Code in eine einzige TypeScript Datei zusammengefasst worden. Sollte sich die Visual Studio Integration verbessern, werde ich über eine erneute Trennung in einer späteren Version nachdenken.

Bis bald

Jochen

Speichere in deinen Favoriten diesen permalink.

Kommentare sind geschlossen.