ap1


Aplikacje internetowe
Wykład 1
Wprowadzenie
O czym będzie ten wykład?
Na wykładzie tym powiemy, co to jest aplikacja internetowa. Omówimy jej
architekturę oraz następujące aspekty wytwarzania aplikacji internetowych:
" Integralność i bezpieczeństwo.
" Poprawa wydajności aplikacji webowych.
" Skalowanie aplikacji internetowych.
" Nowoczesne narzędzia do tworzenia aplikacji internetowych.
" Tworzenie interfejsów responsywnych.
Zagadnienia te na ogół można omawiać w oderwaniu od konkretnej
technologii. Na wykładzie i ćwiczeniach wykorzystywać będziemy:
" język JavaScript/ECMAScript (strona klienta),
" język PHP (strona serwera),
" HTML, CSS (warstwa znaczników i prezentacji),
" MySQL (przechowywanie danych).
Aplikacje WWW 2 z 66
Zaliczenie i egzamin
Do zaliczenia trzeba będzie:
" Brać udział w zajęciach (20%) i wykonać projekty, które się na nich
pojawią (40%)(ocena dostateczna).
" Na wyższą ocenę trzeba będzie samodzielnie wykonać dodatkowy
projekt.
Aplikacje WWW 3 z 66
Czym jest aplikacja internetowa? I
Serwis internetowy
witryna internetowa (ang. website)  grupa powiązanych ze sobą, w celu
poszerzenia funkcjonalności, stron internetowych.
Strony internetowe mogą być statyczne lub dynamiczne, czyli generowane
za pomocą aplikacji internetowej. Strona statyczna:
" dostarcza pewien ustalony zasób informacji.
" to twórca decyduje co umieścić na stronie.
" użytkownicy na ogół odwiedzają takie miejsca w sieci raz.
Aplikacja internetowa coraz bardziej przypominają standardowe aplikacje
systemu operacyjnego. Wykonują pewne działania, a ich interfejs
zbudowany jest w oparciu o przeglądarki internetowe. Składa się z danych i
odrębnego mechanizmu ich dostarczania do przeglądarki.
" Informacja jest generowana dynamicznie.
Aplikacje WWW 4 z 66
Czym jest aplikacja internetowa? II
" Użytkownik decyduje jaką porcję informacji ma wyświetlać
przeglądarka.
" Aplikacja na ogół jest używana przez użytkowników wiele razy.
Przykłady dużych aplikacji internetowych (portali):
" http://www.yahoo.com/
" http://www.google.com/
" http://www.onet.pl/
" http://www.wp.pl/
Aplikacja internetowa nie koniecznie musi dostarczać informacje w formacie
(X)HTML. Może to być właściwie dowolny inny format danych jak:
" Pliki PDF.
" Różnego rodzaju aplikacje języka XML, jak SVG (ang. Scalable
Vector Graphics), SMIL (Synchronized Multimedia Integration
Language) i inne.
Aplikacje WWW 5 z 66
Czym jest aplikacja internetowa? III
" Obrazy rastrowe PNG, GIF, JPEG.
" Multimedia: Flash, Silverlight.
" Treści w formie Canvas lub WebGL (HTML5).
Wraz z wprowadzeniem technologii Ajax (ang. Asynchronous JavaScript
and XML - Asynchroniczny JavaScript i XML - Jesse James Garrett Ajax:
A New Approach to Web Applications, February 18, 2005) znacznie
rozbudowano model interakcji z aplikacjami internetowymi.
" Wcześniej interakcja oparta była wyłącznie na stronach internetowych.
" Użytkownik wysyłał żądanie do serwera i otrzymywał w odpowiedzi
nową stronę.
" Model Ajax umożliwia wysyłanie i pobieranie danych w tle (bez
konieczności ponownego porania strony), co zbliża aplikacje
internetowe do modelu interakcji znanego z aplikacji autonomicznych.
Aplikacje WWW 6 z 66
Czym jest aplikacja internetowa? IV
Rysunek: Konstrukcja aplikacji internetowej
Aplikacje WWW 7 z 66
Aplikacje Web 2.0 i Web 3.0 I
W ostatnim czasie bardzo często możemy w sieci dostrzec termin Web 2.0.
" Nazwa Web 2.0 rozpowszechniła się w 2004r., po serii konferencji na
temat nowych technik internetowych organizowanych przez firmy
O Reilly Media i MediaLive International.
" Celem twórców Web 2.0 jest to, żeby sieć WWW dawała
użytkownikom jak największą możliwość interakcji i integracji,
użytkowanie spersonalizowanych stron dla internautów z całego
świata.
" Środek ciężkości stron WWW zostaje przesunięty w kierunku
użytkownika.
" Autorzy przygotowują serwis, ale jądrem jego funkcjonowania są
użytkownicy, którzy dostarczają zawartości (np. zdjęcia, pliki wideo,
linki do ciekawych stron internetowych itp.) oraz tworzą społeczność
użytkowników, która zaczyna ze sobą współpracować i żyć "własnym
życiem".
Aplikacje WWW 8 z 66
Aplikacje Web 2.0 i Web 3.0 II
Cechy Web 2.0:
1 Techniczne:
" wykorzystanie mechanizmu wiki, blogów;
" udostępnianie interfejsów XML, które umożliwiają innym stronom i
programom korzystanie z danych Web 2.0 (przede wszystkim przez
RSS i Atom);
" używanie nowych technologii, jak np. AJAX, Flash, Silverlight.
2 Społeczne:
" generowanie treści przez użytkowników;
" wykorzystanie kolektywnej inteligencji.
Aplikacje WWW 9 z 66
Aplikacje Web 2.0 i Web 3.0 III
Portale tego typu umożliwiają dostosowywanie treści za pomocą widżetów
(najczęściej mamy możliwość korzystania z techniki "przeciągnij i upuść").
Widżet
Widżet jest niezależnym komponentem strony internetowej, który
wykonuje określone zadania, udostępnia określony zbiór funkcji i dysponuje
własnym interfejsem użytkownika. Do tej grupy zaliczamy na przykład listy
zadań, książki adresowe, listy kontaktów, czytniki kanałów i wiele innych.
Istotną zaletą widżetów jest to, że mogą one pobierać informacje z różnych
serwerów WWW działających na różnych platformach systemowych, które
są w stanie generować dane w standardzie XML i HTTP.
Natomiast pojęcie Web 3.0 jest często używane błędnie, ale najczęściej
oznacza ono Sieć Semantyczną, czyli wizję nowej wersji systemu WWW,
takiej gdzie treści będą wzbogacone w metadane semantyczne, które
umożliwią agentom (programom komputerowym) rozumienie i
przetwarzanie treści. Główne cechy wizji tego systemu to:
Aplikacje WWW 10 z 66
Aplikacje Web 2.0 i Web 3.0 IV
" wykorzystanie standardów RDF, RDFa do opisu danych;
" języków i mechanizmów wnioskowania (OWL);
" semantycznych baz danych (np. AllegroGraph) i języka zapytań
SPARQL;
" publikowanie połączonych linkami danych (ang. Linked Data).
Pewne elementy Sieci Semantycznej są używane w HTML5 (Microdata).
Największe przeglądarki na rynku (Bing, Google, Yahoo! i Yandex)
stworzyły zestawy schematów mikrodanych do opisu różnych obiektów
(http://schema.org/).
Aplikacje WWW 11 z 66
Trochę historii I
1945 Vannevar Bush opisał teoretyczny komputer analogowy
Memex. Bush opisał w nim urządzenie podłączone
elektrycznie do biblioteki, potrafiące wyświetlać zawarte w
niej książki i filmy i zdolne do automatycznego przechodzenia
od zawartych w nich odniesień do innych prac. Idea ta, która
bezpośrednio wpłynęła na prace Douglasa Engelbarta,
doprowadziła także Teda Nelsona do koncepcji hipertekstu i
hipermediów.
Aplikacje WWW 12 z 66
Trochę historii II
Rysunek: Vannevar Bush
1960 Wystartował projekt Xanadu (hipertekstowy projekt
informatyczny) Teda Nelsona. Wiele proponowanych cech
Xanadu znalazło się w innych systemach hipertekstu,
szczególnie WWW i systemach Wiki.
Aplikacje WWW 13 z 66
Trochę historii III
1964 Praca "Understanding Media", w której Marshall McLuhan
stwierdził, że ludzkość wkracza właśnie w  wiek informacji a
elektroniczne media, zwłaszcza telewizja, stworzyły tak
zwaną globalną wioskę, w której  medium jest przekazem
(tj. charakter środka komunikacji ma większy wpływ na
odbiorcę niż sama przekazywana wiadomość). Współcześnie
uznawany jest za jednego z najwybitniejszych teoretyków
komunikowania masowego i środków przekazu.
koniec lat 60-tych Charles Goldfarb stworzył pierwszy język znacznikowy
GML (ang. Generalized Markup Language) dla IBM.
1971 W 1971 roku ARPA (Advanced Research Projects Agency
Network) zdecydowała się odtajnić protokół TCP/IP i
zezwoliła na przyłączanie do Arpanetu lokalnych sieci
akademickich.
Aplikacje WWW 14 z 66
Trochę historii IV
1974 Charles Goldfarb stworzył język SGML (ang. Standard
Generalized Markup Language). W roku 1986 był edytorem
standardu ISO dla SGML-a.
1984 William Gibson  amerykański pisarz science fiction stworzył
słowo  cyberprzestrzeń (Neuromancer) i opisał koncepcję
internetu i wirtualnej rzeczywistości na długo przed
powstaniem tych technologii.
1989 Sir Timothy John  Tim Berners-Lee w Europejskim
Ośrodku Badań Jądrowych (CERN) w Genewie stworzył
ogólnoświatowy projekt oparty na hipertekście - nazwany
World Wide Web. Napisał również swój pierwszy serwer,
nazwany po prostu HTTPD i pierwszą aplikację kliencką,
 WorldWideWeb - przeglądarkę i edytor hipertekstu typu
WYSIWYG.
Aplikacje WWW 15 z 66
Trochę historii V
Rysunek: Timothy Berners-Lee
1991 Od 20 grudnia Internet jest dostępny w Polsce.
Aplikacje WWW 16 z 66
Trochę historii VI
1993 Marc Andreessen w NCSA (National Center for
Supercomputing Applications) na uniwersytecie w Illinois
tworzy program Mosaic - pierwsza przeglądarka WWW, która
działała w trybie graficznym. Pózniej założył firmę Netscape.
1994 Yahoo!  jeden z najpopularniejszych i największych portali
internetowych na świecie, posiadający wersje w kilkunastu
językach. Twórcami serwisu byli David Filo i Jerry Yang 
doktoranci fizyki na Wydziale Inżynierii Elektrycznej
Uniwersytetu w Stanford. W tym samym roku Tim
Berners-Lee założył przy MIT (Massachusetts Institute of
Technology) organizację World Wide Web Consortium
(W3C), która do dziś zajmuje się koordynacją rozwoju
technologii WWW.
Aplikacje WWW 17 z 66
Trochę historii VII
1998 Google Inc.  amerykańska firma z branży internetowej. Jej
flagowym produktem jest wyszukiwarka Google, a
deklarowaną misją - skatalogowanie światowych zasobów
informacji i uczynienie ich powszechnie dostępnymi i
użytecznymi. Została założona przez dwóch doktorantów
Uniwersytetu Stanforda, Amerykanina Larry ego Page a i
Rosjanina Siergieja Brina. Opracowali oni nowatorską metodę
analizy powiązań hipertekstowych - algorytm BackRub,
potem przemianowany na PageRank - którą wykorzystali w
swoim prototypie wyszukiwarki internetowej.
Aplikacje WWW 18 z 66
Składniki architektury WWW I
Architektura World Wide Web (WWW) jest przykładem architektury
rozproszonej składającej się z dwóch funkcjonalnie rozdzielonych warstw:
" warstwy klienta HTTP,
Aplikacje WWW 19 z 66
Składniki architektury WWW II
" warstwy serwera HTTP.
Komunikacja pomiędzy tymi warstwami jest realizowana za pośrednictwem
protokołu HTTP (oddzielny wykład).
" Serwer HTTP jest programem nieprzerwanie pracującym,
obsługującym repozytorium dokumentów (np. HTML), które
udostępnia sieciowym klientom HTTP.
" Klient HTTP jest programem użytkowym, który odpowiada za
wysyłanie żądań pobrania dokumentów, wizualizację pobieranych
dokumentów oraz obsługę interakcji z użytkownikiem końcowym.
Aplikacje WWW 20 z 66
Interakcja w środowisku WWW I
W środowisku WWW żądania użytkowników końcowych są obsługiwane w
następujący sposób:
Aplikacje WWW 21 z 66
Interakcja w środowisku WWW II
1 Użytkownik końcowy przekazuje klientowi HTTP adres URL żądanego
dokumentu, np.http://www.poznan.pl/plany/inf.html. Klient
HTTP wyodrębnia z adresu URL nazwę domeny (lub IP) komputera,
na którym pracuje oprogramowanie serwera HTTP, np.
www.poznan.pl.
2 Przeglądarka za pomocą rozproszonego systemu DNS (ang. Domain
Name System) wyszukuje adres IP serwera www.poznan.pl.
3 Klient HTTP otwiera połączenie TCP do serwera HTTP i wysyła
komunikat żądania HTTP, zawierający nazwę i ścieżkę prowadzącą do
żądanego dokumentu, np./plany/inf.html.
4 Serwer HTTP pobiera żądany dokument z systemu plików i wysyła
komunikat odpowiedzi HTTP, do którego dołącza ten dokument,
najczęściej zapisany w formacie HTML.
5 Klient HTTP renderuje dokument i zamyka połączenie sieciowe z
serwerem HTTP.
Aplikacje WWW 22 z 66
Zadania klienta HTTP I
Aplikacje WWW 23 z 66
Zadania klienta HTTP II
Kluczowym elementem architektury WWW jest klient HTTP, nazywany
również przeglądarką WWW (Web Browser). Klient HTTP jest
programem użytkowym, który odpowiada m.in. za inicjowanie połączeń
HTTP z serwerem HTTP, wysyłanie żądań pobrania dokumentów,
odbieranie dokumentów od serwera HTTP oraz za ich wizualizację.
Przykładami programów klientów HTTP są:
" Microsoft Internet Explorer (www.microsoft.com),
" Google Chrome (https://www.google.com/chrome),
" Mozilla Firefox (http://www.mozilla.org/pl/firefox/fx/),
" Safari (http://www.apple.com/safari/)
" Opera (www.opera.com).
Aplikacje WWW 24 z 66
Zadania klienta HTTP III
Warto podkreślić, że funkcjonalność tych programów daleko wykracza
poza wymaganą funkcjonalność klienta HTTP, zwykle mieszczą one w
sobie także funkcje klienta FTP, klienta Gopher, itp.
Klient HTTP obsługuje również interakcję użytkownika końcowego z
graficznym interfejsem użytkownika zawartym w pobranym dokumencie.
Interfejs ten może zawierać np. takie elementy interakcyjne jak pola
tekstowe, pola wyboru, przyciski, łącza, skrypty.
W celu skrócenia czasu odpowiedzi większość klientów HTTP buforuje
pobierane dokumenty, zapisując je w lokalnym systemie plików, a
następnie wykorzystuje do obsługi identycznych, powtórzonych żądań w
przyszłości (jest szczególnie wykorzystywane w HTML 5, gdzie mamy
nawet mechanizm offline). Buforowanie dokumentów wymaga stosowania
zaawansowanych mechanizmów kontroli spójności w celu uniknięcia ryzyka
przedstawiania użytkownikowi nieaktualnej już wersji dokumentu.
W celu podniesienia bezpieczeństwa komunikacji, programy klientów
HTTP umożliwiają szyfrowanie połączeń sieciowych z serwerami HTTP.
Aplikacje WWW 25 z 66
Zadania klienta HTTP IV
Oto rozkład rynku przeglądarek (dane z grudnia 2011 wg serwisu
StatCounter):
Przeglądarka Świat Europa Polska
Internet Explorer 38,64% 31,28% 15,56%
Google Chrome 27,27% 25,54% 23,46%
Mozilla Firefox 25,29% 32,46% 49,58%
Safari 6,08% 5,84% 1,24%
Opera 1,98% 4,13% 9,32%
Przeglądarki te wciąż wiele różni, choćby jeśli chodzi o obsługę standardów
WWW, nowości (HTML 5, CSS3, ECMAScript 5.1). Jednak zawsze
staramy się pisać aplikację, która działa na każdym systemie i
przeglądarce. Nie wolno ignorować żadnego procenta udziału rynku!
Aplikacje WWW 26 z 66
Zadania serwera HTTP I
Aplikacje WWW 27 z 66
Zadania serwera HTTP II
Drugim istotnym elementem architektury WWW jest serwer HTTP,
nazywany również serwerem WWW. Serwer HTTP jest programem
systemowym, nieprzerwanie pracującym na wyznaczonym komputerze,
prowadzącym nasłuch sieciowy w celu odbioru żądań od klientów HTTP.
Po otrzymaniu żądania HTTP, serwer HTTP pobiera z lokalnego systemu
plików żądany dokument i wysyła go do klienta HTTP.
Przykładami programów serwerów HTTP są:
" Apache (www.apache.org) (około 65% udziału w rynku),
" Microsoft Internet Information Services (około 15% rynku),
" nginx (około 9% rynku),
" lighttpd.
Aplikacje WWW 28 z 66
Zadania serwera HTTP III
Warto tu wspomnieć o serwerach HTTP Googla, które pracują na
stworzonym przez firmę oprogramowaniu (ponoć nie opartym na serwerze
Apache), a których jest blisko 20 milionów, co daje około 3% udziału w
rynku.
Do dodatkowych zadań serwerów HTTP należą zwykle: rejestracja
obsługiwanych żądań polegająca na ich zapisie w plikach dziennika (log
files), uwierzytelnianie i kontrola dostępu użytkowników końcowych za
pomocą nazwy i hasła, kryptograficzne szyfrowanie komunikacji sieciowej z
klientem HTTP, automatyczny wybór odpowiedniej wersji językowej
dokumentu, itp.
Aplikacje WWW 29 z 66
Protokół HTTP I
Aplikacje WWW 30 z 66
Protokół HTTP II
Komunikacja pomiędzy klientami HTTP a serwerem HTTP jest
realizowana za pomocą protokołu HTTP (Hypertext Transfer Protocol).
HTTP jest prostym protokołem opartym na TCP, implementującym model
żądanie-odpowiedz, korzystającym ze znakowych komend i komunikatów.
Umożliwia przesyłanie zarówno dokumentów tekstowych, jak i binarnych.
Połączenie HTTP pomiędzy klientem HTTP a serwerem HTTP ma
charakter krótkotrwały - jest zamykane po zakończeniu pobierania
dokumentu. Protokół ma charakter bezstanowy i bezsesyjny.
Aplikacje WWW 31 z 66
Adresy URL I
Aplikacje WWW 32 z 66
Adresy URL II
Dokumenty udostępniane przez serwery HTTP są identyfikowane za
pomocą adresów URL (Uniform Resource Locator). Adres URL jest
łańcuchem znakowym, który zawiera m.in: nazwę protokołu
komunikacyjnego (np. HTTP, HTTPS), adres komputera na którym
ulokowany jest serwer HTTP i opcjonalnie numer portu nasłuchu serwera
HTTP, ścieżkę dostępu do dokumentu, nazwę dokumentu. W adresie URL
mogą występować wyłącznie znaki alfanumeryczne i kilka znaków
specjalnych. Pozostałe znaki, jak np. znaki spoza ASCII, znaki sterujące
ASCII, znaki zarezerwowane
$ & + , / : ; = ? @
i tzw. znaki niebezpieczne
spacja  < > % { } | \ ^ ~ [ ]  "
powinny być zapisane jako heksadecymalne kody poprzedzone znakiem
"%" (URL Encoding). Pełna składnia adresów URL została opisana w RFC
1738.
Aplikacje WWW 33 z 66
Adresy URL III
Adresowanie URL może być stosowane nie tylko w odniesieniu do
dokumentów udostępnianych przez serwery HTTP, ale też dla zasobów
serwerów FTP, Gopher, Usenet News, itd.
Warto wspomnieć, że pomimo powszechności tej formy adresowania
dokumentów, składnia URL wciąż jest przedmiotem zawziętej krytyki.
Podstawowy zarzut wiąże się z obecnością fizycznej lokalizacji serwera
HTTP w adresie dokumentu, co oznacza, że identyfikator dokumentu
ulega zmianie gdy dokument jest przenoszony na inny serwer, oraz że
identyczne dokumenty znajdujące się na różnych serwerach posiadają różne
identyfikatory. Takie własności są sprzeczne z potocznym rozumieniem
pojęcia identyfikatora. Mimo, iż zaproponowano również alternatywną
metodę adresowania, nazwaną URI (Uniform Resource Identifier), to
jednak w środowiskach WWW wciąż korzysta się z URL
Aplikacje WWW 34 z 66
Czego potrzebujemy do budowy aplikacji?
Budowa aplikacji internetowej wymaga dwóch komponentów:
" Platformy sprzętowej - w przypadku prostych aplikacji składa się z
pojedynczego serwera, na którym działa serwer WWW i system
zarządzania bazą danych.
" Platformy programowej - decyduje ona o sposobie składowania
danych (np. w bazie danych), ich modyfikacji i dostępu do nich
(implementowanym przez logikę biznesową) oraz sposobie ich
prezentowania użytkownikom (logika interakcji). Oczywiście w wielu
przypadkach można wykorzystać gotowe rozwiązania, np. CMS (ang.
Content Management System) - systemy zarządzania treścią.
Aplikacje WWW 35 z 66
Komponentowe aplikacje WWW I
Aplikacje WWW 36 z 66
Komponentowe aplikacje WWW II
Aplikacje WWW są najczęściej budowane jako środowiska komponentowe,
w których poszczególne komponenty rozdzielają między sobą nie tylko
kroki procesów biznesowych, ale także rodzaje funkcji systemowych.
Powszechnie wykorzystuje się dwa podejścia do separacji funkcji
systemowych komponentów aplikacji WWW:
" Architektura 4-warstwowa (4-tier architecture) zakłada, że
komponenty aplikacji WWW dzielą się na dwie grupy: komponenty
logiki prezentacji i komponenty logiki biznesowej. Komponenty logiki
prezentacji odpowiadają za przyjmowanie żądań od klientów HTTP,
wywoływanie funkcji komponentów logiki biznesowej, generowanie
dokumentów dynamicznych i wypełnianie ich danymi przekazywanymi
przez komponenty logiki biznesowej. Komponenty logiki biznesowej
odpowiadają wyłącznie za realizację procesów biznesowych i
komunikację z bazą danych. Architektura ta nazywana jest
4-warstwową, ponieważ definiuje 4 warstwy aplikacji WWW: klienta,
logiki prezentacji, logiki biznesowej, danych.
Aplikacje WWW 37 z 66
Komponentowe aplikacje WWW III
" Architektura Model-View-Controller zakłada, że komponenty aplikacji
WWW dzielą się na trzy grupy: komponenty sterujące (controller),
komponenty prezentacji (view) i komponenty modelu (model).
Komponenty prezentacji odpowiadają za generowanie dokumentów
dynamicznych i wypełnianie ich danymi przekazywanymi przez
komponenty modelu. Komponenty modelu odpowiadają za realizację
procesów biznesowych i komunikację z bazą danych. Komponenty
sterujące odpowiadają za przyjmowanie żądań od klientów HTTP i
koordynację ich obsługi, polegającą na wywoływaniu funkcji
komponentów modelu i prezentacji. Architektura ta jest w zasadzie
dalszym rozwinięciem architektury 4-warstwowej.
Omówimy dokładniej te dwa modele.
Aplikacje WWW 38 z 66
Architektura 4-warstwowa I
" Najniższą warstwą jest pamięć trwała reprezentowana przez pliki na
dysku i rekordy baz danych. Zadaniem tej warstwy jest składowanie
danych.
" Kolejną warstwą jest logika biznesowa - decyduje ona o sposobie w
jaki uzyskujemy dostęp i przetwarzamy dane. Jest to jedyny sposób na
dostęp do tych danych. Logikę biznesową można pisać w językach
skryptowych, takich jak PHP, Perl, Python, Ruby lub w środowiskach
tworzonych z myślą o rozwiązaniach korporacyjnych (np. Javie,
ASP.NET).
" Wyższą warstwą jest logika prezentacji (interakcji) oparta na
stronie internetowej. Decyduje ona, które elementy powinny być
wyświetlane oraz jak pobierać od użytkownika dane. Zawiera ona
odpowiedz na wszystkie procedury podejmowane przez użytkowników
podczas realizacji zadań. Może ona być łatwo wymieniona bez zmiany
logiki biznesowej.
Aplikacje WWW 39 z 66
Architektura 4-warstwowa II
" Następną warstwą jest warstwa klienta, w której możemy wyróżnić
dwie składowe:
" warstwę znaczników, reprezentującą niższe warstwy i składa się z
narzędzi GUI, elementów XML. Opisuje sposób interakcji użytkownika z
niższymi warstwami.
" warstwę prezentacji, która obejmuje znaczniki, arkusze stylów CSS,
elementy graficzne, jak również skrypty związane z wyświetlaniem
strony internetowej.
Dla programisty najważniejsze są warstwy na spodzie, natomiast z punktu
widzenia użytkownika, to warstwy decydujące o wyglądzie aplikacji są
najważniejsze. Omówimy te warstwy zaczynając od najwyższych.
Jak już powiedzieliśmy warstwa prezentacji składa się głównie z arkuszy
stylów CSS. Co prawda starsze wersje HTML dopuszczały elementy
formatujące, ale od dłuższego czasu ich używanie jest niewskazane. Logikę
prezentacji łatwo oddzielić od logiki znaczników - służą do tego arkusze
stylów CSS.
Aplikacje WWW 40 z 66
Architektura 4-warstwowa III
Poniżej tej warstwy znajdują się znaczniki. Generowane strony mogą mieć
postać dokumentów języka HTML lub XHTML. Oba te języki dostępne są
w kilku wersjach. HTML 4.01 (1999r.):
" Strict, w którym używanie elementów uznanych za przestarzałe jest
zabronione.
" Transitional, w którym używanie elementów uznanych za przestarzałe
jest dopuszczalne.
" Frameset, w którym dopuszczone są głównie elementy związane z
ramkami.
XHTML 1.0 (2000 ):
" XHTML 1.0 Strict  odmiana ścisła, zalecana przez W3C,
przeznaczona do tworzenia dokumentów z oddzieloną warstwą
semantyki od prezentacji; nie zawiera prawie żadnych elementów
prezentacyjnych.
Aplikacje WWW 41 z 66
Architektura 4-warstwowa IV
" XHTML 1.0 Transitional  odmiana przejściowa, obok elementów
odmiany ścisłej zawiera wiele elementów prezentacyjnych.
" XHTML 1.0 Frameset  zawiera wszystkie elementy wersji
przejściowej, a dodatkowo także elementy przeznaczone do
wyświetlania ramek.
Najnowszą rekomendacją XHTML jest opublikowana 31 maja 2001 r.
specyfikacja XHTML 1.1. Więcej informacji na temat wersji HTML i
XHTML można znalezć na stronie W3C.
Jeśli chodzi o przyszłość, to musimy wiedzieć, że prace nad językiem
XHTML 2, który miał byc następcą wersji 1.1, zostały porzucone 2 lipca
2009 roku z powodu braku wstecznej kompatybilności. Trwają natomiast
prace nad HTML 5, który będzie kontynuacją języka HTML 4 i jego
XML-owej odmiany (XHTML 1), w grupie roboczej WHATWG (Web
Hypertext Application Technology Working Group) i W3C.
W tym wypadku również powinniśmy pomyśleć o separacji znaczników od
logiki znajdującej się w niższych warstwach. Mamy wiele rozwiązań, które
Aplikacje WWW 42 z 66
Architektura 4-warstwowa V
to ułatwiają, najpopularniejsze są systemy szablonów. W języku PHP
możemy np. wybrać narzędzie Smarty (http://www.smarty.net/) lub
projekt Savant (http://phpsavant.com/), ponadto wszystkie większe
frameworki mają swoje systemy szablonów.
Poniżej warstwy znaczników mamy dwie warstwy logiki: interakcji i
biznesową. Powinniśmy również je rozdzielić, ponieważ reguły rządzące
składowaniem i przetwarzaniem danych są odmienne od reguł rządzących
interakcją użytkownika z tymi danymi. Sposób tego podziału w dużej
mierze zależy od architektury aplikacji i od tego, jakiej technologii
używamy do konstrukcji tych warstw.
Jeśli używamy PHP, to separacja ta najprawdopodobniej polegać będzie na
umieszczeniu tych warstw w odrębnych grupach plików. Logika interakcji
jest na ogół implementowana w plikach.phpkatalogu głównym serwera
WWW, natomiast logika biznesowa jest umieszczana w plikach.incpoza
katalogiem głównym serwera WWW.
Aplikacje WWW 43 z 66
Architektura 4-warstwowa VI
Na samym dole stosu aplikacji jest pamięć trwała. Może ona obejmować
bazę danych i system plików. Separacja tego elementu aplikacji jest
naturalna i na ogół oparta na składowaniu danych przez system baz
danych. Najczęściej wszystkie rozwiązania pozwalają realizować te same
zadania (mniej lub bardziej efektywnie). Na tym wykładzie rolę tę będzie
pełniła baza danych MySQL.
Aplikacje WWW 44 z 66
Interfejsy programowe I
Stosując separację warstw, musimy zaprojektować interfejsy łączące te
warstwy. Opisują one zbiory mechanizmów umożliwiających warstwom
wymianę żądań i odpowiedzi z innymi warstwami.
" Najwyższe warstwy aplikacji są o tyle specyficzne, że interfejs został
już dla nich zdefiniowany przez technologie, z których korzystamy.
Warstwa prezentacji i warstwa znaczników mogą być połączone za
pomocą znacznika, wyrażenia@import, a do definiowania
złożonych reguł służą atrybutyclassiid. Stosowanie właściwej
separacji wyklucza stosowanie atrybutówstylew znacznikach.
" Warstwa logiki interakcji z reguły komunikuje się z warstwą
znaczników za pomocą systemu szablonów. W przypadku
implementacji opartych na technologii PHP i narzędziu Smarty, to
właśnie system szablonów dostarcza warstwie logiki interakcji
niezbędnej funkcjonalności. Za jego pośrednictwem eksportujemy
dane do szablonów oraz wizualizujemy same szablony.
Aplikacje WWW 45 z 66
Interfejsy programowe II
" Interfejs łączący dwie warstwy logiki w przypadku tego samego języka
programowania musi obejmować pewien schemat nazewnictwa funkcji,
schemat wywołań (potrzebny do ładowania niezbędnych bibliotek)
oraz schemat danych określający sposób przekazywania danych w obu
kierunkach. Dostępne opcje przedstawić można w formie ciągłego
spektrum:
JGF<-------------------------------->PO
Początkiem tego spektrum jest Jedna Gigantyczna Funkcja (JGF),
natomiast jego końcem Programowanie Obiektowe (PO). Stare
aplikacje Perla sytuują się gdzieś na lewym końcu tego spektrum, zaś
rozwiązania oparte na technologiach Zope (np. Plone) oraz Struts
leżą gdzieś blisko prawego końca. Najciekawsze modele leżą gdzieś
pośrodku. Przykładem jest architektura MVC (ang.
Model-View-Controller) - omówimy ją na następnych stronach.
Aplikacje WWW 46 z 66
Interfejsy programowe III
Miejsce na skali, które wybierzemy dla budowanej aplikacji, zależy od
osobistych preferencji. Im bliżej będziemy prawego końca, tym większe
możliwości jej sprawnego utrzymywania i konserwacji, ale mniejsza
elastyczność konstruowania rozwiązań. Zbliżając natomiast aplikację do
lewego końca, zyskujemy na elastyczności kosztem konserwacji.
Aplikacje WWW 47 z 66
Architektura MVC I
MVC (ang. Model-View-Controller) - Model-Widok-Kontroler to
architektoniczny wzorzec projektowy w informatyce, którego głównym
założeniem jest wyodrębnienie trzech podstawowych komponentów
aplikacji:
" modelu danych,
" interfejsu użytkownika,
" logiki sterowania,
w taki sposób, aby modyfikacje jednego komponentu minimalnie wpływały
na pozostałe. Czasem, w odniesieniu do MVC stosuje się nazwę "modelu
trójwarstwowego".
Wzorzec Model-Widok-Kontroler jest często używany we frameworkach do
tworzenia aplikacji internetowych. Istnieje wiele dużych frameworków PHP
stosujących ten wzorzec jak np. Code Igniter, Kohana, CakePHP, Zend
Framework, Symfony. W Ruby jest napisany bardzo popularny Ruby on
Rails, w Perlu Catalyst, a w Pythonie TurboGears, Pylons, Django.
Aplikacje WWW 48 z 66
Architektura MVC II
Frameworki MVC do operacji na bazach danych używają modeli i
mapowania relacyjno-obiektowego, ORM (ang. object-relationship
mapping). Zwykle jest też możliwe użycie baz danych przez bezpośrednie
zapytania SQL. Użycie modeli upraszcza typowe operacje - wyświetlanie ze
stronicowaniem, edycję danych, a także uniezależnia od konkretnego typu
bazy danych.
Właściwy kod programu zwykle jest umieszczany w kontrolerze, a
przetworzone dane przekazywane są do odpowiedniego widoku - np. przy
pomocy bibliotek szablonów (Smarty, Template Toolkit) generowany jest
HTML, a inny rodzaj widoku może generować pliki PDF albo XML.
Wspólną cechą wielu frameworków WWW opartych na MVC jest
narzucanie pewnych praktyk programistycznych - samo użycie wzorca
MVC jest tego przejawem, zwykle też narzuca się pewną konwencję nazw
pól w bazie danych, strukturę katalogów i plików w projekcie, konwencję
nazw klas, szablonów. Dzięki temu można uniknąć żmudnej konfiguracji
każdego aspektu takiej aplikacji (choć zwykle można te konwencje
Aplikacje WWW 49 z 66
Architektura MVC III
zmienić), a powstające projekty są spójne i łatwiejsze do zrozumienia przez
nowe osoby.
Praktycznie każda aplikacja WWW korzysta z baz danych - operacje na
bazach stanowią modele danych. Szablony HTML odpowiedzialne za
wygląd i wyświetlanie danych są częścią widoków (np. Smarty). Kod
odpowiedzialny za wykonanie określonych operacji (spinający wszystko
razem) tworzy sterowniki.
Aplikacje WWW 50 z 66
Architektura MVC IV
Rysunek: Konstrukcja aplikacji internetowej MVC
Aplikacje WWW 51 z 66
Architektura MV* po stronie klienta I
W ostatnich czasach coraz popularniejsze są frameworki MV" po stronie
klienta (Journey Through The JavaScript MVC Jungle).
Kiedy takie rozwiązanie ma sens:
" Gdy budujemy dużą aplikację ze skomplikowanym interfejsem typu
Single Page Application.
" Gdy chcemy ograniczyć liczbę żądań HTTP.
Przykłady rozwiązań tego typu:
" Backbone.js
" Ember
" https://angularjs.org/
Więcej informacji na stronie TodoMVC i Learning JavaScript Design
Patterns.
Ale uwaga aplikacje tego typu mogą mocno obciążać klienta (dużo
manipulacji DOM)!
Aplikacje WWW 52 z 66
Platforma sprzętowa I
W aplikacjach internetowych dużej skali oprogramowanie stanowi
niezwykle ważną część, ale nie jest całością rozwiązania. Bardzo ważnym
elementem jest sprzęt. Architektura wielkiej aplikacji internetowej musi
obejmować zarówno komponenty oprogramowania, jak i docelową
platformę sprzętową, na której oprogramowanie będzie uruchomione.
Platforma sprzętowa ma na ogół spory udział w łącznych kosztach
wdrażania aplikacji internetowej (przynajmniej na początku).
Platforma sprzętowa
Jest to zbiór komputerów, komponentów sprzętowych i oprogramowania sys-
temowego, który jako całość umożliwia właściwe działanie naszej aplikacji.
Może to być również pojedynczy komputer z jednym systemem operacyj-
nym, ale znacznie częściej składa się z większej ich liczby i pracują one pod
kontrolą różnych systemów operacyjnych.
Aplikacje WWW 53 z 66
Platforma sprzętowa II
" Sprzęt współdzielony - z reguły jest dzierżawiony od operatorów
internetowych lub firm zajmujących się hostingiem, które oferują
komputery przystosowane do obsługi wielu aplikacji (wdrożonych
przez wielu klientów) jednocześnie. Usługi hostingu są w miarę tanie.
Musimy sobie zdawać sprawę, że jeśli nasza aplikacja w dużym
stopniu wykorzystuje bazę danych, to jej wydajność zależeć będzie od
aktywności pozostałych użytkowników tego systemu baz danych.
Usługodawcy raczej nie przewidują możliwości modyfikowania
ustawień serwera WWW ani instalacji niestandardowych modułów.
Warto rozważyć korzystanie ze sprzętu współdzielonego we wczesnych
fazach projektu.
Aplikacje WWW 54 z 66
Platforma sprzętowa III
" VPS (Virtual Private Server) - to podział maszyny, jaką jest serwer,
na kilka mniejszych, wirtualnych. VPS umożliwia pełny dostęp do
konta root. Do zarządzania VPS-ami najczęściej wykorzystuje się
oprogramowanie Xen, VMware, FreeVPS, Virtuozzo, OpenVZ.
Przydział zasobów zależy od administratora serwera. Przydziela się
zasoby gwarantowane, dedykowane dla VPS zasoby sprzętowe do
których musi mieć dostęp zawsze oraz te, które mogą być osiągnięte
chwilowo, gdy serwer nie jest obciążony. Do głównych ograniczeń
należy zależność od stanu głównej maszyny (jeśli główna maszyna nie
działa, nie działa żaden z VPS-ów).
" Sprzęt dedykowany - jest kolejnym krokiem rozwoju aplikacji. Jest
to sprzęt dedykowany dla naszej aplikacji, ale dzierżawiony od firmy,
która odpowiada za jego konserwację i utrzymanie. Nasz kontakt
sprowadza się nadal do zdalnego logowania za pośrednictwem usługi
SSH. Nie musimy samodzielnie wymieniać dysków, dołączać
komponentów. Zakres usług hostingowych dotyczących sprzętu
Aplikacje WWW 55 z 66
Platforma sprzętowa IV
dedykowanego bywa różny od dostarczenia i dbałości wyłącznie o
platformę sprzętową do kompletnego zarządzania powierzonym
oprogramowaniem. Takie rozwiązanie eliminuje konieczność
zatrudniania administratorów systemowych.
" Sprzęt kolokowany. Często przejście na sprzęt dedykowany nie
będzie ostatnim krokiem w rozwoju naszej aplikacji. Niewielkie
przedsiębiorstwa i firmy, które dopiero wchodzą na rynek zwykle
decydują się na model nazywany kolokacją (ang. co-loctation).
Usługa ta polega na udostępnieniu miejsca, zasilania i szybkiego
łącza, ale nie obejmuje dostarczenia, ani utrzymywania sprzętu.
Zakres usług w tym modelu bywa różny. Część firm ogranicza się do
zabezpieczenia niezbędnej infrastruktury, inne dodatkowo oferują
możliwość monitorowania serwerów i diagnozowania ewentualnych
problemów. Najczęściej obejmują one monitorowanie sieci i ponowne
uruchamianie serwerów w razie awarii.
Aplikacje WWW 56 z 66
Platforma sprzętowa V
" Samodzielny hosting - w sytuacji, kiedy nasza aplikacja będzie
wymagała do prawidłowego funkcjonowania wielu serwerów,
powinniśmy rozważyć organizację własnych centrów danych (ang.
Data Centers). Organizacja centrum danych zwykle wymaga
stworzenia rozbudowanej infrastruktury, stworzenia centrum NOC
(monitorujące infrastrukturę i powiadamiające o ważnych zdarzeniach
- utrudnieniach w komunikacji sieciowej, problemów z routingiem, a
także szeregu istotnych zdarzeń związanych z bezpieczeństwem naszej
aplikacji, np. ataków blokujących DoS - ang. Dential of Service),
zatrudnienia na miejscu dodatkowego zespołu, zapewnienia
odpowiednich przyłączy do sieci energetycznej,zakupu kosztownych
zabezpieczeń w postaci urządzeń UPS (ang. Uninterruptible Power
Supply), instalacji filtrów i generatorów prądu oraz zabezpieczeń
przeciwpożarowych. Organizacja centrów danych w przypadku małych
i średnich aplikacji wiąże się z większymi kosztami i dużo większą
liczbą trudności niż pozostałe rozwiązania.
Aplikacje WWW 57 z 66
Platforma sprzętowa VI
" Hosting w chmurze (Cloud Hosting) - najlepiej obrazuje następujący
film:http://www.youtube.com/watch?v=ST_t3bgYPDk.
Nadmiarowość sprzętu ma za zadanie planowanie ciągłości działań (ang.
Business Continuity Planning - BCP). BPC jest metodyką zarządzania
ryzykiem częściowego lub pełnego przerwania kluczowych usług. Może to
być związane z atakiem hakerów, awarią oprogramowania lub sprzętu.
W rozwiązaniach niewielkiej skali stosowanie tej metody bywa traktowane
jako przerost formy nad treścią. W takiej sytuacji metodyka BCP
sprowadza się do opracowania solidnego i wszechstronnego planu
przywracania właściwego funkcjonowania sprzętu i oprogramowania na
wypadek różnych katastrof.
Do najwyższego poziomu metodyki BCP zaliczyć należy instalację
najważniejszych aplikacji w wielu centrach danych w różnych miejscach. W
przypadku mniejszych aplikacji, często waściwym poziomem
nadmiarowości jest zakup co najmniej dwukrotnie większej liczby urządzeń.
Musimy zdawać sobie sprawę, że każde urządzenie może ulec awarii.
Aplikacje WWW 58 z 66
Wybór technologii I
Co prawda w dalszej części wykładu będziemy się koncentrować na
konkretnych technologiach (PHP + MySQL), to większość wniosków
można zastosować do innych rozwiązań.
" Wszystkie składniki aplikacji powinny być sprawdzone i właściwie ze
sobą współpracować.
" Nie zawsze stosowanie nowych języków programowania i frameworków
jest najlepsze, często starsze, ale niezawodne rozwiązania pozwolą
nam oszczędzić czas w przypadku aplikacji większej skali.
" Koszty poznania nowych technologi dla wszystkich skadników
aplikacji mogą okazać się zbyt duże.
" System LAMP (Linux Apache MySQL PHP) był przez ostatnie lata
wykorzystywany dla wielu aplikacji wielkiej skali i stanowi stabilną i
powszechnie znaną platformę dla budowanych aplikacji.
Aplikacje WWW 59 z 66
Wybór technologii II
Preferować będziemy PHP (PHP Hypertext Preprocessor)  obiektowy,
skryptowy język programowania zaprojektowany do generowania
dynamicznych stron internetowych. PHP najczęściej stosuje się do
przetwarzania skryptów po stronie serwera WWW, ale może być on
również używany z poziomu wiersza poleceń oraz w aplikacjach
pracujących w trybie graficznym np. przy pomocy biblioteki GTK+.
Implementacja PHP w środowisku Linux wraz z serwerem WWW Apache
oraz serwerem baz danych MySQL określana jest jako platforma LAMP.
Jako serwer bazy danych wybierzemy MySQL - wolnodostępny system
zarządzania relacyjnymi bazami danych. MySQL tworzony jest przez
szwedzką firmę MySQL AB, kupioną 16 stycznia 2008 roku przez Sun
Microsystems, a ta następnie 27 stycznia 2010 roku została kupiona przez
Oracle.
Kiedy mówimy o serwerze WWW, to mamy na myśli serwer Apache.
Pomijamy kwestię systemu operacyjnego, która z naszego punktu widzenia
Aplikacje WWW 60 z 66
Wybór technologii III
jest mniej istotna, bo wszystkie skłaniki platformy możemy
zaimplementować na wielu systemach operacyjnych.
Aplikacje WWW 61 z 66
Zalety i wady aplikacji WWW I
Technologia aplikacji WWW ma wiele zalet, które wyróżniają ją na tle
technologii aplikacji monolitycznych i aplikacji klient-serwer.
Aplikacje WWW 62 z 66
Zalety i wady aplikacji WWW II
" Na uwagę pierwszoplanową zasługuje fakt, że użytkownik korzystający
z aplikacji WWW posługuje się wyłącznie programem klienta HTTP,
który zwykle cechuje się dość niskimi wymaganiami sprzętowymi.
Dzięki temu, dostęp do aplikacji WWW jest możliwy nie tylko za
pomocą prostej stacji roboczej, ale też za pomocą palmtopa czy
telefonu komórkowego.
" Z drugiej strony, łatwość użytkowania programu klienta HTTP
przekłada się na łatwość użytkowania aplikacji wykonanej w
technologii WWW.
" Mamy dostęp do swoich danych z każdego miejsca. W tradycyjnych
aplikacjach desktopowych dane zwykle są przechowywane na dysku
twardym naszego komputera. Jeśli wyjedziemy na urlop i zostawimy
komputer w domu, nie mamy dostępu do odebranych e-maili, zdjęć
ani żadnych innych danych, które mogą nam być w danej chwili
potrzebne.
Aplikacje WWW 63 z 66
Zalety i wady aplikacji WWW III
" Kolejny aspekt dotyczy wygody administrowania aplikacjami -
ponieważ rezydują one na pojedynczym komputerze (serwerze
WWW), to wszelkie prace instalacyjne, uaktualniające, pielęgnacyjne
dotyczą tylko tego jednego komputera.
" Zawsze używamy najnowszych wersji aplikacji.
" Warte podkreślenia jest też zagadnienie ochrony własności
intelektualnej twórców oprogramowania. Ponieważ oprogramowanie
nie znajduje się na komputerze użytkownika końcowego, to zmniejsza
się ryzyko jego kradzieży.
Niestety, wdrożenie technologii aplikacji WWW pociąga też za sobą pewne
koszty i kompromisy.
" Wytwarzanie oprogramowania wymaga od programistów posiadania
dodatkowych kwalifikacji.
Aplikacje WWW 64 z 66
Zalety i wady aplikacji WWW IV
" Ze względu na ograniczone możliwości interakcji z użytkownikiem
(choć jest już coraz lepiej), pewnemu upośledzeniu ulega konstrukcja
graficznego interfejsu użytkownika.
" Nie należy również zapominać, że wdrożenie aplikacji WWW pociąga
za sobą konieczność zakupu mocnego obliczeniowo serwera
odpowiedzialnego za wykonywanie aplikacji, a często też konieczność
zakupu komercyjnego oprogramowania serwera aplikacji.
Aplikacje WWW 65 z 66
Bibliografia
Fritz Holznagel, Min Li Chan, i Michael Krantz.  Dwadzieścia rzeczy,
które należy wiedzieć o przeglądarkach i internecie .
http://www.20thingsilearned.com/pl-PL/.
http://en.wikipedia.org/wiki/Main_Page.
Aplikacje WWW 66 z 66


Wyszukiwarka

Podobne podstrony:
PN EN 1990 04 Ap1 Podstawy projektowania konstrukcji poprawka
AP1 MeasuringBox Rev4Eng
obudowa ap1
podzial majatku aP1
ap1 tob
PN EN 1990 2004 Ap1 2004 Podstawy projektowania konstrukcji

więcej podobnych podstron