Hvad er webtjenester? Architecture, Typer, Eksempel
โก Smart opsummering
Webtjenester leverer et standardiseret medie, som klient- og serverapplikationer kan bruge til at kommunikere via World Wide Web. Denne ressource forklarer, hvordan webtjenester fungerer, deres SOAP- og RESTful-typer, WSDL- og UDDI-komponenterne, arkitekturroller og nรธgleegenskaber.
Hvad er webservice?
Webtjeneste er et standardiseret medie til at udbrede kommunikation mellem klient- og serverapplikationer pรฅ WWW (World Wide Web). En webservice er et softwaremodul, der er designet til at udfรธre et bestemt sรฆt opgaver.
- Webtjenester i cloud computing kan sรธges efter over netvรฆrket og kan ogsรฅ aktiveres i overensstemmelse hermed.
- Nรฅr den pรฅberรฅbes, vil webtjenesten vรฆre i stand til at levere funktionaliteten til klienten, som pรฅkalder denne webtjeneste.
Hvordan fungerer webtjenester?
Ovenstรฅende diagram viser et meget forenklet billede af, hvordan en webtjeneste rent faktisk ville fungere. Klienten ville pรฅkalde en rรฆkke webservicekald via anmodninger til en server, som ville vรฆre vรฆrt for den faktiske webservice.
Disse anmodninger foretages via det, der kaldes fjernprocedurekald. Fjernprocedurekald (RPC) er kald til metoder, der hostes af den relevante webtjeneste.
Som et eksempel, Amazon leverer en webservice, der giver priser for produkter, der sรฆlges online via amazon.com. Frontend eller prรฆsentationslaget kan vรฆre i .Net eller Java, men begge programmeringssprog ville have mulighed for at kommunikere med webtjenesten.
Hovedkomponenten i et webservicedesign er de data, der overfรธres mellem klienten og serveren, og det er XML. XML (udvideligt markeringssprog) er en pendant til HTML og et letforstรฅeligt mellemsprog, der forstรฅs af mange programmeringssprog.
Sรฅ nรฅr applikationer kommunikerer med hinanden, kommunikerer de faktisk i XML. Dette giver en fรฆlles platform for applikationer udviklet i forskellige programmeringssprog, sรฅ de kan kommunikere med hinanden.
Webtjenester bruger noget kendt som SOAP (Simple Object Access Protocol) til at sende XML-data mellem applikationer. Dataene sendes over normal HTTP. De data, der sendes fra webtjenesten til applikationen, kaldes en SOAP-besked. SOAP-meddelelsen er intet andet end et XML-dokument. Da dokumentet er skrevet i XML, kan klientapplikationen, der kalder webservicen, skrives i et hvilket som helst programmeringssprog.
Hvorfor har du brug for en webservice?
Moderne forretningsapplikationer bruger en rรฆkke forskellige programmeringsplatforme til at udvikle webbaserede applikationer. Nogle applikationer kan vรฆre udviklet i Java, andre i .Net, mens nogle andre i Angular JS, Node.js osv.
Disse heterogene applikationer har oftest brug for en form for kommunikation mellem dem. Da de er bygget med forskellige udviklingssprog, bliver det virkelig vanskeligt at sikre prรฆcis kommunikation mellem applikationer.
Det er her, webtjenester kommer ind i billedet. Webtjenester giver en fรฆlles platform, der tillader flere applikationer bygget pรฅ forskellige programmeringssprog at have evnen til at kommunikere med hinanden.
Typer af webtjenester
Der er primรฆrt to typer webtjenester:
- SOAP webtjenester.
- RESTful webtjenester.
For at en webtjeneste kan vรฆre fuldt funktionel, er der visse komponenter, der skal vรฆre pรฅ plads. Disse komponenter skal vรฆre til stede uanset hvilket udviklingssprog der bruges til programmering af webtjenesten. Lad os se nรฆrmere pรฅ disse komponenter.
SOAP (Simple Object Access Protocol)
SOAP er kendt som en transportuafhรฆngig meddelelsesprotokol. SOAP er baseret pรฅ overfรธrsel af XML-data som SOAP-meddelelser. Hver meddelelse har noget, der kaldes et XML-dokument. Kun strukturen af โโXML-dokumentet fรธlger et specifikt mรธnster, men ikke indholdet. Det bedste ved webtjenester og SOAP er, at det hele sendes via HTTP, som er standardwebprotokollen.
Her er hvad en SOAP-besked bestรฅr af:
- Hvert SOAP-dokument skal have et rodelement kendt som element. Rodelementet er det fรธrste element i et XML-dokument.
- "Konvolutten" er til gengรฆld delt i 2 dele. Den fรธrste er overskriften, og den nรฆste er kroppen.
- Headeren indeholder routingdataene, som grundlรฆggende er den information, der fortรฆller XML-dokumentet, hvilken klient det skal sendes til.
- Brรธdteksten vil indeholde selve beskeden.
Diagrammet nedenfor viser et simpelt eksempel pรฅ kommunikation via SOAP.
Vi vil diskutere SOAP i detaljer i dette tutorial.
WSDL (Web Services Descriptionsprog)
En webtjeneste kan ikke bruges, hvis den ikke kan findes. Klienten, der kalder webtjenesten, skal vide, hvor webtjenesten rent faktisk befinder sig.
For det andet skal klientapplikationen vide, hvad webtjenesten rent faktisk gรธr, sรฅ den kan kalde den rigtige webtjeneste. Dette gรธres ved hjรฆlp af WSDL'en, kendt som Web Services. Description-sprog. WSDL-filen er igen en XML-baseret fil, der grundlรฆggende fortรฆller klientapplikationen, hvad webtjenesten gรธr. Ved at bruge WSDL-dokumentet vil klientapplikationen vรฆre i stand til at forstรฅ, hvor webtjenesten er placeret, og hvordan den kan bruges.
Eksempel pรฅ webservice
Et webserviceeksempel pรฅ en WSDL-fil er givet nedenfor.
<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>
De vigtige aspekter at bemรฆrke om ovenstรฅende WSDL-erklรฆringseksempler pรฅ webtjenester er som fรธlger:
- โ Meddelelsesparameteren i WSDL-definitionen bruges til at definere de forskellige dataelementer for hver handling, der udfรธres af webtjenesten. Sรฅ i ovenstรฅende webtjenesteeksempel har vi to beskeder, der kan udveksles mellem webtjenesten og klientapplikationen: den ene er "TutorialRequest", og den anden er handlingen "TutorialResponse". TutorialRequest indeholder et element kaldet "TutorialID", som er af typen streng. Tilsvarende indeholder TutorialResponse-handlingen et element kaldet "TutorialName", som ogsรฅ er en type streng.
- โ Dette beskriver faktisk den handling, som kan udfรธres af webtjenesten, som i vores tilfรฆlde kaldes Tutorial. Denne handling kan tage imod 2 beskeder: den ene er en inputbesked, og den anden er outputbeskeden.
- โ Dette element indeholder den protokol, der bruges. Sรฅ i vores tilfรฆlde definerer vi den til at bruge HTTP (http://schemas.xmlsoap.org/soap/http). Vi specificerer ogsรฅ andre detaljer for operationens brรธdtekst, sรฅsom navnerummet og om meddelelsen skal kodes.
Vi vil diskutere "WSDL" i detaljer i dette tutorial.
Universal Description, opdagelse og integration (UDDI)
UDDI er en standard til at beskrive, publicere og opdage de webtjenester, der leveres af en bestemt tjenesteudbyder. Det giver en specifikation, som hjรฆlper med at hoste oplysningerne pรฅ webtjenester.
Nu diskuterede vi i det forrige emne om WSDL, og hvordan det indeholder information om, hvad webtjenesten rent faktisk gรธr. Men hvordan kan en klientapplikation finde en WSDL-fil for at forstรฅ de forskellige operationer, der tilbydes af en webtjeneste? Sรฅ UDDI er svaret pรฅ dette og giver et lager, hvorpรฅ WSDL-filer kan hostes. Sรฅ klientapplikationen vil have fuld adgang til UDDI, der fungerer som en database, der indeholder alle WSDL-filerne.
Ligesom en telefonbog indeholder navn, adresse og telefonnummer pรฅ en bestemt person, vil UDDI-registret indeholde de relevante oplysninger til webtjenesten., sรฅ en klientapplikation ved, hvor den kan findes.
Fordele ved webtjenester
Vi forstรฅr allerede, hvorfor webtjenester opstod i fรธrste omgang, hvilket var for at levere en platform, der kunne give forskellige applikationer mulighed for at kommunikere med hinanden. Men lad os se pรฅ listen over fordele ved webtjenester for at forstรฅ, hvorfor det er vigtigt at bruge webtjenester.
- Eksponering af forretningsfunktionalitet pรฅ netvรฆrket โ En webtjeneste er en enhed af administreret kode, der leverer en form for funktionalitet til klientapplikationer eller slutbrugere. Denne funktionalitet kan kaldes via HTTP-protokollen, hvilket betyder, at den ogsรฅ kan kaldes via internettet. Nu om dage er alle applikationer pรฅ internettet, hvilket gรธr formรฅlet med webtjenester mere nyttigt. Det betyder, at webtjenesten kan vรฆre hvor som helst pรฅ internettet og levere den nรธdvendige funktionalitet efter behov.
- Interoperabilitet mellem applikationer โ Webtjenester tillader forskellige applikationer at kommunikere med hinanden og dele data og tjenester indbyrdes. Alle typer applikationer kan kommunikere med hinanden. Sรฅ i stedet for at skrive specifik kode, som kun kan forstรฅs af specifikke applikationer, kan man nu skrive generisk kode, der kan forstรฅs af alle applikationer.
- En standardiseret protokol, som alle forstรฅr โ Webtjenester bruger en standardiseret brancheprotokol til kommunikationen. Alle fire lag (servicetransport, XML-beskeder, service Description- og Service Discovery-lag) bruger veldefinerede protokoller i webservices-protokolstakken.
- Reduktion i omkostninger til kommunikation โ Webtjenester bruger SOAP over HTTP-protokol, sรฅ du kan bruge dit eksisterende lavprisinternet til at implementere webtjenester.
Web Services Architecture
Ethvert framework har brug for en eller anden form for arkitektur for at sikre, at hele frameworket fungerer som รธnsket. Tilsvarende gรฆlder det i webtjenester, at Web Services Architecture bestรฅr af tre forskellige roller som angivet nedenfor:
- Provider โ Udbyderen opretter webtjenesten og stiller den til rรฅdighed for klientapplikationer, der รธnsker at bruge den.
- Anmoder โ En anmoder er intet andet end klientapplikationen, der skal kontakte en webservice. Klientapplikationen kan vรฆre en .Net, Java, eller enhver anden sprogbaseret applikation, der sรธger efter en eller anden form for funktionalitet via en webtjeneste.
- Broker โ Brokeren er intet andet end den applikation, der giver adgang til UDDI. UDDI, som diskuteret i det tidligere emne, gรธr det muligt for klientapplikationen at finde webtjenesten.
Diagrammet nedenfor viser, hvordan tjenesteudbyderen, tjenesteanmoderen og tjenesteregistret interagerer med hinanden.
- Udgiv โ En udbyder informerer mรฆgleren (serviceregisteret) om webtjenestens eksistens ved at bruge mรฆglerens publiceringsgrรฆnseflade for at gรธre tjenesten tilgรฆngelig for klienter.
- Finde โ Anmoderen konsulterer mรฆgleren for at finde en offentliggjort webtjeneste.
- Binde โ Med de oplysninger, der er indhentet fra mรฆgleren (tjenesteregistret) om webtjenesten, kan anmoderen binde eller pรฅkalde webtjenesten.
Webtjenestens egenskaber
Webtjenester har fรธlgende sรฆrlige adfรฆrdsmรฆssige egenskaber:
- De er XML-baserede โ Webtjenester bruger XML til at reprรฆsentere dataene pรฅ reprรฆsentations- og datatransportlagene. Brug af XML eliminerer enhver afhรฆngighed af netvรฆrk, operativsystem eller platform, da XML er det fรฆlles sprog, der forstรฅs af alle.
- Lรธst forbundet โ Lรธst koblet betyder, at klienten og webservicen ikke er bundet til hinanden, hvilket betyder, at selvom webservicen รฆndrer sig over tid, bรธr den ikke รฆndre den mรฅde, klienten kalder webservicen pรฅ. Vedtagelse af en lรธst koblet arkitektur har en tendens til at gรธre softwaresystemer mere hรฅndterbare og tillader enklere integration mellem forskellige systemer.
- Synchronous eller asynkron funktionalitet - Synchronicity henviser til klientens binding til udfรธrelsen af โโtjenesten. I synkrone operationer vil klienten faktisk vente pรฅ, at webtjenesten fuldfรธrer en operation. Et eksempel pรฅ dette er sandsynligvis et scenarie, hvor en databaselรฆse- og skriveoperation udfรธres. Hvis data lรฆses fra รฉn database og efterfรธlgende skrives til en anden, sรฅ skal operationerne udfรธres pรฅ en sekventiel mรฅde. Asynkrone operationer giver en klient mulighed for at pรฅkalde en tjeneste og derefter udfรธre andre funktioner parallelt. Dette er en af โโde almindelige og sandsynligvis mest foretrukne teknikker til at sikre, at andre tjenester ikke stoppes, nรฅr en bestemt operation udfรธres.
- Mulighed for at understรธtte Remote Procedure Calls (RPC'er) โ Webtjenester gรธr det muligt for klienter at pรฅberรฅbe sig procedurer, funktioner og metoder pรฅ fjernobjekter ved hjรฆlp af en XML-baseret protokol. Fjernprocedurer afslรธrer input- og outputparametre, som en webservice skal understรธtte.
- Understรธtter dokumentudveksling โ En af de vigtigste fordele ved XML er dens generiske mรฅde at reprรฆsentere ikke kun data pรฅ, men ogsรฅ komplekse dokumenter. Disse dokumenter kan vรฆre sรฅ enkle som at reprรฆsentere en aktuel adresse, eller de kan vรฆre lige sรฅ komplekse som at reprรฆsentere en hel bog.




