Sieci neuronowe w prognozowaniu – podejmowanie decyzji i

Download Report

Transcript Sieci neuronowe w prognozowaniu – podejmowanie decyzji i

W. Bartkiewicz
Biznes elektroniczny
Wykład 2. Przegląd metod prezentacji treści i architektur
aplikacji e-biznesowych w sieci Internet
WWW – Podstawowy model
• 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 – Architektura
Serwer
WWW
Klient
(przeglądarka)
Zamówienia HTTP
Dokumenty
Mosaic
1993 –
pierwsza
przeglądarka
graficznych
stron
internetowych
Mosaic
Źródło: www.en.wikipedia.com
Internet Explorer
Mozilla Firefox
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 – Hipertekst
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 – Łącza hipertekstowe
<HTML>
<HEAD>
<TITLE>Informacje o dyżurach</TITLE>
</HEAD>
<BODY>
<H1><A HREF="pubs.html">Ostatnie publikacje</A></H1>
<UL>
<LI><A HREF="mfc.htm">Programowanie (MFC)</A>
<LI><A HREF="www_prog.htm">Programowanie WWW</A>
<LI><A HREF="cpp.htm">Programowanie obiektowe (C++)</A>
</UL>
<BR><BR>
<P>Mój e-mail: <a href="mailto:[email protected]">
[email protected]
</a></P>
<A href="http://wz.uni.lodz.pl">
<IMG height=28 src="02do_gory_off.gif" width=85 border=0 >
</A>
</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.
• Rozszerzenia HTML, pozwalające na łączenie z technikami
wywodzącymi się z XML, oraz tzw. arkuszami stylów, określamy jako
XHTML.
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>
Aplikacje e-biznesowe
(Architektura trójwarstwowa)
Serwer
WWW
Klienty
Serwer
DBMS
Inne
aplikacje
• Klient – strony WWW, zawierające
interfejs użytkownika (tzw. cienki
klient) oraz (ewentualnie) proste
operacje
przetwarzania
(klient
wzbogacony).
• Logika aplikacji umieszczona jest w
warstwie pośredniej między serwerem
danych i klientem (serwer aplikacji).
• Dane aplikacji przechowywane są na
serwerze bazy danych.
Cienki klient (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.
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>
Cienki klient (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.
Cienki klient (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.
Klient wzbogacony (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.
Klient wzbogacony (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>
Klient wzbogacony (DHTML)
• 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.
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.
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.
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.
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");
}
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");
}
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.
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.
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.
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>
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ń.
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.
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.
Serwer
HTTP
Logika
aplikacji
• Standardowe aplikacje webowe
komunikują się z klientem poprzez
komunikaty HTML (np. generują i
Klient
przesyłają do klienta strony HTML)
webowy
• Komunikaty HTML mogą być
odbierane również przez klienty
aplikacyjne – wymaga to jednak
analizy przesłanej strony i
Klient
„wydłubania” danych
aplikacyjny
• Web serwisy – rodzaj komponentów
serwerowych komunikujących się z
klientem aplikacyjnym poprzez
komunikaty SOAP
Interfejs
użytkow
nika
Serwer
DBMS
Zarządzanie
danymi
Serwisy webowe
Serwer
HTTP
Logika
aplikacji
• SOAP (Simple Object Access
Protocol) – oparty na XML-u sposób
kodowania wywołań zdalnych
Klient
podprogramów
webowy • SOAP umożliwia realizację RPC
(Remote Procedure Call)
– klient wywołuje funkcję
– jej nazwa parametry wywołania
kodowane są w formacie SOAP i
Klient
przesyłane do serwera HTTP
aplikacyjny
– serwer uruchamia komponent
(web serwis), który wykonuje
zakodowaną funkcję. Wynik jej
działania w formacie SOAP
przesyłany jest do klienta
Interfejs
użytkow
nika
Serwer
DBMS
Zarządzanie
danymi
Serwisy webowe
Rozproszone architektury
Enterprise
Serwer
DBMS
Serwer
HTTP
Klient
webowy
Interfejs
użytkow
nika
Logika
aplikacji
Zarządzanie
danymi
Klient
aplikacyjny
• Najbardziej znane środowiska typu
Enterprise:
–
–
–
–
–
CORBA
Enterprise Java Beans
COM+/DNA
.NET
Web Sphere
Aplikacje peer to peer
• W niektórych przypadkach komputery pracujące w sieci Internet nie
korzystają ze środowiska WWW.
– Komputery korzystają z połączeń niskiego poziomu w sieci Internet,
poprzez tzw. interfejs gniazd.
– Komputery pełnią zarówno funkcje klientów, ale również serwerów
(wysyłają, ale także obsługują zamówienia innych użytkowników).
• Ponieważ komputery połączone są ze sobą niezależnie i nie korzystają
ze wspólnych serwerów, architekturę taka określamy jako peer to peer.
• Architektura ta popularna jest przede wszystkim w sieciach wymiany
danych i dokumentów między użytkownikami (często o charakterze
pirackim) i rzadko służy do zastosowań w biznesie elektronicznym.