2010-05-19 11 views
5

Mam nietypową sytuację - mam wbudowane urządzenie do przesyłania strumieniowego wideo ze skomplikowanym interfejsem użytkownika i muszę użyć wbudowanego serwera internetowego do odtworzenia tego interfejsu za pomocą przeglądarki internetowej. Myślę o używaniu JavaScript/JQuery na zapleczu C++ (nie koduję tego wszystkiego sam, potrzebuję zatrudnić ludzi do pracy gruntowej).Czy JQuery/JavaScript może być użyty do napisania znacznej aplikacji po stronie klienta?

Wbudowany serwer internetowy jest znacznie mniej wydajny niż komputer, więc chcę napisać aplikację, która uruchamia cały interfejs w przeglądarce i komunikuje się z serwerem, aby przekazywać nowe ustawienia programu tam iz powrotem, otrzymywać aktualizacje statusu z urządzenia i sterować odtwarzaniem wideo.

Innymi słowy, klient otrzymuje jedną dużą stronę lub niewielką liczbę dużych stron (efektywnie pobierając aplikację), aplikacja utrzymuje znaczną lokalną pamięć, a po załadowaniu stron serwer nigdy nie wysyła żadnych elementów - związane z.

Aplikacja ma dwa rzędy zakładek do nawigacji po 40 stron menu, przeciągnij i wybierz kontrolki, aby wybrać komórki w siatce, posortowane listy, wiele standardowych opcji wprowadzania danych i powinna mieć możliwość kontrolowania do 16 wbudowanych odtwarzaczy wideo naraz (najlepiej VLC).

Czy jest to możliwe w JavaScript/JQuery z backendem C++?

+0

FWIW, złożone aplikacje w przeglądarce są obecnie bardzo możliwe. Po prostu obserwuj Gmaila, Yahoo Mail, itp., Z których wszystkie są znaczącymi programami, które działają całkowicie w przeglądarce. –

+0

Tak, możesz użyć v8 przez C++ (również, duktape jest wbudowanym w system javascript mechanizmem wbudowanym napisanym w C) ... w rzeczywistości dystrybucja linuksowa Slitaz (i kilka innych) używa zwykłych skryptów powłoki z narzędziami busybox dla ich konfiguracji gui (tazpanel). Nie wiem, jaki masz sprzęt, ale jeśli masz sprzęt przyspieszony wideo, często wystarczy użyć minimalnej kompilacji curl do bezpośredniego stream/dev/videoXX przez połączenie udp/tcp ... reszta powinna po prostu być koszmarem css z łatwym html i stroną js klienta, aby umieścić wideo w odtwarzaczu HTML5. – technosaurus

Odpowiedz

3

Ext JS zaoszczędziłoby wiele po stronie interfejsu użytkownika, może być używany do tworzenia bardzo skomplikowanych układów z bogatymi kontrolkami w bardzo krótkim czasie. Ma nawet własny edytor graficzny, w którym można utworzyć interfejs przed dodaniem procedur obsługi.

Jego API Documentation jest również bardzo dobry, jest znacznie lepszy niż większość innych bibliotek.

Co do reszty, cóż, jestem prawie pewien, że istnieją gotowe serwery internetowe, na które można zajrzeć; spójrz na here - większość z nich może prawdopodobnie narazić aplikację CGI.

+0

Dzięki za link, Ext JS wygląda na to, że może być bardzo wygodny ze względu na liczbę predefiniowanych elementów interfejsu użytkownika. – Ian

+0

Ale żeby pokonać resztę, ma swoje wady, ale żadna większa niż jakakolwiek inna biblioteka ... –

1

Jest to zdecydowanie możliwe. Zajrzyj do frameworka AJAX Jquery'ego, aby połączyć się z serwerem, a następnie spójrz na some C++ web toolkits, aby utworzyć lekkie kontrolery usług WWW.

1

Wszystko jest możliwe.

Czy to się opłaca? Zależy od twoich wymagań. Pamiętaj:

  • Będziesz potrzebować wsparcia serwera aplikacji. Kodowanie go ręcznie zajmie zasoby.
  • Będziesz także musiał zaktualizować plik wykonywalny C++ na urządzeniu osadzonym. Możesz potencjalnie w końcu obsługiwać wiele urządzeń. Może to stanowić problem, jeśli liczba obsługiwanych urządzeń rośnie.
  • Zasoby inżynierskie C++ są zazwyczaj droższe (a dzięki tanim inżynierom C++ płacisz 2x w poprawkach) kontra deweloperzy php/ruby ​​/ perl na serwerze.
+0

Pamiętaj, że jest to wbudowany serwer internetowy, tak jak powiedziałem, że jest znacznie mniej wydajny niż komputer. PHP prawie nie mieści się w pamięci, a wydajność Perla jest nie do zniesienia. To jeden z powodów, dla których chcę skomplikowane "materiały internetowe" wykonane na kliencie, więc serwer musi tylko przesyłać strumieniowo wideo, interfejs z oprogramowaniem sprzętowym itp. Myślałem, że rozszerzę lokalną aplikację Qt na urządzenie, aby mieć więcej przyjazne dla serwera interfejsy API, a następnie cienka warstwa C++ działająca pod serwerem Lighttpd. – Ian

+0

Mój trzeci punkt miał być "php/ruby ​​/ pearl po stronie serwera, a nie osadzony". Poza tym implementacja serwera http jest bardzo łatwa (read transport), ale obsługa aplikacji jest bardziej złożona. Ogólnie rzecz biorąc sprowadza się to do cienkiej/grubej rozmowy z klientem. – Zepplock

0

Możesz chcieć rzucić okiem na używanie Dojo w przeciwieństwie do jquery. Jest to naprawdę bardziej ukierunkowane na tego typu rzeczy. W żadnym wypadku nie oznacza to, że nie można tego zrobić w jquery, Dojo jest po prostu lepszym projektem IMO, aby stworzyć całą aplikację JS. Oczywiście należy zauważyć, że to również sprawia, że ​​jego użycie jest znacznie bardziej złożone niż jQuery.

-1

Zamiast tego można rozważyć technologię bogatego klienta, taką jak Silverlight. Skomplikowany interfejs użytkownika jest tym, do czego jest przeznaczony, a jego obsługa jest o wiele przyjemniejsza niż większość innych opcji.

Silverlight doesn't require .NET na serwerze i może z łatwością komunikować się za pośrednictwem prostych usług REST lub SOAP (patrz gSOAP).

+0

Jednak Silverlight wymaga wtyczki po stronie klienta, a szczególnie w Linuksie nie chcę wymagać od użytkowników instalacji wtyczki. JavaScript jest dostarczany z każdą przeglądarką i "upewnij się, że JavaScript jest włączony" nie jest zbyt wielkim pytaniem ludzi, którzy chcą korzystać z aplikacji. – Ian

+0

To nie było nigdzie w Twoim pytaniu. Myślę, że downstream jest trochę trudny. – hemp

+0

Nie przesłałem tego, nie jestem zarejestrowany na tej stronie. Jednak uważam, że wymaganie od klienta instalacji wtyczki jest czymś niezwykłym, o czym należy wspomnieć. – Ian

Powiązane problemy