Sieci neuronowe w prognozowaniu – podejmowanie decyzji i

Download Report

Transcript Sieci neuronowe w prognozowaniu – podejmowanie decyzji i

W. Bartkiewicz
Systemy rozproszone
Wykład 8. Usługi komunikacyjne środowiska HTTP
WWW
Podstawowy model WWW
• 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.
WWW
Podstawowy model WWW
Serwer
WWW
Klient
(przeglądarka)
Zamówienia HTTP
Dokumenty
WWW
Lokalizatory URL
• 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.
WWW
Lokalizatory URL
Schemat
http:
://
Schemat
http:
www.cs.pl
/~witek/distr
Nazwa serwera
://
Schemat
http:
Nazwa ścieżki
Nazwa serwera
www.cs.pl
:
Nazwa serwera
://
144.22.30.01
:
Port
Nazwa ścieżki
80
/~witek/distr
Port
Nazwa ścieżki
80
/~witek/distr
WWW
Hipertekst
• 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).
WWW
HTML
• 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.).
WWW
Przykładowa strona HTML
<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>
WWW
HTML i JavaScript
• 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>
WWW
DOM HTML
• 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).
WWW
DHTML
• 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).
WWW
Przykładowa strona DHTML
<HTML>
<HEAD>
<TITLE>Informacja o linkach</TITLE>
<SCRIPT>
...
</SCRIPT>
</HEAD>
<BODY>
<div id="InsertionPoint">&nbsp</div>
<a href="http://www.uni.lodz.pl">Uniwersystet Łódzki</a><br>
<a href="http://wz.uni.lodz.pl">Wydział Zarządzania</a><br>
<a href="http://www.ki.uni.lodz.pl">Katedra 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>
WWW
Przykładowy skrypt DHTML
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].insertCell();
table.rows[i].cells[1].innerHTML = document.links[i].href;
}
InsertionPoint.innerHTML = "";
InsertionPoint.appendChild(table);
}
function HideLinks() {
InsertionPoint.innerHTML = "";
}
WWW
XML
• 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.
WWW
Przykładowy dokument XML
<?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>222 2222</home>
<work>333 3333</work>
<mobile>22222 22222</mobile>
</phone>
</contact>
</customer>
WWW
XML
• 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.
WWW
Przykładowy dokument DTD
<?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 >
WWW
Przykładowy dokument XML
<?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>222 2222</home>
<work>333 3333</work>
<mobile>22222 22222</mobile>
</phone>
</contact>
</customer>
WWW
Typy MIME
• 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.
WWW
HTTP
• 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ń.
WWW
Połączenia nietrwałe i trwałe
Klient
Odniesienia
SO
Serwer


Klient

SO
Połączenie TCP
Połączenie nietrwałe – składniki
zewnętrzne dokumentu muszą być
pobierane w kilku połączeniach.
Odniesienia
SO
Serwer
 

SO
Połączenie TCP
Połączenie trwałe – wszystkie
składniki dokumentu mogą być
pobierane w jednym połączeniu.
WWW
Zamówienia HTTP
• 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.
WWW
Zamówienia HTTP
• 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.
WWW
Zamówienia HTTP
• 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.
WWW
Komunikaty HTTP
• Komunikacja miedzy klientem a serwerem odbywa się za pomocą
komunikatów.
• Protokół HTTP rozpoznaje tylko komunikaty zamówienia i odpowiedzi.
WWW
Komunikat zamówienia
Ograniczniki
Operacja
Odniesienie
Nazwa nagłówka komunikatu
Nazwa nagłówka komunikatu
Wersja
Wartość
Wartość
...
Nazwa nagłówka komunikatu
Wiersz zamówienia
Nagłówki komunikatu
zamówienia
Wartość
Treść komunikatu
WWW
Komunikat odpowiedzi
Wersja
Kod statusu
Nazwa nagłówka komunikatu
Nazwa nagłówka komunikatu
Fraza
Wartość
Wartość
...
Nazwa nagłówka komunikatu
Wiersz statusu
Nagłówki komunikatu
odpowiedzi
Wartość
Treść komunikatu
WWW
Komunikaty HTTP
• 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)
WWW
Komunikaty HTTP
• 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.
WWW
Aplikacje klientów (HTML)
• 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.
WWW
Przykładowy dokument formularza HTML
<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>
WWW
Aplikacje klientów (HTML)
• 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.
WWW
Aplikacje klientów (HTML)
<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.
WWW
Aplikacje klientów (DHTML)
• 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.
WWW
Aplikacje klientów (DHTML)
<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>
WWW
Aplikacje klientów (aplety)
• 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.
WWW
Aplikacje serwerowe
• 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.
WWW
Aplikacje CGI
• 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.
WWW
Aplikacje CGI
• 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.
WWW
Program CGI w języku C (get)
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");
}
WWW
Program CGI w języku C (post)
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");
}
WWW
Aplikacje CGI
• 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.
WWW
Skrypty serwerowe
• 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.
WWW
Skrypty serwerowe
• 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.
WWW
Skrypt serwerowy w języku PHP
<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>
WWW
Obiekty serwerowe
• 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ń.
WWW
Page-By-Page
• 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.
WWW
AJAX
• 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.