Aplikacje webowe


Aplikacja webowa lub aplikacja internetowa, to oprogramowanie komputerowe, którego części są zaimplementowane na więcej niż jednym hoście sieci internet. W minimalnej konfiguracji wymagane są dwa hosty, z których jeden jest typu serwer (server), a drugi typu klient (client). Zazwyczaj na serwerze dokonuje się zasadnicze przetwarzanie danych, tam też również może znajdować się baza danych. Host typu klient pełni wtedy rolę interfejsu użytkownika, pozwalając na wprowadzanie danych i wyświetlanie wyników.

client-server

Podstawowy mechanizm komunikacji między serwerem a aplikacją typu klient bazuje na następującym algorytmie. W pierwszym kroku klient wysyła do serwera tak zwane żądanie obsługi, zazwyczaj protokołem HTTP (HTTP request). Do tego żądania mogą być dołączone dane. Serwer wykonuje żądanie i wysyła odpowiedź (response) do klienta, w szczególności wysyłając wraz z odpowiedzią odpowiednie dane.

Bardzo często aplikacja typu klient jest tak tworzona aby można ją uruchamić w przeglądarce internetowej (web browser). Daje to możliwość używania takiego oprogramowania (tego samego kodu) przez użytkowników korzystających w swoich komputerach z bardzo różnych systemów operacyjnych.

client-server

Zwróćmy uwagę na to, że zawsze komunikację musi inicjować klient. Host typu klient znajduje się w sieci lokalnej (LAN), której komunikacje z hostami w sieci internet umożliwia router lub kilka routerów. Jak wiadomo router wysyła do serwera żądanie obsługi z informacją, że to żądanie pochodzi od niego. Adres hosta typu klient w sieci lokalnej nie jest przez router przekazywany na zewnątrz. Serwer odpowie zatem na takie żądanie wysyłająć odpowiedź do routera, a ten przekieruje ją do odpowiedniego hosta w sieci lokalnej.

client-server

Powyżej rozważono najprostszy przypadek odpowiadający jednak często spotykanej konfiguracji aplikacji internetowej, której tak zwany back-end jest zaimplementowany na serwerze, a część front-end na hoscie użytkownika typu klient. W tym przypadku użytkownik aplikacji wprowadza odpowiednie dane i następnie powoduje ich przesłanie do serwera w celu ich przetworzenia oraz otrzymania wyniku.

Zapmiętajmy!
W takim modelu komunikacyjnym, opartym na protokole komunikacyjnym HTTP, nie ma żadnej możliwości przesyłania danych z internetu do hosta typu klient zanjdującego się w sieci LAN, o ile host typu klient nie zainicjuje uprzednio połączenia z odpowiednim serwerem i nie zażąda od niego danych.



Komunikacja "client - client"
Bardzo często mamy do czynienia z przypadkiem, w którym chcielibyśmy aby dwie lub więcej aplikacji zaimplementowanych na różnych hostach typu klient mogło wymieniać ze sobą dane i chcielibyśmy korzystać z podstawowego protokołu komunikacyjnego, jakim jest HTTP. Przykładami takich aplikacji są różnego rodzaju czaty czy inne fora internetowe pozwalające na komunikację polegającą na wzajemnym wysyłaniu wiadomości tekstowych.
Poniżej jest przedstawiona konfiguracja przedstawiająca w jaki sposób mogą się komunikować użytkownicy dwu hostów korzystający z aplikacji typu "czat".

client-server

Na serwerze zaimplementowane jest odpowiednie oprogramowanie oraz baza danych zawierająca posty użytkowników (wiadomości na grupie dyskusyjnej lub forum). Hosty użytkowników (typu klient) wysyłają żądania zapisu postu lub odczytu listy postów już znajdujących się w bazie danych. W ten prosty sposób jest zachowany model komunikacyjny polegający na tym, że to zawsze host typu klient inicjuje komunikację. Zaletą takiego rozwiązania jest, że tylko serwer wymaga publicznego adresu IP. Hosty typu klient muszą mieć tylko połączenie z siecią internet, przykładowo poprzez punkty dostępowe, które nadadzą tym hostom chwilowe wartości adresów IP technologią DHCP.


Ćwiczenie

Poniżej jest link do aplikacji typu "forum dyskusyjne".

Forum

Jest to strona internetowa zawierająca dwie aplikacje: jedna do zapisywania postów, druga do odczytu listy postów zapisanych w bazie danych na serwerze. To są aplikacje poglądowe do zilustrowania mechanizmu wymiany danych między dowolną ilością aplikacji typu klient, z wykorzystaniem jednego serwera i z zastosowaniem protokołu HTTP. W aplikacjach tych nie ma szeregu opcji, które się spotyka w profesjonalnym oprogramowaniu tego typu.



Powyżej przedstawiono tylko jeden z wielu modeli komunikacyjnych stosowanych w sieciach komputerowych, w szczególności w sieci internet. Zachęcam do poszukania opisu innych modeli komunikacyjnych stosowanych w aplikacjach sieciowych.
Możesz też nieco poszerzyć swoją wiedzę o aplikacjach internetowych opartych na rozważanym tu modelu "Klient-Serwer" korzystając nadal z mojego serwisu -
kliknij tu.