Archiwa tagów: Atmosphere

Atmosphere Framework 1.0.0 już jest!

Po prawie 4 latach intensywnej pracy Jeanfrancois Arcand w końcu wydaje bibliotekę Atmosphere Framework w wersji 1.0.0! Ciężko tu przytoczyć listę zmian, jakie weszły w skład nowego wydania, bo autor Atmosphere’a nie prowadzi jakiegoś konkretnego changelog’a (mam nadzieję, że takowy pojawi się wraz z kolejnymi wydaniami), a jego rolę pełni obecnie spis zamkniętych zgłoszeń na github’ie. Najważniejsze jest jednak to, że osiągnięto pewny kamień milowy, który pozwala spokojnie stwierdzić, że Atmosphere jest na tyle dojrzały aby używać go produkcyjnie. W ostatnich wydaniach skupiono się przede wszystkim na poprawkach błędów i wzroście wydajności.

Dla niewtajemniczonych, Atmosphere jest biblioteką umożliwiającą wdrożenie architektury Comet w naszym projekcie. Dlaczego warto go stosować? Bo jest chyba jedyną biblioteką wspierającą tak wiele serwerów aplikacji oraz przeglądarek. Warto tu wymienić chociażby wsparcie dla serwerów Jetty, Tomcat, GlassFish, WebLogic, WepSphere czy JBoss oraz wszystkich najpopularniejszych przeglądarek (tabela kompatybilności znajduje się tutaj). Atmosphere działa tak, że sam wykrywa, w jakim środowisku został uruchomiony i jakie technologie przesyłania danych możliwe są do użycia (zarówno po stronie serwera jak i klienta). Nawet jeśli nie będą dostępne WebSockety, HTTP Streaming, czy inne natywne rozwiązania danego serwera, Atmosphere i tak będzie działać (korzystając z własnej implementacji)! Kod wystarczy napisać więc raz, a resztę możemy spokojnie zrzucić na barki tej biblioteki.

Atmosphere wspiera też dużo popularnych rozwiązań takich jak GWT, PrimeFaces, Apache Wicket, Vaadin, Grails, RichFaces, Scalatra, Apache Tuscany, JQuery-Socket oraz bardzo dobrze współpracuje ze Spring’iem i Guice’m. Jeśli używasz więc którejś z tych technologii i chcesz wdrożyć Comet’a, nie wahaj się, użyj Atmosphere’a!

Implementacja Comet’a w GWT, czyli jak poradzić sobie z Atmosphere’m

W dobie dzisiejszych aplikacji webowych często wykorzystywanym rozwiązaniem jest technika „Server Push„, występująca również pod nazwą „Comet„. Jest to technika pozwalająca na sprawne przesyłanie komunikatów w kierunku serwer -> klient (przeglądarka). Jak zapewne wiesz, protokół HTTP nie umożliwia przesyłania danych w tą stronę bez zainicjowania połączenia ze strony klienta. Na jakiej zasadzie działa więc Comet? Istnieje kilka popularnych rozwiązań tego problemu.

Najprostszą i najmniej wydajną implementacją jest po prostu cykliczne odpytywanie serwera w celu sprawdzenia, czy istnieją na serwerze nowe komunikaty, jeśli tak to są one zwracane wraz z odpowiedzią zapytania. Jak można się domyślić, odpytań będzie dużo, tym więcej im więcej użytkowników połączy się z aplikacją. Można nieco usprawnić ten mechanizm wprowadzając po stronie serwera pewien czas oczekiwania na nowe komunikaty, jednak nadal dużym narzutem będą same nagłówki HTTP odpytań serwera.

Można też skorzystać z technologii typu Adobe Flash, czy Aplety Java. Za ich pomocą można w łatwy sposób zbudować komunikację serwer -> klient, jednak trzeba się liczyć z tym, że przeglądarka użytkownika nie będzie ich obsługiwała. O ile Flash’a jeszcze da się przeżyć, to aplet Javy może skutecznie zniechęcić użytkownika do dalszego oglądania naszej strony. Często jednak wymagania projektu wykluczają też użycie Flasha, czy innych technologii nie obsługiwanych natywnie przez przeglądarkę, musimy skorzystać więc z innego rozwiązania.

Czytaj więcej »