A szolgáltatásorientált architektúra (SOA) a számítógépes szoftvertervezés építészeti mintája, amelyben az alkalmazáskomponensek kommunikációs protokollon keresztül nyújtanak szolgáltatásokat más komponenseknek, általában hálózaton keresztül. A szolgáltatás-orientáció alapelvei függetlenek minden terméktől, gyártótól vagy technológiától.
A SOA csak megkönnyíti a különféle hálózatokon keresztüli szoftverkomponensek egymással való együttműködését.
A SOA architektúrának megfelelően felépített webszolgáltatások általában függetlenebbé teszik a webszolgáltatást. A webszolgáltatások maguk is kicserélhetik egymással az adataikat, és a létrehozásuk alapjául szolgáló elvek miatt nincs szükségük semmiféle emberi interakcióra, és nincs szükségük a kód módosítására sem. Biztosítja, hogy a hálózaton lévő webszolgáltatások zökkenőmentesen kölcsönhatásba léphessenek egymással.
A SOA néhány alapelven alapul, amelyeket az alábbiakban említünk
- Szabványos szolgáltatási szerződés - A szolgáltatások betartják a szolgáltatás leírását. A szolgáltatásnak valamilyen leírással kell rendelkeznie, amely leírja, miről szól a szolgáltatás. Ez megkönnyíti az ügyfélalkalmazások számára a szolgáltatás működésének megértését.
- Laza összekapcsolás - Kisebb a függőség egymástól. Ez a webszolgáltatások egyik fő jellemzője, amely csak azt állítja, hogy a webszolgáltatások és a webszolgáltatásra hivatkozó kliens között a lehető legkevesebb függőségnek kell lennie. Tehát, ha a szolgáltatás funkcionalitása bármikor megváltozik, akkor nem szabad megszakítania az ügyfélalkalmazást, és nem kell megakadályoznia a működését.
- Szolgáltatás absztrakció - A szolgáltatások elrejtik az általuk beágyazott logikát a külvilág elől. A szolgáltatásnak nem szabad kitennie, hogy miként hajtja végre a funkcionalitását; csak meg kell mondania az ügyfélalkalmazásnak, hogy mit csinál, és nem arról, hogy hogyan.
- Szolgáltatás újrafelhasználhatósága - A logika szolgáltatásokra oszlik az újrafelhasználás maximalizálása céljából. Bármely fejlesztő vállalatnál az újrafelhasználhatóság nagy téma, mert nyilvánvalóan nem akarna időt és erőfeszítést fordítani ugyanazon kód újra és újra felépítésére több olyan alkalmazásban, amelyekre szükség van. Ezért, amint a webszolgáltatás kódja meg van írva, képesnek kell lennie a különféle alkalmazástípusokkal való együttműködésre.
- Szolgáltatás-autonómia - A szolgáltatásoknak ellenőrizniük kell az általuk beágyazott logikát. A szolgáltatás mindent tud arról, hogy milyen funkciókat kínál, és ezért teljes ellenőrzést kell gyakorolnia a benne lévő kód felett is.
- Szolgáltatás nélküli hontalanság - Ideális esetben a szolgáltatásoknak hontalanoknak kell lenniük. Ez azt jelenti, hogy a szolgálatoknak nem szabad visszatartaniuk az információkat egyik államtól a másikig. Ezt bármelyik ügyfélalkalmazásból kellene megtenni. Ilyen lehet például a vásárlási oldalon leadott megrendelés. Most már rendelkezhet webszolgáltatással, amely megadja Önnek egy adott termék árát. De ha a tételeket bevásárlókosárba helyezik, és a weboldal arra az oldalra navigál, ahol Ön fizeti, akkor a fizetési oldalra áthelyezendő tétel árának felelősségét nem a webszolgáltatásnak kell vállalnia. Ehelyett a webalkalmazásnak kell elvégeznie.
- Szolgáltatás-felfedezhetőség - A szolgáltatások felfedezhetők (általában egy szolgáltatás-nyilvántartásban). Ezt már láttuk az UDDI koncepciójában, amely egy olyan nyilvántartást végez, amely információkat tárolhat a webszolgáltatásról.
- Szolgáltatás összeegyeztethetősége - A szolgáltatások nagy problémákat apró problémákra bontanak . Soha nem szabad egyetlen alkalmazásba beépíteni az összes funkciót, hanem a szolgáltatást külön üzleti funkcionalitású modulokra kell bontani.
- Szolgáltatások interoperabilitása - A szolgáltatásoknak olyan szabványokat kell alkalmazniuk, amelyek lehetővé teszik a különböző előfizetők számára a szolgáltatás használatát. A webszolgáltatásokban az XML és a HTTP-n keresztüli kommunikáció szabványait használják annak biztosítására, hogy megfeleljenek ennek az elvnek.