SOA - Szolgáltatásorientált architektúra - Service Oriented Architecture
Napjainkban egyre többször felmerül az igény, hogy átlátható, könnyen karbantartható, menedzselhető olyan 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 divatosabbak a különféle SOA alapú megoldások, eszközök használatai. Ezek a SOA megoldások egyszerre teszik biztonságosabbá, hatékonyabbá a fejlesztés menetét, és nyújtanak betekintést és beleszólást a rendszer folyamataiba üzleti világnézetű felhasználói számára is a gazdag grafikus felület segítségével.
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:
- 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.
SOA szemléletmód előnyei:
- Komponens alapú é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ás kö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.
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 - Ü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ú magas szintű 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.