Vissza az előzőleg látogatott oldalra (nem elérhető funkció)Vissza a modul kezdőlapjáraUgrás a tananyag előző oldaláraUgrás a tananyag következő oldaláraFogalom megjelenítés (nem elérhető funckió)Fogalmak listája (nem elérhető funkció)Oldal nyomtatása (nem elérhető funkció)Oldaltérkép megtekintéseSúgó megtekintése

Tanulási útmutató

Összefoglalás

Ebben a részben áttekintjük, hogy milyen specialitásai vannak a webes alkalmazásoknak, majd megnézzük, hogy milyen fejlődésen mentek keresztül az alkalmazásarchitektúrák, és hogyan igazodtak a webes világ sajátosságaihoz.

Követelmény

A fejezet végére meg kell értenünk, hogy a webes alkalmazások miért épülnek a többrétegű architektúrákra.

Önállóan megoldható feladatok

Bevezető

Webes alkalmazások specialitásai

Az internetezők számának hatalmas növekedésével, azaz internet terjedésének köszönhetően szinte minden megváltozott: a szórakozástól kezdve, a tanuláson, munkavégzésen át egészen a vállalatok működéséig. Az internet az élet számos területére hatással van, nagyon gyorsan a mindennapi élet és a munkavégzés szerves része lett, olyannyira, hogy a vállalati alkalmazások, adatbázisok, dokumentum-kezelő alkalmazások egyre nagyobb hányada webes, gyakran már a tartalom előállítása is online alkalmazásokkal történik, a kereskedelem jelentős része is internetek keresztül, vagy annak segítségével történik, így alakítva át a vállalkozások működését és üzleti modelljét.

A webes alkalmazások fejlesztése valójában nem egy elszeparált, önálló terület az informatikán belül, hanem sokkal inkább néhány más terület kombinációjából adódó alkalmazási ág. Hogy így külön foglalkozunk vele, arra az ad okot, hogy a mai gyakorlatban az alkalmazások jellemző architektúrája nagyban eltolódott a klasszikus kliens-szerver architektúrák felől a legalább háromrétegű felépítés irányába. Ez utóbbi esetek jelentős többségében pedig a kliens oldali réteg valamilyen webes felület, jellemzően egy böngésző, a „leghátsó” szerver oldali réteg pedig egy adatbázis.

A kezdeti statikus weboldalakat fokozatosan felváltották a dinamikus oldalak, melyek alkalmazási logikát használnak, ezeket nevezzük webalkalmazásoknak.

Az internetes kultúra fejlődésével az alkalmazások jelentős mértékben leegyszerűsödtek, a felhasználók pedig kevesebb informatikai ismeretekkel rendelkeznek, mint korábban, miközben egyszerű olvasókból a tartalom előállítói, szerkesztői lettek. Ezt nevezhetjük web 2.0-nak is. Miközben a web alkalmazások az üzletileg kritikus informatikai alkalmazások szerves részévé váltak – a hagyományosnak tekinthető asztali alkalmazásokat folyamatosan leváltva – a web alkalmazások fejlesztése gyakran ad- hoc módon történik, megfelelő tervezés nélkül. Számos fejlesztő (akár web-fejlesztő is), döntéshozó nincs is tisztában a web-alkalmazások és a hagyományos alkalmazások fejlesztési módszerei közötti különbségekkel.

A különbség oka egyrészt, hogy a kód, azaz az alkalmazási logika nagy része, gyakran teljes egésze a szerveren fut. Ennek egyik előnye csupán a platformfüggetlenség. Fejlesztői szempontból további előny, hogy a kód egy tesztelt környezetben fut, a program viselkedése kevésbé függ a környezettől, kiszámíthatóbb. Mindig az elkészült és folyamatosan fejlesztett program legfrissebb, aktuális változata működik. Egyéb esetben az elkészült javításokat minden frissítés esetén el kell juttatni a felhasználókhoz, telepíteni kell a gépükre, ez további nehézségeket okozhat (pl.: kompatibilitási problémák más alkalmazásokkal), arról nem is beszélve, hogy mindez időbe kerül, nem is biztosítható a teljes körű frissítés.

A kommunikációs közeg, pedig az internet, amely meghatározza az alkalmazott technológiákat, a http-t, mint átviteli protokollt, a HTML-t, XML-t mint a tartalom leírásának eszközét.

Az internet egyszerre kommunikációs, egyszerre megjelenítési platform.

A hagyományos és a webes alkalmazások fejlesztése közötti különbséget a technológia hordozza, az eltérő navigációs struktúra, a felhasználói felület, valamint a használati szokásokban, elvárásokban keresendő. Egy webalkalmazástól egyszerűen, könnyen használható funkcionalitásokat, platformfüggetlenséget és állandó elérhetőséget várnak el a felhasználók. A célközönség is szélesebb körű, eltérő országban, nyelvi környezetben, kultúrában élők különbözőségeire is gondolni kell a tervezés során, mely ritkán jelenti csupán csak az alkalmazás használata időbeli elosztását.

Webes alkalmazások készítésénél a fejlesztési ciklusok is rövidebbek, sőt eltérően a hagyományos alkalmazásoktól a fejlesztés sosincs kész, specialitásai miatt folyamatos fejlesztésre szorul, nem feltétlenül a programlogika, gyakran inkább a tartalom terén. Ezt a fejlesztéskor és tervezéskor is figyelembe kell venni, már a megrendelőnek is.

Noha a szoftverfejlesztés tevékenységei, lépései, esetleg az alkalmazott módszerek hasonlóak lehetnek. A szoftvertermék egy komplex fejlesztési folyamat eredménye, amely a cél(ok) meghatározásával a követelmények, igények felmérésével kezdődik, majd a különböző tervezési, megvalósítási, implementációs fázisokon keresztül a tesztelést követően jut el a kész rendszer az üzemeltetésig. Maga a fejlesztés azonban itt sem ér véget, az üzemeltetéssel párhuzamosan történik a karbantartás, továbbfejlesztés, javítás folyamata.

Mindez azt is jelenti, hogy számos feladatkör, szerepkör, mind más és más tudást várnak el a fejlesztési projekt során.

Röviden tekintsük át, milyen területekkel kell(ene) megismerkednie annak, aki webes fejlesztésre adja a fejét.

A fentiek alapján meghatározhatunk egy követelménylistát, azon kulcskompetenciákat, melyekkel a web-fejlesztéssel foglalkozóknak rendelkezniük kell:

Vissza a tartalomjegyzékhez

Webes architektúrák

Az alábbiakban áttekintjük azt az architekturális fejlődést, mely a webes környezetek kialakulásához vezetett.

Egygépes (ún. standalone) alkalmazások

Architekturális szempontból a legegyszerűbb informatikai rendszerek az egygépes alkalmazások.

Jellemzőik:

Egygépes (ún. standalone) architektúraEgygépes (ún. standalone) architektúra

Egyszerű kliens-szerver alkalmazások

Hosszú ideig az ilyen jellegű rendszerek alkották „a modern, centralizált rendszerek” kategóriát.

Jellemzőik:

Ezek a kliens-szerver alkalmazások, bár lokálisan általában megoldják az adatcentralizálás problémáját, mégis rendelkeznek néhány –a jellemzőkben felsorolt– negatív tulajdonsággal.

Egyszerű kliens-szerver archutektúraEgyszerű kliens-szerver archutektúra

Többrétegű (multitier) hálózati alkalmazások

A webes alkalmazások tipikusan többrétegű (minimálisan három) architekturára építenek.

Minimálisan három réteg létezik:

Háromrétegű architektúraHáromrétegű architektúra

A kliens oldalon is kialakulhatnak hasonlóan rétegek: a tartalom (HTML/XML), a megjelenítés (CSS), viselkedés (JavaScript), de akár kliens oldalon is lehet adatbázis.

Kliens oldal rétegeiKliens oldal rétegei

Szofisztikáltabb rendszerekben a middleware prezentációs és logikai részét szétbontják, így kapjuk a négyrétegű alkalmazásokat.

Többrétegű architektúraTöbbrétegű architektúra

Ezen az ábrán már azt is feltűntettük, hogy lehetnek teljesen azonos funkciókat ellátó szerverek az architektúrában (pl. Web szerver 1..K és Applikációs szerver 1..M), azaz a horizontális skálázást. Itt az azonos funkciókat ellátó gépek a terhelést egymás között megosztják (load balacing).

Néhány környezet (pl. Java EE, .Net) hatalmas előnye, hogy az alkalmazás tervezésénél ilyen aspektusokkal nem kell foglalkozni. Ez praktikusan annyit jelent, hogy ha például a prezentációs szerver nagyon terhelt (pl. állandóan 90%-on fut), és lassú reakcióidőket produkál, akkor egyszerűen üzembe állítunk egy újabb web- és prezentációs szervert. Ezután a két gép a terhelést egymás között automatikusan megosztja úgy, hogy a kliens-en a felhasználók nem is tudják, hogy valójában fizikailag melyik webszerver szolgálja ki őket. Ugyanilyen load balancing lehetséges a logikai réteg alkalmazás szerverein is.

A dolog fordítva is igaz, nem csak szétbontani, hanem összevonni is lehet: a Middleware és a Back End különböző alkalmazásai nem feltétlenül vannak fizikailag külön számítógépen, az egész lehet egy nagy számítógépen is.

Azt látjuk tehát, hogy a rendszer logikai architektúrája független a fizikai számítógépes megvalósítástól és a hálózattól. Az összes réteg egy gépen, vagy minden szint külön gépen, vagy szintenként az azonos funkciók több gépre duplikálva; logikailag nem számít (az alkalmazás tervezésénél és programozásánál)!

Nagyobb rendszerekben a logikai rész még több szintre osztódhat, íly módon akárhány réteg is születhet.

Jelen jegyzetünkben maradunk a háromszintű architektúránál és a PHP-nál. A PHP a Java-nél s a .Net-nél kevesebb lehetőséget nyújt a funkciók szétválasztására, azonban mégis nagyon elterjedt világszerte. Ennek oka elsősorban az, hogy az Apache web szerverrel együtt nagyon hatékony, ténylegesen képes akár több ezer konkurens (párhuzamosan beérkező) kérést kiszolgálni, a programozóknak egyszerű megtanulni, a nyelvet direkt erre találták ki.

A funkciók nehéz szétválaszthatósága elsősorban a prezentációra és a logikára vonatkozik.

Az architektúra jellemzői:

Az animációban az architektúrák fejlődését mutatjuk be egy bemutató keretében.

Flash lejátszó letöltése

Webes architektúrák összefoglaló bemutatója

Vissza a tartalomjegyzékhez

Fel a lap tetejére
Új Széchenyi terv
A projekt az Európai Unió támogatásával, az Európai Szociális Alap társfinanszirozásával valósul meg.