2013-02-20 13 views
5

Ich habe eine Desktop-Anwendung, die ein C++ - Backend und ein HTML5/JS-Frontend hat. Momentan müssen wir Google V8 oder Mac Webview und Objective-C verwenden, damit Javascript und C++ kommunizieren können. Gibt es eine Möglichkeit, sie direkt ohne die Middleware miteinander reden zu lassen?Javascript kommunizieren mit C++

Der Versuch, zu erreichen:

Variablen
  1. Teilen.
  2. Funktionen von C++ zu JS aufrufen.
  3. Aufruf von Funktionen von JS nach C++.

Ich habe versucht, dies zu googeln und alles deutet auf die oben genannten Lösungen.

+0

HTTP-RPC-Schnittstelle? Geben Sie ein Beispiel für den Aufruf von JS-Funktionen aus C++. – Aesthete

+0

Ich verstehe es nicht. Wenn das eigentliche Backend in C++ codiert ist, warum kompilieren Sie es nicht und rufen es von einem Middleware-Endpunkt auf dem Server ab? Die Middleware kann eine beliebige Sprache sein, mit der Sie kompilierte Binärdateien ausführen können. – Vinay

+0

Wenn ich Sie richtig verstehe, möchten Sie eine C++ - Middleware? – Vinay

Antwort

5

Sie könnten versuchen, Googles Protocol Buffers zu verwenden, mit dem Sie Datenobjekte erstellen können, die in C++ - Objekte kompiliert werden. Sie könnten dann eine der folgenden Projekte verwenden, um von ihren wiki protobuffers mit Javascript zu verwenden:

+0

Wie wird dies verwendet, um Funktionen aufzurufen und Variablen zwischen dem Browser und der Anwendung zu teilen. – Aesthete

+0

Das sieht vielversprechend aus. Vielen Dank – Rob

3

Ihre Software klingt wie eine Menge, wie ein Web-App, ohne das Internet in die Mitte. NodeJS könnte gute Middleware in diesem Fall machen, können Sie write modules dafür in C++, und verwenden Sie sie in Javascript. Ich habe das noch nicht selbst gemacht. Eine short example :)

Und nun ein paar Jahre Schicht wir haben die Electron project, das ist im Grunde der oben aber mit einer Chrome-basierten Web-Ansicht.

0

haben Sie einen Blick auf diese, ich bin der Besitzer

http://code.google.com/p/libjspp/

libjspp leicht & Schnittstelle ermöglicht der C++ die Interaktion mit Javascript Spidermonkey 1.8.5? Nicht aufdringlich zu C++ & Javascript-Welt zur gleichen Zeit. Nützlich für Anwendungen, die einbetten möchten & Erweitern Sie Javascript in objektorientierter Weise. Sehr dünne Schnittstelle praktisch keinen Overhead durch Verwendung von C++ - Vorlagen.

Ich bin

1

Sie können nun Electron verwenden, um im Grunde einen Chrome-Webbrowser mit direktem Zugriff auf die Node.js-API zu erhalten. Dann können Sie nbind verwenden, um einfach C++ - Code von JavaScript aufzurufen. Auf diese Weise teilen sich beide den gleichen Thread und den gleichen Heap.

Sie erklären die C++ Klassen, die von so etwas zu einer C++ 11-Quelldatei hinzufügen:

NBIND_CLASS(X) { 
    construct<int, int>(); 

    method(Y); 
    method(Z); 
} 

Das Bindings für eine Klasse X mit einem Konstruktor unter 2 ints und Methoden Y und Z mit ziemlich schafft viele beliebige Argumente und optionale Rückgabewerte.

nbind kommt mit einem Beispiel für die Paketierung Ihres C++ - Codes in ein Node.js-Addon für die Verwendung in Electron.

Verwandte Themen