23. Serwery aplikacji WWW.txt

(54 KB) Pobierz
#525
Rozdział 23.
Serwery aplikacji WWW

W tym rozdziale omówione zostanš kategorie produktów wspomagajšcych tworzenia aplikacji WWW. Niektórym produktom przeznaczonym do tego celu przyjrzymy się dokładniej.
Wczeniej przedstawione zostały pewne szczegóły dotyczšce współpracy serwera WWW z programami zewnętrznymi poprzez interfejs CGI. Omawiane w tym rozdziale serwery aplikacji WWW eliminujš problemy, na które trzeba było zwracać uwagę w przypadku CGI. Szczegółami tego typu zajmuje się na ogół jšdro serwera aplikacji, pozwalajšc programistom skupić się na budowie właciwej logiki programu.
Obecnie na rynku dostępnych jest bardzo wiele różnych serwerów aplikacji WWW, a ich liczba wcišż ronie. Niektóre z serwerów tworzone sš z mylš o cisłej integracji z istniejšcymi systemami, podczas gdy inne stawiajš sobie za cel udostępnienie szybkiego i łatwego w użyciu rodowiska programowania aplikacji. Zanim więc przystšpimy do projektowania naszej wymarzonej witryny WWW, powinnimy się zastanowić, który z serwerów aplikacji najlepiej spełni nasze oczekiwania.

Przeglšd serwerów aplikacji WWW

Spróbujemy podzielić serwery aplikacji WWW według pewnych kategorii. Autorzy poszczególnych produktów mogliby się nie zgodzić z poniższš charakterystykš, niemniej jednak uważam, że przedstawiony podział będzie na pewno zrozumiały dla osób zajmujšcych się tworzeniem aplikacji.
Pierwsza i najstarsza kategoria dotyczy programów standardowych. Najczcigodniejszym przedstawicielem tej kategorii jest interfejs CGI. Można do niej zaliczyć również serwlety Javy. W kategorii tej mieszczš się wszystkie technologie stworzone przy użyciu standardowych języków programowania i generujšce wyniki w postaci kodu HTML, a nie zwykłego tekstu lub grafiki. Po przedstawieniu kolejnych kategorii, różnica między pierwszš z nich, a pozostałymi stanie się o wiele wyraniej sza.
#526
Druga kategoria, to serwery aplikacji, których kod osadzany jest wewnštrz dokumentów HTML. Przykładem może być dokument ColdFusion zawierajšcy wyrażenia warunkowe oraz pętle połšczone ze zwykłym kodem HTML. Przed wysłaniem takiego dokumentu do przeglšdarki jest on przeszukiwany przez serwer aplikacji, a wszelkie znalezione wyrażenia sš wykonywane i zastępowane wygenerowanymi wynikami. Inne popularne serwery aplikacji WWW należšce do tej kategorii to między innymi ASP (Active Server Pages) firmy Microsoft oraz PHP.
Trzecia kategoria dotyczy kombinacji dokumentów HTML i programów. Dokumenty HTML tej kategorii zawierajš specjalne znaczniki[Nie chodzi tutaj o znaczniki języka HTML (przyp. thim.).], na podstawie których serwer aplikacji WWW wywołuje okrelone programy zewnętrzne. Wynik działania programu zewnętrznego służy jako treć, którš zastępowany jest znacznik użyty do jego wywołania. Pozwala to programistom tworzyć kod w formie strukturalnej lub obiektowej, bez koniecznoci osadzania go w dokumentach HTML lub tworzenia wyrażeń generujšcych kod tego języka. Do produktów tej kategorii zaliczajš się między innymi NetDynamics i WebObjects firmy Apple.
Czwarta kategoria składa się z programów zaprojektowanych do realizacji okrelonego celu, które czasem korzystajš z relacyjnych baz danych do przechowywania własnych informacji. Przykładem takiego programu jest Vignette Storyserver, narzędzie nie przeznaczone do współpracy z bazami danych, ale korzystajšce z relacyjnej bazy do przechowywania własnych danych. Tego typu oprogramowanie nie jest zbyt popularne wród programistów baz danych, ale na wszelki wypadek warto wiedzieć o jego istnieniu.

Ogólne uwagi na temat serwerów aplikacji

Większoć serwerów aplikacji WWW działa w ramach oddzielnego procesu na tym samym komputerze, na którym uruchomiony jest serwer WWW. Programy serwerów aplikacji WWW wykonujš się w sposób cišgły, nieustannie nasłuchujšc żšdań z serwera WWW. Żšdania tego typu mogš być przekazywane na kilka różnych sposobów.
Wiele serwerów aplikacji komunikuje się z serwerem WWW poprzez interfejs CGI. Kiedy użytkownik potrzebuje danych od serwera aplikacji, wywołuje skrypt CGI, który po uruchomieniu przyjmuje żšdanie od serwera WWW i przekazuje je serwerowi aplikacji. Serwer aplikacji WWW wykonuje żšdanie, przekazuje wyniki swojej pracy programowi CGI, a ten z kolei wysyła je do serwera WWW, skšd trafiajš do przeglšdarki użytkownika. Interfejs CGI stosowany jest na ogół dla zachowania kompatybilnoci - sš w niego wyposażone niemal wszystkie dostępne na rynku serwery WWW. Niestety, CGI jest stosunkowo wolnym mechanizmem w porównaniu z innymi technologiami. Traktuje się go zatem jako najmniejszy wspólny mianownik pomiędzy serwerami aplikacji a serwerami WWW.
#527
Serwery aplikacji udostępniajš na ogól jeden lub więcej interfejsów przeznaczonych do użytku ze cile okrelonymi serwerami WWW. Na przykład serwery firmy Netscape posiadajš interfejs NSAPI, serwer IIS (Internet Information Server) firmy Microsoft ma własny interfejs znany jako ISAPI, natomiast Apache (jeden z dominujšcych serwerów na rynku) rozszerzany jest przy użyciu specjalnych modułów. Większoć serwerów aplikacji, w zależnoci od platformy systemowej, wyposażonych jest w jeden lub nawet wszystkie powyższe interfejsy komunikacyjne. Głównš zaletš tego typu interfejsów jest to, że umożliwiajš one bezporedniš komunikację z serwerem WWW, bez potrzeby uruchamiania dodatkowych narzędzi w stylu skryptów CGI.
Innš cennš cechš serwerów aplikacji jest to, że izolujš one użytkownika od bazy danych. W sposób niewidoczny zajmujš się one nawišzaniem i utrzymaniem połšczenia z bazš danych, a programista, zwolniony od obowišzku mylenia o tych szczegółach, może skupić się na poleceniach SQL.

Programy niezależne

Pierwszym mechanizmem, jakim się zajmiemy, jest udostępnianie baz danych poprzez niezależne programy. Programy tego typu naprawdę zasługujš na miano serwerów aplikacji, ponieważ samodzielnie wykonujš wszystkie fazy komunikacji zarówno z bazš danych, jak i z serwerem WWW. Serwery aplikacji tego typu wykonujš na ogół wszystkie zadania niskiego poziomu, pozostawiajšc użytkownikowi jedynie obowišzek zaimplementowania logicznych zasad działania całej aplikacji.
Oto prosty przykład, zanim program w języku Perl (wykonujšcy się jako skrypt CGI) przele odpowied do przeglšdarki, musi sam przeanalizować dane przekazane mu przez użytkownika, połšczyć się z relacyjnš bazš danych, zrealizować odpowiednie zapytania SQL i w końcu przeprowadzić operacje na otrzymanych wynikach. Jeżeli jednak użyjemy np. serwera typu ColdFusion, to on zajmie się komunikacjš z bazš danych i serwerem WWW. Zadaniem programisty będzie jedynie przetworzenie otrzymanego żšdania, które wczeniej zostało rozbite na odpowiednie zmienne dostępne poprzez skrypt, wykonać niezbędne operacje na bazie danych i wygenerować wynik w postaci kodu HTML. Wysłaniem odpowiedzi do serwera WWW zajmuje się sam serwer aplikacji. Przyjrzymy się teraz kilku technologiom tworzenia programów niezależnych.

Perl/CGI

Jednš z bardziej popularnych technik tworzenia aplikacji WWW jest kombinacja Perlš i CGI. Interfejs CGI został przedstawiony już wczeniej, nie było jeszcze natomiast mowy o samym Perlu. Perl jest językiem skryptowym (wywodzšcym się z systemu UNIX), wyposażonym w całe mnóstwo różnorodnych mechanizmów przeznaczonych do manipulowania tekstem. Perl stał się najbardziej popularnym językiem do tworzenia skryptów CGI, a przez wiele osób traktowany jest jako podstawowe narzędzie tworzenia aplikacji WWW.
#528
Jednš z zalet programowania w Perlu jest dostęp do niewyobrażalnie dużej iloci darmowego kodu, który można cišgnšć z sieci i wykorzystać do własnych celów. Kod ten dostarcza gotowe rozwišzania najróżniejszych problemów, ułatwiajšc w ten sposób tworzenie aplikacji programistom.
Perl był opisywany w wielu publikacjach ksišżkowych[Jednš z nich jest Perl dla każdego" autorstwa Laury Lemay, wydana przez wydawnictwo HELIOM.], do których odsyłamy osoby zainteresowane tym językiem. Teraz ograniczymy się jedynie do podania pewnych podstawowych informacji na temat wykorzystania Perlš do tworzenia skryptów CGI oraz łšczenia się z relacyjnymi bazami danych.
Perl, tak jak każdy inny przyzwoity język programowania, umożliwia tworzenie specjalnych bibliotek kodu zwanych modułami. Większoć kodu tworzona z przeznaczeniem do użytku publicznego, jest rozpowszechniana włanie poprzez moduły. Również dodatkowe biblioteki kodu ródłowego dołšczane do interpretera tego języka majš postać modułów - jednym z nich jest CGI. pm, moduł wspomagajšcy programowanie skryptów CGI.
CGI. pm jest tak rozbudowanym modułem, że pełny opis jego możliwoci wymagałby napisania odrębnej ksišżki. Jego głównym zastosowaniem jest analiza żšdań CGI i ich rozkład na bardziej użytecznš formę. Przyjrzyjmy się prostemu skryptowi CGI napisanemu w Perlu z użyciem modułu CGI. pm. Zanim to jednak nastšpi zbudujemy prosty formularz, który posłuży do jego uruchomienia. Do utworzenia formularza z rysunku 23.1 posłużył dokument HTML, którego kod przedstawiony został w listingu 23.1.
-------------------------------
Rysunek 23.1.	Przykładowy formularz
-------------------------------
-------------------------------
Listing 23.1. Przykładowy formularz HTML

<html><head><title>Przykładowy formularz</titlex/head>
<body>
<form action="/cgi-bin/sample.cgi">
Nazwisko: <input type="text" name="name" size="40"xbr>
Ranga: <input type-"text" name="rank" size="40"xbr>
Numer służbowy: <input type="text" name="serial_/ium" size="40"><br>
<input type="submit">
</form>
</bodyx/html>
-------------------------------

Po utworzeniu formularza można napisać program CGI, który będzie przetwarzał jego dane. Przykład skryptu CGI w języku Perl, który przetwarza dane z formularza i generuje na ich podstawie nowš stron...
Zgłoś jeśli naruszono regulamin