elektronikus szolgáltatások (vitt4100) web-es alkalmazások –...

38
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 Csaba [email protected]

Upload: others

Post on 30-Jan-2021

1 views

Category:

Documents


0 download

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)