Kevin Gerndt Selbstständig

Dank der unterstützten Mechanismen, wie dem Vorkompilieren von Skripten, lässt sich eine hervorragende Performance erzielen. Auch auf Komfortfunktionen muss dank der Integration von Generic und Extension Methods nicht verzichtet werden.

Die Idee einer Symbiose aus Programmier- und Skriptsprache ist zwar alles andere als neu, jedoch in der heutigen Applikationswelt mit höchsten Ansprüchen an maximale Flexibilität und Effizienz gefragter denn je. Der Artikel zeigt, wie sich die Vorteile beider Technologien verschmelzen lassen, um hochdynamische Applikationen zu erhalten. Zudem wird erklärt, in welchen Szenarien eine Ausgliederung von Businesslogik zu empfehlen ist.

Der eine oder andere mag sich fragen, was es für einen Sinn ergibt, eine ausgefeilte Programmiersprache mit all ihren Vorzügen, wie etwa Objektorientierung, Typisierung und syntaktische Reinheit, durch eine Skriptsprache wie JavaScript vermeintlich ohne diese Vorzüge aufzuweichen. In der Welt der Spieleentwicklung hat man die Vorteile einer Kombination aus Programmier- und Skriptsprache früh erkannt. Mit zunehmendem Umfang und Komplexität wuchsen auch die Kompilierzeiten ins schier Unermessliche. Es musste also eine Lösung gefunden werden, die einen minimalen Einfluss auf die Performance hat, gleichzeitig aber zu mehr Flexibilität verhilft. Die Lösung bestand darin, Teile der Logik, die einer besonders häufigen Anpassung unterliegen, wie zum Beispiel die AI (Artificial Intelligence), zu skripten. Hierzu kommt beispielsweise die Skriptsprache Lua zum Einsatz. Der Skriptcode wird meist von einem Interpreter, der in der Regel in einer hardwarenahen Hochsprache wie etwa C++ programmiert ist, interpretiert und ausgeführt. Diverse Optimierungsverfahren des Skriptcodes durch den Interpreter verhelfen zu zusätzlicher Performance.

Ein ähnliches Muster lässt sich in heutigen modernen Businessapplikationen erkennen. Kunden stellen höchste Ansprüche an Performance und Stabilität, erwarten jedoch gleichzeitig maximale Anpassbarkeit bei geringen Anpassungsaufwänden. Dieses Paradoxon stellt Entwickler regelmäßig auf eine harte Probe. Der Schlüssel zur Lösung des Problems kann in der Verwendung von integrierten Skript-Engines liegen. Diese erlauben es, Teile der Businesslogik einer Applikation zu skripten bzw. aus der eigentlichen Anwendung auszulagern. Dieses Verfahren bietet den Vorteil, dass sich eine Applikation anpassen lässt, ohne sie kompilieren zu müssen. Auch die Bereitstellung oder eventuelle Downtimes können so vermieden werden. Zu den bekanntesten Skript-Engines im .NET-Umfeld zählen Jint, Javascript .NET, Jurassic und ClearScript, wobei sich dieser Artikel auf letztere konzentriert. Bei ClearScript handelt es sich um eine in .NET integrierte Schnittstelle, die eine Ausführung von VBScript, JavaScript und Googles V8 im .NET-Kontext ermöglicht. V8 ist eine von Google implementierte JavaScript Engine, die besonders performant arbeitet. Sie steigert die Leistung zur Laufzeit, indem der JavaScript-Code bei der Ausführung durch sogenannte Just-in-Time-Kompilierung zunächst in nativen Maschinencode übersetzt wird. Weitere Leistungsvorteile ergeben sich aus Optimierungstechniken wie dem Einsatz von Inline-Caching und der sogenannten exakten Speicherbereinigung. Hierbei wird der verfügbare Speicherbereich in möglichst kleine Segmente unterteilt, was einen schnellen Zugriff ermöglicht. Gleichzeitig lassen sich nicht mehr benötigte Speicherbereiche unmittelbar freigeben, was längere Wartezeiten vermeidet. Ausgeliefert wird die Engine unter anderem als Teil des Webbrowsers Google Chrome, der für die schnelle und effiziente Ausführung von JavaScript-Code bekannt ist. Wie sich die V8 Engine auch in .NET-Projekte integrieren lässt, wird nachfolgend erläutert.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Windows Developer 10.17 - "Datenarbeit mit Durchblick"

Alle Infos zum Heft
579811144C# + ClearScript = Maximale Flexiblität!
X
- Gib Deinen Standort ein -
- or -