2009-03-31 10 views
1

interagieren Ich benutze persevere für eine Anwendung, die ich schreibe, die remote hardwere steuert. Persevere ist in Java geschrieben und liefert keine alternative API.Ich benutze einen Comet-Server und ich möchte es mit C++

Ich benutze eine Web-basierte GUI als Systemsteuerung. So weit, ist es gut.

Ich kann Daten mit REST-Kanälen abrufen und einstellen wie Dojo, aber das Problem ist, dass ich nicht wirklich weiß, wie man REST-Kanäle benutzt. Welche Bibliothek sollte ich verwenden?

+0

Nur um zu klären. Ich frage, ob curllib ++ eine akzeptable Lösung ist, um REST-Header zu senden, oder sollte ich eine andere Bibliothek verwenden? –

+0

Sie müssen Ihre Frage klarer machen. Läuft der Persevere-Server auf der Remote-Hardware? Wenn Sie eine webbasierte GUI verwenden, benötigen Sie eine andere Bibliothek, um REST-Header zu senden. Eine Topologie Ihres Systems würde die Dinge klären. – kgiannakakis

+0

Persevere wird auf dem Hauptserver ausgeführt, der die Remote-Hardware steuert. Die webbasierte GUI hat eine Schnittstelle, um direkt mit Persevere zu interagieren. Ich spreche von dojox.data.PersevereStore. Jetzt ist das Programm, das die Remote-Hardware steuert, in C++ geschrieben, und deshalb würde ich gerne die beste Möglichkeit sehen, mit REST-Kanälen in C++ umzugehen. Ich wurde auch über boost.asio erzählt. Es sieht wie eine bessere Option aus, da der Code klarer ist. –

Antwort

1

Wenn Sie gcc als Toolchain verwenden, können Sie eine JVM mit GCJ einbetten, um in Ihrer Anwendung durchzuhalten. GCJ macht es einfach, C++ von Java mit seiner CNI Schnittstelle (viel einfacher als JNI) aufzurufen. Ich benutzte diese Methode, um Java scripting in unserer C++ - Anwendung zu verwenden. Sie können das beharrliche Glas sogar in eine native Bibliothek kompilieren und mit GCJ mit Ihrer App verknüpfen.

Die beste Referenz ist die GCJ Documentation.
Es gibt auch ein Linux-Journal, das den Artikel Embedded Java with GCJ enthält, den Sie lesen können.
Sie können auch applications that use gcj studieren.

+0

Hmm nette Idee und dann interagiere ich einfach direkt mit durchhalten? Ist es effizienter, REST-Kanäle zu verwenden? Ich weiß, dass Sie 10 GB/s übergeben können, wenn Sie einen internen Socket senden. –

+0

Es sollte so schnell sein, wie Sie möglicherweise sein können, da es auf Funktionsaufrufe kocht. Mit GCJ implementieren Sie effektiv Ihre Java-Klassen in C++ und lassen Sie sie nur durchhalten. Ich habe schließlich Wrapper-C++ - Implementierungen (die C++ - Ausnahmebehandlung einkapseln) erstellt, die ich aus den GCJ-Codeteilen aufgerufen habe, da man Java und C++ - Ausnahmebehandlung in GCJ (noch) nicht mischen kann. Aber ansonsten war es eine relativ schmerzlose Erfahrung. – lothar

+0

Da ich auf Linux laufe, passt G ++. Haben Sie ein laufendes Beispiel, das ich lesen kann? Haben Sie auch ein Tutorial über die Toolchain, um GCJ und G ++ aufzurufen? –