ASP.NET Anwendungen über VCR.NET 4.3 anbieten

Der VCR.NET Recording Service hat einen auf der ASP.NET 4.5.1 Laufzeitumgebung basierenden integrierten Web Server, über den REST Dienste und der primäre Web Client angeboten werden – üblicherweise verfügbar über http://localhost/VCR.NET/default.html. Neu mit der Version 4.3 ist, dass nun weitere virtuelle Verzeichnisse über VCR.NET verfügbar gemacht werden können. Ähnlich wie im Internet Information Service bekommt jedes virtuelle Verzeichnis eine eigene .NET AppDomain zugeordnet, so dass eine gewisse Isolierung gegenüber den eigentlichen Aufgaben von VCR.NET garantiert ist. Natürlich ist diese Möglichkeit mit Bedacht einzusetzen, um den Kernbetrieb des VCR.NET Recording Service nicht zu gefährden und vor allem die Betriebsstabilität zu garantieren.

Beim Starten prüft VCR.NET 4.3ff, ob ein Unterverzeichnis Apps im Installationsverzeichnis existiert. Für jedes Unterverzeichnis darin wird ein gleichnamiges virtuelles Verzeichnis erstellt – diese darf natürlich namentlich nicht mit virtuellen Verzeichnissen anderer Web Server auf dem selben Rechner kollidieren, vor allem nicht mit denen des lokalen IIS. Existiert etwa ein Unterverzeichnis MediaDb, so kann nach dieses nach dem Starten vom VCR.NET als http://localhost/MediaDb/… verwendet werden.

Im Vorfeld hat sich zwar gezeigt, dass die ASP.NET Laufzeitumgebung innerhalb von VCR.NET kein vollwertiger Ersatz für einen IIS ist, aber zumindest habe ich für mich so eine sehr einfach und installationsarme Möglichkeit gefunden, Web Anwendungen anzubieten. Vielleicht hat sich ja der eine oder andere VCR.NET Anwender so etwas auch schon mal gewünscht, wer weiß.

Jochen

VCR.NET goes IIS?

In dem folgenden Post werde ich kurz ein neues Rand-Feature vorstellen, das VCR.NET 4.3 anbieten wird. Es schien mir jedoch angebracht, kurz gesondert auf die Motivation dahinter einzugehen – denn eigentlich braucht man so etwas doch nicht. Aber bevor ich zum eigentlichen Thema komme eine kleine Einführung und Vorgeschichte.

Wie sicher bekannt ist VCR.NET in wesentlichen Aspekten vor allem Anderen meine persönliche Plattform um neue Technologien praktisch zu erforschen. Schon sehr früh war in VCR.NET die ASP.NET Laufzeit integriert, die es mir am Anfang sehr einfach machte SOAP Web Dienste über die ASMX Technologie anzubieten. In einer späteren Version wurde diese vorhandene Laufzeit verwendet um den damaligen SOAP (Fat-)Client abzulösen und direkt von VCR.NET einen Web Client zur Verfügung zu stellen, der auf ASP.NET Web Forms basierte. Hat man aber einmal ein virtuelles Verzeichnis in dem ASP.NET läuft, so ist es sehr einfach weitere (Teil-)Anwendungen darin unterzubringen. Eine dieser Anwendungen war eine kleine Mediendatenbank, mit der ich meine Fernsehaufzeichnungen und gekauften Filme verwaltet habe. Nichts wirklich Tolles, aber eine neue Ecke zum Lernen und dem Zweck angemessen.

Mit der Umstellung des VCR.NET Web Clients auf HMTL(5) und JavaScript kam mir allerdings die Web Forms Lösung immer wieder plump und einfach „anders“ vor, so dass ich mich entschlossen habe auch diese Anwendung entsprechend umzustellen. Da aus einer ganz anderen Richtung auch die Notwendigkeit kam sich einmal näher mit dem Microsoft Entity Framework auseinander zu setzen, habe ich die Gelegenheit beim Schopfe gegriffen und die Mediendatenbank ganz neu aufgesetzt – wieder als private Minimallösung, aber doch mit einigen Sonderlocken wie zum Beispiel direkter SQL Programmierung (in sehr engem Rahmen) gegen eine SQL Server 2014 Express / LocalDb Datenbank [hier geht es um einfache Trigger und rekursive Abfragen einer Hierarchie mit Hilfe von Common Table Expressions]. So als Erfahrung in einem Satz: bis auf die Performance beim initialen Einspielen vieler Entitäten war ich doch sehr positiv überrascht vom EF Konzept, der Umsetzung von LinQ auf SQL und der Geschwindigkeit der LocalDb.

Der erste Gedanke zur Freischaltung war es, die Mediendatenbank in meinem lokalen Internet Information Service zu veröffentlichen. Allerdings habe ich nur ein Windows 7 Home Premium was mir sofort eine Überraschung bescherte: der hier integrierte IIS unterstützt die integrierte Windows Autorisierung nicht, das ist höheren Versionen vorbehalten. Tatsächlich hätte mir hier auch der anonyme Zugriff gereicht, aber „leider“ habe ich das schnell als Herausforderung gesehen. Vielleicht wäre ja auch IIS-Express eine Lösung, aber warum eine Installationsvoraussetzung mehr wenn ich eigentlich immer einen Web Server zur Hand habe: den VCR.NET Recording Service!

Ab der Version 4.3 wird VCR.NET neben der Hauptanwendung weitere ASP.NET Anwendungen anbieten können – quasi wie ein kleiner IIS. Die Autorisierungsmöglichkeiten sind zwar stark eingeschränkt, aber die integrierte Windows Autorisierung und Basic sind möglich, genauso eine SSL Verschlüsselung. Allerdings ist der Web Server im VCR.NET kein echter IIS, sondern nur ein Host für die ASP.NET Laufzeitumgebung. Technisch gesehen bietet er Möglichkeiten, die irgendwo zwischen dem Classic und dem Integrated Pipeline Mode vom IIS angesiedelt sind – die Modulunterstützung entspricht fast dem mächtigeren Pipeline Modus, auch wenn natürlich die üblichen IIS Module ohne weitere Maßnahmen nicht geladen werden. Die ASP.NET Laufzeitumgebung meldet sich allerdings den Anwendung als Classic Modus – eine IIS Version ist zudem nicht verfügbar.

Abgesehen von einem echten Fehler im Hosting der ASP.NET Laufzeitumgebung, der aber leicht zu korrigieren war, sieht das bisher ganz ordentlich aus. Ich werde das in den nächsten Wochen mal genauer beobachten.

Soweit zu dieser Erfahrung.

Viel Spaß und vielleicht schon einen schönen Urlaub

Jochen

VCR.NET – mal wieder Pause…

Bedingt durch andere Prioritäten geht es mit VCR.NET 4.3 doch nicht so voran, wie ich das Anfang des Jahres erhofft habe. Glücklicherweise ist das aber auch nicht wirklich so schlimm, da zumindest Stand jetzt keine wichtigen Dinge anstehen. Als aktuellen Zwischenstand ohne wirkliche Neuerungen (im Wesentlichen die Nachwehen der 4.2 Bugs) will ich aber trotzdem den aktuellen Entwicklungsstand bereitstellen – wer sich das (ohne Gewähr) antun möchte, der kann dies nun tun. Ich selbst nutze die Version und habe bisher keine Probleme festgestellt. Es handelt sich auch nicht wirklich um eine 4.3: DVB.NET denkt immer noch, es ist 4.2 und kann daher nicht parallel zur 4.2 installiert werden. Ich denke aber, für die forschen Tester spielt das eh keine Rolle.

Zu finden ist das an gewohnter Stelle, vorsichtshalber als experimentell bezeichnet 🙂 Hier die Änderungen gegenüber der finalen 4.2 – Patches nicht berücksichtigt:

  • Installationsvoraussetzung ist nun Microsoft .NET 4.5.1, die Unterstützung von Windows XP wurde wie angekündigt endgültig eingestellt. Ich selbst teste im Moment nur unter Windows 7 32 Bit.
  • Optische Korrekturen etwa einiger blauer Verweise auf der Startseite.
  • Die Geräteübersicht zeigt nun auch den Sender (die Quelle).
  • In der Geräteübersicht erscheinen nun auch Geräte, auf denen keine Aufzeichnungen geplant sind. Hier hat es am 6. April noch eine Nachbesserung für das Kontrollzentrum gegeben.
  • Das Setup hat einige Quelledateien (.TS, .LESS) falsch behandelt.
  • Geräteprofile mit einem Plus (+) im Namen funktionieren nun.
  • Korrekturen der # (hash) Auswertung für die Nutzung mit dem Firefox – die Programmierung neuer Aufzeichnung aus der Programmzeitschrift heraus funktioniert eventuell nicht richtig.
  • Stabilität des Dienstes beim Herunterfahren verbessert.
  • Korrektur der Fehlerbehandlung im Zusammenhang mit Änderungen von .NET 4ff.
  • Die VCR.NET Überwachung merkt sich die für WakeUp-On-LAN (WOL) benötigte MAC.

Viele Spaß und ich melde mich, wenn es wieder wirklich weitergeht – das kann aber noch eine Weile dauern.

Jochen

DVB.NET / VCR.NET und Windows XP

Für die nächste Version 4.3 des DVB.NET / VCR.NET Paketes ist die Umstellung auf das Microsoft .NET Framework 4.5 (oder später) geplant. Die Unterstützung von Windows XP endet daher mit der Version 4.2 – diese war ja eh schon reduziert, da der Internet Explorer 8 den Web Client nicht ausführen kann. Ich bitte alle Anwender, sich langsam darauf einzustellen – wir haben hier bei uns auf dem XP System nun Windows 8.1, mit LAV Filter funktioniert dann sogar der DVB.NET / VCR.NET Viewer klaglos.

Jochen

VCR.NET 4.2 Patch: .NET 4.0 Fehlerbehandlung

Leider hat sich ein Aspekt der Behandlung von Ausnahmen während der Codeausführung von .NET 2.0 (inkl. 3.5) zu .NET 4.0 verändert. Dies führt dazu, dass unter Umständen der VCR.NET Recording Service spontan beendet wird (im Ereignisprotokoll steht dann was von einem .NET Runtime Fehler und der Ausnahme AccessViolationException), obwohl die Ursache des Fehlers eigentlich intern abgehandelt werden könnte.

Der aktuelle Download (nun 4.2.78) korrigiert dieses Fehlverhalten. Eventuell wird immer noch ein Eintrag im Ereignisprotokoll angelegt, allerdings von der Quelle VCR.NET erzeugt und ohne dass der VCR.NET Recording Service beendet wird.

Eine entsprechende Änderung wird es in 4.3 auch für den DVB.NET Card Server geben. Für 4.2 habe ich erst einmal keinen Patch erstellt, solange das Fehlverhalten nicht irgendwo beobachtet wurde.

Jochen