Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Systemy rozproszone W. Bartkiewicz

Podobne prezentacje


Prezentacja na temat: "Systemy rozproszone W. Bartkiewicz"— Zapis prezentacji:

1 Systemy rozproszone W. Bartkiewicz
Uniwersytet Łódzki Katedra Informatyki W. Bartkiewicz Systemy rozproszone Wykład 8. Usługi komunikacyjne środowiska HTTP

2 WWW Podstawowy model WWW
Katedra Informatyki WWW jest olbrzymim systemem klient-serwer, obejmującym miliony serwerów rozproszonych po całym świecie. Każdy serwer utrzymuje zbiór dokumentów, zapamiętanych zazwyczaj w postaci plików. Dokumenty mogą być również generowane na żądanie. Serwer przyjmuje zlecenia pobrania dokumentu i przesyła go do klienta. Ponadto może on przyjmować zlecenia przechowania nowych dokumentów. Klient współpracuje z serwerami w sieci za pośrednictwem specjalnej aplikacji nazywanej przeglądarką (browser). Przeglądarka zamawia dokumenty z wykorzystaniem zamówień specyficznego protokołu HTTP, odbiera dokumenty i odpowiada za ich właściwe wyświetlenie.

3 WWW Podstawowy model WWW
Katedra Informatyki Serwer WWW Klient (przeglądarka) Zamówienia HTTP Dokumenty

4 WWW Lokalizatory URL Katedra Informatyki Podstawowym sposobem wskazania w przeglądarce dokumentów, które zostaną następnie pobrane i wyświetlone, są tzw. URL – jednolite lokalizatory zasobów (Uniform Resource Locator). Mogą one określać: Nazwę schematu sposobu dotarcia do zasobu (np. http, ftp, file, telnet). Serwer na którym zlokalizowany jest zasób (zazwyczaj nazwa DNS, ale może być również adres IP). Numer portu na którym serwer nasłuchuje zamówień. Jeśli nie zostanie podany używa się portu domyślnego. Nazwa dokumentu, wraz ze ścieżką w drzewie katalogów zarządzanym przez serwer WWW.

5 WWW Lokalizatory URL Schemat Nazwa serwera Nazwa ścieżki http: ://
Katedra Informatyki Schemat Nazwa serwera Nazwa ścieżki http: :// /~witek/distr Schemat Nazwa serwera Port Nazwa ścieżki http: :// : 80 /~witek/distr Schemat Nazwa serwera Port Nazwa ścieżki http: :// : 80 /~witek/distr

6 WWW Hipertekst Katedra Informatyki Zasadnicze znaczenie w WWW ma fakt, że wszystkie informacje są reprezentowane za pośrednictwem dokumentów. Większość dokumentów nie ma prostej struktury liniowej, ale może zawierać odniesienia łączące różne części tego samego dokumentu, bądź łączące różne dokumenty. Odniesienia takie nazywane są łączami bądź hiperłączami (links, hyperlinks). Podczas wyświetlania dokumentu w przeglądarce użytkownik może wybierać łącza, klikając na jego wizerunku (opisie). Wybór łącza powoduje przejście do innej części przeglądanego dokumentu, albo wysłaniem do serwera zamówienia pobrania innego dokumentu. Strukturę tego typu określa się hipertekstem (hypertext), lub jeśli powiązane dokumenty nie mają charakteru tekstowego – hipermediami (hypermedia).

7 WWW HTML Katedra Informatyki Większość dokumentów w sieci WWW wyrażona jest w specjalnym języku redagowania hipertekstu (HyperText Markup Language), zwanym HTML. Oprócz możliwości tworzenia łączy, język HTML zawiera słowa kluczowe, umożliwiające podzielenie dokumentu na różne sekcje. Każdy dokument HTML podzielony jest na część nagłówkową i zasadniczą. W języku HTML są też wyróżnione nagłówki, akapity, listy, tabele, formularze. Jest też możliwe wstawianie w odpowiednie miejsca obrazów lub animacji. Oprócz tych elementów strukturalnych, język HTML zawiera liczne słowa kluczowe, które instruują przeglądarkę co do sposobu prezentowania dokumentu (kroje i rozmiar pisma, przedstawiwanie tekstu kursywą, pogrubionego, wyrównywanie (justowanie) części tekstu, itp.).

8 WWW Przykładowa strona HTML
Katedra Informatyki <HTML> <HEAD> <TITLE>Moja strona</TITLE> </HEAD> <BODY> <H1> Jakiś nagłówek</H1> <P>Tutaj umieszczamy jakieś teksty, które chcemy umieścić na stronie webowej<BR> pamiętajmy o podziale na linie i białych spacjach &nbsp&nbsp&nbsp teraz dalszy tekst </P> </BODY> </HTML>

9 WWW HTML i JavaScript Katedra Informatyki HTML zawiera liczne środki tworzenia bardziej wyrafinowanych dokumentów sieciowych, tzw. stron WWW. Jedną z najmocniejszych jest możliwość wyrażania części dokumentu w postaci skryptów napisanych zazwyczaj w opartym na Javie języku JavaScript (tzw. skryptów strony klienta – client-side scripts). <HTML> <HEAD> <TITLE>Prosty skrypt Javy</TITLE> </HEAD> <BODY> <P> <SCRIPT type="text/javascript"> document.writeln("<H1>Hello world</H1>"); </SCRIPT> </P> </BODY> </HTML>

10 WWW DOM HTML Katedra Informatyki Dokument podczas rozbioru przez przeglądarkę zostaje wewnętrznie zapamiętany w postaci tzw. drzewa rozbioru, którego każdy węzeł reprezentuje jeden element (definiowany przez znacznik HTML). Elementy odpowiadające znacznikom HTML zdefiniowanym w obrębie innych znaczników, stanowią w drzewie względem nich węzły potomne. Korzeniem drzewa jest więc element odpowiadający znacznikowi <HTML>, o nazwie „document”. Ze względu na przenośność reprezentację drzewa rozbioru ustandaryzowano: Każdy element musi być jednym z predefiniowanego zestawu typów elementów. Każdy typ elementu ma standardowy interfejs z metodami dostępu do jego treści, węzłów potomnych lub rodzicielskich, itp. Z elementem każdego typu zdefiniowany jest również standardowy zestaw zdarzeń wysyłanych przez przeglądarkę w reakcji na działania użytkownika. Ta standardowa implementacja nosi nazwę HTML DOM – modelu obiektu dokumentu (Document Object Model).

11 WWW DHTML Katedra Informatyki DOM tworzy standardowy interfejs programowania dostępu do zawartości poddanych rozbiorowi przez przeglądarkę dokumentów WWW. Używają go przede wszystkim skrypty osadzone w dokumencie, aby przechodzić drzewo rozbioru, dodawać, usuwać lub modyfikować węzły. Skrypty te mogą więc służyć do sprawdzania i zmieniania dokumentów, których są częścią. Otwiera to możliwość dynamicznej adaptacji dokumentów. Dlatego język HTML wzbogacony o skrypty JavaScript korzystające z DOM określa się często jako dynamiczny HTML (DHTML).

12 WWW Przykładowa strona DHTML
Katedra Informatyki <HTML> <HEAD> <TITLE>Informacja o linkach</TITLE> <SCRIPT> . . . </SCRIPT> </HEAD> <BODY> <div id="InsertionPoint">&nbsp</div> <a href=" Łódzki</a><br> <a href=" Zarządzania</a><br> <a href=" Informatyki</a><br> <br><br> <form ID="Form1"> <INPUT TYPE="button" value="Pokaż linki" onclick="ShowLinks()" ID="Button1"> <INPUT TYPE="button" value="Ukryj linki" onclick="HideLinks()" ID="Button2"> </form> </BODY> </HTML>

13 WWW Przykładowy skrypt DHTML
Katedra Informatyki function ShowLinks() { var table = document.createElement("<table>"); table.setAttribute("id", "LinkTable", 0); table.setAttribute("border", 1, 0); for (i=0; i<document.links.length; ++i) { table.insertRow(); table.rows[i].insertCell(); table.rows[i].cells[0].innerHTML = document.links[i].innerText; table.rows[i].cells[1].innerHTML = document.links[i].href; } InsertionPoint.innerHTML = ""; InsertionPoint.appendChild(table); function HideLinks() {

14 WWW XML Katedra Informatyki Dokumenty tworzone mogą być również w innych językach poza HTML. Jedną z najważniejszych alternatyw jest XML – rozszerzalny język redagowania (Extensible Markup Language). W odróżnieniu od HTML język XML używany jest tylko do strukturalizacji dokumentu. Nie zawiera on słów kluczowych dotyczących formatowania dokumentu.

15 WWW Przykładowy dokument XML
Katedra Informatyki <?xml version="1.0"?> <customer type="current"> <name> <first>John</first> <middle>Smithy</middle> <last>Doe</last> </name> <contact> <address> <street>123 Some Str.</street> <city>Anytown</city> <state>NC</state> <zip>11-111</zip> </address> <phone> <home> </home> <work> </work> <mobile> </mobile> </phone> </contact> </customer>

16 WWW XML Katedra Informatyki XML jest raczej metajęzykiem, dostarczającym środków do definiowania dowolnych struktur dla różnych typów dokumentów. XML definiuje tylko sposób sposób opisu danych i ogólne zależności między elementami dokumentu, tak by dokument był poprawnie uformowany. XML nie ma w zasadzie żadnej listy znaczników, których znaczenie byłoby predefiniowane (tak jak w przypadku HTML). XML to model (logiczny i fizyczny) danych, a nie schemat danych. Schemat danych, czyli konkretne znaczniki definiuje się dla konkretnej grupy dokumentów XML. Istnieją dwa standardowe sposoby definiowania schematu dokumentu XML: Definicje Typu Dokumentu DTD (Document Type Definition) – prosty sposób, częściowo tylko oparty na modelu XML. Schematy XML (XML Schema) – w pełni oparte na modelu XML, znacznie precyzyjniej definiują wykorzystywane typy danych.

17 WWW Przykładowy dokument DTD
Katedra Informatyki <?xml version="1.0" encoding="UTF-8" ?> <!ELEMENT customer (name, contact)> <!ELEMENT name (first, middle, last)> <!ELEMENT contact (address, phone)> <!ELEMENT address (street, city, state, zip)> <!ELEMENT phone (home, work, mobile)> <!ELEMENT first (#PCDATA)> <!ELEMENT middle (#PCDATA)> <!ELEMENT last (#PCDATA)> <!ELEMENT street (#PCDATA)> <!ELEMENT city (#PCDATA)> <!ELEMENT state (#PCDATA)> <!ELEMENT zip (#PCDATA)> <!ELEMENT home (#PCDATA)> <!ELEMENT work (#PCDATA)> <!ELEMENT mobile (#PCDATA)> <!ATTLIST customer type (current | past ) #REQUIRED id ID #IMPLIED > <!ATTLIST mobile type CDATA #IMPLIED >

18 WWW Przykładowy dokument XML
Katedra Informatyki <?xml version="1.0"?> <!DOCTYPE customer SYSTEM "customer.dtd"> <customer type="current"> <name> <first>John</first> <middle>Smithy</middle> <last>Doe</last> </name> <contact> <address> <street>123 Some Str.</street> <city>Anytown</city> <state>NC</state> <zip>11-111</zip> </address> <phone> <home> </home> <work> </work> <mobile> </mobile> </phone> </contact> </customer>

19 WWW Typy MIME Katedra Informatyki Oprócz HTML i XML istnieje wiele innych typów dokumentów, np. obrazy w formatach JPEG lub GIF, dokumenty dźwiękowe w formacie MP3, dokumenty sformatowane w językach Postscript lub PDF, itd. Do wyrażenia typu dokumentu służą typy MIME. Skrót MIME utworzony jest od słów Multipurpose Internet Mail Extension czyli wielofunkcyjne rozszerzenie poczty internetowej. Pierwotnie typy te miały służyć do dostarczania informacji o zawartości komunikatu wysyłanego pocztą elektroniczną, ale obecnie używane są również w usłudze WWW.

20 WWW HTTP Katedra Informatyki Cała komunikacja między klientami i serwerami w sieci oparta jest na protokole przesyłania hipertekstu (HyperText Transfer Protocol – HTTP). HTTP jest prostym protokołem typu klient-serwer. Klient wysyła komunikat z zamówieniem do serwera i czeka na komunikat z odpowiedzią. HTTP ma charakter bezstanowy. Nie ma w nim koncepcji otwartego połączenia, nie trzeba też wymagać od serwera utrzymywania informacji o klientach. HTTP jest oparty na TCP. Klient i serwer mogą więc zakładać, że ich komunikaty dotrą do celu. Jeśli sprawy potoczą się źle, np. połączenie zostanie przerwane lub dojdzie do przekroczenia limitu czasu, to zostanie zasygnalizowany błąd. Na ogół jednak nie podejmuje się prób wyjścia z awarii. W starszych wersjach HTTP stosowano tzw. połączenia nietrwałe, tzn. każde zamówienie kierowane do serwera wymagało odrębnego połączenia. W nowszych wersjach (od 1.1) połączenie ma charakter trwały, tzn. w jednym połączeniu można wysłać kilka zamówień.

21 WWW Połączenia nietrwałe i trwałe
Katedra Informatyki Klient Serwer Klient Serwer SO SO SO SO Odniesienia Odniesienia Połączenie TCP Połączenie TCP Połączenie nietrwałe – składniki zewnętrzne dokumentu muszą być pobierane w kilku połączeniach. Połączenie trwałe – wszystkie składniki dokumentu mogą być pobierane w jednym połączeniu.

22 WWW Zamówienia HTTP Katedra Informatyki W protokole HTTP klient żąda wykonania operacji na serwerze, wysyłając do niego komunikat zamawiający określoną czynność. Do najpopularniejszych komunikatów zamówień należą: Head – Żądanie zwrócenia nagłówka dokumentu. Z każdym dokumentem skojarzone mogą być metadane, zapamiętane w oddzielnym nagłówku, wysyłanym w zamówieniu lub odpowiedzi. Operację Head zleca się serwerowi, jeśli klient nie chce dokumentu, lecz właśnie jego metadane. Na przykład operację Head można wykorzystać do pobrania daty ostatniej modyfikacji dokumentu, aby sprawdzić ważność dokumentu przechowywanego podręcznie u klienta. Można jej także użyć do sprawdzenia czy dokument istnieje, bez konieczności jego przesłania.

23 WWW Zamówienia HTTP Get – Żądanie przekazania dokumentu do klienta.
Katedra Informatyki Get – Żądanie przekazania dokumentu do klienta. Operacji tej używamy do rzeczywistego pobrania dokumentu z serwera i dostarczenia go zamawiającemu klientowi. Możemy zażądać, aby dokument pobierany był tylko wówczas, gdy po określonym terminie dokonano w nim zmian. Protokół HTTP umożliwia także wiązanie z dokumentami znaczników (tags), reprezentowanych w formie tekstowej, i pobieranie dokumentu tylko w przypadku dopasowania pewnych znaczników. Put – Żądanie przechowania dokumentu na serwerze. Klient żąda od serwera zapamiętania dokumentu pod podaną nazwą (wysyłaną w zamówieniu). Serwery realizują zazwyczaj określoną politykę bezpieczeństwa, tak więc zamówienie Put zostanie zaakceptowane tylko od uwierzytelnionego klienta.

24 WWW Zamówienia HTTP Katedra Informatyki Post – Dostarczenie danych do uzupełnienia dokumentu (kolekcji dokumentów). Operacja Post podobna jest do Put, przy czym klient żąda dołączenia do istniejącego dokumentu (lub grupy dokumentów), przechowywanego już na serwerze. Nazwa dokumentu lub grupy do której dane mają zostać dołączone wysyłana jest razem z zamówieniem Post. Delete – Żądanie usunięcia dokumentu na serwerze. Operacja ta służy do zamówienia na serwerze usunięcia dokumentu nazwanego w wysyłanym komunikacie. Również w tym przypadku wykonanie zamówienia zależy od różnych aspektów bezpieczeństwa.

25 WWW Komunikaty HTTP Katedra Informatyki Komunikacja miedzy klientem a serwerem odbywa się za pomocą komunikatów. Protokół HTTP rozpoznaje tylko komunikaty zamówienia i odpowiedzi.

26 WWW Komunikat zamówienia
Katedra Informatyki Ograniczniki Operacja Odniesienie Wersja Nazwa nagłówka komunikatu Wartość ... Wiersz zamówienia Nagłówki komunikatu zamówienia Treść komunikatu

27 WWW Komunikat odpowiedzi
Katedra Informatyki Wiersz statusu Wersja Kod statusu Fraza Nazwa nagłówka komunikatu Wartość ... Nagłówki komunikatu odpowiedzi Treść komunikatu

28 WWW Komunikaty HTTP Katedra Informatyki Komunikat zamówienia rozpoczyna się od wiersza zamówienia, identyfikującego operację, jaką klient chce zlecić serwerowi, odniesienie do dokumentu o który chodzi w zamówieniu, oraz wersję HTTP, której użycia spodziewa się klient. Komunikat odpowiedzi rozpoczyna się od wiersza statusu, zawierającego numer wersji, trzycyfrowy kod statusu zamówienia, objaśniony dodatkowo za pośrednictwem frazy tekstowej. Często używane kody to: 200 (OK. – zamówienie może być honorowane) 400 (Bad Request – złe zamówienie) 403 (Forbidden – zakazane) 404 (Not Found – nie znaleziono)

29 WWW Komunikaty HTTP Katedra Informatyki Komunikat zamówienia lub odpowiedzi może zawierać dodatkowe nagłówki, pozwalające na przesłanie dodatkowych informacji, precyzujących właściwy komunikat: Na przykład, jeśli klient zamówił operację post w odniesieniu do dokumentu udostępnionego tylko do odczytu, to serwer odpowie komunikatem statusu 405 („Niedozwolona metoda”), załączając nagłówek Allow, określający dozwolone operacje (np. head i get). Innym przykładem jest sytuacja, w której klienta interesuje przesłanie dokumentu, tylko jeśli wprowadzono w nim ostatnio jakieś modyfikacje. W tym przypadku zamówienie get klienta zostanie poszerzone o nagłówek If-Modified-Since, z określeniem daty.

30 WWW Aplikacje klientów (HTML)
Katedra Informatyki Aplikacje klientów, działające w środowisku HTTP mogą być tworzone w formie cienkiego klienta, korzystającego z formularzy HTML, pozwalających zamieścić elementy interfejsu użytkownika w dokumencie strony WWW. Elementami formularza HTML, pozwalającymi na implementację dialogu z użytkownikiem są kontrolki HTML. Język HTML zawiera znaczniki definiujące typowe kontrolki różnego typu, takie jak na przykład pola edycji, przyciski, przyciski zaznaczane, pola kombo, itp. Do opisu (etykietowania) kontrolek wykorzystuje się zwykłe teksty. Elementy wyglądu formularza realizowane są przez inne znaczniki HTML, np. pozycjonowanie kontrolek uzyskuje się zazwyczaj z użyciem tabel. Pojedynczy dokument WWW może zawierać kilka różnych formularzy, realizujących różne funkcje.

31 WWW Przykładowy dokument formularza HTML
Katedra Informatyki <HTML> <HEAD> <TITLE>Rejestracja zamówień</TITLE> </HEAD> <BODY> <H1>Dane klienta</H1> <FORM name="formularz" action="01struktura.html" method=get> Nazwisko klienta <INPUT type="text" name="NazwEdit" size=25><BR> Zarejestrowany <INPUT type="checkbox" name="RegCb"> <BR> Płeć:<BR> <INPUT type="radio" name="PlecRd" value="M"> Mężczyzna<BR> <INPUT type="radio" name="PlecRd" value="K"> Kobieta<BR> Miasto: <SELECT NAME="MiastoSel" size="1" > <OPTION SELECTED>Łódź <OPTION>Warszawa <OPTION>Kraków </SELECT><BR> <INPUT type="submit" name="sendBtn" value="Wyślij"> </FORM> </BODY> </HTML>

32 WWW Aplikacje klientów (HTML)
Katedra Informatyki Formularze HTML służą do tworzenia typowego cienkiego klienta. Ich zadaniem jest wyłącznie dialog z użytkownikiem. Pobrane dane wysłane muszą być do aplikacji serwerowej, która wykonuje całe przetwarzanie. Dla formularza definiuje się sposób wykonania zamówienia HTTP. Jednym z typów kontrolek HTML jest przycisk typu „submit”, powodujący wykonanie odpowiedniego zamówienia HTTP. Stan kontrolek przesyłany jest w postaci łańcucha tekstowego, złożonego z szeregu par nazwa_kontrolki=wartość, połączonych znakami &, np.: NazwEdit=Nowak&RegCb=on&PlecRd=M&MiastoSel=Warszawa& sendBtn=Wy%9Clij. Niektóre znaki tego tekstu muszą zostać zakodowane tak by odpowiadały one zbiorowi znaków w nazewnictwie URL (np. spacja kodowana jest w formie znaku ‘+’, znaki specjalne takie jak przecinek, polskie litery, itp. w formie %+kod szesnastkowy). W naszym przykładzie %9C to kod polskiej litery ‘ś’ w zestawie znaków ANSI strony kodowej 1252 Windows.

33 WWW Aplikacje klientów (HTML)
Katedra Informatyki <FORM name="formularz" action="01struktura.html" method=get> . . . <INPUT type="submit" name="sendBtn" value="Wyślij"> </FORM> Aplikacje serwerowe traktowane są przez serwer HTTP jako dokumenty. Nazwę dokumentu przechowującego aplikację, której zadaniem jest przetworzenie danych formularza, określamy w atrybucie action formularza. Zamówienie przy pomocy którego dane formularza przesłane zostaną do aplikacji serwerowe, określamy w atrybucie method formularza. Możemy przy tym wykorzystać: Metodę get. Nazwa aplikacji serwerowej służy jako nazwa zamawianego dokumentu w komunikacie HTTP get. Łańcuch tekstowy wartości kontrolek dodawany jest do tej nazwy jako parametr dokumentu. Metodę post. Łańcuch tekstowy wartości kontrolek przesyłany jest w zamówieniu post jako dane dodawane do dokumentu aplikacji serwerowej.

34 WWW Aplikacje klientów (DHTML)
Katedra Informatyki Aplikacje klientów mogą również realizować model klienta wzbogaconego, wykonując pewne przetwarzanie po swojej stronie. Nie mogą one jednak wtedy korzystać wyłącznie z formularzy HTML. Typowym rozwiązaniem w takiej sytuacji jest wykorzystanie do stworzenia aplikacji klienta dynamicznego HTML (DHTML). Klienty DHTML najczęściej budowane są w oparciu o formularze HTML, wzbogacone o zastosowanie skryptów JavaScript odwołujących się do drzewa DOM dokumentu w reakcji na różne zdarzenia związane z kontrolkami. Skrypty JavaSript wykorzystywane są do realizacji bardziej skomplikowanych operacji dialogowych, a przede wszystkim do sprawdzania poprawności danych przed wysłaniem ich na serwer. Klient wzbogacony pozwala usprawnić i przyśpieszyć obsługę aplikacji. Dzięki użyciu skryptów, użytkownik nie musi za każdym razem czekać na reakcję serwera.

35 WWW Aplikacje klientów (DHTML)
Katedra Informatyki <HTML> <HEAD> <SCRIPT type="text/javascript" > function valSendBtnClick() { if ( document.formularz.NazwEdit.value=="" ) { alert("Pole nazwisko musi być wypełnione"); return; } document.formularz.submit(); </SCRIPT> </HEAD> <BODY> <FORM name="formularz" action="01struktura.html" method="get"> Nazwisko klienta <INPUT type="text" name="NazwEdit" size="25"><BR> . . . <INPUT type="button" name="valSendBtn" value="Wyślij sprawdzone" onclick="valSendBtnClick()"> </FORM> </BODY> </HTML>

36 WWW Aplikacje klientów (aplety)
Katedra Informatyki Klient działający w środowisku przeglądarki WWW może również wykorzystywać proste aplikacje ściągane z serwera WWW razem z dokumentem i wykonywane w przestrzeni adresowej procesu przeglądarki. Typowe przykłady takich aplikacji, to kontrolki Active-X, a przede wszystkim aplety skompilowane do kodu pośredniego języka Java.

37 WWW Aplikacje serwerowe
Katedra Informatyki Aplikacje serwerowe w działające środowisku serwera HTTP tworzone mogą być jako rozszerzenia serwera lub aplikacje CGI. Rozszerzenia serwera to biblioteki lub komponenty, których kod proces serwera HTTP ładuje do swojej przestrzeni adresowej i wykonuje na żądanie klienta. Rozszerzenia serwera współdziałają z serwerem HTTP poprzez API udostępniane przez konkretne serwery. Aplikacje serwerowe zbudowane w tej postaci są więc silnie związane z konkretnym serwerem HTTP. Serwer HTTP nie musi tworzyć nowego procesu, przy każdym odwołaniu do aplikacji działającej w formie jego rozszerzenia. Tak więc w tym trybie realizuje się zazwyczaj narzędziowe aplikacje, do których odwołuje się większość klientów, takie jak np. interpretery skryptów serwerowych.

38 WWW Aplikacje CGI Katedra Informatyki Wspólnym interfejsem bramy (Common Gateway Interface – CGI) nazywamy standard według którego serwer HTTP może wykonać zewnętrzny program, pobierający dane użytkownika. Dane użytkownika pochodzą na ogół z formularza (HTML lub DHTML), dla którego określa się program, który ma zostać uruchomiony dla przetworzenia danych: <FORM name="..." action="nazwa_programu.exe" method="..."> Serwer gdy otrzyma zamówienie post lub get dotyczące dokumentu w formie pliku wykonalnego, rozpocznie program o podanej nazwie i przekaże mu dane towarzyszące temu zamówieniu.

39 WWW Aplikacje CGI Katedra Informatyki CGI definiuje sposób przekazywania danych formularza do uruchamianego programu, zarówno dla przesyłu operacją get, jak i post. Dane przesyłane są w formie omówionej wyżej łańcucha tekstowego wartości kontrolek formularza: na standardowe wejście programu (dla metody post), poprzez zmienną środowiskową "QUERY_STRING" (dla metody get), długość łańcucha tekstowego w przypadku obu metod przekazywana jest w zmiennej środowiskowej "CONTENT_LENGTH", program CGI musi samodzielnie dekodować odebrany tekst i wyodrębnić z niego wartości zmiennych wysłanych przez kontrolki poszczególne formularza. Program wykonuje swoje działania, zwracając wyniki serwerowi HTTP w formie dokumentu HTML, generowanego na standardowe wyjście programu. Serwer HTTP wysyła dokument HTML, wygenerowany „w locie” przez program CGI, przeglądarce, która wyświetla zawarte w nim wyniki.

40 WWW Program CGI w języku C (get)
Katedra Informatyki void main(void) { char* Content_Length = getenv("CONTENT_LENGTH"); char* inpBuf= getenv("QUERY_STRING");; printf("Content-type: text/html\n"); printf("\n"); printf("<HTML>\n"); printf("<HEAD><TITLE>Komunikacja CGI</TITLE></HEAD>\n"); printf("<BODY>\n"); printf("<H1>Odpowiedź od serwera</H1>\n"); printf("<HR>\n"); printf("<P>Liczba przesłanych bajtów: %s</P>\n", Content_Length); printf("<P>Przesłany komunikat: %s</P>\n", inpBuf); printf("</BODY>\n"); printf("</HTML>\n"); }

41 WWW Program CGI w języku C (post)
Katedra Informatyki void main(void) { char* Content_Length = getenv("CONTENT_LENGTH"); int i, num = atoi(Content_Length); char inpBuf[10000]; for ( i=0; i<num; ++i ) inpBuf[i] = getchar(); inpBuf[i] = '\0'; printf("Content-type: text/html\n"); printf("\n"); printf("<HTML>\n"); printf("<HEAD><TITLE>Komunikacja CGI</TITLE></HEAD>\n"); printf("<BODY>\n"); printf("<H1>Odpowiedź od serwera</H1>\n"); printf("<HR>\n"); printf("<P>Liczba przesłanych bajtów: %s</P>\n", Content_Length); printf("<P>Przesłany komunikat: %s</P>\n", inpBuf); printf("</BODY>\n"); printf("</HTML>\n"); }

42 WWW Aplikacje CGI Katedra Informatyki Programy CGI stanowią wygodny sposób oprogramowania strony serwerowej aplikacji działającej w środowisku HTTP. Programy CGI są luźno powiązane z konkretnym serwerem HTTP, mogą być więc współpracować z różnymi serwerami. Interfejs komunikacyjny CGI ma charakter standardowy. Warunkiem jest więc w zasadzie, aby plik wykonalny mógł zostać uruchomiony przez system operacyjny maszyny serwera. Korzystanie z CGI niesie jednak ze sobą pewne niedogodności: Programy CGI uruchamiane przez serwer HTTP jako nowe procesy, co może nieść ze sobą pewne problemy efektywnościowe - uruchamianie i kończenie procesów wymaga zarządzania wieloma zasobami systemowymi maszyny serwera. Problemy z bezpieczeństwem – aby serwer mógł uruchomić skrypt CGI, użytkownik zdalny musi mieć uprawnienia do wykonywania programów w folderze skryptu. Programy CGI są słabo zintegrowane ze środowiskiem HTML. Pobieranie danych i generowanie dokumentów może więc być dosyć żmudne.

43 WWW Skrypty serwerowe Katedra Informatyki Strona serwerowa aplikacji HTML może zostać zbudowana z wykorzystaniem skryptów serwerowych (server-side scripts). HTML zawiera również polecenia (znaczniki), pozwalające w dokumentach osadzić skrypty, które nie zostaną przesłane do klienta i wykonane przez przeglądarkę, ale zostaną bezpośrednio wykonane przez serwer HTTP. Jeśli w dokumencie HTML, którego dotyczy zamówienie klienta, znajduje się skrypt serwerowy, serwer przed wysłaniem takiego dokumentu uruchomi interpreter języka w jakim został napisany skrypt, który wykona program. Kod skryptu serwerowego w wysyłanym dokumencie zastąpiony zostanie przez wynik działania skryptu. Kod ten nie jest więc wysyłany do klienta.

44 WWW Skrypty serwerowe Katedra Informatyki Interpretery skryptów serwerowych mogą być dołączane do serwera HTTP jako rozszerzenia, albo działać jako aplikacje CGI. Typowe, najczęściej stosowane języki skryptowe to PHP, JSP, ASP, ASP.NET. W tym pierwszym przypadku interpreter może optymalizować zarządzanie zasobami systemowych, wykonując poszczególne programy jako wątki w przestrzeni adresowej serwera. Skrypty są programami interpretowanymi. Przy pierwszym wywołaniu zazwyczaj kompilowane są one do jakiejś formy kodu pośredniego, przyśpieszającej ich interpretację przy kolejnych wykonaniach. Użytkownik uruchamiający skrypt nie musi mieć nadanych uprawnień do wykonywania programów – w niektórych serwerach HTTP do uruchamiania skryptów.

45 WWW Skrypt serwerowy w języku PHP
Katedra Informatyki <HTML> <BODY> <H1>Części samochodowe Witka</H1> <H2>Złożone zamówienie</H2> <?PHP $OponyIl = $HTTP_GET_VARS["OponyIl"]; $OlejIl = $HTTP_GET_VARS["OlejIl"]; $SwieceIl = $HTTP_GET_VARS["SwieceIl"]; echo "<BR>Lista zamówionych towarów<BR>\n"; if ( $OponyIl ) echo "Opony: ".$OponyIl." ".$OponyIl*100." PLN<BR>\n"; if ( $OlejIl ) echo "Olej: ".$OlejIl." ".$OlejIl*10." PLN<BR>\n"; if ( $SwieceIl ) echo "Świece: ".$SwieceIl." ".$SwieceIl*4." PLN<BR>\n"; $TotalAmount = $OponyIl*100 + $OlejIl*10 + $SwieceIl*4; $TotalAmount = number_format($TotalAmount, 2); echo "<BR>Łączna kwota:".$TotalAmount." PLN<BR>\n"; ?> </BODY> </HTML>

46 WWW Obiekty serwerowe Katedra Informatyki Część serwerowa aplikacji może być realizowana również z wykorzystaniem obiektów serwerowych, takich jak serwlety Javy, czy komponenty ASP.NET. Są to wstępnie skompilowane do kodu pośredniego komponenty programowe, wykonywane w środowisku skryptowym w przestrzeni adresowej serwera HTTP. Metody obiektu serwerowego łączone są (zazwyczaj przez skrypty strony klienta) ze zdarzeniami kontrolek formularza HTML i wywoływane przez środowisko serwerowe w reakcji na wystąpienie tych zdarzeń.

47 WWW Page-By-Page Katedra Informatyki W standardowym podejściu do działania aplikacji WWW część serwerowa w reakcji na działania użytkownika generuje dokument (zazwyczaj stronę HTML) z odpowiedzią, która przesyłana jest do klienta i wyświetlana w przeglądarce jako nowy dokument. Podejście takie określane jest strona-za-stroną (Page-By-Page). Rozwiązania typu strona-za-stroną posiadają jednak szereg wad, stanowiących istotną barierę rozwojową dla aplikacji WWW: W celu reakcji na działania użytkownika niezbędne jest przesłanie przez serwer całej strony WWW, nawet w sytuacji gdy modyfikowany jest jedynie pewien element interfejsu użytkownika. Powoduje to niską efektywność komunikacji w aplikacji rozproszonej. W sytuacji gdy strony są poważnie obciążone elementami graficznymi, skryptami strony klienta jakie trzeba przesłać razem ze stroną, itp., czas przeładowania strony i reakcji systemu może być długi. Przeglądarki dają możliwość przejścia (nawigacji) do strony „poprzedniej”, „następnej”, itd.. W niektórych sytuacjach, przy bardziej złożonym dialogu z użytkownikiem może to powodować problemy w zarządzaniu dialogiem.

48 WWW AJAX Katedra Informatyki Nową koncepcją w projektowaniu aplikacji rozproszonych, działających w środowisku HTTP jest tzw. AJAX (Asynchronous Javascript And XML). Nowoczesne przeglądarki posiadają wbudowane obiekty, pozwalające skryptom strony klienta wykonywać asynchroniczne zamówienia HTTP. Odpowiedzi na takie zamówienie przesyłane są przez serwer nie całej przeglądarce, ale danemu skryptowi. Przyjęcie odpowiedzi nie wymaga więc wyświetlenia przez przeglądarkę nowej strony – cały czas pozostajemy w obrębie starej. Serwer w reakcji na zamówienie może odesłać dane w formacie XML lub kawałek kodu HTML. Skrypt klienta odbiera transmisję od serwera i przy jej użyciu (i ewentualnym wykonaniu operacji formatujących) modyfikuje DOM bieżącej strony (np. zmienia stan kontrolek, fragmenty HTML, itp.) odpowiednio do działań użytkownika.


Pobierz ppt "Systemy rozproszone W. Bartkiewicz"

Podobne prezentacje


Reklamy Google