Metodologije za razvoj spletnih storitev – razvoj mobilnih aplikacij, spletne storitve, SOA arhitektura – tehnologija
Preskoči na vsebino

Metodologije za razvoj spletnih storitev – razvoj mobilnih aplikacij, spletne storitve, SOA arhitektura

Oglasi

Coulouris je definiral porazdeljene sisteme kot "sisteme, v katerih komponente strojne in/ali programske opreme, ki obstajajo v računalniškem omrežju, komunicirajo in usklajujejo svoja dejanja z izmenjavo sporočil".

Ta koncept je v zadnjih letih postal priljubljen zaradi več dejavnikov. Prvi dejavnik, ki je spodbudil razvoj porazdeljenih sistemov, je bil pojav hitrih lokalnih omrežij. Drugi pomemben dejavnik je bil tehnološki napredek pri delovanju osebnih računalnikov in razvoj programske opreme za podporo porazdeljenih aplikacij. Porazdeljeni sistemi so povezani s konceptom spleta in interneta. Z razvojem spleta in pojavom novih področij, interakcij, potreb in aplikacij se pojavi koncept spleta 2.0. Ta izraz je leta 2004 skoval Tim O'Reilly za drugo generacijo v zgodovini spleta, ki temelji na uporabniških skupnostih in posebnem naboru storitev, kot so socialna omrežja, blogi, wikiji ali folksonomije, ki spodbujajo sodelovanje in agilno izmenjava informacij med uporabniki.

Prve arhitekture, ki jih lahko štejemo za storitveno usmerjene (SOA), so temeljile na CORBA (Common Object Request Broker Architecture), ki je delovala kot abstraktna plast za medsebojno povezovanje različnih elementov arhitekture in gradnjo storitev. Druge zgodnje tehnologije so bile DCOM (Distributed Component Object Model) ali RPC (Remote Procedure Protocol). S potrebo po učinkovitem načrtovanju in izvajanju porazdeljenih sistemov na spletu se pojavlja več izzivov, nekateri so osredotočeni na sam razvoj (zmogljivost, uporabniška izkušnja itd.), drugi pa komplementarni, ki temeljijo na ponovni uporabi in združljivosti storitev. Iz teh potreb izhajajo spletne storitve, ki zagotavljajo standardizirane mehanizme za medsebojno povezovanje različnih uporabnikov z informacijskimi strežniki.

STORITEVNO USMERJENE ARHITEKTURE

Po SOA (Service Oriented Architecture) so to programske arhitekture, ki definirajo uporabo storitev za podporo poslovnim zahtevam, katerih cilj je doseči čim manjše povezovanje med programskimi agenti. Storitev je enota dela, ki ga izvaja ponudnik storitve, da doseže končni rezultat, ki ga želi uporabnik storitve. Ponudnik storitev in uporabnik storitev sta vlogi, ki ju igrata agenta programske opreme, ne njuna lastnika. V splošnem je storitveno usmerjena arhitektura programska rešitev, ki podjetju omogoča organizacijo in uporabo različnih procesov. S SOA programske aplikacije niso več ogromni bloki funkcij in procesov. Namesto tega so te aplikacije sestavljene iz sestavljenih modularnih storitev. Ne pozabite, da je storitev preprosta programska funkcija (na primer preklic predvajanja na CD-ju). Na zahtevo ga lahko izvaja kateri koli sistem, ne glede na operacijski sistem, platformo, programski jezik ali geografsko lokacijo.

Tisto, kar je revolucionarno pri SOA, ni sam koncept, ki je prisoten že dolgo časa, temveč dejstvo, da ga je mogoče implementirati prek WWW (World Wide Web). Tako kot se spletne strani nalagajo na kateri koli platformi, tudi spletne storitve delujejo na podoben način ne glede na platformo, na kateri so zgrajene
univerzalne standarde.

FotografijaIdeja o SOA izhaja neposredno iz objektno usmerjenega programiranja, ki nakazuje razmerje med podatki in njihovo obdelavo. Tako formalno definirajo storitve prek vmesnikov, ki so neodvisni od osnovne platforme in programskega jezika. Ti vmesniki skrivajo posebnosti njihove izvedbe, zaradi česar so neodvisni od razvijalec in programski jezik. S temi arhitekturami je mogoče načrtovati in izvajati visoko razširljive sisteme, ki odražajo poslovno logiko in hkrati olajšajo interakcijo med različnimi lastniškimi sistemi ali sistemi tretjih oseb. Razlog, zakaj želimo, da nekdo opravi delo namesto nas, je ta, da je strokovnjak. Uporaba storitve je na splošno cenejša in učinkovitejša kot če to storite sami. Torej večina od nas razume, da ne moremo biti strokovnjaki za vse. Enako pravilo lahko uporabimo za gradnjo programskih sistemov.

Vmesniki so izjemno pomembni, če niso dobro definirani ali ne delujejo, sistem ne deluje. Integracija več vmesnikov je draga in povečuje tudi možnost napak v porazdeljenih aplikacijah. Oddaljeni vmesniki so najpočasnejši del večine distribuiranih aplikacij. Ob vsem tem je namesto gradnje novih vmesnikov za vsako aplikacijo bolj smiselno ponovno uporabiti generične vmesnike za vse aplikacije.

Torej, ker imamo na voljo le nekaj generičnih vmesnikov, moramo v sporočila vključiti semantiko, specifično za aplikacijo. Prek naših vmesnikov lahko pošljemo katero koli vrsto sporočila, vendar je treba upoštevati nekaj pravil, ki trdijo, da je arhitektura storitveno usmerjena.

– Prvič, sporočila morajo biti opisna, ne poučna, saj je za rešitev problema odgovoren ponudnik storitev. Na primer, to bi bilo podobno situaciji, ko bi šli v restavracijo in natakarju povedali, kaj želite piti in kaj želite, vendar kuharju ne bi smeli razlagati, kako naj pripravi vaše jedi, korak za korakom.

‐ Drugič, ponudniki storitev ne bodo mogli razumeti vaše zahteve, če njihova sporočila niso napisana v obliki, strukturi in besedišču, ki je razumljivo vsem vpletenim. Tako je omejevanje besedišča in strukture sporočil a
potrebnih za učinkovito komunikacijo. Bolj ko je sporočilo omejeno, lažje ga je razumeti.

‐ Tretjič, možnost podaljšanja je ključnega pomena. Svet se nenehno spreminja, prav tako pa tudi okolje, v katerem živi programska oprema. Te spremembe zahtevajo ustrezne spremembe sistemske programske opreme, potrošnikov storitev, ponudnikov in sporočil, ki si jih izmenjujejo. Če sporočila niso razširljiva, bodo potrošniki in ponudniki zaklenjeni na določeno različico storitve. Omejitev in razširljivost sta globoko povezani, potrebujete oboje in povečanje enega pomeni zmanjšanje drugega. Idealno je doseči pravilno ravnotežje.

– Četrtič, SOA mora imeti mehanizem, ki potrošniku omogoča, da odkrije ponudnika storitev v kontekstu storitve, ki jo potrošnik išče. Mehanizem mora biti prilagodljiv in ne sme biti centraliziran register.

‐ Petič, storitev brez državljanstva: vsako sporočilo, ki ga potrošnik pošlje ponudniku, mora vsebovati vse informacije, ki jih ponudnik potrebuje za obdelavo. Zaradi te omejitve je ponudnik storitev bolj razširljiv, ker ponudniku ni treba shranjevati informacij o stanju med zahtevami. To lahko imenujemo "storitev množične proizvodnje", saj je vsako zahtevo mogoče obravnavati generično. Ta omejitev zagotavlja tudi večjo vidljivost, saj lahko katera koli programska oprema za spremljanje pregleda neodvisno zahtevo in izlušči njen namen. To omogoča tudi enostavno obnovitev po delnih okvarah, saj ni vmesnih stanj, zaradi česar je storitev bolj zanesljiva.

‐ Šestič, idempotentne zahteve (ki ne spreminjajo): podvojene zahteve, ki jih prejme programski agent, imajo enak učinek kot ena zahteva. Ta zahteva omogoča ponudnikom in potrošnikom, da povečajo splošno zanesljivost storitev, preprosto ponovitev zahteve, če je prišlo do kakršne koli napake.

Tako lahko rečemo, da SOA ni orodje, temveč skupek standardov za gradnjo novih, bolj dinamičnih in manj odvisnih aplikacij. SOA olajša dostop do poslovne logike in informacij med različnimi storitvami na sistematičen način in lahko tudi organizira več oddaljenih storitev, da tvorijo eno samo. Večina Definicije opredeljujejo uporabo spletnih storitev, ki jih bomo videli v naslednjem poglavju, pri izvajanju storitveno usmerjene arhitekture. Vendar pa ga je mogoče implementirati s katero koli drugo tehnologijo, ki temelji na storitvah.