SOA - Szolgáltatásorientált architektúra (Service Oriented Architecture)
Napjainkban egyre többször felmerül az igény, hogy olyan átlátható, könnyen karbantartható, menedzselhető alkalmazásokat hozzunk létre, melyek könnyen kommunikálnak más alkalmazásokkal, platform- és nyelvfüggőség nélkül. Ezért egyre divatosabb a különféle SOA-alapú megoldások, eszközök használata.
A SOA dióhéjban:
Egy megoldás arra, miként tudunk kölcsönös működésre bírni különböző alkalmazásokat, szolgáltatásokat, ezáltal akár lehetővé tenni különböző rendszerek integrációját, együttműködését.
A két fél, azaz a szolgáltató és a szolgáltatást igénybe vevő a hálózat segítségével kerül kapcsolatba egymással. Jellemzően két teljesen idegen rendszer elemét képezik.
A kapcsolatépítés a következő folyamatokból tevődik össze:
- A szolgáltatás közzéteszi magát egy szolgáltatásokat leíró nyilvánosan elérhető adatbázisban.
- A szolgáltatást igénylő felkeresi az említett adatbázisból a meghívni kívánt szolgáltatást, és kap egy szolgáltatás-leírót, mely tartalmazza a szolgáltatás lényeges adatait (hogyan lehet meghívni, milyen típusú és mennyi paramétert vár, milyen típusú a visszatérési értéke, stb.).
- Az igénylő a leíró segítségével meghívja a szolgáltatást a szükséges adatok átküldésével.
- A szolgáltatás feldolgozza a kérést, és visszaküldi a feldolgozás eredményét az igénylőnek.
Ez egy általános leírása az architektúrának, a valóságban általában webszolgáltatásokról (WebService) beszélünk, ahol a szolgáltatások egy UDDI adatbázisba kerülnek regisztrálásra. A szolgáltatás-leíró ilyen esetben egy WSDL-fájl, az igénylő és a szolgáltatás pedig SOAP-borítékokkal folytatja egymás között a kommunikációt.
A SOA tágabb értelmezésben:
Egy nagyobb rendszert kell elképzelnünk, mely lazán csatolt együttműködő szolgáltatásokból épül fel. Ezek a szolgáltatások közös formális nyelven kommunikálnak egymással, mely nyelvfüggetlen az adott szolgáltatás implementációs nyelvétől és környezetétől. A szolgáltatások interfész-definíciója elrejti az architektúra elől a nyelvfüggő implementációs részeket. A SOA szabványosított komponensekből felépülő rendszer, amelynek egyik legfontosabb eleme egy kommunikációs réteg, mely rétegen keresztül válnak elérhetővé a háttérrendszerekben azonosított szolgáltatások, melyeket a szolgáltatás-interfészen keresztül érünk el.
A SOA-szemléletmód előnyei:
- komponensalapú építkezés, mely lehetővé teszi a komponensek újrafelhasználhatóságát
- leváltja a monolitikus (silóorientált), nehezen átlátható és kezelhető rendszereket, így a kritikus helyek könnyebben beazonosíthatóak, karbantarthatóak
- rugalmas és hatékony alkalmazáskörnyezet és architektúra
- elosztottság támogatása: a felhasználói felület elválik az implementációs rétegtől
- könnyen párhuzamosítható fejlesztési feladatok, mely szintén az elosztottságból fakad
A SOA-szemléletmód hátrányai:
- A rugalmasság biztosítása nagyobb erőforrásigényekkel jár, de a jelenlegi technológiai lehetőségek megfelelnek ezen igényeknek.
BPM - Az üzleti folyamatok modellezése
Nagyobb üzleti folyamatoknál sok különböző szolgáltatást kell elérni, használni, különböző logikák alapján. Ezen folyamatokat jellemzően egy grafikus modellező eszköz segítségével könnyen áttekinthetően formálhatjuk meg. A háttérben egy XML-alapú magasszintű nyelv, a BPEL (Business Process Expression Language) segítségével történik a folyamat tényleges leírása.
SOA fejlesztőeszközök:
Manapság több szoftvergyártónak is van már megoldása arra, hogy ne kelljen soronként megírni a webszolgáltatásokat, a WSDL fájlokat, a BPEL folyamatokat, hanem azokat a rendszer segítségével grafikusan létrehozhassuk, a kulcsfontosságú adatok alapján legeneráltathassuk, így nagyon sok időt és terhet spórolhatunk meg. Ezek a rendszerek hatékony kódokat generálnak, kizárják a programozásból adódó hibák lehetőségét, könnyen átlátható és módosítható az elkészített alkalmazásrendszer, ezért érdemes használni őket.