Što su web usluge i zašto su važne? Što je "web usluga" na jednostavnom engleskom jeziku

Aleksandar Kačanov

Ideju web usluga razvili su takvi divovi računalne industrije kao što su Sun, Oracle, HP, Microsoft i IBM. Ova ideja nije ništa novo, ali je veliki korak naprijed u olakšavanju pristupa programima putem weba. Na temelju standardnih komunikacijskih formata, web usluge općenito mogu promijeniti naše shvaćanje o tome kako trebamo izrađivati ​​web stranice.

Što je web usluga?

Zahvaljujući web uslugama, funkcije bilo kojeg programa mogu biti dostupne putem interneta. Dakle, programi kao što su PHP, ASP, JSP skripte, JavaBeans, COM objekti i svi ostali naši omiljeni alati za programiranje sada mogu pristupiti nekom programu koji se izvodi na drugom poslužitelju (tj. web servisu) i koristiti odgovor primljen od nje na njezinoj web stranici ili aplikaciji.

Recimo, ako trebam obaviti neki programski zadatak, a prezauzet sam (ili sam izvan sebe da sam izmišljam kotač), mogu koristiti usluge web servisa kojem će moja stranica pristupati putem Interneta. Prosljeđujući zahtjev s parametrima web servisu, očekujem da ću dobiti odgovor koji će sadržavati rezultat mog zahtjeva.

Svatko tko je ikada radio s vruća pošta, već se susreo s nekim web servisima: sustav provjere autentičnosti korisnika Passport jedna je od usluga uključenih u inicijativu Microsoft .NET. dok je dostupan besplatno, tako da kreatori web stranica mogu jednostavno implementirati autentifikaciju korisnika na svojim stranicama.

Osnove

Načela koja stoje iza web usluga iznimno su jednostavna. I ne dodaju ništa novo u svijet distribuiranog računarstva i Interneta:

  • osoba odgovorna za web servis definira format zahtjeva za svoj web servis i njegove odgovore
  • bilo koje računalo na mreži postavlja zahtjev web servisu
  • web servis obrađuje zahtjev, izvodi neku radnju i zatim šalje odgovor

Ta radnja može biti, na primjer, prikaz burzovne ponude, prikaz cijene određenog proizvoda, spremanje unosa u kalendaru sastanka, prijevod teksta s jednog jezika na drugi ili provjera broja kreditne kartice.

Standardi u srži

Razlog zašto smo svi odjednom zainteresirani za web servise je taj što se temelje na standardima, otvorenim protokolima za razmjenu i prijenos podataka.

Prije toga, mnoge su tvrtke razvile svoje vlastite standarde i formate. A sada, za posao, trebamo znati samo jednostavan XML (eXtensible Markup Language), koji se prenosi preko starog poznatog HTTP protokola. To znači da su informacije o tome kako funkcioniraju web servisi dostupni svima, a web programeri koji su po struci upoznati s ovim tehnologijama već danas se mogu početi igrati s web servisima.

Razlika između web usluga i drugih tehnologija na koje su programeri naišli (na primjer, DCOM, imenovane cijevi - imenovane cijevi, RMI) je u tome što se web usluge temelje na otvorenim standardima, lako ih je naučiti i ti su standardi široko podržani na sve Unix i Windows platforme.

Simple Object Access Protocol (SOAP) standardni je protokol koji je razvio W3C. Definira format zahtjeva web uslugama.

Poruke između web servisa i njegovog korisnika pakiraju se u SOAP omotnice (SOAP omotnice). Poruke sadrže ili zahtjev za izvođenje neke radnje ili odgovor - rezultat izvođenja te radnje. Omotnica i njezin sadržaj kodirani su XML-om i prilično ih je lako razumjeti. Evo kako izgleda jednostavan SOAP zahtjev koji se putem HTTP-a šalje web servisu:

xmlns:env="http://www.w3.org/2001/06/soap-envelope">


xmlns:m="http://www.somesite.com/postcode">
WC1A8GH
UK


Ključne elemente SOAP omotnice lako je prepoznati: to su dva parametra ( ("poštanski broj") i ("država")), koji se nalaze unutar elementa tzv . Ovaj element je naziv web servisa kojem šaljemo zahtjev. Ostali podaci u omotnici, kao što je kodiranje teksta i verzija SOAP-a, pomažu web-usluzi da pravilno obradi zahtjev.

A odgovor će izgledati ovako:

xmlns:env="http://www.w3.org/2001/06/soap-envelope" >

env:encodingStyle="http://www.w3.org/2001/06/soap-encoding"
xmlns:m="http://www.somesite.com/postcode">
Da


Ovu poruku je još lakše dešifrirati. Element u našem upitu promijenjen u element kao odgovor na zahtjev. Ovaj element sadrži samo jedan element , čija vrijednost pokazuje je li naš poštanski broj točan ili ne. Dakle, pomoću magije SOAP-a, stvorili smo upit koji čini koristan posao za nas. Kao odgovor, putem mreže, dobivamo određenu vrstu odgovora u XML-u.

Sada o UDDI

Čak i uz jednostavnost SOAP protokola, bilo bi malo koristi od web usluga da nemamo načina da ih pronađemo. Srećom, IBM, Microsoft i Ariba preuzeli su inicijativu i kreirali projekt Universal Description, Discovery and Integration (UDDI), za koji se nadaju da će postati zajednički katalog svih web usluga na webu.

UDDI sustav omogućuje tvrtkama da svoje web usluge izlože javnosti. Ovaj imenik funkcionira kao telefonski imenik svih web usluga. Upis u UDDI imenik je besplatan, a osnivači projekta se nadaju da će ovaj imenik sadržavati opise svih-svih-svih usluga diljem Weba, tako da će samo jedan UDDI imenik biti dovoljan za pronalaženje željene web usluge.

Kako sve to funkcionira

Dakle, kako mogu pronaći pravu web uslugu?

Zamislimo da sam razvojni programer web stranica i moj me klijent zamolio da dodam novu značajku web mjestu: moram dodati potvrdu valjanosti poštanskog broja u obrazac za registraciju.

Da bih izvršio ovu provjeru, trebao bih izraditi bazu podataka svih poštanskih brojeva svih 30 zemalja u kojima naša tvrtka posluje, a zatim provjeriti odgovara li poštanski broj gradu navedenom u registraciji tijekom registracije. Ali ja nemam te podatke i mislim da će prikupljanje takvih podataka morati potrošiti značajan iznos novca.

Umjesto da se odvojim za kupnju baze podataka, pisanje vlastitog koda, provjeravanje jesu li svi podaci dosljedni i točni i otklanjanje pogrešaka u skriptama, jednostavno odem u UDDI direktorij i potražim web uslugu koja bi mogla obaviti posao umjesto mene. Dolaskom na http://www.uddi.org/ , pokrećem pretragu i pronalazim izvrsnu uslugu tvrtke XYZ Corp.

Pažljivo pregledavam definiciju formata web usluge (definicija je napisana u WSDL (Web Services Description Language), uvjeravam se da usluga radi točno ono što mi treba. Zatim pitam svoje kolege o reputaciji XYZ Corp., saznajem da solidan je, a zatim kontaktiram XYZ Corp. za cijenu, ako je cijena za pristup usluzi unutar mog proračuna, napišem jednostavnu JSP stranicu za svoju web-lokaciju koja poziva web-uslugu XYZ Corp, i hej, trenutna naplata se pojavljuje na mjesto poštanski broj.

Vrijedi odvojiti vrijeme

Čak i ako nemate nikakve veze s programiranjem ili tehnologijama za razvoj web stranica, o web uslugama vrijedi naučiti više. Zamislite sliku kako s klijentom razgovarate o novom mjestu, razgovarajući o svim funkcijama novog projekta. Sve ide odlično: proračun ispunjava očekivanja klijenta, svidio mu se nacrt plana lokacije, svidjeli su mu se primjeri sučelja. Čini se da sve radi.

I odjednom se sjete neke vrlo složene funkcije. Na sam spomen vašeg web developera lice pozeleni, a on sam se počinje gušiti u kašlju. Ovo je programer koji vam daje signal da će razvoj ove značajke zahtijevati puno novca i vremena ili jednostavno nije izvediv s takvim budžetom.

Odbaci strah! Mogu se kladiti da na webu već postoji web-usluga koja vam je spremna pružiti potrebnu funkciju, a trošak korištenja ove web-usluge bit će puno niži od troška samostalnog razvoja njezinog analoga. Tako ćete svog programera spasiti od nepotrebnih glavobolja, a svog klijenta od gubljenje novca, samo nekoliko minuta pregledavajući UDDI katalog.

Razvoj usluga

Naravno, programeri se ne moraju zadovoljiti samo web uslugama koje su stvorili drugi. Uz pomoć jednog od sljedećih alata, možete kreirati vlastitu web uslugu i pružati njezine usluge ostalim stanovnicima mreže.

Izbor alata za razvoj web usluga je velik. Uključuje alate tvrtki kao što su Sun (Open Net), Microsoft (.NET), (e-usluge) i IBM (Web usluge). Postoje i okviri otvorenog koda. Na primjer, Mono projekt nastoji zamijeniti Microsoft .NET toolkit pružajući sustav kompilacije (kompilatori), izvršavanje koda (runtime) i biblioteke (biblioteke) za pokretanje istih web usluga na svim platformama, uključujući Unix.

Unatoč raznolikosti poslužitelja i alata za razvoj web usluga, svi oni podržavaju isti SOAP protokol, XML jezik i UDDI sustav.

minusi

Prije nego što u potpunosti napustim karijeru programera i posvetim se korištenju web servisa, moram si postaviti pitanje: "Ova slika je previše ružičasta. Što nije u redu s njom?". Nažalost, postoji cijena koju treba platiti za veliki potencijal web usluga:

  • Korištenje XML-a kao formata za prijenos podataka rezultira time da su vaše poruke vrlo velike: same XML oznake zauzimaju puno prostora, a to nam nameće određeno opterećenje pri kreiranju, prijenosu i interpretaciji poruka.
  • Budući da koristimo udaljena računala za obavljanje određenih funkcija u potpunosti se oslanjamo na Internet, što stvara previše nepouzdanih karika u lancu između našeg web poslužitelja i web usluge.
  • Trenutačno malo tvrtki stvara web usluge i malo ih tvrtki koristi. Još uvijek je potrebno dosta vremena za otklanjanje pogrešaka i poboljšanje sustava web usluga.
  • Programeri tek trebaju usvojiti sustav licenciranja i naplate korištenja web usluga. Zbog činjenice da web servisa još uvijek ima premalo, većina tvrtki nastoji ostaviti dobar dojam na potencijalne kupce namjernim snižavanjem cijena usluga i povoljnim uvjetima licenciranja. Još će proći neko vrijeme prije nego što se razjasni stvarna cijena usluga web usluga.

Kada web usluge zauzmu svoje mjesto i postanu dostupne svima, postat će neprocjenjiva pomoć web programerima. Oni će nam dati fleksibilan pristup punoj snazi ​​svih računala na webu. Vrijeme je da se oni koji izrađuju web stranice zainteresiraju za web usluge i saznaju više o tome što od njih mogu dobiti.

Napomena: Područja upotrebe. Prednosti. Značajke razvoja web servisa za .NET platformu. Opis i otkrivanje web usluge

Što je XML web usluga?

Razvojem informacijske tehnologije nastali su različiti pristupi pisanju programa: modularni programiranje, vođen događajima programiranje, orijentiran na komponente programiranje i dizajn. Logičan nastavak ovih pristupa bio je orijentiran na usluge razvoj softvera.

Korištenje pristupa usmjerenih na uslugu omogućuje nam da govorimo o ponovnoj uporabi (reuse) na makrorazini (razini usluge), za razliku od mikrorazine (razini objekta). Pristup orijentiran na usluge uključuje korištenje jednostavnih i općeprihvaćenih standarda, što omogućuje širokom spektru aplikacija da međusobno koriste funkcionalnost. Usluge se mogu pisati korištenjem širokog spektra programskih jezika, na različitim platformama. Osim toga, usluge se mogu postaviti zasebno ili kao dio programskog paketa bilo gdje u svijetu i tako će omogućiti pristup njihovim funkcionalnostima preko mreže.

Nazovimo servis resurs koji implementira poslovnu funkciju i ima sljedeća svojstva:

  • može se ponovno koristiti;
  • definirano jednim ili više eksplicitnih sučelja neovisnih o tehnologiji;
  • labavo povezani s drugim sličnim resursima i mogu se pozvati putem komunikacijskih protokola koji omogućuju međusobnu interakciju resursa.

Poseban slučaj usluge je XML web usluga.

XML web usluga je posebna vrsta web aplikacije koja:

  • postavljen na web poslužitelju;
  • objavljuje web metode koje mogu pozivati ​​vanjski klijenti;
  • čeka na primitak HTTP zahtjeva, koji su naredbe za pozivanje web metoda;
  • izvršava web metode i vraća rezultate.

Za razliku od tradicionalne web aplikacije, web usluga nema korisničko sučelje. Umjesto toga ima API, odnosno web servis koji pruža funkcije (web metode) koje se mogu pozivati ​​na daljinu (na primjer, preko interneta). Web usluga nije dizajnirana da služi krajnjim korisnicima. Njegov je posao pružanje usluga drugim aplikacijama, bilo da se radi o web aplikacijama, GUI aplikacijama ili konzolnim aplikacijama.

Web usluga može pružiti informacije u stvarnom vremenu o cijenama dionica, provjeriti kreditne kartice ili prijaviti vremensku prognozu. Web usluge su raznolike kao i konvencionalne aplikacije.

Web usluge nisu vlasništvo određene tvrtke. To je industrijski standard temeljen na otvorenim protokolima (SOAP, HTTP, itd.). Web usluge raspoređene su na različitim platformama (uključujući poslužitelje sa sustavom Windows ili UNIX). Web usluge mogu se razvijati korištenjem mnogih razvojnih alata (od uređivača teksta do obitelji Microsoft Visual Studio).

Metode većine web usluga pozivaju se HTTP zahtjevima koji sadrže SOAP poruke. SOAP je XML jezik (XML vokabular) za pozivanje udaljenih procedura preko HTTP-a i drugih protokola (potpuni opis SOAP-a http://www.w3.org/TR/SOAP) .

Mjesto web usluga među ostalim tehnologijama za daljinsko pozivanje

Postoji mnogo protokola i tehnologija za daljinsko pozivanje: Microsoftov distribuirani komponentni objektni model (DCOM), Brokerska arhitektura zajedničkih zahtjeva za zahtjeve objekata (CORBA), Sunovo udaljeno pozivanje metoda (RMI), . NET Remoting, XML web usluge.

Sve ove tehnologije orijentirane na komponente (DCOM, CORBA i RMI) već se godinama uspješno koriste u Intranet aplikacijama. Oni pružaju robusnu, skalabilnu arhitekturu. Međutim, postoje dva glavna problema s korištenjem ovih tehnologija na Internetu. Prvo, oni ne djeluju dobro jedni s drugima. Sve tehnologije rade na objektima, ali se značajno razlikuju u detaljima: upravljanje životnim ciklusom, podrška za konstruktore i stupanj podrške nasljeđivanju. Drugi, važniji aspekt je da fokus na RPC interakcije dovodi do izgradnje čvrsto povezanih sustava temeljenih na eksplicitnim pozivima objektne metode.

Za razliku od ovih tehnologija, XML Web Services i . NET Remoting u potpunosti implementiran objektno orijentirani pristup za web programiranje.

XML web usluga- komponenta koja internetskim klijentima pruža skup API funkcija ili web metoda. XML je dio naziva jer ga web servisi i njihovi klijenti koriste za razmjenu podataka. Web usluge temelje se na otvorenim standardima kao što su HTTP, XML (Extensible Markup Language), SOAP (Simple Object Access Protocol – internetski standard koji opisuje kako aplikacije mogu međusobno komunicirati, odnosno međusobno pozivati ​​metode, koristeći HTTP i druge protokole). Glavna zadaća web servisa je osigurati međuprogramsku interakciju. Mnogi rade na UNIX poslužiteljima i pristupaju im Windows klijenti. Podaci proslijeđeni web uslugama serijaliziraju se u XML i šalju u SOAP paketima. Metapodaci o sadržaju takvih poruka pohranjuju se u WSDL ugovoru web usluge i XSD shemama. Glavna prednost ovog pristupa je čitljivost metapodataka. Razvojni programer može jednostavno vidjeti cijeli opis web usluge, pa čak i stvoriti vlastiti modul koji analizira SOAP pakete.

.NET udaljeno upravljanje osigurava infrastrukturu za distribuirane objekte. Mnogo je složeniji od jednostavne arhitekture web usluga temeljene na prosljeđivanju poruka. . NET Remoting uključuje prosljeđivanje parametara prema referenci i vrijednosti, povratne pozive, višestruku aktivaciju objekata i politike upravljanja životnim ciklusom. Za korištenje ovih značajki klijentska aplikacija mora biti vješta u svim tehnologijama. Podaci u. NET Remoting šalju se u binarnom ili SOAP formatu. Međutim, u svakom slučaju, metapodaci o strukturi prenesenih informacija sadržani su u zajedničkom jezičnom vremenu izvođenja. Bez zajedničkog jezičnog izvođenja (CLR), klijentska aplikacija neće moći analizirati . NET Remoting SOAP zaglavlja. To je. NET Remoting ima znatno veće zahtjeve od web usluga.

Razvoj web servisa na .NET platformi

Postoji mnogo načina za pisanje web usluga. Mogu se razvijati ručno ili pomoću SOAP alata koje pružaju Microsoft, IBM i dr. Pisanje web usluga s Microsoftom. NET ima dvije prednosti:

  • .NET Framework uvelike pojednostavljuje proces razvoja pružajući biblioteku klasa i automatizirajući pojedinačne korake razvoja;
  • Web usluge napisane s .NET Frameworkom su upravljane aplikacije. To jest, u takvim aplikacijama nema problema s curenjem memorije, netočno inicijaliziranim pokazivačima i drugim tipičnim programskim problemima.

Stvaranje

Razvijmo jednostavnu web uslugu AdditionService koja izvodi zbrajanje dva broja. Imat će samo jednu metodu Add koja uzima dva cijela broja kao parametar i također vraća cijeli broj. AdditionService demonstrira nekoliko važnih principa za programiranje web usluga pomoću Microsoft .NET Framework.

  • Web usluge su implementirane kao ASMX datoteke. ASMX je posebna ekstenzija naziva datoteke registrirana s ASP .NET (točnije, ASP.NET HTTP Handler) u glavnoj konfiguracijskoj datoteci ASP .NET Machine.config.
  • ASMX datoteke počinju direktivom @WebService. Ova direktiva mora sadržavati barem atribut Class, koji specificira klasu od koje se sastoji web usluga.
  • Klase web usluga mogu imati izborne atribute WebService. U ovaj primjer takav atribut specificira naziv web usluge i opis koji se prikazuje na HTML stranici kada korisnik pozove AdditionService.asmx u pregledniku.
  • Web metode se deklariraju dodjeljivanjem atributa WebMethod javnim metodama klase web usluge. Za pomoćne metode koje se koriste interno, ali nisu dostupne vanjskim klijentima, ovaj se atribut jednostavno izostavlja.
  • HTTP, XML i SOAP su "nevidljivi". XML podacima i SOAP porukama upravlja .NET Framework.

AdditionService.asmx<%@ WebService language="C#" Class="AddService" %>koristeći System koristeći System.Web.Services class AddService ( public int Add (int a, int b) ( return a + b ) )

Unatoč svojoj maloj veličini, AdditionService.asmx je potpuna web usluga kada se instalira na ASP.NET web poslužitelju. Njegove se metode pozivaju pomoću SOAP-a, HTTP GET-a i HTTP POST-a, a može vratiti rezultate kao SOAP odgovore ili kao jednostavne XML omote.

Korištenjem pozadinskog koda, klase web usluga mogu se izvaditi iz asmx datoteka u zasebne datoteke.

Web usluge podržavaju korištenje složene vrste podataka kao ulazni ili izlazni parametri. Podržani su složeni tipovi podataka jer XML olakšava serijalizaciju većine tipova podataka. Međutim, kada automatski testira web uslugu, ASP .NET ne generira testne stranice za metode koje prihvaćaju složene vrste podaci. To je zato što ne možete proslijediti složene tipove podataka web metodi koristeći HTTP GET i POST.

Web usluge vam omogućuju pozivanje vlastitih metoda asinkrono. Asinkroni poziv vraća se odmah, bez obzira na to koliko dugo web-usluzi treba da obradi poziv. Asinkroni pozivi korisni su kada obrada poziva traje dugo. Aplikacija upućuje poziv, zatim nastavlja s radom bez čekanja na rezultat poziva, a kasnije prima rezultate asinkronog poziva. Rezultat se dobiva ponovnim pozivom web metode u trenutku pogodnom za aplikaciju ili pretplatom na obavijest o završetku obrade poziva od strane web servisa (mehanizam delegata).

Web usluge mogu se kreirati pomoću alata kao što su Microsoft Visual Studio 2005. Za izradu web usluga postoji zaseban tip Projekt web usluge ASP .NET. Visual Studio generira asmx datoteku, datoteku s pozadinskim kodom za opisivanje klasa web usluga, konfiguracijsku datoteku web usluge itd. Kada se projekt pokrene za izvođenje, klase usluga se kompiliraju i asmx datoteka se otvara u prozoru preglednika.

Opisivanje web usluga korištenjem ugovora

Da bi drugi programeri mogli koristiti AdditionService, moraju znati koje metode izlaže, koje protokole podržava, potpise metoda i adresu web usluge (URL). Sve ove i druge informacije mogu se opisati u WSDL (Web Service Description language).


Otkrivanje web usluga

Kako drugi programeri znaju za postojanje AdditionService?

Prvo, uz pomoć DISCO (skraćenica od riječi discovery) - datotečnog mehanizma za traženje lokalnih web servisa, odnosno mehanizma za dobivanje popisa dostupnih web servisa iz DISCO datoteka smještenih na web poslužiteljima. Osim toga, DISCO datoteke sadrže zapise o lokaciji WSDL ugovora dostupnih usluga. DISCO datoteka je XML datoteka sa zapisima.

Također je moguće koristiti VSDISCO datoteke, koje su slične DISCO datotekama, ali je njihov sadržaj rezultat dinamičke pretrage web servisa u navedenim direktorijima i svim ugniježđenim poddirektorijima. ASP .NET preslikava ekstenziju naziva datoteke .vsdisco u HTTP rukovatelj koji pretražuje dati direktorij i njegove poddirektorije za asmx i disco i vraća dinamički generirani DISCO dokument. Iz sigurnosnih razloga, dinamičko pretraživanje je onemogućeno u nekim verzijama .NET Frameworka, ali ga možete omogućiti uređivanjem unosa u datoteci Machine.config.

Ali kako je traženje web usluga u globalnoj mreži? Za traženje web usluga u globalnoj mreži Microsoft, IBM i Ariba zajednički su razvili UDDI (Universal Description Discovery and Integration) – specifikaciju za izgradnju distribuiranih baza podataka koja vam omogućuje pronalaženje web usluga. UDDI podržavaju stotine tvrtki. UDDI stranice same su web usluge. Svatko može objaviti svoj registar na temelju UDDI-ja. Većina programera nikada ne koristi UDDI API izravno. Umjesto toga, UDDI registrima pristupaju razvojni alati. Oni također generiraju klase omotača za otkrivene i odabrane web usluge.

Rezultati

XML web usluga je softverska komponenta koja pruža funkcionalnost koja najviše različitim sustavima, podržavajući standarde kao što su XML i HTTP Klijenti web usluga mogu biti lokalne ili udaljene aplikacije. Web usluge vam omogućuju stvaranje struktura koje olakšavaju integraciju različitih sustava na temelju jednostavnih, općeprihvaćenih standarda.

Pregledali smo opći pojmovi mehanizam « mreža- usluge". Obnovimo malo znanja.

Web usluge se koriste za razmjenu podataka između poslužitelja i klijenta; XML format se koristi za "pakiranje" podataka za međusobno razumijevanje između oba sudionika u komunikaciji.

POGLAVLJEja

PRIMJER IMPLEMENTACIJEMREŽA-USLUGA U SUSTAVU "1C: ENTERPRISE"

ZADATAK: Potrebno je izraditi web servis na kojem klijenti mogu odrediti sve potrebne informacije za svoje aplikacije.

Zadatak je demonstracijski i služi samo kao primjer za razumijevanje i učenje mehanizmamreža- usluge.

RIJEŠENJE:

Korak 1. Kreirajmo novu informacijsku bazu bez konfiguracije za razvoj nove konfiguracije.

Korak 2 Dodajmo neke nove objekte u konfiguraciju

Imenik "Klijenti";

Dokument "Prijava";

Nabrajanje "Statusi prijava".

3. korak Kreirajmo novi XDTO paket.

Zašto i zašto stvaramo XDTO paket? Više o korištenju XDTO mehanizma možete pročitati u "Poglavlju 16. Vodič za razvojne programere" i.

Napomenimo samo ukratko da je XDTO mehanizam univerzalni način prezentiranja podataka za interakciju s različitim vanjskim izvorima podataka i softverskim sustavima.

U našem slučaju, XDTO paket je stvoren za opisivanje povratne vrijednosti web usluge.

Proširite granu “Općenito” → “XDTO paketi” → Dodaj…

Navedite naziv XDTO paketa " DokumentiPodaci” i njegov prostor imena http://localhost/request ili http://192.168.1.76/request (radi lakšeg razumijevanja i procesa učenja, navodimo lokalnu IP adresu računala na kojem je instaliran web poslužitelj (podržani web poslužitelji: IIS ili Apache)). Svaki Web servis može se jedinstveno identificirati svojim imenom i URI-jem prostora imena kojemu pripada.

Naš paket sadrži dvije vrste XDTO objekata:

1) Kupac- za prijenos podataka elementa imenika "Klijenti".

- Ime ;

2) dokument- za prijenos podataka dokumenta "Prijava"

Ova vrsta XDTO objekta sadržavat će sljedeća svojstva:

- Kupac- Tip kupca iz prostora imena http://192.168.1.76/request; je referenca na XDTO objekt koji smo gore definirali;

- Status- vrsta niza iz http://www.w3.org/2001/XMLSchema prostora imena;

- Numder- vrsta niza iz http://www.w3.org/2001/XMLSchema prostora imena.

Korak 4 Dodajte novu web uslugu u konfiguraciju

Proširite granu "Općenito" → "Web usluge" → Dodaj ...

Za web uslugu navedite sljedeće vrijednosti svojstava:

Ime - DokumentiPodaci

URI imenski prostori - http://192.168.1.76/zahtjev

XDTO paketi - DokumentiPodaciilihttp://192.168.1.76/zahtjev

Naziv datoteke publikacije - zahtjev.1cws

Korak 5 Za kreiranu web uslugu definiramo operaciju " dobiti podatke»

Vrijednosti svojstava operacije:

Vrsta povrata - Dokument (http://192.168.1.76/request)

Moguće prazna vrijednost - Pravi

Naziv postupka - dobiti podatke.

Korak 6 Operacija dobiti podatke definirati Customer parametar s sljedeće vrijednosti Svojstva:

Vrsta vrijednosti - vrsta niz iz prostora imena http://www.w3.org/2001/XMLSchema;

Smjer prijenosa - ulazni.

Korak 7 Otvorimo modul kreiranog Web servisa iu njega postavimo funkciju Get() koja će se izvršiti kada se ovaj Web servis pozove.

Funkcija GetData(Customer) // Dobivanje tipova XDTO objekata ClientType = FactoryXDTO.Type("http://192.168.1.76/request", "Customer"); RequestType = FactoryXDTO.Type("http://192.168.1.76/request", "Document"); // Dobivanje klijenta ClientReference = Directories.Clients.FindByName(Customer); If Not ValueFilled(ClientReference) Then Return Undefined; Završi ako; Zahtjev = Novi zahtjev; Request.Text = "SELECT FIRST 1 | Ticket.Reference, | REPRESENTATION(Ticket.Status) AS Status, | Ticket.Number |FROM | Document.Ticket AS Ticket |WHERE | Ticket.Client = &Client"; Request.SetParameter("Klijent", ClientReference); Rezultat upita = Upit.Izvrši(); If QueryResult.Empty() Then Return Undefined; Završi ako; Odabir = Rezultat upita.Odaberi(); Odabir.Dalje(); Dokument = Odabir.Referenca.GetObject(); // Kreirajte objekt XDTO karte Ticket = FactoryXDTO.Create(TicketType); Application.Numder = Sample.Number; Klijent = FactoryXDTO.Create(ClientType); Client.Name = ClientReference.Name; Application.Customer = Klijent; Application.Status = Selection.Status; // Zahtjev za povrat Zahtjev za povrat; Završne funkcije

Korak 8 Objavimo izrađenu web uslugu na web poslužitelju.

Stavka izbornika konfiguratora: "Administracija" → "Objava na web poslužitelju".

Na kartici "Web usluge" postavite oznaku "Objavi web usluge" i označite okvir pored naše nove web usluge.

POGLAVLJEII

PRIMJER REFERENCE NAMREŽA- 1C:ENTERPRISE SERVIS IZ APLIKACIJE TREĆE STRANE

Glavna svrha mehanizma web usluga u 1C:Enterprise je prijenos potrebnih podataka u aplikacije trećih strana.

Razmotrimo primjer razvoja aplikacije u Delphiju koja poziva našu web uslugu iz prvog odjeljka ovog članka.

Korak 1. Kreirajmo novi projekt i postavite nekoliko kontrola na obrazac

Tekstualno polje - koristi se za prikaz informacija primljenih s web servisa;

Dva gumba - brisanje tekstualnog polja i pristup web servisu;

Polje za unos je parametar proslijeđen web servisu.

Korak 2 Uvoz WSDL datoteke

Kao rezultat toga, dobivamo novi modul zahtjev(takvo ime definirali smo izravno u 1C). Ovaj modul sadrži sve potrebne informacije o web servisu.

3. korak Napišite rukovatelj pozivima web usluge

Varijabla DocumentDataPortType već je definirana u modulu zahtjev

Korak 4 Pokrenite aplikaciju i provjerite.

POGLAVLJEIII

PRIMJER REFERENCE NAMREŽA-USLUGA U SUSTAVU "1C: ENTERPRISE"

Korak 1. Kreirajmo novu vanjsku obradu pod nazivom "WEB_Service"

Korak 2 Za obradu definiramo novi obrazac

3. korak Navedite nekoliko detalja za obrazac

Klijent - upišite "String"

ClientReturn - upišite "String"

NumberReturn - upišite "String"

StatusReturn - tip "String".

Detalje ćemo prikazati na obrascu.

Korak 4 Dodajmo naredbu obrasca " Da biste dobili podatke»

Odredite rukovatelja naredbama

&OnClient Procedure GetData(Command) GetDataOnServer(Client); Kraj procedure Procedura GetDataOnServer(Client) // Kreirajte WS proxy na temelju veze i izvršite Get() operaciju Definicija = New WSDefinitions("http://192.168.1.76/WEB_Service/ws/request.1cws?wsdl") ; Proxy = New WSProxy(Definicija, "http://192.168.1.76/request", "DocumentsData", "DocumentsDataSoap"); RequestData = Proxy.GetData(Klijent); If OrderData = Undefined Then ClientReturn = "Undefined"; StatusReturn = "Nedefinirano"; Povratni broj = "Nedefinirano"; Povratak; Završi ako; CustomerReturn = RequestData.Customer.Name; StatusReturn = RequestData.Status; PovratniBroj = Podatak Zahtjeva.Broj; EndProcedure

1C:Enterprise može koristiti web usluge drugih pružatelja usluga na dva načina:

Pomoću statički veze stvorene u konfiguracijskom stablu;

"plus": velika brzina rada;

"minus": ponovni uvoz WSDL opisa pomoću konfiguratora i spremanje promijenjene konfiguracije.

Pomoću dinamičan poveznice stvorene pomoću ugrađenog jezika

(odnosno, "protiv" statičkih za dinamičke su "plusevi")

POGLAVLJEIV

OTKLANJANJE POGREŠAKA WEB SERVISA U SUSTAVU 1C:ENTERPRISE

Za lokalnu web uslugu potrebno vam je:

Korak 1. Stavite na klijenta gdje se pokreće datoteka 1C sustava webservicecfg.xml sa sljedećim sadržajem

Korak 2 Podnijeti zadano. vrd public config add line

3. korak U konfiguratoru odaberite stavku izbornika

"Debug" → "Veza" → "Automatsko povezivanje" → "Web usluge na poslužitelju"

Korak 4 Kliknite na gumb "OK".

Za verziju poslužitelja također morate pokrenuti 1c poslužitelj u debug modu s ključem /debug

Ideju web usluga razvili su takvi divovi računalne industrije kao što su Sun, Oracle, HP, Microsoft i IBM. Ova ideja nije ništa novo, ali je veliki korak naprijed u olakšavanju pristupa programima putem weba. Na temelju standardnih komunikacijskih formata, web usluge općenito mogu promijeniti naše shvaćanje o tome kako trebamo izrađivati ​​web stranice.

Što je web usluga?

Zahvaljujući web uslugama, funkcije bilo kojeg programa mogu biti dostupne putem interneta. Dakle, programi kao što su PHP, ASP, JSP skripte, JavaBeans, COM objekti i svi ostali naši omiljeni alati za programiranje sada mogu pristupiti nekom programu koji se izvodi na drugom poslužitelju (tj. web servisu) i koristiti odgovor primljen od nje na njezinoj web stranici ili aplikaciji.

Recimo, ako trebam obaviti neki programski zadatak, a prezauzet sam (ili sam izvan sebe da sam izmišljam kotač), mogu koristiti usluge web servisa kojem će moja stranica pristupati putem Interneta. Prosljeđujući zahtjev s parametrima web servisu, očekujem da ću dobiti odgovor koji će sadržavati rezultat mog zahtjeva.

Svatko tko je ikada radio s vruća pošta, već se susreo s nekim web servisima: sustav provjere autentičnosti korisnika Passport jedna je od usluga uključenih u inicijativu Microsoft .NET. dok je dostupan besplatno, tako da kreatori web stranica mogu jednostavno implementirati autentifikaciju korisnika na svojim stranicama.

Osnove

Načela koja stoje iza web usluga iznimno su jednostavna. I ne dodaju ništa novo u svijet distribuiranog računarstva i Interneta:

  • osoba odgovorna za web servis definira format zahtjeva za svoj web servis i njegove odgovore
  • bilo koje računalo na mreži postavlja zahtjev web servisu
  • web servis obrađuje zahtjev, izvodi neku radnju i zatim šalje odgovor

Ta radnja može biti, na primjer, prikaz burzovne ponude, prikaz cijene određenog proizvoda, spremanje unosa u kalendaru sastanka, prijevod teksta s jednog jezika na drugi ili provjera broja kreditne kartice.

Standardi u srži

Razlog zašto smo svi odjednom zainteresirani za web servise je taj što se temelje na standardima, otvorenim protokolima za razmjenu i prijenos podataka.

Prije toga, mnoge su tvrtke razvile svoje vlastite standarde i formate. A sada, za posao, trebamo znati samo jednostavan XML (eXtensible Markup Language), koji se prenosi preko starog poznatog HTTP protokola. To znači da su informacije o tome kako funkcioniraju web servisi dostupni svima, a web programeri koji su po struci upoznati s ovim tehnologijama već danas se mogu početi igrati s web servisima.

Razlika između web usluga i drugih tehnologija na koje su programeri naišli (na primjer, DCOM, imenovane cijevi - imenovane cijevi, RMI) je u tome što se web usluge temelje na otvorenim standardima, lako ih je naučiti i ti su standardi široko podržani na sve Unix i Windows platforme.

Simple Object Access Protocol (SOAP) standardni je protokol koji je razvio W3C. Definira format zahtjeva web uslugama.

Poruke između web servisa i njegovog korisnika pakiraju se u SOAP omotnice (SOAP omotnice). Poruke sadrže ili zahtjev za izvođenje neke radnje ili odgovor - rezultat izvođenja te radnje. Omotnica i njezin sadržaj kodirani su XML-om i prilično ih je lako razumjeti. Evo kako izgleda jednostavan SOAP zahtjev koji se putem HTTP-a šalje web servisu:

xmlns:env="http://www.w3.org/2001/06/soap-envelope">


xmlns:m="http://www.somesite.com/postcode">
WC1A8GH
UK


Ključne elemente SOAP omotnice lako je prepoznati: to su dva parametra ( ("poštanski broj") i ("država")), koji se nalaze unutar elementa tzv . Ovaj element je naziv web servisa kojem šaljemo zahtjev. Ostali podaci u omotnici, kao što je kodiranje teksta i verzija SOAP-a, pomažu web-usluzi da pravilno obradi zahtjev.

A odgovor će izgledati ovako:

xmlns:env="http://www.w3.org/2001/06/soap-envelope" >

env:encodingStyle="http://www.w3.org/2001/06/soap-encoding"
xmlns:m="http://www.somesite.com/postcode">
Da


Ovu poruku je još lakše dešifrirati. Element u našem upitu promijenjen u element kao odgovor na zahtjev. Ovaj element sadrži samo jedan element , čija vrijednost pokazuje je li naš poštanski broj točan ili ne. Dakle, pomoću magije SOAP-a, stvorili smo upit koji čini koristan posao za nas. Kao odgovor, putem mreže, dobivamo određenu vrstu odgovora u XML-u.

Sada o UDDI

Čak i uz jednostavnost SOAP protokola, bilo bi malo koristi od web usluga da nemamo načina da ih pronađemo. Srećom, IBM, Microsoft i Ariba preuzeli su inicijativu i kreirali projekt Universal Description, Discovery and Integration (UDDI), za koji se nadaju da će postati zajednički katalog svih web usluga na webu.

UDDI sustav omogućuje tvrtkama da svoje web usluge izlože javnosti. Ovaj imenik služi kao telefonski imenik za sve web usluge. Upis u UDDI imenik je besplatan, a osnivači projekta se nadaju da će ovaj imenik sadržavati opise svih-svih-svih usluga diljem Weba, tako da će samo jedan UDDI imenik biti dovoljan za pronalaženje željene web usluge.

Kako sve to funkcionira

Dakle, kako mogu pronaći pravu web uslugu?

Zamislimo da sam razvojni programer web stranica i moj me klijent zamolio da dodam novu značajku web mjestu: moram dodati potvrdu valjanosti poštanskog broja u obrazac za registraciju.

Da bih izvršio ovu provjeru, trebao bih izraditi bazu podataka svih poštanskih brojeva svih 30 zemalja u kojima naša tvrtka posluje, a zatim provjeriti odgovara li poštanski broj gradu navedenom u registraciji tijekom registracije. Ali ja nemam te podatke i mislim da će prikupljanje takvih podataka morati potrošiti značajan iznos novca.

Umjesto da se odvojim za kupnju baze podataka, pisanje vlastitog koda, provjeravanje jesu li svi podaci dosljedni i točni i otklanjanje pogrešaka u skriptama, jednostavno odem u UDDI direktorij i potražim web uslugu koja bi mogla obaviti posao umjesto mene. Kad odem na www.uddi.org, pokrenem pretragu i pronađem izvrsnu uslugu tvrtke XYZ Corp.

Pažljivo pregledavam definiciju formata web usluge (definicija je napisana u WSDL (Web Services Description Language), uvjeravam se da usluga radi točno ono što mi treba. Zatim pitam svoje kolege o reputaciji XYZ Corp., saznajem da solidan je, a zatim kontaktiram XYZ Corp. za cijenu, ako je cijena za pristup usluzi unutar mog proračuna, napišem jednostavnu JSP stranicu za svoju web-lokaciju koja poziva web-uslugu XYZ Corp, i hej, trenutna naplata se pojavljuje na mjesto poštanski broj.

Vrijedi odvojiti vrijeme

Čak i ako nemate nikakve veze s programiranjem ili tehnologijama za razvoj web stranica, o web uslugama vrijedi naučiti više. Zamislite sliku kako s klijentom razgovarate o novom mjestu, razgovarajući o svim funkcijama novog projekta. Sve ide odlično: proračun ispunjava očekivanja klijenta, svidio mu se nacrt plana lokacije, svidjeli su mu se primjeri sučelja. Čini se da sve radi.

I odjednom se sjete neke vrlo složene funkcije. Na sam spomen vašeg web developera lice pozeleni, a on sam se počinje gušiti u kašlju. Ovo je programer koji vam daje signal da će razvoj ove značajke zahtijevati puno novca i vremena ili jednostavno nije izvediv s takvim budžetom.

Odbaci strah! Mogu se kladiti da na webu već postoji web-usluga koja vam je spremna pružiti potrebnu funkciju, a trošak korištenja ove web-usluge bit će puno niži od troška samostalnog razvoja njezinog analoga. Na ovaj način štedite svog programera nepotrebnih glavobolja, svog klijenta bacanja novca uzalud, samo nekoliko minuta na pregledavanje UDDI kataloga.

Razvoj usluga

Naravno, programeri se ne moraju zadovoljiti samo web uslugama koje su stvorili drugi. Uz pomoć jednog od sljedećih alata, možete kreirati vlastitu web uslugu i pružati njezine usluge ostalim stanovnicima mreže.

Izbor alata za razvoj web usluga je velik. Uključuje alate tvrtki kao što su Sun (Open Net), Microsoft (.NET), (e-usluge) i IBM (Web usluge). Postoje i okviri otvorenog koda. Na primjer, Mono projekt nastoji zamijeniti Microsoft .NET toolkit pružajući sustav kompilacije (kompilatori), izvršavanje koda (runtime) i biblioteke (biblioteke) za pokretanje istih web usluga na svim platformama, uključujući Unix.

Unatoč raznolikosti poslužitelja i alata za razvoj web usluga, svi oni podržavaju isti SOAP protokol, XML jezik i UDDI sustav.

minusi

Prije nego što u potpunosti napustim karijeru programera i posvetim se korištenju web servisa, moram si postaviti pitanje: "Ova slika je previše ružičasta. Što nije u redu s njom?". Nažalost, postoji cijena koju treba platiti za veliki potencijal web usluga:

  • Korištenje XML-a kao formata za prijenos podataka rezultira time da su vaše poruke vrlo velike: same XML oznake zauzimaju puno prostora, a to nam nameće određeno opterećenje pri kreiranju, prijenosu i interpretaciji poruka.
  • Budući da za obavljanje određenih funkcija koristimo udaljena računala, u potpunosti se oslanjamo na Internet, što stvara previše nepouzdanih karika u lancu između našeg web poslužitelja i web usluge.
  • Trenutačno malo tvrtki stvara web usluge i malo ih tvrtki koristi. Još uvijek je potrebno dosta vremena za otklanjanje pogrešaka i poboljšanje sustava web usluga.
  • Programeri tek trebaju usvojiti sustav licenciranja i naplate korištenja web usluga. Zbog činjenice da web servisa još uvijek ima premalo, većina tvrtki nastoji ostaviti dobar dojam na potencijalne kupce namjernim snižavanjem cijena usluga i povoljnim uvjetima licenciranja. Još će proći neko vrijeme prije nego što se razjasni stvarna cijena usluga web usluga.

Kada web usluge zauzmu svoje mjesto i postanu dostupne svima, postat će neprocjenjiva pomoć web programerima. Oni će nam dati fleksibilan pristup punoj snazi ​​svih računala na webu. Vrijeme je da se oni koji izrađuju web stranice zainteresiraju za web usluge i saznaju više o tome što od njih mogu dobiti.

Praktična upotreba web servisa u IBM Lotus Domino 7

Što su web usluge i zašto su važne?

Serija sadržaja:

Ovaj sadržaj dio je # serije # članaka: Praktična upotreba web servisa u IBM Lotus Domino 7

https://www..jsp?series_title_by=Practical+using+web services+in+ibm+lotus+domino+7

Pratite nove članke u ovoj seriji.

Možda ste naišli na reference na web usluge u tehničkim člancima, softverski proizvodi ili čak u dijalozima s kolegama. Očigledno, netko treba web usluge i važne su, međutim, susrevši se s definicijama poput "XML gramatika za definiranje skupova krajnjih točaka za razmjenu poruka", odlučili ste da se tako komplicirane stvari ne smiju dirati.

Srećom, web usluge se mogu objasniti na način koji svi razumiju, a da se ne ulazi u detalje kako sve to funkcionira. Trebali biste pokušati razumjeti što su web usluge, budući da se opseg njihovih (i srodnih servisno orijentiranih arhitektura, SOA) aplikacija u IT svijetu neprestano širi.

Web usluge se mogu smatrati automobilom: ne morate znati na tehničkoj razini kako rade klipovi, bregaste osovine i mlaznice za gorivo - možete kupiti automobil, voziti ga i razgovarati o automobilima s prijateljima (osim ako naravno, oni su mehaničari) . Isto je i s web-uslugama, kao IT stručnjak samo trebate razumjeti što su i kako rade da biste razumjeli zašto su vam potrebne.

Sada je puno lakše raditi s web uslugama bez dodirivanja skrivenih tehnologija niske razine, jer su dobavljači softvera i zajednica otvorenog koda učinili mnogo u proteklih nekoliko godina kako bi odvojili sučelje web usluga od zadataka niske razine. To će vam omogućiti da radite jednostavnim povezivanjem komponenti bez potrebe za zadubljenjem u podužu dokumentaciju o formatiranju XML poruka.

Ova serija članaka pomoći će Domino programerima da razumiju i koriste Web usluge u IBM Lotus Domino V7.0. Ovaj uvodni članak sadrži dovoljno korisna informacija, a koristan je svima koji žele razumjeti što su web usluge. Tehnologije u Lotus Domino V7.0 programerima olakšavaju stvaranje i korištenje web usluga, a toga ćemo se detaljnije dotaknuti kasnije.

Prvo, shvatimo što je web usluga.

Što je web usluga?

Jednostavno rečeno, web usluga omogućuje računalnim programima da međusobno komuniciraju na standardiziran način.

Komunikacija između tri ili više strojeva

Iako se primjeri temelje na transakcijama unutar jednog ili dva računala, web usluge se također mogu koristiti za komunikaciju između više strojeva. Na primjer, posrednički uređaj može proslijediti ili pohraniti transakcije ili poziv web servisu na jednom poslužitelju može pokrenuti poziv servisu na drugom.

Na kraju ovog članka, kada budemo gledali pravu SOA, govorit ćemo o interakciji web usluga na više strojeva, jer SOA uvijek tako funkcionira.

Web usluga je apstraktna komponenta, baš kao što je koncept ljudskog razgovora apstraktan. Dijalog uključuje dvije ili više osoba koje govore jezikom koji poznaju. Njihov jezik definira riječi koje koriste i način na koji te riječi tvore rečenice. Obično dijalog ima strukturu pitanje-odgovor, kada netko postavi pitanje ili izjavi, a sugovornik na to odgovara. Ljudi mogu biti u blizini, razgovarati telefonom, slati poruke jedni drugima putem pošte ili chata.

U svakom slučaju, dijaloga ima složena struktura i može se odvijati na različite načine, ovisno o broju ljudi koji komuniciraju, jeziku komunikacije koji se koristi za komunikacijske tehnologije, naravno, ako se koriste.

Struktura komunikacije korištenjem web usluga uključuje mnoge elemente kojih ćemo se dotaknuti u ovom članku. Međutim, ideja ostaje ista kao kod običnog dijaloga - programi komuniciraju koristeći jezik koji poznaju, ponekad i preko mreže. Programi se mogu nalaziti na istom računalu ili na različitim strojevima u različitim dijelovima svijeta, povezani putem interneta usmjerivačima i poslužiteljima. Dobra je vijest da programi i računala ne moraju biti isti. S web uslugama mogu komunicirati dva Microsoftova .NET programa na istom prijenosnom računalu, kao i Java program na kanadskom iSeries poslužitelju s C++ programom na Linux računalu iz Kine.

Komunikacije web usluga koriste sljedeće standardne tehnologije:

  • xml. Jezik (format podataka) koji koriste komponente web-usluga.
  • SOAP protokol. XML poruke koje se razmjenjuju između programa
  • Knjižnica opisa web usluga (WSDL). XML datoteka koja definira format SOAP poruka i kako ih poslati

Standardna tehnologija poznata kao univerzalni opis, otkrivanje i integracija (UDDI) također se može koristiti za komunikaciju između web usluga. O tome ćemo govoriti kasnije u članku, ali budući da UDDI nije obavezan, mnoge web usluge ga ne koriste.

Neka terminologija: Objavljivanje i korištenje web usluga

Prije nego što počnemo objašnjavati naše pojmove, pogledajmo neke terminologije povezane s web uslugama.

Kada govorimo o objavljivanju web usluge, mislimo na program koji objavljuje WSDL datoteku i omogućuje drugim programima korištenje odgovarajuće usluge. Programi koji objavljuju web usluge nazivaju se pružateljima usluga.

Kada govorimo o korištenju web usluge, mislimo na program koji upućuje poziv web usluzi na drugom računalu. Korisnici web usluga nazivaju se klijentima.

XML: materinji jezik

XML se koristi za komunikaciju između komponenti web usluge. Poruke koje se šalju između aplikacija, kao i datoteke koje definiraju web uslugu, su u XML formatu. Slika 1 prikazuje strukturu jednostavne XML datoteke.

Slika 1. Osnovna XML struktura

Kao što vidite, neke informacije u datoteci (kao što su ime, prezime) okružene su oznakama u trokutastim zagradama. Ime John prikazano je kao Ivan. Postoje i elementi u koje su ugniježđeni drugi elementi, na primjer, u elementu Ugniježđeni elementi , I .

Mnogo je prednosti pisanja web usluga u XML-u, uključujući:

  • Struktura i gramatika XML-a slične su ostalim programskim jezicima, tako da programi koji su u interakciji s web-uslugama ne moraju izravno analizirati XML datoteke.
  • XML datoteke su tekstualne datoteke i može ih čitati čovjek (drugim riječima, ako poznajete XML jezik, možete otvoriti XML datoteku u uređivaču teksta i razumjeti njezin sadržaj). Ovo bi moglo pomoći u otklanjanju pogrešaka.
  • XML vam omogućuje upotrebu bilo kojeg standardnog kodiranja u porukama, tako da možete pisati poruke na engleskom, ruskom ili japanskom.
  • XML vam omogućuje korištenje onoga što se naziva prostor imena, u kojem možete unaprijed definirati željenu strukturu elementa datoteke s određenim nazivom. Na primjer, možete definirati element Price, koji uvijek mora biti float, ili PersonName, koji uključuje dva podelementa niza, FirstName i LastName.

    Osim toga, ako je potrebno, prostori imena dopuštaju da više elemenata s istim imenom imaju različite definicije. Na primjer, element StockPrice u jednom prostoru imena može uključivati ​​simbol oznake i cijenu, dok se u drugom prostoru imena može sastojati od simbola oznake, cijene, dnevne najniže i najviše, te najviše 12 mjeseci.

Jedini nedostaci XML-a, ako su doista nedostaci, su:

  • XML jezik je krut, tako da će svako netočno oblikovanje XML poruke uzrokovati neuspjeh analiziranja cijele poruke (čak i ako je problem lako protumačiti ili propustiti). Međutim, ako koristite standardnu ​​biblioteku za generiranje XML datoteka (što radite kada stvarate web usluge), sama biblioteka provjerava je li pravilno formatirana.
  • XML poruka pohranjena je u običnoj tekstualnoj datoteci i stoga zauzima više prostora od svog ekvivalenta u drugom formatu (kao što je split, binarni ili "sam-made" format).

Ali ta su pitanja nevažna u usporedbi s prednostima XML formata.

SOAP: poslane poruke

Znate da web usluge komuniciraju u XML formatu, ali to rješava samo pola problema. Aplikacije mogu analizirati poruku, ali kako znaju što učiniti s analiziranim rezultatom?

Uputa koja opisuje pravila oblikovanja XML poruka za web usluge poznata je kao SOAP. Definira strukturu poruke tako da programi znaju kako poslati i interpretirati podatke. Osnovna struktura SOAP poruke prikazana je na slici 2.

Slika 2. Osnovna struktura SOAP poruke

U XML-u bi to izgledalo otprilike ovako:

FOO

U osnovnom slučaju imate SOAP paket koji uključuje SOAP tijelo i tijelo koje sadrži podatke za prijenos. Ponekad postoji i izborno SOAP zaglavlje (unutar paketa prije tijela) koje sadrži dodatne informacije.

SOAP upute

Iako je SOAP format standardan i ima iste upute, mora se imati na umu da različiti proizvođači mogu implementirati ove upute na malo drugačije načine. Na primjer, struktura prostora imena i XML-a u SOAP poruci koju generira Apache Axis može se jako razlikovati od strukture koju generira Microsoft .NET. Međutim, dobro napisan klijent ili poslužitelj može obraditi bilo koju poruku koja je dobro napisana prema uputama SOAP-a.

Osim toga, postoje neke važne razlike između uputa WSDL 1.1 i WSDL 2.0. Iako je uputa 2.0 još uvijek u završnoj fazi u vrijeme pisanja, uskoro će početi zauzimati mjesto verzije 1.1.

ako nikada prije niste naišli na WSDL datoteku i pokušavate je otvoriti i pročitati, bit će vam teško izvući sve informacije od tamo, jer struktura takve datoteke može biti prilično složena. Sve informacije o metodi (naziv, parametri, protokol, itd.) su razbacane po različitim dijelovima datoteke i mora ih prikupiti klijentska aplikacija kako bi se izradila SOAP poruka. Opisi dijelova WSDL datoteke i njihovih zajednički rad neće biti u ovom članku.

Tu tehnologija ponovno dolazi u pomoć. Kao programer, ne morate čitati, analizirati i razumjeti sadržaj WSDL datoteke. Alati će dobiti te informacije umjesto vas, tako da samo trebate smisliti što poslati usluzi i gdje staviti rezultate. ne samo ti možeš koristiti knjižnice i alate, ali i sigurno hoćeš. Postoje mnoge iznimke, nedostaci i složenosti svih komponenti web-usluga, a trebali biste ih proučiti korištenjem Web servis, a ne njegovo rastavljanje, nakon čega slijedi detaljno proučavanje svake komponente.

Protokoli: kako se poruke šalju

Još se nismo dotakli pitanja, kako se sve te poruke prenose preko SOAP-a?

I obično se prenose preko mreže (i/ili interneta) pomoću HTTP protokola, otprilike na isti način kao što se stranice prenose s poslužitelja na vaš preglednik. HTTP se ne koristi uvijek (glavni konkurent mu je SMTP, ali daleko zaostaje). Protokol koji koristi web servis definiran je u WSDL datoteci.

Obično je u WSDL datoteci protokol koji se koristi za slanje SOAP poruke definiran kao HTTP. SOAP klijent šalje poruke prema navedenom protokolu.

Drugi uvjeti web usluga na koje možete naići

Već smo obradili osnovne pojmove, ali možda ćete čuti još ponešto kada govorimo o web uslugama.

Slabe veze

Programi koji koriste web-usluge obično su labavo povezani s uslugama, to jest usluge koje su potrebne za izvođenje programa nisu izravno povezane s njima, kao što ni program nije vezan uz usluge. Program može lako koristiti sve usluge koje su mu potrebne, a oni čekaju poziv od programa - od bilo kojeg programa koji treba njihov odgovor.

Primjer slabih veza iz stvarnog života je ručak s prijateljima. Nekoliko prijatelja se nekako dogovori između sebe (osobno, telefonom, putem elektronička pošta itd.). Svatko sam dolazi u restoran, a nakon večere svatko plaća svoju hranu. Kako god je ručak prošao krajnji rezultat je isti – bio je to prijateljski ručak.

Ali vožnja automobila je radnja s čvršćim vezama. Imate fiksni skup alata s kojima možete postići unaprijed zadane ciljeve. Izlazeći iz garaže, uključujete rikverc i pritiskate gas. Prilikom skretanja ulijevo okrećete volan ulijevo. Nemate priliku istu stvar raditi na različite načine, jer je cijeli sustav vrlo precizan i koordiniran, a svaki njegov element povezan je s ostalima.

UDDI

UDDI je standard za stvaranje kataloga web usluga koje nudi bilo koji broj programa. To je poput telefonskog imenika za pružatelje web usluga. Klijenti mogu potražiti informacije koje su im potrebne u UDDI registru, a registar vraća podatke koji su im potrebni za povezivanje s uslugom.

Iako je UDDI prilično važan standard za definiranje web usluga, njegova je važnost uvelike smanjena činjenicom da je to izborni element web usluga, a kada se da izbor koristiti ga ili ne, mnogi ga odluče ne koristiti.

Većina organiziranih poslovnih okruženja s mnogim internim web uslugama imaju UDDI registre. Sjajno je imati UDDI korporativnu stranicu koja sadrži informacije o web uslugama dostupnim u vašoj tvrtki. Objedinjujući sve usluge, UDDI vam omogućuje neprimjetnu i besprijekornu promjenu njihovih pružatelja usluga. Ako klijenti traže usluge putem UDDI-ja, tada se SOAP pozivi automatski šalju novom pružatelju usluga.

Međutim, ova komponenta nije potrebna u arhitekturi web usluga.

Sigurnost web usluga

Čitajući o SOAP-u i WSDL-u, možete primijetiti da tema sigurnosti nije pokrivena. Kako se provodi autentifikacija prilikom pozivanja usluga ako davatelj radi s osjetljivim informacijama? Uostalom, jasno je da nisu sve web usluge dostupne široj javnosti, zar ne?

Ovo je važno pitanje na koje nije lako dati jednoznačan odgovor. Postoje različite sheme koje možete koristiti ovisno o situaciji, na primjer:

  • Mogu li SOAP poruke dolaziti u obliku običnog teksta ili moraju biti šifrirane?
  • Je li vam jednostavna provjera autentičnosti pomoću prijave i lozinke dovoljna ili bi trebala biti jaka i temeljena na markerima?
  • Ako se tokeni koriste, moraju li biti potpisani i koji je ispravan način da ih uključite u SOAP poruku?
  • Ali što ako klijent ne šalje SOAP poruke izravno, već kroz neku posrednu strukturu, kao što je red poruka ili preko neke druge web usluge?

Također, razmjena poruka ne može uvijek koristiti HTTP, tako da ne možete samo koristiti sigurnost web usluga uz postojeću HTTP sigurnost.

Postoji nekoliko smjernica koje pokrivaju ove i druge aspekte sigurnosti web usluga: WS-Security, WS-Policy, WS-Trust i WS-Privacy. Neki dobavljači softvera i povjerenstva već nekoliko godina rade na ovim problemima. Iako sve implementacije web usluga ne podržavaju sve sigurnosne upute, postojeći sigurnosni standardi obično implementiraju barem nekoliko osnovnih sigurnosnih puteva.

Middleware i Enterprise Service Bus

Postoji još jedan prilično velik skup standarda za web usluge, skupljen u jedan prilično veliki paket, koji se obično naziva WS-* instrukcije. Zajedno pokrivaju mnoge probleme dizajna koji se pojavljuju kada sastavite mnoge web usluge u jedno okruženje. WS-* standardi bave se pitanjima kao što su:

  • Sigurnost
  • Pouzdanost
  • Razmjena poruka
  • Transakcije
  • Kvaliteta usluge

Ovaj broj standarda je neophodan jer razmjena poruka između klijenta web usluge i poslužitelja u produkcijskom okruženju može biti mnogo složenija od jednostavnog zahtjeva/odgovora. Na primjer, kako osigurati da poruka stigne do davatelja i vrati se klijentu? Što ako SOAP zahtjev ima više dijelova? Kako upravljate procesima koji uključuju pristup web usluga drugim web uslugama? Što ako program pošalje niz zahtjeva sa zahtjevima vremena odgovora?

Za velike dobavljače softvera rad s ovim standardima predstavlja i izazove i prilike. Nekoliko dobavljača prodaje čitave međuprogramske pakete web usluga, koji se često nazivaju Enterprise Service Bus ili ESB, koji se bave svim ili barem nekim od gore navedenih zadataka odjednom. Ti su ESB-ovi također vrijedni jer mogu povezati višestruke web usluge unutar iste organizacije i pružiti njihovu funkcionalnost, bilježiti njihove radnje i pohranjivati ​​poruke u redovima čekanja.

Servisno orijentirana arhitektura

I konačno, servisno orijentirana arhitektura. U većini slučajeva, to je samo kombinacija svega navedenog: labavo povezane web-usluge različitih dobavljača, u interakciji u skladu s prihvaćenim standardima (možda s ESB-ovima) i sastavljene pomoću različitih programa koji uzimaju podatke iz usluga i koriste ih na različite načine .

Budući da je SOA softverska arhitektura, puno je koordinacije i planiranja uključeno u njezinu izgradnju. Nije to samo hrpa usluga pomiješanih zajedno; to je organizacija načina na koji se usluge sastavljaju i objavljuju, koji se alati za upravljanje i srednji softver koriste te kako se usluge i sustav u cjelini nadziru i upravljaju.

Ako gledate globalnije, onda je SOA također jedna vrsta razmišljanja. Tjera nas da ne razmišljamo o neovisnim velikim programima, već da sve promatramo kao moguće komponente koje se mogu objaviti i koristiti u proizvodnji. Umjesto bogatih aplikacija, razmišljate o specifičnim i dobro definiranim uslugama - a to su web usluge.

Zašto je to važno?

Do sada već znate ponešto o tome kako web usluge rade - klijent čita WSDL datoteku pružatelja usluga, oblikuje i šalje SOAP poruku u skladu s tim, a kao odgovor prima drugu SOAP poruku. Pa zašto je to toliko važno? Što je bilo?

Dio važnosti usluga leži u činjenici da pružaju standardni način za komunikaciju programa, bez obzira na jezike na kojima su napisani ili platforme na kojima rade. Prethodno smo morali raditi s formatima podataka koji su jedinstveni za različite programe ili s funkcijama na razini API-ja s kojima programi na drugim jezicima nisu mogli raditi. Korištenje XML-a u svim standardima web usluga znači da su sve usluge dostupne i jasno definirane.

Zapravo, to omogućuje potpuno različitim programima da jednostavno komuniciraju jedni s drugima na jeziku koji svi razumiju. Jedan od glavnih izazova pri radu s različitim tehnologijama različitih proizvođača uvijek je bila potreba da se svi ti različiti programi natjeraju da međusobno komuniciraju i razmjenjuju podatke. Sada kada sve vaše aplikacije mogu pružati i/ili koristiti web usluge, nevjerojatno je jednostavno komunicirati među njima.

Još jedna prednost web usluga je da kupci i prodavači mogu biti na različitim strojevima, koristeći različiti hardver i softver, bez ometanja komunikacije. Programe mogu koristiti drugi programi unutar istog stroja ili s drugih strojeva, ali koristeći određeni format prijenosa podataka. Web usluge trebaju samo mrežnu vezu i XML rukovatelj.

Kada se svi ti faktori sagledaju zajedno, rezultat je značajan. Budući da imamo standardna sredstva za komunikaciju između aplikacija putem mreže, svoje programe možemo izgraditi na drugačiji način. Umjesto pisanja monolitnih programa u kojima se kotač svaki put iznova izmišlja, možemo pisati programe koji se sastoje od modula.

Na primjer, umjesto velikog programa koji prikuplja informacije o nekoliko procesa, pretvara ih u grafikone i prikazuje ih korisnicima, možemo napraviti nadzornu ploču koja će prikazivati ​​podatke dobivene od nekoliko web servisa. Kompilirani podaci primaju se od jedne ili više usluga, a rezultirajuće grafike stvara druga web-usluga koja uzima podatke i proizvodi neku vrstu grafike.

Kontrolna ploča transformirana je iz velikog programa u jednostavno sučelje. Kada želimo dodati nove komponente, jednostavno pozovemo dodatne usluge. Ako trebamo drugu kartu, obratit ćemo se drugoj službi za izradu karata. Ako trebamo interaktivniju nadzornu ploču, s mogućnošću učenja ili sortiranja, tada nadzorna ploča može proslijediti poruke od korisnika odgovarajućem servisu. Možemo čak potpuno promijeniti usluge koje se pozivaju, a da korisnici to ne primijete (sve dok se WSDL datoteka ne promijeni), a ploča ostaje ista.

Kao IT stručnjak, možete razviti front-end, razvoj usluga ili oboje. Za rad na ovakvom projektu važno je razumjeti kako sve to zajedno funkcionira (ili barem znati što je to).

Također je dobro što postoje mnogi alati koji vam pomažu u isporuci i upotrebi web usluga i koji mogu obaviti puno teškog posla umjesto vas. U sljedećim dijelovima ovog članka vidjet ćemo kako možete jednostavno isporučiti web usluge klijentima ili sustavima koristeći IBM Lotus Domino V7.0.