Što su web usluge? Architekstura, vrste, primjer
Što je web usluga?
Web usluga je standardizirani medij za širenje komunikacije između klijentskih i poslužiteljskih aplikacija na WWW (World Wide Web). Web usluga je softverski modul koji je dizajniran za obavljanje određenog skupa zadataka.
- Web-usluge u računalstvu u oblaku mogu se pretraživati preko mreže i također se mogu pozvati u skladu s tim.
- Kada se pozove, web servis bi mogao pružiti funkcionalnost klijentu, koji poziva taj web servis.
Kako funkcioniraju web-usluge?
Gornji dijagram pokazuje vrlo jednostavan pogled na to kako bi web usluga zapravo funkcionirala. Klijent bi pozvao niz poziva web servisa putem zahtjeva prema poslužitelju koji bi ugostio stvarni web servis.
Ti se zahtjevi postavljaju putem onoga što je poznato kao pozivi udaljenih procedura. Remote Procedure Calls (RPC) su pozivi upućeni metodama koje hostira relevantna web usluga.
Kao primjer, Amazon pruža web uslugu koja pruža cijene za proizvode koji se prodaju online putem amazon.com. Front end ili prezentacijski sloj može biti u .Net ili Java ali bilo koji programski jezik bi imao mogućnost komunikacije s web uslugom.
Glavna komponenta dizajna web usluge su podaci koji se prenose između klijenta i poslužitelja, a to je XML. XML (proširivi označni jezik) je pandan HTML-u i lak za razumijevanje posredni jezik koji razumiju mnogi programski jezici.
Dakle, kada aplikacije razgovaraju jedna s drugom, one zapravo razgovaraju u XML-u. Ovo pruža zajedničku platformu za aplikacije razvijene u različitim programskim jezicima za međusobno komuniciranje.
Web usluge koriste nešto što je poznato kao SOAP (Simple Object Access Protocol) za slanje XML podataka između aplikacija. Podaci se šalju preko normalnog HTTP-a. Podaci koji se šalju s web servisa aplikaciji nazivaju se SOAP poruka. SOAP poruka nije ništa drugo nego XML dokument. Budući da je dokument napisan u XML-u, klijentska aplikacija koja poziva web servis može biti napisana u bilo kojem programskom jeziku.
Zašto vam je potrebna web usluga?
Suvremene poslovne aplikacije koriste različite programske platforme za razvoj web aplikacija. Neke aplikacije mogu se razvijati u Java, drugi u .Net, dok neki drugi u Angular JS, Node.js itd.
Najčešće nego ne, ove heterogene aplikacije trebaju neku vrstu komunikacije da se dogodi između njih. Budući da su izgrađene pomoću različitih razvojnih jezika, postaje stvarno teško osigurati točnu komunikaciju između aplikacija.
Ovdje na scenu stupaju web-usluge. Web-usluge pružaju zajedničku platformu koja omogućuje više aplikacija izgrađenih na različitim programski jezici da imaju sposobnost međusobnog komuniciranja.
Vrsta web usluge
Postoje uglavnom dvije vrste web usluga.
- SOAP web usluge.
- RESTful web usluge.
Kako bi web usluga bila u potpunosti funkcionalna, moraju biti postavljene određene komponente. Ove komponente moraju biti prisutne bez obzira koji se razvojni jezik koristi za programiranje web usluge.
Pogledajmo ove komponente detaljnije.
SOAP (protokol za pristup jednostavnom objektu)
SOAP je poznat kao protokol za razmjenu poruka neovisan o prijenosu. SOAP se temelji na prijenosu XML podataka kao SOAP poruka. Svaka poruka ima nešto što je poznato kao XML dokument. Samo struktura XML dokumenta slijedi određeni obrazac, ali ne i sadržaj. Najbolji dio web usluga i SOAP-a je to što se sve šalje putem HTTP-a, koji je standardni web protokol.
Evo od čega se sastoji SOAP poruka
- Svaki SOAP dokument mora imati korijenski element poznat kao element. Korijenski element je prvi element u XML dokumentu.
- "Omotnica" je pak podijeljena na 2 dijela. Prvo je zaglavlje, a sljedeće tijelo.
- Zaglavlje sadrži podatke o usmjeravanju koji su u osnovi informacije koje govore XML dokumentu kojem klijentu treba biti poslan.
- Tijelo će sadržavati stvarnu poruku.
Donji dijagram prikazuje jednostavan primjer komunikacije putem SOAP-a.
U ovom ćemo detaljno raspravljati o SOAP-u udžbenik.
WSDL (jezik opisa web usluga)
Web usluga se ne može koristiti ako se ne može pronaći. Klijent koji poziva web uslugu trebao bi znati gdje se web usluga zapravo nalazi.
Drugo, klijentska aplikacija mora znati što web usluga zapravo radi, tako da može pozvati pravu web uslugu. To se radi uz pomoć WSDL-a, poznatog kao jezik opisa web usluga. WSDL datoteka opet je datoteka temeljena na XML-u koja u osnovi govori klijentskoj aplikaciji što web usluga radi. Korištenjem WSDL dokumenta, klijentska aplikacija bi mogla razumjeti gdje se web usluga nalazi i kako se može koristiti.
Primjer web usluge
Primjer web usluge WSDL datoteke dan je u nastavku.
<definitions> <message name="TutorialRequest"> <part name="TutorialID" type="xsd:string"/> </message> <message name="TutorialResponse"> <part name="TutorialName" type="xsd:string"/> </message> <portType name="Tutorial_PortType"> <operation name="Tutorial"> <input message="tns:TutorialRequest"/> <output message="tns:TutorialResponse"/> </operation> </portType> <binding name="Tutorial_Binding" type="tns:Tutorial_PortType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="Tutorial"> <soap:operation soapAction="Tutorial"/> <input> <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:examples:Tutorialservice" use="encoded"/> </input> <output> <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:examples:Tutorialservice" use="encoded"/> </output> </operation> </binding> </definitions>
Važni aspekti koje treba imati na umu o gornjim primjerima WSDL deklaracije web usluga su sljedeći:
- – Parametar poruke u WSDL definiciji koristi se za definiranje različitih podatkovnih elemenata za svaku operaciju koju izvodi web usluga. Dakle, u gornjim primjerima web usluga imamo 2 poruke koje se mogu razmjenjivati između web usluge i klijentske aplikacije, jedna je "TutorialRequest", a druga je operacija "TutorialResponse". TutorialRequest sadrži element pod nazivom "TutorialID" koji je tipa string. Slično, operacija TutorialResponse sadrži element pod nazivom "TutorialName" koji je također niz tipa.
- – Ovo zapravo opisuje operaciju koju može izvesti web servis, a koji se u našem slučaju zove Tutorial. Ova operacija može uzeti 2 poruke; jedna je ulazna poruka, a druga je izlazna poruka.
- – Ovaj element sadrži protokol koji se koristi. Dakle, u našem slučaju definiramo da koristi http (http://schemas.xmlsoap.org/soap/http). Također specificiramo druge detalje za tijelo operacije, kao što je prostor imena i treba li poruka biti kodirana.
U ovom ćemo detaljno raspravljati o "WDSL-u". udžbenik.
Univerzalan Description, otkriće i integracija (UDDI)
UDDI je standard za opisivanje, objavljivanje i otkrivanje web usluga koje pruža određeni pružatelj usluga. Pruža specifikaciju koja pomaže u smještaju informacija na web uslugama.
Sada smo u prethodnoj temi raspravljali o WSDL-u i kako on sadrži informacije o tome što web usluga zapravo radi. Ali kako klijentska aplikacija može locirati WSDL datoteku da bi razumjela različite operacije koje nudi web usluga? Dakle, UDDI je odgovor na ovo i pruža repozitorij na kojem se mogu smjestiti WSDL datoteke. Tako će klijentska aplikacija imati potpuni pristup UDDI-ju, koji djeluje kao baza podataka koja sadrži sve WSDL datoteke.
Baš kao što telefonski imenik ima ime, adresu i telefonski broj određene osobe, na isti način će UDDI registar imati relevantne informacije za web uslugu. Tako da klijentska aplikacija zna gdje se može pronaći.
Prednosti web usluga
Već razumijemo zašto su se web usluge uopće pojavile, a to je da se pruži platforma koja bi omogućila različitim aplikacijama da međusobno komuniciraju.
Ali pogledajmo popis prednosti web usluga zašto je važno koristiti web usluge.
- Izlaganje poslovne funkcionalnosti na mreži – Web usluga je jedinica upravljanog koda koja pruža neku vrstu funkcionalnosti klijentskim aplikacijama ili krajnjim korisnicima. Ova se funkcionalnost može pozvati preko HTTP protokola, što znači da se može pozvati i preko interneta. Danas su sve aplikacije na internetu što svrhu web usluga čini korisnijom. To znači da web usluga može biti bilo gdje na internetu i pružati potrebnu funkcionalnost prema potrebi.
- Interoperabilnost među aplikacijama – Web usluge omogućuju različitim aplikacijama da međusobno komuniciraju i međusobno dijele podatke i usluge. Sve vrste aplikacija mogu međusobno komunicirati. Dakle, umjesto pisanja specifičnog koda koji mogu razumjeti samo određene aplikacije, sada možete napisati generički kod koji mogu razumjeti sve aplikacije
- Standardizirani protokol koji svi razumiju – Web usluge koriste standardizirani industrijski protokol za komunikaciju. Sva četiri sloja (prijenos usluge, slanje XML poruka, usluga Description i slojevi otkrivanja usluga) koristi dobro definirane protokole u nizu protokola web usluga.
- Smanjenje troškova komunikacije – Web usluge koriste SOAP preko HTTP protokola, tako da možete koristiti svoj postojeći jeftini internet za implementaciju web usluga.
Web usluge Architektura
Svaki okvir treba neku vrstu arhitekture kako bi osigurao da cijeli okvir radi po želji, slično je i u web uslugama. The Web usluge Architektura sastoji se od tri različite uloge kako je navedeno u nastavku:
- Davatelj – Davatelj kreira web uslugu i stavlja je na raspolaganje klijentskoj aplikaciji koja je želi koristiti.
- Podnositelj zahtjeva – Podnositelj zahtjeva nije ništa drugo nego klijentska aplikacija koja treba kontaktirati web uslugu. Klijentska aplikacija može biti .Net, Java, ili bilo koja druga aplikacija temeljena na jeziku koja traži neku vrstu funkcionalnosti putem web usluge.
- Mešetar – Broker nije ništa drugo nego aplikacija koja omogućuje pristup UDDI-ju. UDDI, kao što je objašnjeno u prethodnoj temi, omogućuje klijentskoj aplikaciji da locira web uslugu.
Donji dijagram prikazuje kako davatelj usluge, podnositelj zahtjeva za uslugu i registar usluge međusobno djeluju.
- Objaviti – Davatelj obavještava brokera (registar usluga) o postojanju web usluge korištenjem sučelja za objavljivanje brokera kako bi usluga bila dostupna klijentima
- naći – Podnositelj zahtjeva savjetuje se s posrednikom kako bi locirao objavljenu web uslugu
- vezati – S informacijama koje je dobio od posrednika (registra usluge) o web usluzi, podnositelj zahtjeva može vezati ili pozvati web uslugu.
Karakteristike web usluge
Web usluge imaju sljedeće posebne karakteristike ponašanja:
- Oni se temelje na XML-u – Web usluge koriste XML za predstavljanje podataka na slojevima reprezentacije i prijenosa podataka. Korištenje XML-a eliminira bilo kakvu ovisnost o umrežavanju, operativnom sustavu ili platformi jer je XML zajednički jezik koji svi razumiju.
- Labavo spojeni – Labavo povezano znači da klijent i web usluga nisu međusobno vezani, što znači da čak i ako se web usluga mijenja tijekom vremena, to ne bi trebalo promijeniti način na koji klijent poziva web uslugu. Usvajanje labavo spregnute arhitekture čini softverske sustave lakšim za upravljanje i omogućuje jednostavniju integraciju između različitih sustava.
- Synchronozna ili asinkrona funkcionalnost - Synchroničnost se odnosi na vezanost klijenta za izvršenje usluge. U sinkronim operacijama, klijent će zapravo čekati da web usluga dovrši operaciju. Primjer ovoga je vjerojatno scenarij u kojem se izvodi operacija čitanja i pisanja baze podataka. Ako se podaci čitaju iz jedne baze podataka i zatim zapisuju u drugu, tada se operacije moraju izvoditi na sekvencijalan način. Asinkrone operacije omogućuju klijentu da pozove uslugu i potom paralelno izvrši druge funkcije. Ovo je jedna od uobičajenih i vjerojatno najpoželjnijih tehnika za osiguranje da se druge usluge ne zaustave kada se izvodi određena operacija.
- Sposobnost podrške za pozive udaljenih procedura (RPC) – Web usluge omogućuju klijentima pozivanje procedura, funkcija i metoda na udaljenim objektima korištenjem protokola temeljenog na XML-u. Udaljene procedure izlažu ulazne i izlazne parametre koje web usluga mora podržavati.
- Podržava razmjenu dokumenata – Jedna od ključnih prednosti XML-a je njegov generički način predstavljanja ne samo podataka već i složenih dokumenata. Ovi dokumenti mogu biti jednostavni poput trenutne adrese ili mogu biti složeni poput cijele knjige.