elektronikus szolgáltatások (vitt4100) web-es alkalmazások –...
TRANSCRIPT
-
QoS Információs Technológiák Laboratórium (QoSITLab)Nagysebességű Hálózatok Laboratórium (HSNLab)
Elektronikus szolgáltatások (vitt4100) WEB-es alkalmazások – kiszolgálók.
Lukovszki [email protected]
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 2
Kliens-szerver modell
TCP
Böngésző
kliens alkalmazás
kliens oldal
TCP
WWW szerver
szerver oldal
adatkapcsolati réteg
fizikai réteg
IP
adatkapcsolati réteg
fizikai réteg
IP
szerver alkalmazásHTTP/HTTPS
TCP port (80)
protokollok
DB LDAP FS IMAPpluginok erőforrások
HTTP HTTP
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 3
WEB kiszolgálók
TípusokEgyszálú kiszolgálókEgyszálú eseményvezérelt kiszolgálók
Kérelmenkénti folyamatkezelés Kérelmenkénti szálkezelésSzál és folyamat verem kezeléssel
Tervezési célokTeljesítményKérésenkénti erőforrás felhasználás
CPU, memória etc…
PárhuzamosításCPU párhuzamos kezelése
Moduláris architektúraRobosztus architektúra
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 4
Apache Web kiszolgálók
Apache 1.31995 április Apache 0.7.x
NSCA (1.3) – National Center for Super Computing
Patch-ek hozzáadásával - A PAtCHy
1995 december Apache 1.0
Apache 2.0 -> Apache 2.1Multiprocesszoros rendszerekre
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 5
Apache 1.3
JellemzőkNyílt forráskódú
http://www.apache.org
Kérelmenkénti feldologzás (process-per-request)Az apache 1.3-ban nincs szálkezelés
Moduláris architektúraDinamikusan betölthető modulok
A legtöbb kiszolgáló funkcionalitás modulként van implementálva
A külső kérések lekezelése (handler)CGI, ASP, fastCGI, Perl, Java, Python
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 6
Apache 1.3 – architektúra
Kérés kiszolgáló-HTTP protokoll -Objektum hozzáférés szabályozás-Szerver konfiguráció
WEB kiszolgálóFüggvényhívások
Operációs rendszer
Függvény könyvtárak-input/output műveletek-rendszer jelzések-OS specifikus hívások
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 7
Apache 1.3 – architektúra II.
Érdeklődési lista lekérése
Implicit hívásKiszolgáló mag modulok
Válasz a kérésekre
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 8
Apache 1.3 – kérelem feldolgozás
Kérelem feldolgozás1. Kérelem fogadás
2. URI fordítás, feldolgozás
3. Fejléc elemzés
4. Hozzáférési ellenőrzés (felhasználó hoszt alapján)
5. Felhasználó azonosítás
6. Felhasználói meghatalmazás ellenőrzés
7. MIME detektálás
8. Esemény lekezelés
9. Modul specifikus részek beillesztése
10. Esemény logolás
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 9
Apache 1.3 – architektúra III.
M1,M2…MN
S1
M1,M2…MN
S2
M1,M2…MN
S10
.....
Diszpécser
Protokol Logolás
Diszpécsertábla
Betölthetőmodulok listája
Konfiguráció
1) konfiguráció szűrő
3) diszpécser szűrő
KérelemHTML dok
2) protokoll szűrő
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 10
Apache 1.3 – modulok I.
mod_userdir: a felhasználók aktuális köntvtárait fordítja URL-lekké
mod_rewrite: reguláris kifejezések segítségével az URL-ekátírására szolgál
mod_auth, mod_auth_anon, mod_auth_db, mod_auth_dbm: felhasználó azonosítása (txt alapján, ftp stílusó azonosítás, adatbázisok alapján)
mod_access: hoszt alapú azonosítás
mod_mime: objektum típus meghatározása a kiterjesztés alapján
mod_mime_magic: objektum típus meghatározása „mágikus számok” alapján
mod_alias: alias nevek definiálása objektumok eléréséhez
mod_env: környezeti változók használata
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 11
Apache 1.3 – modulok II.
mod_speling: alapvető gépelési hibák javítása az URL-ben
mod_actions: fájlok típusa alapján való szkript futtatás
mod_asis: fájlok küldése módosítás nélkül
mod_autoindex: automatikusan generált könyvtár tartalom
mod_cgi: CGI szkriptek hívása és visszaadása a válaszban
mod_include: szerver oldali állomány beillesztés (a szerver hozzáadott adatokat küldhet vissza a válaszban)
mod_dir: alapvető könyvtár kezelés
mod_imap: imap állományok lekezelése
mod_log_*: logolási feladatok kezelésének gyűjteménye
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 12
Apache 2.0
UNIX szálkezelésHatékonyan használja ki a POSIX típusú többprocesszoros rendszereket
Teljesen újraírtákAlkalmazkodott az új támogató könyvtárakhoz
Nem UNIX operációs rendszerek támogatásaNem POSIX emulációt használ, hanem APR (Apache Portable Runtime)-tkihasználó OS specifikus MPM (multi-processor modules) architektúrát
Új APIHibajavítások, alkalmazkodás az újabb követelményekhez
IPv6 támogatásSzűrés (Filters)
A bemeneti folyamokat adatfolyamként kezeli és ezen szűréseket hajt végre.
Több nyelvű hibaüzenetekEgyszerűbb konfigurációNT/UTF-8 támogatás
A fájlok elérésére UTF-8 kódolást használ
Reguláris kifejezésekPerl-5 szintaktika
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 13
Apache 2.0 - modulok
mod_ssl: interfész az OpenSSL felémod_dav: WEB-DAV támogatásmod_deflate: támogatja az olyan HTTP kéréseket, melyet a kliens tömörítve küld el.mod_auth_ldap: LDAP használata az hitelesítéshezmod_auth_digest: osztott memóriakezelés esetén támogatja a ‘session’ adatok átadását.mod_charset_lite: karakter fordítás és újrakódolásmod_file_cache: (mod_mmap_statci
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 14
CGI (Common Gateway Interface)
Kapcsolattartás a WEB kiszolgálók és külső programok között
A külső programokhoz dinamikus hozzáférést tesz lehetővéMinden egyes meghívás alkalmával az eredményeket újra generálja
Dinamikus adatok lekérdezéséhezAdatbázis hozzáférésre
CGI hívásának módjai/cgi-bin/finger?nobody
A finger parancs meghívása nobody paraméterrel
A parancs futásának eredményét a szerver visszakapja
/cgi-bin/finger?nobody=senkiA finger parancs meghívása
A QUERY_STRING változó értéke ‘nobody=senki’ lesz
A parancs futásának eredményét a szerver visszakapja
Lassú!!!
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 15
CGI folyamat
CGI
WWW szerverHTTP
Helyiállományok
Környezetiváltozók
dinamikusbetöltés
stdin
stdout
paraméterek
MIMEdetekció
3
4
5
6MIME handler
1 2CGI állomány
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 16
CGI folyamat
Minden HTTP kérelemhez új process keletkezik
A kiszolgáló a kérelem információkat (HTTP fejléc, felhasználó, távoli hoszt…) környezeti változókban adja át a CGI programnak
A kiszolgáló a felhasználói input adatokat stdin-en küldi el a CGI programnak
A CGI program stdout-on adja vissza az adatokat a kiszolgálónak
Amikor a CGI program végez, a kérelem feldolgozása befejeződött
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 17
Kiszolgáló API-k
Megvalósítás függőNSAPI (Netscape)
ISAPI (Microsoft)
Apache API
ProblémákKomplexitás
Nyelv függő
Nincs folyamat elrejtés process szinten
Megköti a fejlesztés menetét
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 18
FastCGI
Használt nyelv független
Kiterjeszthető
Kiszolgáló specifikus API-tól független
Megnövelt teljesítmény
Több helyen kapcsolódhat a HTTP kérelmek feldolgozási folyamatába
Folyamat elkülönítés process szinten
Elosztott feldolgozás támogatás
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 19
FastCGI – feldolgozás folyamata I.
Különbségek a CGI-hez képestFastCGI a program lefutása után vár egy következő kérelemre, és nem lép ki azonnal
Az adatok (környezeti változók, bemeneti adatok, kimeneti adatok) átvitelét a kiszolgáló és a CGI program között egy kétirányú kapcsolat valósítja meg (pl. TCP)
Távoli gépeken lévő CGI programok is meghívhatóak a fastCGIsegítségével
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 20
FastCGI – feldolgozás folyamata II.
A Web kiszolgáló létrehozza a FastCGI programot és a process környezetet, kérelem kiszolgálására vár
A FastCGI program inicializálja magát és vár a kapcsolat felépítésére a Web kiszolgálótól
Kérelem kiszolgálásánál a Web kiszolgáló megnyitja a kapcsolatot a FastCGI program felé és átküldi a környezeti és felhasználói bemeneti változókat
Ugyanazon kapcsolatot felhasználva a FastCGI program a visszatérési adatokat elküldi a Web kiszolgálónak
A FastCGI program bezárja a kapcsolatot és vár az újabb kérelmek kiszolgálására
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 21
WEB-es applikációk
Applikációs Logika
Adat hozzáférés
Megjelenítés
HTTP kiszolgáló
web objektum
bemenetiváltozó
DB LDAP IMAPsession
CGI
FS
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 22
Adat hozzáférés
Felület, mely egységes hozzáférést tesz lehetővé strukturált adat rendszerekhez
Elrejti a adatok tárolásának megvalósítását
Lekérdezés alapú
Megvalósítás: CGI program függvény könyvtárak
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 23
Applikációs logika
Döntést hoz, adatokat állít
Bemeneti változókból
Tárolt adatokból
Session adatokból
Nem foglalkozik az adatok megjelenítésének kérdésével
WEB dokumentum típusától függetlenül állítja elő az adatokat
Megvalósítás: CGI programokkal, perl, php, c, asp etc…
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 24
Megjelenítés
Csak az adatok megjelenítésével foglalkozikNem állít elő adatokatAz applikációtól kapott adatok strukturált feldolgozásával foglalkozik
Szabályok alapján végezhet adatreprezentációval kapcsolatos adatmódosítást
Együttműködés függvénye az alkalmazott CGI programnakMegvalósítás: CGI program függő
Közvetlenül CGI programokkal
PHP: Smarty
Megvalósítás: CGI program függetlenÁltalában XML alapúStringTemplate
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 25
PHP (PHP: Hypertext Processor)
Nyílt forráskódúHTML-be ágyazottSzkript nyelvTámogatja a HTTP protokollt
Hiba kezelésCookiesFelhasználó azonosításKapcsolat alapú hozzáférés támogatás
Adatbázis hozzáférés támogatásMySQL, PostgreSQL, ORACLE, ODBC …Perzisztens kapcsolatok kezelése
Fájlkezelés és fájlfeltöltés rugalmas kezeléseAdatreprezentációObjektumok
A PHP5 objektum orientált
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 26
PHP – adatok kezelése
Minden változót karakterláncban tárolFüggvényhívás változóban tárolt függvénynév alapján
Referenciák rugalmas kezelése
Globális és lokális változók kezelése
Konstansok
HTTP változókPOST paraméterek: $HTTP_POST_VARS
GET paraméterek: $HTTP_GET_VARS
Feltöltött fájlok: $HTTP_POST_FILES
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 27
PHP – függvény könyvtárak
PEAR (The PHP Extension and Application Repository)Használt kódok könnyű cseréjeSzabványok készítése a kódok egyszerű és portábilis cseréjéhez
Eszközök a kódok egységesítéséhezGyakori feladatok támogatása (megvalósított csomagok)
Adatbázis hozzáférésFelhasználó azonosításFájl rendszerek hozzáféréseXMLAdatstruktúrákWEB szolgáltatások támogatásaRendszerhozzáférés (Unix-Linux)…
PECL (The PHP Extension Community Library)
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 28
PHP - session kezelés
Állapot alapú kapcsolat kialakítása állapotváltozók perzisztens tárolásával
Egyszerű megvalósításLétrehozás: session_start ()
Megszüntetés: session_destroy ()
Változó hozzárendelés: session_register ()
Hozzárendelés megszüntetés: session_unregister ()
Hozzárendelés megszüntetés: session_is_registered ()
Cookie kezelés: session_get_cookie_params (), session_set_cookie_params ()
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 29
Smarty
PHP-ban íródott és PHP-vel együttműködő sablon motor
A sablonokból futás időben PHP kód generálódik, egyszer
Cache használatának lehetősége
Csak adatok megjelenítésére alkalmas
FlexibilisFüggvények definiálása
Adatmódosítók definiálása
Konfiguráció támogatása
Objektumok támogatása
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 30
Smarty – adatok összerendelése
A PHP kódból csak egy objektum látszikassign: változók smarty-hoz való rendelése
display: a sablon motor elindítása
register_function: függvény regisztrálása
register_modifier: adatmódosító regisztrálása
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 31
Smarty – utasítások
Ciklus szervezésforeach: asszociatív tömbön fut végig
section: indexelt tömbön fut végig
Vezérlési szerkezetekif, elseif, else: tetszőleges mélységben megvalósítható
Kódok beillesztéseinclude: smarty fájl meghívása
include_php: PHP fájl meghívása
php: PHP kód beszúrása
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 32
Smarty – funkciók, adatmódosítók
FunkciókTöbb bemeneti adat alapján komplex kimenet előállítása
PHP kód
{insert name=“index.tpl”}html_image
html_checkboxes
html_options
html_select_date
html_select_time
AdatmódosítókEgy megjelenítendő karaktersorozaton hajt végre adatmódosítást
{$name capitalize}capitalize: Nagybetűssé alakít
replace: Szövegtöredékek módosítása
regex_replace: Reguláris kifejezéssel való szövegmódosítás
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 33
Smarty - szűrők
Bemeneti sablon kódok és eredmény text fájlok szűrésére
PHP függvények regisztrálhatóak szűrőkként
Prefilter:A futatott sablon kódokon fut le. Pl. kommentezés szűrésére
Postfilter:A sablon fájlok futása után hajtódik végre. Pl. fejléc információhozzáadása a kimenethez
Output filter:A teljes dokumentumon, hasjtódik végre. Pl. email címek végelme spambot-októl
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 34
WEB szolgáltatások felépítése
Szolgáltatások publikálása, felderítése és használta: UDDI
Interfész leírás: WSDL
Szolgáltatás együttműködés: SOAP
Egységes adatformátum: XMLHálózati helyek
Szolgáltatások
Objektumok
Szolgáltatás és objektum hozzáférés vezérlés
Adatok átitele: HTTP
Egységes kommunikáció: Internet (TCP/IP)
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 35
WEB szolgáltatások funckiói
Aszinkron üzenetküldés
Tranzakciókezelés
Leírá
s
SOAP és XML
Biztonság
Feld
eríté
s
Megbízhatóüzenetküldés
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 36
UDDI (Universal Description, Discovery andIntegration)
UDDI Fórum
Egységes platform WEB szoláltatásokDinamikus és
Egységes
Publikálására,
Felderítése és
Használatára
EgyüttműködésXML
SOAP
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 37
WSDL (Web Service Description Language)
XML formátumú hálózati szolgáltatás leírás SOAPVégpontok leírása
Eljárás orientáltDokumentum orientált eléréshez
Az működés és a fogadott üzenetek leírása absztrakt nyelvenSzolgáltatás specifikus XML sablonok
Szolgáltatás leírásaA küldött üzenetek típusaA küldött üzenetek adattípusaMűködés leírása
Kimeneti üzenetek a bemeneti üzenetek függvényében
Kötések a működés és az üzenetek között
A működés megvalósítás címeSzolgáltatás
A szolgáltatást mint végpontot írja le
-
2004. 10. 26. vitt4100 - WEB-es alkalmazások – kiszolgálók, [email protected] 38
SOAP (Simple Object Access Protocol)
Decentralizált környezetben objektumok elérése
Elérés XML segítségével
Nyílt forráskódú
W3 szabványosítás és ajánlás
Apache támogatás
Elektronikus szolgáltatások (vitt4100) WEB-es alkalmazások – kiszolgálók.Kliens-szerver modellWEB kiszolgálókApache Web kiszolgálókApache 1.3Apache 1.3 – architektúraApache 1.3 – architektúra II.Apache 1.3 – kérelem feldolgozásApache 1.3 – architektúra III.Apache 1.3 – modulok I.Apache 1.3 – modulok II.Apache 2.0Apache 2.0 - modulokCGI (Common Gateway Interface)CGI folyamatCGI folyamatKiszolgáló API-kFastCGIFastCGI – feldolgozás folyamata I.FastCGI – feldolgozás folyamata II.WEB-es applikációkAdat hozzáférésApplikációs logikaMegjelenítésPHP (PHP: Hypertext Processor)PHP – adatok kezelésePHP – függvény könyvtárakPHP - session kezelésSmartySmarty – adatok összerendeléseSmarty – utasításokSmarty – funkciók, adatmódosítókSmarty - szűrőkWEB szolgáltatások felépítéseWEB szolgáltatások funckióiUDDI (Universal Description, Discovery and Integration)WSDL (Web Service Description Language)SOAP (Simple Object Access Protocol)