Alkalmazásszerver

A Wikipédiából, a szabad enciklopédiából

Az alkalmazásszerver egy szoftverkeretrendszer, amely olyan környezetet biztosít, amelyben tetszőleges alkalmazások futhatnak, függetlenül attól, hogy mit is csinálnak.[1] Fő feladata eljárások hatékony végrehajtása (programok, rutinok, szkriptek) és nagyobb alkalmazások készítésének támogatása.

Az alkalmazásszerver kifejezés a korai kliens-szerver rendszerek megvitatása kapcsán került először köznyelvi használatba. Ezzel különböztették meg azokat a szervereket, amelyek SQL szolgáltatásokat futtatnak, valamint a middleware (középréteg) szervereket a fájlszerverektől.

Később ez a kifejezés felvette a webalkalmazás jelentést, de már már olyan szintre fejlődött, hogy egy ennél komplexebb, széleskörűbb szolgáltatási réteget jelképez. Az alkalmazásszerver úgy viselkedik, mint komponenseknek egy halmaza, amelyet a szoftverfejlesztők elérhetnek és használhatnak különböző API-kon keresztül, amelyeket a platform határoz meg. Webalkalmazások esetén ezek a komponensek általában ugyanabban a gépben találhatóak meg, amelyen a webszerver is fut, és a legfőbb feladatuk, hogy támogassák a dinamikus weboldalak építését. Mindemellett a jelenkori alkalmazásszerverek többre hivatottak, mint szimpla weboldalgenerálás. Olyan funkciókat valósítanak meg, mint például a klaszterezés, failover és terheléselosztás stb. Ez által megkönnyítik a fejlesztők dolgát, hogy azoknak ne kelljen törődniük a középréteggel, és koncentrálhassanak az igazán fontos dolgokra, pl. az üzleti logika megvalósítására.[2]

Alkalmazásszerver alatt általában a Java alkalmazásszervereket értjük. Ebben az esetben az alkalmazásszerver úgy viselkedik, mint egy kiterjesztett virtuális gép, amely az alkalmazásokat futtatja és transzparensen kezeli a adatbázis kapcsolatokat az egyik oldalon, és a web kliens kapcsolatait a másikon.

Java alkalmazásszerverek[szerkesztés]

Java nyelvű web modulok a Servletek és a Java Server Pages (JSP). Az üzleti logika megvalósítása az Enterprise JavaBean-ekben történik (EJB3 vagy újabb verziókban). A Hibernate projekt EJB3 konténer implementációt kínál a JBoss alkalmazásszerverhez. Az Apache által fejlesztett Tomcat és ObjectWeb féle JOnAS tipikus példái azon konténereknek, amelyekben ezen modulok tárolhatók.

Egy Java Server Page (JSP) (egy Java szervlet — a CGI script Java nyelvű megfelelője) a web konténer-ben kerül végrehajtásra. A JSP-k lehetőséget biztosítanak olyan HTML oldalak készítésére, amelynek belsejébe szerver oldali logikát lehet beépíteni. A HTML fejlesztők és a Java programozók egymás mellett tudnak dolgozni, és hivatkozhatnak a másik kódjára a sajátjukból. A JavaBean-ek a Sun Microsystems által fejlesztett Java architektúra önálló részei.

A fent említett alkalmazásszervereket legfőképpen webalkalmazások kiszolgálására használják. Némely alkalmazásszerverek más hálózatokat is megcéloznak, nem csak a web alapúakat. Ilyenek például a Session Initiation Protocol szerverek, melyek újabban IP alapú telefonálással (VoIP) foglalkozó hálózatokat szolgálnak ki.

Java EE alkalmazásszerverek[szerkesztés]

  • JBoss AS alkalmazásszerver, egy szabad szoftver/ nyílt kódú Java EE- alapú alkalmazásszerver. Mivel Java alapú, a JBoss alkalmazásszerver több operációs rendszeren működik, melyek rendelkeznek Java támogatással. A JBoss-t a JBoss fejleszti, mely jelenleg a Red Hat Inc. tulajdona. Jelenleg a 7.0.1-ás verziónál tart a fejlesztése.
  • GlassFish alkalmazásszerver, a GlassFish Community által fejlesztett alkalmazásszerver. A legfrissebb verziója a V3.1 (2011-02-28)
  • WebSphere alkalmazásszerver, egy az IBM által fejlesztett alkalmazásszerver, jelenleg a 7-es verziónál tart
  • WebLogic szerver, az Oracle alkalmazásszervere
  • Apache Geronimo

A .NET keretrendszer[szerkesztés]

Microsoft[szerkesztés]

A Microsoft a Windows Server operációs rendszerben és a .NET keretrendszer technológiákban úgy pozicionálja a középrétegbeli alkalmazásait és a szolgáltatás infrastruktúráját, hogy azok alkalmazásszerver szerepet töltenek be.

Más gyártók[szerkesztés]

PHP alkalmazásszerverek[szerkesztés]

PHP alkalmazások futtatására és menedzselésére szolgálnak.

Legismertebb a Zend Server, amelyet a Zend Technologies fejleszt. Ez alkalmazásszerver funkcionalitást biztosít PHP alapú alkalmazásokhoz.

Egyéb platformok[szerkesztés]

Nyílt forráskódú alkalmazásszerverek más fejlesztőktől is származhatnak. Például:

A nem-Java alapú megoldásoknak nincs olyan formális együttműködési specifikációjuk, ami egyenértékű lenne a Java Specification Request-el. Ennek eredményeként a nem-Java termékek közötti együttműködés nagyon gyengének számít a Java EE alapú termékekéhez viszonyítva. Ennek leküzdése érdekében különböző specifikációkat készítettek a vállalati alkalmazás integrációhoz és a szolgáltatás orientált architektúrához, hogy ezzel megoldják több különböző termék kommunikációját. Ezek a specifikációk tartalmazzák a Business Application programozási interfészt, Web Service együttműködést, és Java EE Connector architektúrát.

Az alkalmazásszerverek előnyei[szerkesztés]

Adat és kód integritás
Az üzleti logikát egy különálló szerverre vagy néhány szerver gépre központosítva a rendszer összes felhasználója számára elérhetőek az alkalmazáshoz tartozó frissítések és bővítések. Nem áll fenn olyan jellegű veszély, hogy az alkalmazás régebbi verziói olyan módon hozzáférjenek vagy módosítsák az adatokat, amely az új verzióval már nem kompatibilis működést eredményezne.
Központosított beállítások
Az alkalmazás konfigurációjára vonatkozó olyan módosítások, mint az adatbázis szerver áthelyezése vagy rendszer szintű beállítások elvégzése egy központi helyen kerülhetnek megadásra.
Biztonság
Egy központi egység, amelyen keresztül a szolgáltatók kezelhetik az alkalmazás egyes részeinek és az adatoknak a hozzáférését. Ezzel leveszi az autentikációval járó terhet a potenciálisan védtelen kliens réteg válláról anélkül, hogy felfedné az adatbázis réteget.
Teljesítmény
A hálózati forgalom teljesítmény-rétegre való korlátozásával a kliens-szerver modell növeli a nagy alkalmazások fokozott terhelésű környezetben való teljesítményét.
Tulajdonjog teljes költsége (TCO - Total Cost Of Ownership)
A fent említett előnyöket kombinálva költségcsökkenést érhetnek el azok a szervezetek, amelyek vállalati alkalmazásokat fejlesztenek. A gyakorlatban azonban olyan szoftver írása, amely megfelel ennek a paradigmának és emellett még terjeszthető is, olyan technikai kihívásokat állít fel, amelyek valamelyest kioltják ezeket az előnyöket.
Tranzakció támogatása
Egy tranzakció egy tevékenység egységet reprezentál, amelyben az (ugyanazokon vagy elosztott) erőforrásokon történő több módosítás atomi műveletté tehető, azaz a munkának egy oszthatatlan részévé. Egy egyszerű példa erre egy banki átutalás, ahol a pénzösszeg levonása a saját számláról és jóváírása az ellenoldali számlán egy egységben kell, hogy megtörténjen, hiszen ha ezen műveletek között a kapcsolat megszakad, akkor a pénz elveszhet. Az ilyen alkalmazásszerverek támogatják a tranzakciókezelést, ezzel jelentős költségcsökkenést idéznek elő az alkalmazások fejlesztési idejében. Sok automatikus kódgenerálást végeznek, így a fejlesztők koncentrálhatnak az üzleti logikára anélkül, hogy elvesznének a részletekben.

Kapcsolódó szócikkek[szerkesztés]

További információk[szerkesztés]

Jegyzetek[szerkesztés]

  1. Hálózati kislexikon. (Hozzáférés: 2011. április 23.) „Olyan kiszolgálóprogram, amely nagy erőforrás-igényes alkalmazásokat oszt meg számos kliens között. A korábban ismert kétszintes (two-tier) kiszolgáló-kliens rendszerekben többnyire csak az adatokat osztották meg a kliensek a kiszolgáló segítségével. A többszintes (multitier) kiszolgáló-kliens rendszerek átveszik az erőforrás-igényes alkalmazásokat a kliens oldaláról, és áthelyezik egy köztes szintre, az alkalmazás szerverre. Ezzel egyszerűbbé teszik az alkalmazások fejlesztését, és emellett hatékonyabbak, gyorsabbak is.”
  2. Brett McLaughlin. Business Logic, Part 1, Building Java Enterprise Applications, Vol I: Architecture. O'Reilly és társai (2002. március). ISBN 0-596-00123-1 „McLaughlin megvitatja a facade tervezési minta használtatát egy alkalmazás üzleti rétegének megépítésére.”