Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Klient w browserze? Jak?
Forum PHP.pl > Forum > PHP
neosatan
Witam,
Chce zrewitalizować jeden z moich starych projektów i zastanawiam się jak do niego koncepcyjnie się zabrać. Idea jest prosta. Chce, aby serwer aplikacji był w PHP (choć może go przepiszę na platformę .NET kiedyś, ale raczej się nie palę do tego), natomiast klient desktopowy, oraz w przeglądarce. Teraz zastanawiam się jak się do tego zabrać. Czy może wszystko zrobić za pomocą żądań asynchronicznych (tu AJAX), czy też może jednak użyć jakiegoś mechanizmu cache'u na serwerze i wyrzucać html asynchronicznie? Czy może jeszcze jakoś inaczej? Nie chce też dawać dostępu do wszystkich danych za pomocą API, a jedynie cześć danych (najlepiej to jeszcze przez key uwierzytelniający, coś jak reCaptcha).

To co mam teraz to mniej więcej:
-jest serwer, a na nim SMARTY, które pluje wyglądem, oraz jest AJAX co to sobie co bardziej dynamiczne dane dociąga i parsuje w stronę (nieszczęśliwie napisałem to z return XML, co jak teraz patrzę jest rozwiązaniem z tyłka, bo JSON lepszy byłby).
-praktycznie brak możliwości napisania w prosty sposób klienta desktopowego, co jest irytujące bardzo.
-praktycznie wszystko na serwerze idzie do poprawy, więc otwarty jestem na propozycje.
-od groma błędów.

Co chcę osiągnąć:
-update klienta ma być niezależny od update serwera
-API
-jakieś sensowne zarządzanie zadaniami w czasie, bo sporo z nich się generuje i mają być wykonane o zadanej godzinie z dokładnością do 15 minut (CRON mi się tu widzi, albo wykonywanie zadań, gdy jest odświeżenie danych z nimi związanymi).
!*!
Czyli że chcesz aby aplikacja działa na desktopie i w przeglądarce bazując na tym co jest na serwerze? Możesz robić odowłania do serwera przez AJAX, jednak klient misiałby albo wysyłać żądanie co kilka snekund aby być na bierząco, albo kilkać co chwilę... Użyj websocets, wtedy serwer odpowie sam gdy jest to konieczne. To w czym napiszesz aplikacje desktopową nie ma znaczneia, bo każdy język to obsługuje.

Albo zaszalej i zrób coś takiego http://www.youtube.com/watch?v=AO-qca9ddqg wtedy koniecznie podaj link w dziale "oceny" biggrin.gif
neosatan
The hell! Nie no środowiska graficznego nie będę robił.

Websockets jak dobrze pamiętam nie działają na IE wcale, a i na innych przeglądarkach trzeba było jakoś to włączać. Może coś się zmieniło od tego czasu. Muszę zgłębić temat. W sumie to nie jest taki zły pomysł.

A jakieś pomysły co do API z kluczem uwierzytelniającym?
hind
Soap, autoryzaca z http (401), Lub też autoryzacja przez sesje (ciastka), całość i tak idzie przez standard http.
A jeśli nie websocket, to XHR Long polling (comet)
zegarek84
Cytat(hind @ 25.04.2012, 10:18:45 ) *
A jeśli nie websocket, to XHR Long polling (comet)

lub jeszcze między domenami JSONP (json załączany dynamicznie przez skrypty JS asyncgronicznie), gdzie po stronie serwera także można przeciągnąć czas odpowiedzi dopiero po jakimś zdarzeniu - a więc jest otwarte połączenie HTTP czekające na komunikat i nie trzeba w pętli odpytywać serwera... podobnie po stronie klienta odpytanie o coś po jakimś zdarzeniu... oczywiście minus względem socketów jest taki, iż dodatkowo przesyłasz nagłówki HTTP, ale jeśli tych danych przesyłanych jest sporo to narzut jest nie wielki... asynchroniczna komunikacja i tak lepiej wychodzi niż odpytywanie co sekundę serwer aplikacji...

jeśli chodzi o aplikację deskoptową to zainteresuj się biblioteką Qt napisaną w C++, w wersji Qt 5 ma większe wsparcie także dla JavaScript, a oprócz tego w Qt jest też zaimplementowany silnik WebKit (od qt4) do tworzenia aplikacji HTML5 bądź łatwiejszego parsowania stron np. po wczytaniu skryptów - ale ogólnie tym się nie bawiłem, w qt pisałem tylko prostą aplikację bazodanową... o ile będziesz chciał pisać coś w Qt to skorzystaj też z ich IDE Qt creatora...
Cytat(neosatan @ 24.04.2012, 22:57:58 ) *
Co chcę osiągnąć:
-update klienta ma być niezależny od update serwera
-API

no to właśnie przemyśl dokładnie API i sposób komunikacji by on się nie zmieniał nawet, jeśli będziesz musiał wprowadzać zmiany po stronie klienta lub serwera... a sockety też chyba były implementowane w JS jeśli brak natywnej obsługi poprzez klienta flash bądź java - gdzieś kiedyś taki projekcik widziałem
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.