Į paslaugą orientuota architektūra (SOA) yra architektūrinis kompiuterio programinės įrangos modelio modelis, kai programų komponentai teikia paslaugas kitiems komponentams per ryšio protokolą, paprastai per tinklą. Orientacijos į paslaugas principai nepriklauso nuo bet kurio produkto, pardavėjo ar technologijos.
SOA tiesiog palengvina programinės įrangos komponentų naudojimąsi įvairiuose tinkluose.
Žiniatinklio paslaugos, sukurtos pagal SOA architektūrą, daro žiniatinklio paslaugą labiau nepriklausomą. Pačios žiniatinklio paslaugos gali keistis duomenimis tarpusavyje ir dėl pagrindinių principų, kuriais jos yra sukurtos, joms nereikia jokios žmonių sąveikos ir nereikia keisti kodo. Tai užtikrina, kad tinklo žiniatinklio paslaugos gali sklandžiai bendrauti tarpusavyje.
SOA remiasi kai kuriais pagrindiniais principais, kurie yra paminėti žemiau
- Standartizuota paslaugų sutartis - paslaugos atitinka paslaugų aprašą. Paslauga turi turėti tam tikrą aprašą, apibūdinantį, kas yra paslauga. Tai leidžia kliento programoms lengviau suprasti, ką daro paslauga.
- Laisvas sujungimas - mažesnė priklausomybė vienas nuo kito. Tai yra viena iš pagrindinių interneto paslaugų savybių, kuri tik nurodo, kad tarp žiniatinklio paslaugų ir kliento, besikreipiančio į interneto paslaugą, turėtų būti kuo mažiau priklausomybė. Taigi, jei paslaugos funkcionalumas pasikeičia bet kuriuo metu, tai neturėtų sugadinti kliento programos ar sustabdyti jos veikimą.
- Paslaugų abstrakcija - paslaugos slepia logiką, kurią jos apima iš išorinio pasaulio. Paslauga neturėtų atskleisti, kaip ji vykdo savo funkcionalumą; ji turėtų tiesiog pasakyti kliento programai, ką ji daro, o ne apie tai, kaip ji daro.
- Paslaugų pakartotinis naudojimas - logika yra padalijama į paslaugas, siekiant maksimalaus pakartotinio naudojimo. Bet kurioje plėtros įmonėje pakartotinis naudojimas yra didelė tema, nes akivaizdu, kad nenorėtumėte praleisti laiko ir pastangų kurdami tą patį kodą vėl ir vėl keliose programose, kurioms jų reikia. Taigi, parašius žiniatinklio paslaugos kodą, jis turi galimybę dirbti su įvairiais programų tipais.
- Paslaugų autonomija - paslaugos turėtų kontroliuoti logiką, kurią jos apima. Tarnyba žino viską, kokią funkciją ji siūlo, todėl turėtų visiškai kontroliuoti joje esantį kodą.
- Paslaugų neturėjimas be pilietybės - idealiu atveju paslaugos turėtų būti be pilietybės. Tai reiškia, kad tarnybos neturėtų slėpti informacijos iš vienos valstybės į kitą. Tai turėtų būti padaryta iš kliento programos. Pavyzdžiu gali būti užsakymas, pateiktas prekybos svetainėje. Dabar galite turėti žiniatinklio paslaugą, kurioje nurodoma konkretaus daikto kaina. Bet jei prekės pridedamos prie pirkinių krepšelio ir tinklalapis pereina į puslapį, kuriame atliekate mokėjimą, žiniatinklio tarnyba neturėtų prisiimti atsakomybės už į mokėjimo puslapį perkeltinos prekės kainą. Vietoj to tai turi padaryti žiniatinklio programa.
- Paslaugų aptinkamumas - paslaugas galima atrasti (dažniausiai paslaugų registre). Tai jau matėme UDDI, kuris atlieka registrą, kuriame telpa informacija apie žiniatinklio paslaugą, koncepcijoje.
- Paslaugų suderinamumas - paslaugos suskirsto dideles problemas į mažas problemas. Niekada nereikėtų įterpti visų programos funkcijų į vieną paslaugą, o suskirstyti paslaugą į modulius, turinčius atskirą verslo funkciją.
- Paslaugų sąveika . Paslaugose turėtų būti naudojami standartai, leidžiantys įvairiems abonentams naudotis paslauga. Internetinėse paslaugose naudojami XML standartai ir ryšys per HTTP, siekiant užtikrinti, kad jis atitiktų šį principą.