Web usluga - što je to. XML web usluge. Pregled tehnologije

Ideju web usluga razvili su divovi računalne industrije kao što su Sun, Oracle, HP, Microsoft i IBM. Ova ideja nije ništa novo, ali je veliki korak naprijed prema lakšem pristupu programima putem weba. Na temelju standardnih komunikacijskih formata, web servisi bi mogli potpuno promijeniti način na koji razmišljamo o tome kako bismo trebali izraditi 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 primjena.

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

Svatko tko je ikada radio u U zadnje vrijeme S Hotmail, već se djelomično susreo s web servisima: Passport sustav autentifikacije korisnika jedan je od servisa uključenih u Microsoft .NET inicijativu. Trenutno je dostupan besplatno, tako da kreatori web stranica mogu jednostavno implementirati provjeru autentičnosti korisnika na svojim stranicama.

Osnove

Načela iza web usluga su iznenađujuće jednostavna. I ne dodaju ništa novo u svijet distribuiranog računarstva i Interneta:

  • osoba odgovorna za web servis određuje 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 kotacije dionica, prikaz cijene određenog proizvoda, spremanje unosa u kalendar sastanaka, 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 usluge 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 rad 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 s kojima su se programeri susreli (na primjer, DCOM, imenovani kanali, RMI) je u tome što se web usluge temelje na otvorenim standardima, lako ih je naučiti i ti su standardi široko podržani diljem svijeta. 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 usluge i njezinog korisnika upakirane su u 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 u XML i prilično ih je lako razumjeti. Ovako izgleda jednostavan SOAP zahtjev kada se putem HTPP-a poš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 prilično je lako otkriti: 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 zahtjevu promijenjen u element kao odgovor na zahtjev. Ovaj element sadrži samo jedan element , čija vrijednost označava je li naš poštanski broj točan ili ne. Dakle, kroz magiju SOAP-a, stvorili smo upit koji nam čini koristan posao. Kao odgovor preko mreže dobivamo određenu vrstu odgovora u XML-u.

Sada o UDDI

Iako je SOAP protokol jednostavan, web usluge ne bi bile od velike koristi da nemamo načina da ih pronađemo. Srećom, IBM, Microsoft i Ariba su se pokrenuli 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 se za pronalazak željenog web servisa trebati obratiti samo jednom UDDI-ju. imenik.

Kako to sve funkcionira

Dakle, kako mogu pronaći pravu web uslugu?

Zamislimo da sam razvojni programer web stranice i moj me klijent zamolio da dodam na web mjesto nova značajka: Morate dodati provjeru poštanskog broja u obrazac za registraciju.

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

Umjesto da izdvojim novac za kupnju baze podataka, sam napišem kod, osiguram cjelovitost i ispravnost svih podataka i ispravim pogreške u skriptama, samo odem u UDDI direktorij i vidim postoji li web usluga koja može obaviti posao za mene . Dolaskom na 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), pazeći da usluga radi točno ono što mi je potrebno. Zatim provjerim sa svojim kolegama reputaciju XYZ Corp. i saznam da je solidan , a zatim kontaktirajte XYZ Corp. o cijenama. Ako je cijena za pristup usluzi unutar mog proračuna, pišem jednostavnu JSP stranicu za svoju web-lokaciju koja poziva web-uslugu XYZ Corp., i gle čuda, trenutna potvrda pojavljuje se na poštanskom broju stranice.

Vrijedno je vašeg vremena

Č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 novoj web stranici, raspravljajući o svim funkcijama novog projekta. Sve ide odlično: proračun ispunjava očekivanja kupca, svidjela mu se skica plana lokacije i svidjeli su mu se primjeri sučelja. Čini se da sve radi.

I odjednom se sjete neke vrlo složene funkcije. Na sam spomen toga, lice vašeg web programera pozeleni i počne se gušiti i kašljati. 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 svoj strah! Spreman sam jamčiti da na Internetu 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 njegovog analoga. Na ovaj način štedite svog programera nepotrebnih glavobolja, a svog klijenta nepotreban otpad novac tako što ćete provesti nekoliko minuta pregledavajući UDDI imenik.

Razvoj usluga

Naravno, programeri se ne moraju zadovoljiti samo web uslugama koje su izradili drugi. Koristeći jedan od sljedećih alata, možete stvoriti vlastitu web uslugu i pružati njezine usluge drugim korisnicima interneta.

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 ima za cilj zamijeniti Microsoftov .NET toolkit pružajući kompajlere, runtime i biblioteke za pokretanje istih web usluga na svim platformama, uključujući Unix.

Unatoč raznolikosti poslužitelja i alata za razvoj web usluga, svi 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: "Previše je ružičasta slika. Što nije u redu s njom?" Nažalost, veliki potencijal web usluga ima svoju cijenu:

  • Korištenje XML-a kao formata za prijenos podataka znači da će vaše poruke biti vrlo velike: same XML oznake zauzimaju puno prostora, a to nas dodatno opterećuje pri stvaranju, prijenosu i tumačenju poruka.
  • Budući da koristimo udaljena računala Za obavljanje određenih funkcija u potpunosti se oslanjamo na Internet, što stvara previše nepouzdanih veza u lancu između našeg web poslužitelja i web usluge.
  • Danas malo tvrtki stvara web usluge i malo ih tvrtki koristi. Otklanjanje pogrešaka i poboljšanje sustava web usluga još uvijek zahtijeva dosta vremena.
  • Programeri tek trebaju prihvatiti sustav licenciranja i naplate korištenja web servisa. Zbog činjenice da web servisa još uvijek ima premalo, većina tvrtki nastoji ostaviti dobar dojam na svoje potencijalne klijente namjernim smanjenjem troškova usluga i ponudom povoljnih uvjeta licenciranja. Još će proći neko vrijeme dok stvarna cijena web usluga ne postane jasna.

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 mreži. Vrijeme je da se graditelji web stranica 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?

Kako se informacijska tehnologija razvijala tako su se pojavili 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 orijentiranih na uslugu omogućuje nam da govorimo o ponovnoj uporabi na makro razini (razina usluge), za razliku od mikro razine (razina objekta). Pristup orijentiran na uslugu koristi jednostavne i općeprihvaćene standarde, što omogućuje širokom spektru aplikacija da međusobno dijele funkcionalnost. Usluge se mogu pisati pomoću različitih programskih jezika, na različitim platformama. Osim toga, usluge se mogu postaviti zasebno ili kao dio softverskog paketa bilo gdje Globus te će tako omogućiti pristup njihovoj funkcionalnosti 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 je povezan s drugim sličnim resursima i može 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 programsko sučelje, odnosno web servis izlaže funkcije (web metode) koje se mogu pozivati ​​na daljinu (primjerice, preko interneta). Web usluga nije namijenjena posluživanju krajnjih korisnika. 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 obične 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č teksta 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 dosta protokola i tehnologija daljinskog pozivanja: Microsoft Distributed Component Object Model (DCOM), Common Object Request Broker Architecture (CORBA) grupe za upravljanje objektima, Sunovo Remote Method Invocation (RMI), . NET Remoting, XML web usluge.

Sve ove tehnologije temeljene na komponentama (DCOM, CORBA i RMI) već se godinama uspješno koriste u Intranet aplikacijama. Oni pružaju pouzdanu, skalabilnu arhitekturu. Međutim, postoje dva ozbiljna 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 konstruktoru 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 objektnim metodama.

Za razliku od ovih tehnologija, XML web usluge i. NET Remoting su u potpunosti implementirani objektno orijentirani pristup za web programiranje.

XML web usluga- komponenta koja internetskim klijentima pruža skup API funkcija ili web metoda. XML je uključen u naziv 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 – Internet 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 koji se šalju web uslugama serijaliziraju se u XML i šalju u SOAP paketima. Metapodaci o sadržaju takvih poruka pohranjuju se u WSDL ugovor web usluge i XSD sheme. Glavna prednost ovog pristupa je čitljivost metapodataka. Programer može jednostavno pregledati cijeli opis web servisa, pa čak i kreirati vlastiti modul koji analizira SOAP pakete.

.NET udaljeno upravljanje osigurava infrastrukturu za distribuirane objekte. Mnogo je složeniji od jednostavne arhitekture web usluga za prosljeđivanje 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 c. NET Remoting prenose 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 okruženju za izvršavanje. Bez zajedničkog jezičnog vremena izvođenja (CLR), klijentska aplikacija neće moći analizirati one specifične za jezik. NET Remoting SOAP zaglavlja. To je. NET Remoting postavlja značajno veće zahtjeve u usporedbi s web uslugama.

Razvoj web servisa na .NET platformi

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

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

Stvaranje

Razvijmo jednostavnu web uslugu AdditionService koja zbraja 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 programiranja web usluga pomoću Microsoft .NET Frameworka.

  • Web usluge su implementirane kao ASMX datoteke. ASMX je posebna ekstenzija naziva datoteke registrirana za 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 web usluga sastoji.
  • Klase web usluga mogu imati izborne atribute WebService. U u ovom primjeru Ovaj atribut navodi 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 atribut jednostavno nije naveden.
  • HTTP, XML i SOAP su "nevidljivi". .NET Framework obrađuje XML podatke i SOAP poruke.

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 ako se instalira na web poslužitelj s ASP.NET. Njegove se metode pozivaju koristeći SOAP, HTTP GET i HTTP POST, a može vratiti rezultate kao SOAP odgovore ili kao jednostavne XML omote.

Korištenjem pozadinskog koda, klase web usluga mogu se premjestiti 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 omogućuje jednostavnu 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 se događa jer ne možete proslijediti složene tipove podataka web metodi koristeći HTTP GET i POST.

Web usluge vam omogućuju pozivanje njihovih metoda asinkrono. Asinkroni poziv odmah vraća kontrolu, bez obzira na to koliko je vremena potrebno web servisu da obradi poziv. Asinkroni pozivi korisni su kada obrada poziva oduzima značajno vrijeme. Aplikacija upućuje poziv, zatim nastavlja s radom bez čekanja na rezultat poziva, a kasnije prima rezultate asinkronog poziva. Rezultat se dobiva ponovnim pozivanjem web metode u vrijeme pogodno za aplikaciju ili pretplatom na obavijest o završetku obrade poziva od strane web usluge (mehanizam delegiranja).

Web usluge mogu se kreirati pomoću alata kao što su Microsoft Visual Studio 2005. Za izradu web usluga koje pruža 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 .

Opis web usluga koje koriste ugovore

Kako bi drugi programeri mogli koristiti AdditionService, moraju znati koje metode pruža, 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 servisa

Kako drugi programeri znaju za postojanje AdditionService?

Prvo, korištenjem DISCO (skraćenica od riječi discovery) - datotečnog mehanizma za pretraživanje 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.

Moguće je koristiti i VSDISCO datoteke koje su slične DISCO datotekama, ali je njihov sadržaj rezultat dinamičke pretrage web servisa u navedenim direktorijima i svim 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.

Kako pretražujete web usluge na globalnoj mreži? Za traženje web usluga na 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 pretraživanje web usluga. UDDI podržavaju stotine tvrtki. UDDI stranice same su web usluge. Svatko može objaviti svoj registar temeljen na UDDI. 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 koju može koristiti većina različitim sustavima, podržavajući standarde kao što su XML i HTTP Klijenti web usluga mogu biti lokalne i udaljene aplikacije. Web usluge vam omogućuju stvaranje struktura koje olakšavaju integraciju različitih sustava na temelju jednostavnih, općeprihvaćenih standarda.

Ideju web usluga razvili su divovi računalne industrije kao što su Sun, Oracle, HP, Microsoft i IBM. Ova ideja nije ništa novo, ali je veliki korak naprijed prema lakšem pristupu programima putem weba. Na temelju standardnih komunikacijskih formata, web servisi bi mogli potpuno promijeniti način na koji razmišljamo o tome kako bismo trebali izraditi 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 primjena.

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

Svatko tko je ikada radio s Hotmailom u posljednje vrijeme već je donekle bio izložen web uslugama: sustav provjere autentičnosti korisnika Passport jedna je od usluga uključenih u inicijativu Microsoft .NET. Trenutno je dostupan besplatno, tako da kreatori web stranica mogu jednostavno implementirati provjeru autentičnosti korisnika na svojim stranicama.

Osnove

Načela iza web usluga su iznenađujuće jednostavna. I ne dodaju ništa novo u svijet distribuiranog računarstva i Interneta:

  • osoba odgovorna za web servis određuje 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 kotacije dionica, prikaz cijene određenog proizvoda, spremanje unosa u kalendar sastanaka, 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 usluge 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 rad 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 s kojima su se programeri susreli (na primjer, DCOM, imenovani kanali, RMI) je u tome što se web usluge temelje na otvorenim standardima, lako ih je naučiti i ti su standardi široko podržani diljem svijeta. 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 usluge i njezinog korisnika upakirane su u 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 u XML i prilično ih je lako razumjeti. Ovako izgleda jednostavan SOAP zahtjev kada se putem HTPP-a poš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 vrlo je jednostavno prepoznati: to su dva parametra (("poštanski broj") i ("država"), koji se nalaze unutar elementa ispod naziva. 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 zahtjevu promijenjen je u element u odgovoru na zahtjev. Ovaj element sadrži samo jedan element čija vrijednost označava je li naš poštanski broj točan ili ne. Dakle, kroz magiju SOAP-a, stvorili smo upit koji nam čini koristan posao. Kao odgovor preko mreže dobivamo određenu vrstu odgovora u XML-u.

Sada o UDDI

Iako je SOAP protokol jednostavan, web usluge ne bi bile od velike koristi da nemamo načina da ih pronađemo. Srećom, IBM, Microsoft i Ariba su se pokrenuli 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 se za pronalazak željenog web servisa trebati obratiti samo jednom UDDI-ju. imenik.

Kako to sve 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 provjeru poštanskog broja na obrazac za registraciju.

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

Umjesto da izdvojim novac za kupnju baze podataka, sam napišem kod, osiguram cjelovitost i ispravnost svih podataka i ispravim pogreške u skriptama, samo odem u UDDI direktorij i vidim postoji li web usluga koja može obaviti posao za mene . Dolaskom na 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), pazeći da usluga radi točno ono što mi je potrebno. Zatim provjerim sa svojim kolegama reputaciju XYZ Corp. i saznam da je solidan , a zatim kontaktirajte XYZ Corp. o cijenama. Ako je cijena za pristup usluzi unutar mog proračuna, pišem jednostavnu JSP stranicu za svoju web-lokaciju koja poziva web-uslugu XYZ Corp., i gle čuda, trenutna potvrda pojavljuje se na poštanskom broju stranice.

Vrijedno je vašeg vremena

Č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 novoj web stranici, raspravljajući o svim funkcijama novog projekta. Sve ide odlično: proračun ispunjava očekivanja kupca, svidjela mu se skica plana lokacije i svidjeli su mu se primjeri sučelja. Čini se da sve radi.

I odjednom se sjete neke vrlo složene funkcije. Na sam spomen toga, lice vašeg web programera pozeleni i počne se gušiti i kašljati. 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 svoj strah! Spreman sam jamčiti da na Internetu 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 njegovog analoga. Na ovaj način spasit ćete svog programera od nepotrebnih glavobolja, svog klijenta od uzaludnog trošenja novca tako što će samo nekoliko minuta provesti pregledavajući UDDI katalog.

Razvoj usluga

Naravno, programeri se ne moraju zadovoljiti samo web uslugama koje su izradili drugi. Koristeći jedan od sljedećih alata, možete stvoriti vlastitu web uslugu i pružati njezine usluge drugim korisnicima interneta.

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

Unatoč raznolikosti poslužitelja i alata za razvoj web usluga, svi 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: "Previše je ružičasta slika. Što nije u redu s njom?" Nažalost, veliki potencijal web usluga ima svoju cijenu:

  • Korištenje XML-a kao formata za prijenos podataka znači da će vaše poruke biti vrlo velike: same XML oznake zauzimaju puno prostora, a to nas dodatno opterećuje pri stvaranju, prijenosu i tumačenju 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 servisa.
  • Danas malo tvrtki stvara web usluge i malo ih tvrtki koristi. Otklanjanje pogrešaka i poboljšanje sustava web usluga još uvijek zahtijeva dosta vremena.
  • Programeri tek trebaju prihvatiti sustav licenciranja i naplate korištenja web servisa. Zbog činjenice da web servisa još uvijek ima premalo, većina tvrtki nastoji ostaviti dobar dojam na svoje potencijalne klijente namjernim smanjenjem troškova usluga i ponudom povoljnih uvjeta licenciranja. Još će proći neko vrijeme dok stvarna cijena web usluga ne postane jasna.

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 mreži. Vrijeme je da se graditelji web stranica zainteresiraju za web usluge i saznaju više o tome što od njih mogu dobiti.

Prijevod: Alexander Kachanov (http://webmascon.com)

Pregledali smo opći pojmovi korištenje mehanizma « mreža- usluge". Obnovimo malo znanja.

Web usluge se koriste za razmjenu podataka između poslužitelja i klijenta; XML format služi za “pakiranje” podataka u svrhu međusobnog razumijevanja obaju sudionika u komunikaciji.

POGLAVLJEja

PRIMJER PROVEDBEMREŽA- SERVIS U SUSTAVU 1C:ENTERPRISE

ZADATAK: Potrebno je izraditi web servis čijim pristupom klijenti mogu utvrditi sve potrebne informacije o svojim aplikacijama.

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

RIJEŠENJE:

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

Korak 2. Dodajmo nekoliko novih objekata u konfiguraciju

Imenik "Klijenti";

Dokument "Prijava";

Nabrajanje "Statusi zahtjeva".

3. korak Kreirajmo novi XDTO paket.

Zašto i za koju svrhu kreiramo XDTO paket? Više informacija o korištenju mehanizma XDTO možete pronaći u “Poglavlju 16. Vodič za razvojne programere” i .

Ukratko napomenimo da je mehanizam XDTO 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širimo granu “Općenito” → “XDTO paketi” → Dodaj…

Odredimo 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) Sustomer- za prijenos podataka iz elementa imenika „Klijenti“.

- Ime ;

2) Dokument- za prijenos podataka iz dokumenta “Prijava”.

Ovaj XDTO tip objekta sadržavat će sljedeća svojstva:

- Sustomer- Tip kupca iz imenskog prostora http://192.168.1.76/request ; predstavlja referencu na XDTO objekt koji smo gore definirali;

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

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

Korak 4. Dodajmo novu web uslugu konfiguraciji

Proširimo granu “Općenito” → “Web usluge” → Dodaj…

Za web uslugu navodimo sljedeće vrijednosti svojstava:

Ime - DokumentiPodaci

URI prostora imena - 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 definirat ćemo operaciju “ GetData»

Vrijednosti svojstava operacije:

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

Moguće prazna vrijednost - Pravi

Naziv postupka - GetData.

Korak 6. Na operaciji GetData definirajmo parametar Sustomer sa sa sljedećim vrijednostima Svojstva:

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

Smjer prijenosa - ulazni.

Korak 7 Otvorimo modul kreiranog Web servisa iu njega smjestimo 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 ClientLink = Directories.Clients.FindByName(Customer); If Not ValueFilled(ClientRef) Then Return Undefined; završi ako; Zahtjev = Novi zahtjev; Request.Text = "SELECT TOP 1 | Application.Link, | REPRESENTATION(Application.Status) AS Status, | Application.Number |FROM | Document.Request AS Application |WHERE | Application.Client = &Client"; Request.SetParameter("Klijent", ClientLink); RequestResult = Request.Execute(); If QueryResult.Empty() Then Return Undefined; završi ako; Odabir = Rezultat upita.Odaberi(); Odabir.Dalje(); Dokument = Selection.Link.GetObject(); // Kreirajte XDTO objekt narudžbe Order = FactoryXDTO.Create(OrderType); Application.Numder = Sample.Number; Klijent = FactoryXDTO.Create(ClientType); Client.Name = ClientLink.Name; Application.Customer = Klijent; Application.Status = Selection.Status; // Vrati zahtjev Return Application; EndFunction

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

Stavka izbornika Konfigurator: “Administracija” → “Objava na web poslužitelju”.

Na kartici “Web usluge” postavite potvrdni okvir “Objavi web usluge” i također potvrdite okvir pored naše nove web usluge.

POGLAVLJEII

PRIMJER ŽALBE NAMREŽA-U USLUGU SUSTAVA 1C:ENTERPRISE IZ APLIKACIJE TREĆE STRANE

Glavna svrha mehanizma web usluga u sustavu 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(definirali smo ovo ime izravno u 1C). Ovaj modul sadrži sve potrebne informacije o web servisu.

3. korak Napišimo rukovatelj pozivima web usluge

Varijabla DocumentDataPortType već je definirana u modulu zahtjev

Korak 4. Pokrenite aplikaciju i pokrenite test.

POGLAVLJEIII

PRIMJER ŽALBE NAMREŽA-SERVIS U SUSTAVU 1C:ENTERPRISE

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

Korak 2. Definirajmo novi obrazac za obradu

3. korak Na obrascu ćemo navesti nekoliko detalja

Klijent - upišite "String"

ClientReturn - upišite "String"

NumberReturn - upišite "String"

StatusReturn - upišite “String”.

Detalje ćemo prikazati na obrascu.

Korak 4. Dodajmo naredbu obrasca " Da biste dobili podatke»

Specificirajmo rukovatelja naredbama

&OnClient Procedure GetData(Command) GetDataOnServer(Client); Kraj procedure Procedura GetDataOnServer(Client) // Kreirajte WS proxy na temelju veze i izvedite 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"); Podaci aplikacije = Proxy.GetData(Klijent); If Application Data = Undefined Then ClientReturn = "Undefined"; StatusReturn = "Nedefinirano"; Povratni broj = "Nedefinirano"; Povratak; završi ako; CustomerReturn = Application Data.Customer.Name; StatusReturn = Application Data.Status; Povratni broj = Application Data.Numder; Kraj postupka

Sustav 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;

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

Pomoću dinamičan veze stvorene pomoću ugrađenih jezičnih alata

(sukladno tome, "protiv" statičkih za dinamičke su "prednosti")

POGLAVLJEIV

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

Za lokalnu web uslugu trebate:

Korak 1. Postavite datoteku na klijenta gdje se pokreće 1C sustav webservicecfg.xml sa sljedećim sadržajem

Korak 2. Podnijeti zadano. vrd objavi konfiguraciju add redak

3. korak U konfiguratoru odaberite stavku izbornika

“Debug” → “Veza” → “Automatsko povezivanje” → “Web usluge na poslužitelju”

Korak 4. Kliknite na gumb "OK".

Za serversku opciju također trebate pokrenuti 1c server u debugging modu s ključem /debug

Web usluga, web servis - softverski sustav identificiran web adresom sa standardiziranim sučeljima.

Web usluge mogu komunicirati jedna s drugom is aplikacijama trećih strana putem poruka temeljenih na određenim protokolima =

  • XML-RPC
  • itd.

Web usluga je jedinica modularnosti kada se koristi uslužno orijentirana arhitektura aplikacije.

Uobičajeno rečeno, web usluge su usluge koje se pružaju na internetu.
U ovoj upotrebi termin zahtijeva pojašnjenje, bilo da govorimo o pretraživanju, web pošti, pohranjivanju dokumenata, datoteka, oznaka itd.
Takve se web usluge mogu koristiti neovisno o tome gdje pristupate internetu, računalu ili pregledniku.

Arhitektura

Kao što je prikazano na slici, postoje tri instance koje međusobno djeluju unutar web usluge. Prevedimo njihova imena kao kupac, izvođač i imenik (Service Requestor, Service Provider i Service Broker).

Kada je usluga razvijena, izvođač je registrira u imeniku gdje je potencijalni kupci mogu pronaći. Kupac, nakon što je u katalogu pronašao odgovarajuću uslugu, od tamo uvozi svoju WSDL specifikaciju i u skladu s njom razvija vlastitu uslugu. softver. WSDL opisuje format zahtjeva i odgovora koji se razmjenjuju između kupca i izvođača tijekom radnog procesa. Za osiguranje interoperabilnosti koriste se sljedeći standardi:

  • Proširivi označni jezik dizajniran za pohranu i prijenos strukturiranih podataka;
  • XML protokol za razmjenu poruka;
  • : Jezik za opisivanje vanjskih sučelja web usluge temeljen na XML-u;
  • Sučelje za univerzalno otkrivanje, opis i integraciju.

Imenik web usluga i informacija o tvrtkama koje pružaju web usluge javnosti ili određenim tvrtkama. Do sada UDDI postoji, međutim, samo u malim vlasničkim mrežama i još nije pronašao široku primjenu na otvorenom Internetu.

Metode razvoja

Postoje podijeljeni alati za automatizaciju razvoja web usluga u dvije glavne skupine.

U razvoju odozdo prema gore, prvo se pišu implementacijske klase, a WSDL datoteke koje dokumentiraju uslugu generiraju se iz njihovog izvornog koda. Nedostatak ove metode je Java klase podložne su čestim promjenama. U top-down pristupu prvo se priprema WSDL, a iz njega se generira kostur Java klase koja implementira uslugu. Taj se put smatra težim, ali vodi do čišćih i bolje zaštićenih rješenja. Sve dok se format poruka koje razmjenjuju naručitelj i izvođač ne promijeni, promjene u svakom od njih ne ometaju interakciju. Ova tehnika se ponekad naziva "prvo ugovor", budući da je početna točka WSDL ("ugovor" između kupca i izvođača).

Prednosti

  1. Web usluge pružaju interakcija programskih sustava bez obzira na platformu. Na primjer, Windows C# klijent može komunicirati s Java poslužiteljem koji radi pod Linuxom.
  2. Web usluge temelje se na bazi otvorenih standarda i protokola. Zahvaljujući korištenju XML-a Postignuta je jednostavnost razvoja i otklanjanja pogrešaka web usluga.
  3. Korištenje internetskog protokola omogućuje HTTP interakcija softverskih sustava kroz vatrozid. Ovo je značajna prednost u odnosu na tehnologije kao što su CORBA, DCOM ili Java RMI. S druge strane, web usluge nije usko vezan za HTTP - mogu se koristiti i drugi protokoli.

Mane

  1. Manja produktivnost i veće veličine mrežni promet u usporedbi s RMI, CORBA, DCOM tehnologijama zbog korištenja XML tekstualnih poruka. Međutim, neki web poslužitelji mogu se konfigurirati za komprimiranje mrežnog prometa.
  2. Sigurnosni aspekti. Odgovorne web usluge trebale bi koristiti enkripciju i po mogućnosti zahtijevati autentifikaciju korisnika. Programer mora odlučiti je li korištenje HTTPS-a ovdje dovoljno ili su rješenja kao što su XML potpis, XML enkripcija ili SAML poželjnija.

Primjeri

Suradnja zrakoplovnih prijevoznika i putničkih agencija. Prvi se pružaju putem web usluga korisna informacija, koje potonji koriste u potrazi za optimalnim ponudama za svoje klijente.

Google je od 2002. do 2009. pružao web uslugu koja je korisnicima omogućavala traženje informacija na internetu na isti način na koji to rade redovni korisnici. Što se tiče pogodnosti, to je neusporedivo, na primjer, s automatskim parsiranjem HTML teksta na Google stranicama.

Amazon.com ima web uslugu koja pruža razne web usluge (nešto "kao usluga" - cloud tehnologije)