2010-05-19 6 views
5

Ich habe eine ungewöhnliche Situation - Ich habe ein eingebettetes Video-Streaming-Gerät mit einer komplizierten Benutzeroberfläche, und ich muss einen eingebetteten Webserver verwenden, um diese Benutzeroberfläche über einen Webbrowser zu reproduzieren. Ich denke über die Verwendung von JavaScript/JQuery in einem C++ - Backend (ich bin nicht selbst programmieren, ich muss Leute für die Arbeit grunzen). Der eingebettete Webserver ist viel weniger leistungsfähig als ein PC, daher möchte ich eine Anwendung schreiben, die die gesamte Benutzeroberfläche im Browser ausführt und nur mit dem Server kommuniziert, um neue Programmeinstellungen hin und her zu übertragen und Statusupdates abzurufen vom Gerät aus und steuern Sie die Videowiedergabe.Kann JQuery/JavaScript verwendet werden, um eine umfangreiche clientseitige Anwendung zu schreiben?

Mit anderen Worten, der Client bekommt eine große Seite oder eine kleine Anzahl von großen Seiten (effektiv das Herunterladen der Anwendung), die Anwendung behält wichtigen lokalen Speicher, und wenn die Seiten zuerst geladen werden, sendet der Server nie etwas Layout- verbunden.

Die Anwendung verfügt über zwei Reihen von Registerkarten zum Navigieren in ~ 40 Menüseiten, Drag-and-Select-Steuerelemente zum Auswählen von Zellen in einem Raster, sortierte Listen, viele Standard-Dateneingabeoptionen, und es sollte bis zu steuern können 16 eingebettete Video-Player gleichzeitig (vorzugsweise VLC).

Ist dies in JavaScript/JQuery mit einem C++ - Backend möglich?

+0

FWIW, komplexe Anwendungen in einem Browser sind heutzutage sehr möglich. Sehen Sie sich einfach Gmail, Yahoo Mail usw. an, die alle wesentliche Software sind, die vollständig im Browser ausgeführt werden. –

+0

Ja, Sie können v8 über C++ verwenden (auch ist duktape eine Javascript-Engine, die auf eingebettete Systeme in C abzielt). Tatsächlich verwenden die Linux-Distribution Slitaz (und einige andere) einfache Shell-Skripte mit busybox-Dienstprogrammen für ihre Konfigurations-GUI (tazpanel). Ich weiß nicht, welche Art von Hardware Sie haben, aber wenn das Video hardwarebeschleunigt ist, ist es oft genug, um einen minimalen Aufbau von curl zu verwenden, um/dev/videoXX direkt über eine udp/tcp-Verbindung zu streamen ... der Rest sollte Seien Sie einfach ein Albtraum von CSS mit einigen einfachen HTML-und Client-Seite js, um Videos in einen HTML5-Player. – technosaurus

Antwort

3

Ext JS würde Sie viel auf der UI-Seite sparen, es kann verwendet werden, um sehr komplizierte Layouts mit reichen Steuerelementen in sehr kurzer Zeit zu erstellen. Es hat sogar einen eigenen grafischen Editor, in dem Sie die Benutzeroberfläche vor dem Hinzufügen von Handlern erstellen können.

Seine API Documentation ist auch sehr gut, es ist weit besser als die meisten anderen Bibliotheken.

Und für den Rest, nun, ich bin mir ziemlich sicher, dass es fertige Webserver gibt, in die man schauen kann; Werfen Sie einen Blick here - die meisten von diesen können wahrscheinlich eine CGI-Anwendung aussetzen.

+0

Danke für den Link, Ext JS scheint aufgrund der Anzahl der vordefinierten UI-Elemente sehr praktisch zu sein. – Ian

+0

Aber um den Rest zu übertreffen, hat es seine Fehler, aber nicht größer als alle anderen Bibliotheken ... –

1

Es ist definitiv möglich. Schauen Sie in das AJAX-Framework von Jquery, um mit dem Server zu kommunizieren, und sehen Sie sich some C++ web toolkits an, um einige einfache Web-Service-Controller zu erstellen.

1

Alles ist möglich.

Ist es das wert? Hängt von Ihren Anforderungen ab. Denken Sie daran:

  • Sie müssen eine Art von Application Server-Unterstützung haben. Das manuelle Codieren wird Ressourcen benötigen.
  • Sie müssen auch die ausführbare C++ - Datei auf dem eingebetteten Gerät aktualisieren. Sie können möglicherweise mehrere Geräte unterstützen. Dies kann ein Problem sein, wenn eine Anzahl von unterstützten Geräten wächst.
  • C++ Engineering-Ressourcen sind in der Regel teurer (und mit billigen C++ - Ingenieure zahlen Sie 2x in Bugfixes) vs PHP/Ruby/Perl-Entwickler auf dem Server.
+0

Denken Sie daran, dies ist ein eingebetteter Webserver, wie ich sagte, es ist viel weniger leistungsfähig als ein PC. PHP passt kaum in den Speicher und Perls Leistung ist nicht tolerierbar. Das ist ein Grund, warum ich komplizierte "Web-Sachen" auf dem Client machen möchte, also muss der Server nur Videostreaming, Schnittstelle mit der Gerätefirmware usw. machen. Mein Gedanke ist es, die lokale Qt-Anwendung des Geräts zu erweitern, um mehr zu haben Server-freundliche APIs, dann eine dünne C++ - Schicht, die unter dem Lighttpd-Webserver ausgeführt wird. – Ian

+0

Meine dritte Kugel sollte "php/ruby ​​/ pearl auf der Serverseite sein, nicht eingebettet". Abgesehen davon ist die Implementierung des http-Servers sehr einfach (Lesetransport), aber die Anwendungsunterstützung ist komplexer. Insgesamt läuft es auf dünne/dicke Client-Konversation hinaus. – Zepplock

0

Vielleicht möchten Sie Dojo im Gegensatz zu jQuery verwenden. Es ist wirklich mehr in Richtung dieser Art von Sache. Auf keinen Fall bedeutet das, dass Sie es nicht in jQuery tun können, Dojo ist einfach besser IMO, um eine komplette JS-Anwendung zu erstellen. Natürlich ist zu beachten, dass dadurch auch die Verwendung wesentlich komplexer ist als bei jQuery.

-1

Sie könnten stattdessen eine Rich-Client-Technologie wie Silverlight in Erwägung ziehen. Komplizierte Benutzeroberfläche ist, wofür es gebaut wurde und die Entwicklungserfahrung ist viel schöner als die meisten anderen Optionen.

Silverlight doesn't require .NET auf dem Server und kann problemlos über einfache REST oder SOAP-Dienste kommunizieren (siehe GSOAP).

+0

Silverlight erfordert jedoch ein clientseitiges Plugin, und insbesondere unter Linux möchte ich nicht, dass Benutzer es installieren müssen Plugins. JavaScript kommt mit jedem Browser und "stellen Sie sicher, dass JavaScript aktiviert ist" ist nicht viel von Leuten zu fragen, die die App verwenden möchten. – Ian

+0

Das wurde nirgendwo in Ihrer Frage angegeben. Ich denke, der Downvote ist ein bisschen hart. – hemp

+0

Ich habe es nicht downvote, ich bin nicht auf dieser Seite registriert. Ich denke jedoch, dass es etwas Ungewöhnliches ist, den Client zu bitten, ein Plugin zu installieren. – Ian

Verwandte Themen