c# - Einbetten einer JavaScript-Engine in .NET
Ich frage mich nur, ob schon einmal jemand versucht hat, eine JS-Engine in die .NET-Umgebung einzubetten und tatsächlich zu integrieren. Ich konnte das spidermonkey-dotnet-Projekt finden und tatsächlich nutzen (nach einer MENGE von Aufwand und Anstrengung, da es ziemlich veraltet und nicht ganz fertig ist). Hat jemand Erfahrung in diesem Bereich? Engines wie SquirrelFish, V8..
Nicht, dass ich mit Mozillas Spidermonkey nicht zufrieden wäre (ich benutze es für ein Rails-ähnliches Miniframwork für benutzerdefinierte Komponenten innerhalb der Kern-ASP.NET-Anwendung), aber ich würde trotzdem gerne ein wenig mehr mit den Optionen experimentieren. Die Kommandozeilenlösungen sind nicht das, was ich brauche, ich kann mich auf nichts anderes als CLR verlassen, ich muss Methoden von/zu JavaScript/C#-Objekten aufrufen können.
// c# class
public class A
{
public string Hello(string msg)
{
return msg + " whatewer";
}
}
// js snippet
var a = new A();
console.log(a.Hello('Call me')); // i have a console.log implemented, don't worry, it's not a client-side code :)
Nur um klarzustellen - ich versuche nicht, die Anwendung selbst in serverseitigem JavaScript zu programmieren. Es wird ausschließlich verwendet, um benutzerdefinierte Unteranwendungen zu schreiben (kann als eine Art DSL betrachtet werden). Es ist viel einfacher (und sicherer), normalen Menschen das Programmieren in JS zu erlauben als in C#.
Antwort #1
Probieren Sie Javascript .NET. Es wird auf GitHub gehostet. Es wurde ursprünglich auf CodePlex gehostet, hier)
Projektbesprechungen: http://javascriptdotnet.codeplex.com/discussions
Es implementiert Google V8. Sie können JavaScript direkt aus .NET-Code damit kompilieren und ausführen und CLI-Objekte bereitstellen, die auch vom JavaScript-Code verwendet werden. Es erzeugt nativen Code aus JavaScript.
Antwort #2
Der Open-Source-JavaScript-Interpreter Jint (http://jint.codeplex.com) macht genau das, wonach Sie suchen.
Bearbeiten:
Das Projekt wurde vollständig neu geschrieben und wird jetzt auf Github unter https://github.com/sebastienros/jint gehostet
Antwort #3
Sie könnten auch an Microsoft ClearScript interessiert sein, das auf GitHub gehostet wird und unter der Ms-Pl-Lizenz veröffentlicht ist.
Ich bin kein Microsoft-Fanboy, aber ich muss zugeben, dass die V8-Unterstützung ungefähr die gleichen Funktionalitäten wie Javascript.Net hat, und wichtiger noch, das Projekt wird immer noch gepflegt. Soweit es mich betrifft, funktioniert die Unterstützung für Delegaten auch besser als bei Spidermonkey-dotnet.
PS: Es unterstützt auch JScript und VBScript, aber wir waren an diesem alten Zeug nicht interessiert.
PS: Es ist kompatibel mit .NET 4.0 und 4.5+
Antwort #4
Wer gerade erst einschaltet, sollte sich auch Jurassic ansehen:
http://jurassic.codeplex.com/
Bearbeiten: Dies wurde zu GitHub verschoben (und scheint auf den ersten Blick aktiv zu sein)
https://github.com/paulbartrum/jurassic