Référencement Google moteur V8 de un .NET app
Je suis en train de construire un .NET 3.5 application, et la nécessité d'évaluer code JS sur le serveur - fondamentalement, un utilisateur a fourni ensemble de règles qui peuvent travailler au sein d'un navigateur ou sur le serveur. Géré JS n'est pas une option, parce que le code JS serait fourni au moment de l'exécution. Aptana est Jaxer est pas non plus une option. J'ai donc été à la recherche dans l'utilisation d'une version du moteur V8 dans mon application.
J'ai construit la source avec succès dans une DLL, mais cette DLL n'est pas une bibliothèque gérée et n'est pas COM. V8 est juste du C++.
Des idées quant à la façon de l'interopérabilité avec ce type de DLL en C#? Aussi, je suis ouvert à d'autres suggestions pour SpiderMonkey ou un autre moteur JS.
Merci d'avance.
Mise à JOUR:
J'ai été en mesure d'utiliser de Ryan solution. Je viens de mettre à jour les références à la construction de la plus récente à partir du tronc. Il a travaillé beaucoup. Merci Ryan.
- En aparté, où puis-je obtenir une copie de la DLL compilée? (Depuis que je suis trop paresseux pour le compiler moi-même, principalement parce que je n'ai pas de VS de le faire en C++)
- Ive mis à jour mon post avec un lien pour télécharger le projet de test que j'ai créé.
- Pour ceux qui sont juste de trouver cette page, il y a maintenant V8.NET sur Codeplex ainsi.
- v8dotnet.codeplex.com V8.NET sur Codeplex
- V8.Net est maintenant sur NuGet, et prend en charge .Net Standard! 🙂 (nuget.org/packages/V8.Net)
Vous devez vous connecter pour publier un commentaire.
Je me rends compte que cela peut ne pas être une réponse précise à votre question, mais j'ai pensé que je voudrais mettre mon 2 cents comme je doute que beaucoup de gens ont essayé ce.
Je l'ai eu à travailler en créé un wrapper géré en mode mixte C++. Il y a d'autres façons de le faire, mais je vais essayer de faire un wrapper qui pourrait être utilisée à partir de tout .NET de la langue.
Obtenir la lib de compiler de manière telle qu'elle puisse être incluse dans un mode mixte de projet était un peu un défi. J'ai dû modifier la bibliothèque d'exécution (dans le fichier SConstruct) utilisé pour /MD et /MDd, de sorte qu'il serait compatible avec le commutateur /clr.
Pour l'instant j'ai que de simples scripts en cours d'exécution comme je n'ai pas mis en œuvre des rappels, de la coutume, des méthodes, des objets et ces.
Voici un petit échantillon de ce que l'utilisation ressemble pour l'un de mes test apps:
Il s'exécute plus compliqué scripts comme un encoder en base64 très bien. Mais pour l'instant je ne peux qu'ajouter des éléments à partir du c++ côté.
Je suis disposé à fournir plus d'informations + code si quelqu'un est intéressé que je ne peut pas toujours choisir ce projet de retour. Mais, j'ai peur qu'elle voie à beaucoup de code pour aller dans un autre post ici, donc nous devons trouver un autre moyen comme google code ou codePlex.
Edit:
OK, j'ai téléchargé le code. Je dois mettre un avertissement sur ce: Le projet est très tôt et je suis un amateur en C++, au mieux, afin de ne pas obtenir vos espoirs trop. Aussi, ce projet a été créé/fait juste après le chrome a été libéré pour la version v8 inclus peut-être vieux.
Cela dit, ici, il est: http://ryanscook.com/Files/V8-DotNet.zip (21.5 MO)
Dans le paquet, vous trouverez les éléments suivants d'intérêt:
Espère que cela aide!
/clr
commutateur. Aussi, Il ressemble à un partage de la lib,/MD
est déjà utilisé. Merci d'avance pour votre aide.Vous pouvez essayer de Javascript .NET:
http://javascriptdotnet.codeplex.com/
Il vous permet de créer un V8 de contexte de .NET et le registre de la CLI objets en elle de sorte que vous pouvez les manipuler et de les appeler les membres à partir du code Javascript. Il compile le code Javascript au moment de l'exécution.
Vérifier.
Découvrez v8sharp. Il prend en charge l'exécution de JS à l'intérieur d'un .NET application. Il permet également de vous inscrire .Types de réseau avec le moteur v8 de sorte que votre code JS peuvent interagir avec votre .NET code. Je suis dans le processus de l'ajout de support pour l'accrochage de la fonction/prise en charge des délégués.
Microsoft sont construire une véritable javascript - pas "JScript" - runtime (avec IronPython, IronRuby, et VB10) sur le CLR à l'aide de la DLR, mais je ne trouve pas de téléchargements ou de contenu pour elle. Peut-être cela va arriver avec C# 4?
De ce que j'ai entendu le compiler avec IJW (Managed C++) devrait fonctionner - mais j'ai peut-être vraiment mal, je n'ai jamais touch MC++.
Je suppose que gatapia a remplacé js.net avec jish
Necromancing.
Comme par 2018 et .NET Core 2.0+
vous pouvez utiliser vroomjs-core
Exécuter du Javascript:
Crée et retourne un objet Javascript, puis d'appeler une méthode sur elle:
D'accéder à des propriétés et appeler des méthodes sur des objets CLR à partir de Javascript:
Vous pouvez essayer V8.NET ainsi.
https://www.nuget.org/packages/V8.Net/
Il vous permet d'intégrer facilement le code avec V8 à un niveau inférieur à celui de nombreux autres wrappers. Il prend également en charge .Net 4.6.1+ et .Net Standard 2.0+ (.Net De Base).