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