XML web usluge. Pregled tehnologije

Naslov teme je zaista pitanje, jer Ni sam ne znam šta je to i po prvi put ću pokušati s tim raditi u okviru ovog članka. Jedina stvar koju mogu garantirati je da će kod ispod funkcionirati, međutim, moje fraze će biti samo pretpostavke i nagađanja o tome kako ja sam sve ovo razumijem. pa idemo...

Uvod

Moramo početi od onoga zbog čega je kreiran koncept web servisa. U vrijeme kada se ovaj koncept pojavio, u svijetu su već postojale tehnologije koje su omogućavale interakciju aplikacija na daljinu, pri čemu je jedan program mogao pozvati neku metodu u drugom programu, koji bi potom mogao biti pokrenut na računaru koji se nalazi u drugom gradu ili čak državi. Sve ovo je skraćeno RPC (Remote Procedure Calling - daljinski poziv procedure). Primjeri uključuju CORBA tehnologije, a za Javu - RMI (Remote Method Invoking - daljinsko pozivanje metoda). I čini se da je u njima sve dobro, pogotovo u CORBI, jer možete raditi s njim u bilo kojem programskom jeziku, ali nešto je ipak nedostajalo. Vjerujem da je nedostatak CORBA-e to što radi kroz neke od svojih mrežnih protokola umjesto jednostavnog HTTP-a, koji će puzati kroz bilo koji firewall. Ideja web servisa je bila kreiranje takvog RPC-a koji bi bio gurnut u HTTP pakete. Tako je započeo razvoj standarda. Koji su osnovni koncepti ovog standarda:
  1. SOAP. Prije pozivanja udaljene procedure, trebate opisati ovaj poziv u XML datoteci SOAP formata. SOAP je samo jedna od mnogih XML oznaka koje se koriste u web servisima. Sve što želimo negdje poslati putem HTTP-a prvo se pretvara u XML SOAP opis, zatim stavlja u HTTP paket i šalje na drugi računar na mreži putem TCP/IP-a.
  2. WSDL. Postoji web servis, tj. program čije metode se mogu pozvati na daljinu. Ali standard zahtijeva da se ovom programu priloži opis koji kaže da „da, niste pogriješili - ovo je zaista web servis i iz njega možete pozvati takve i takve metode.“ Ovaj opis je predstavljen drugom XML datotekom koja ima drugačiji format, naime WSDL. One. WSDL je samo XML datoteka koja opisuje web uslugu i ništa drugo.
Zašto tako kratko pitate? Zar ne možete detaljnije? Vjerovatno možete, ali za ovo ćete se morati obratiti knjigama kao što je Mashnin T. "Java Web Services". Tamo, za prvih 200 stranica, postoji detaljan opis svake oznake SOAP i WSDL standarda. Da li je vrijedno toga? Po mom mišljenju, ne, jer sve se to automatski kreira u Javi, a vi samo trebate napisati sadržaj metoda koje bi trebalo da budu pozvane na daljinu. Dakle, u Javi postoji takav API kao što je JAX-RPC. Ako neko ne zna kada kaže da Java ima takav i takav API, to znači da postoji paket sa skupom klasa koje inkapsuliraju tehnologiju o kojoj je riječ. JAX-RPC je evoluirao od verzije do verzije dugo vremena i na kraju je evoluirao u JAX-WS. WS je očigledno skraćenica za WebService i mogli biste pomisliti da je ovo jednostavno preimenovanje RPC-a u popularnu riječ ovih dana. Ovo nije tako, jer sada su web servisi odmakli od prvobitne ideje i dozvoljavaju ne samo pozivanje udaljenih metoda, već i jednostavno slanje poruka dokumenta u SOAP formatu. Zašto je to potrebno, još ne znam, malo je vjerovatno da će ovdje odgovor biti „za svaki slučaj, odjednom zatreba“. I sam bih volio da učim od iskusnijih drugova. I na kraju, JAX-RS se pojavio za takozvane RESTful web servise, ali to je tema za poseban članak. Ovaj uvod se može završiti, jer. sljedeće ćemo naučiti kako raditi sa JAX-WS.

Opšti pristup

Web servisi uvijek imaju klijenta i servera. Server je naša web usluga i ponekad se naziva krajnja tačka (kao što je krajnja tačka do koje dolaze SOAP poruke od klijenta). Moramo uraditi sljedeće:
  1. Opišite sučelje našeg web servisa
  2. Implementirajte ovaj interfejs
  3. Pokrenite našu web uslugu
  4. Napišite klijenta i daljinski pozovite željeni metod web usluge
Web servis možete pokrenuti na različite načine: ili opisati klasu sa main metodom i pokrenuti web uslugu direktno kao server, ili je postaviti na server kao što je Tomcat ili bilo koji drugi. U drugom slučaju, mi sami ne pokrećemo novi server i ne otvaramo drugi port na računaru, već jednostavno kažemo Tomcat servlet kontejneru da smo „ovde napisali klase web servisa, objavite ih tako da svi koji vas kontaktiraju mogu koristiti web servisa. Bez obzira na to kako se web servis pokrene, mi ćemo imati istog klijenta.

Server

Pokrenite IDEA i kreirajte novi projekat Kreirajte novi projekat. Navedite ime hellowebservice i pritisnite dugme Sljedeći, zatim dugme Završi. U folderu src kreirajte paket en.javarush.ws. U ovom paketu ćemo kreirati sučelje HelloWebService: paket ru. javarush. ws; // ovo su napomene, tj. način da označimo naše klase i metode, // u vezi s tehnologijom web usluga import javax. jws. WebMethod; import javax. jws. webservice; import javax. jws. sapun. SOAPBinding; // kažemo da će naš interfejs raditi kao web servis@WebService // kažemo da će se web servis koristiti za pozivanje metoda@SOAPBinding(style = SOAPBinding.Style.RPC) javno sučelje HelloWebService( // kažemo da se ova metoda može pozvati na daljinu@WebMethod public String getHelloString(String name) ; ) U ovom kodu, klase WebService i WebMethod su takozvane napomene i ne rade ništa osim što označavaju naš interfejs i njegovu metodu kao web servis. Isto se odnosi i na klasu SOAPBinding. Jedina razlika je u tome što je SOAPBinding bilješka s parametrima. U ovom slučaju se koristi parametar style sa vrijednošću koja ukazuje da web servis neće raditi kroz poruke dokumenta, već kao klasični RPC, tj. za pozivanje metode. Hajde da implementiramo logiku našeg interfejsa i kreiramo klasu HelloWebServiceImpl u našem paketu. Inače, napominjem da je klasa koja završava sa Impl konvencija u Javi, prema kojoj se tako označava implementacija interfejsa (Impl - od riječi implementacija, tj. implementacija). Ovo nije uslov i slobodno možete da imenujete klasu kako god želite, ali to zahtevaju dobri maniri: paket ru. javarush. ws; // ista napomena kao za opis interfejsa, import javax. jws. webservice; // ali ovdje se koristi s parametrom endpointInterface, // označavajući puni naziv klase sučelja našeg web servisa@WebService(endpointInterface= "en.javarush.ws.HelloWebService") javna klasa HelloWebServiceImpl implementira HelloWebService ( @Override public String getHelloString (ime stringa) ( // samo vrati pozdrav return "Zdravo, " + ime + "!" ; ) ) Pokrenimo naš web servis kao samostalni server, tj. bez učešća Tomcat-a i aplikacijskih servera (ovo je tema za posebnu raspravu). Da biste to učinili, u strukturi projekta u fascikli src kreirajmo paket ru.javarush.endpoint , iu njemu ćemo kreirati HelloWebServicePublisher klasu sa metodom main: package ru. javarush. krajnja tačka; // klasa za pokretanje web servera s web uslugama import javax. xml. ws. krajnja tačka; // klasa našeg web servisa import en. javarush. ws. hellowebserviceimpl; javna klasa HelloWebServicePublisher( public static void main(String. . . args)( // pokretanje web servera na portu 1986 // i na adresi navedenoj u prvom argumentu, // pokreće web servis proslijeđen u drugom argumentu krajnja tačka. objaviti ( "http://localhost:1986/wss/hello", novi HelloWebServiceImpl () ) ; ) ) Sada pokrenite ovu klasu klikom Shift+F10. Ništa se neće pojaviti na konzoli, ali server radi. Ovo možete provjeriti upisivanjem http://localhost:1986/wss/hello?wsdl u svoj pretraživač. Otvorena stranica, s jedne strane, dokazuje da imamo web server (http://) koji radi na portu 1986 na našem računaru (localhost), a s druge strane pokazuje WSDL opis našeg web servisa. Ako zaustavite aplikaciju, tada će opis postati nedostupan, kao i sam web servis, tako da to nećemo raditi, već prelazimo na pisanje klijenta.

Kupac

U fascikli projekta src napravimo paket ru.javarush.client i u njemu klasu HelloWebServiceClient sa glavnim metodom: package ru. javarush. klijent; // potreban za dobivanje wsdl opisa i kroz njega // doći do samog web servisa import java. net. URL; // takav izuzetak će se dogoditi kada radite s URL objektom import java. net. MalformedURLException; // klase za raščlanjivanje xml-a sa wsdl opisom // i posegnuti za servisnom oznakom u njoj import javax. xml. imenskog prostora. Qname; import javax. xml. ws. usluga; // sučelje našeg web servisa (treba nam više) import en. javarush. ws. hellowebservice; javna klasa HelloWebServiceClient( public static void main(String args) izbacuje MalformedURLException( // kreiramo vezu do wsdl opisa URL url = novi URL ( "http://localhost:1986/wss/hello?wsdl") ; // Gledamo parametre sljedećeg konstruktora u prvoj WSDL opisnoj oznaci - definicijama // pogledajte 1. argument u atributu targetNamespace // 2. argument potražite u atributu name QName qname = novo QName ("http://ws.site/" , "HelloWebServiceImplService") ; // Sada možemo doći do servisne oznake u wsdl opisu, Servisna usluga = Servis. kreirati (url, qname) ; // a zatim na oznaku porta koja je ugniježđena u njemu, tako da // dobiti referencu na objekt web usluge udaljen od nas HelloWebService hello = usluga. getPort(HelloWebService.class) ; // Ura! Sada možete pozvati udaljenu metodu Sistem. van. println(hello. getHelloString("JavaRush" ) ) ; ) ) Dao sam najviše komentara na kod u listingu. Nemam šta da dodam, pa pokrenite (Shift + F10). Trebali bismo vidjeti tekst u konzoli: Zdravo, JavaRush! Ako ga niste vidjeli, vjerovatno ste zaboravili pokrenuti web uslugu.

Zaključak

U ovoj temi predstavljen je kratak izlet u web servise. Još jednom, veliki dio onoga što sam napisao je moja pretpostavka o tome kako funkcionira, i stoga mi ne treba previše vjerovati. Bio bih zahvalan ako me upućeni isprave, jer ću tada nešto naučiti. UPD.

Web servis (servis) je program koji organizira interakciju između stranica. Informacije sa jednog portala se prenose na drugi.

Na primjer, postoji avio kompanija. Ona ima mnogo letova, odnosno puno karata. On prenosi informacije putem web servisa na web lokaciju tour travel agregatora. Korisnik koji uđe u agregator moći će odmah da kupi karte za ovu aviokompaniju.

Drugi primjer web servisa je stranica za praćenje vremena koja pruža informacije o vremenskim prilikama u određenom gradu ili zemlji u cjelini. Ove informacije često koriste i treće strane.

Informacije na Internetu su raznovrsne. Sajtovima upravljaju različiti sistemi. koriste se različiti protokoli za prijenos i šifriranje. Web servisi pojednostavljuju razmjenu informacija između različitih lokacija.

Arhitektura i protokoli web servisa

Možete definirati 3 instance koje međusobno djeluju: katalog, izvođač i kupac. Nakon kreiranja usluge, izvođač je registruje u katalogu, a kupac tu uslugu pronalazi.

Mehanizam razmjene podataka formiran je u Opisu Web usluga. To je specifikacija koja pokriva formate prosljeđivanja, tipove sadržaja, transportne protokole koji se koriste u razmjeni informacija između korisnika i uslužnog transportera.

Danas se za implementaciju različitih web servisa najčešće koristi nekoliko tehnologija:

  1. TCP/IP je protokol koji razumije gotovo svaka mrežna oprema, od velikih računala do prijenosnih uređaja i PDA uređaja.
  2. HTML je univerzalni jezik za označavanje koji se koristi za prikaz sadržaja na potrošačkim uređajima.
  3. XML je univerzalni alat za rukovanje svim vrstama podataka. Na njegovoj osnovi mogu raditi i drugi protokoli za razmjenu informacija: SOAP i WSDL.
  4. UDDI je univerzalni izvor prepoznavanja, integracije i opisa. Radi, po pravilu, u privatnim mrežama i još nije pronašao dovoljnu distribuciju.

Svestranost predstavljenih tehnologija je osnova za razumijevanje web servisa. Oni rade na standardnim tehnologijama koje su nezavisne od dobavljača aplikacija i drugih mrežnih resursa. Može se koristiti u svim operativnim sistemima, aplikacijskim serverima, programskim jezicima itd.

Prednosti

  • Stvaranje potrebnih uslova za interakciju softverskih komponenti, bez obzira na platformu.
  • Web servisi su bazirani na otvorenim standardnim protokolima. Kroz uvođenje XML-a, lako je kreirati i konfigurirati web servise.
  • Upotreba HTTP-a garantuje interakciju sistema kroz pristup međumrežama.

Nedostaci

  • Niske performanse i velika količina saobraćaja, u poređenju sa RMI, CORBA, DCOM sistemima, zbog upotrebe XML-poruka u kontekstu teksta.
  • Sigurnosni nivo. Svi moderni web servisi moraju implementirati kodiranje i zahtijevaju autorizaciju korisnika. Da li je ovdje dovoljan HTTPS ili su potrebni pouzdaniji protokoli, kao što su XML enkripcija, SAML, itd., odlučuje se tokom razvoja.

Zadaci web servisa

Web usluge se mogu koristiti u mnogim područjima.

B2B transakcije

Integracija procesa ide odjednom, bez učešća ljudi. Na primjer, ažuriranje kataloga online trgovine novim proizvodima. Dovoze se u magacin, a skladištar bilježi dolazak u bazu podataka. Informacije se automatski prenose u internet prodavnicu. A kupac, umjesto da na kartici proizvoda označi „Nema na zalihama“, vidi njegovu količinu.

Integracija usluga preduzeća

Ako kompanija koristi korporativne programe, onda će web usluga pomoći u uspostavljanju njihovog zajedničkog rada.

Kreiranje klijent-server sistema

Usluge se koriste za prilagođavanje rada klijenta i servera. Ovo vam daje sljedeće prednosti:

  • ne možete prodati sam softver, već omogućiti plaćeni pristup web servisu;
  • lakše rješavanje problema korištenjem softvera treće strane;
  • lakše je organizovati pristup sadržaju i materijalima servera.

Web usluga je aplikacija koja pojednostavljuje tehničku konfiguraciju interakcija resursa.

Danas se WEB usluge koriste gotovo posvuda - pružaju nam informacije o letovima aviona i vozova, kursevima i vremenu. Nije iznenađujuće da 1C također ima mogućnost kreiranja vlastitih WEB usluga, što vam omogućava da djelujete i kao dobavljač i kao potrošač. Ovaj mehanizam je ugrađen u platformu 1C:Enterprise 8.3, a programeri mogu čak dodati svoje objekte tipa WEB servisa u standardnu ​​konfiguraciju. Njihova arhitektura je izgrađena na skupu usluga koje vam omogućavaju razmjenu informacija sa drugim softverom.

Kreiranje web servisa 1C

Jedna od glavnih prednosti 1C WEB-usluga je odsustvo potrebe za direktnim pristupom podacima o sigurnosti informacija. Pravilno konfigurirana 1C web usluga omogućava drugim aplikacijama korištenje funkcija izvana. U takvim slučajevima, sama funkcija treba da odredi pravo korištenja podataka prema navedenim parametrima prema pravilima koje je propisao programer.

Kako napraviti web uslugu u 1C?

Da bi određena funkcija 1C sistema postala dostupna vanjskom softveru, morate izvršiti sljedeći algoritam radnji:

  1. Idite na konfiguraciju i dodajte objekt WEB usluge u određenu granu stabla;
  2. Opišite sve operacije koje naša funkcionalnost može izvršiti. Opis funkcija je napravljen u modulu na ugrađenom 1C jeziku;
  3. Dodajte opis parametara funkcija web usluge. Imajte na umu da su tipovi podataka opisani uzimajući u obzir postojeće tipove XDTO mehanizma koji je uveden u platformi verzije 8.1;
  4. Objavite kreiranu WEB uslugu na serveru. Mehanizam ugrađen u 1C platformu podržava sljedeće standarde:
  • SSL/TLS
  • WS-I BP

Primjer kreiranja jednostavnog WEB servisa

Da bismo što jasnije demonstrirali rad mehanizma WEB usluga, napravimo primjer - funkcionalnost koja određuje dužinu unesenog niza. Softver će proslijediti string kao parametar upita, a funkcija opisana u 1C će vratiti broj znakova. Prilikom kreiranja, morate imati na umu da će objavljivanje ovog mehanizma omogućiti pristup različitim softverima. Budući da nije svaki softver sposoban da percipira ćirilicu, konfiguracijske objekte ćemo imenovati latiničnim znakovima.

Otvorite konfigurator, pronađite granu "WEB usluge" u stablu i dodajte novu uslugu "wa_LengthString". Također morate dodati novu operaciju na kartici "Operacije". Nazovimo ga "CalcLengthString", u svojstvima specificiramo tip vraćene vrijednosti - int ili integer i unutar njega kreiramo parametar "InputString". Ostavite tip vrijednosti kao string.


Sada je potrebno registrirati radnju funkcije CalcLengthString u WEB servisnom modulu. Da biste to učinili, otvorite svojstva kreirane funkcije i pritisnite tipku u obliku lupe na desnoj strani, pored polja za unos "Naziv postupka". 1C će automatski kreirati funkciju u našem WEB servisnom modulu i otvoriti je tako da možemo opisati akciju CalcLengthString. Iskoristimo ovo i napišemo akciju funkcije - određivanje dužine ulaznog niza.


U stvari, ovim je završeno kreiranje najjednostavnijeg WEB servisa. Sada morate ovu uslugu "staviti" u javnu domenu kako bi softver treće strane ili drugi 1C sistemi mogli koristiti ovu funkcionalnost.

Da bismo mogli da objavimo kreirani web servis sa njegovom funkcionalnošću, potrebno je da imamo pristup sajtu. Prije nego što počnemo s objavljivanjem usluge, moramo provjeriti ime datoteke u svojstvima generiranog modula wa_LengthString. Trebao bi biti jasan, jednostavan i imati ekstenziju "1cws".


Sada je vrijeme da objavimo WEB servis koji smo kreirali na serveru. Ova funkcija se pojavila u verziji 8.3 platforme, a mnoge kompanije su već shvatile punu korist od ove funkcionalnosti. Da biste započeli sa objavljivanjem, potrebno je da otvorite obrazac „Administracija/Objavljivanje na web serveru…“ u konfiguratoru.


U prozoru koji se otvori moramo postaviti 1C Web usluge i popuniti određena polja:

  • Ime. Označava folder na web serveru u kojem će biti pohranjen opis naše web usluge. Pazite na velika i mala slova, jer serveri ponekad razlikuju velika i mala slova;
  • Web server. Morate odabrati server od onih instaliranih na računaru;
  • Katalog. Morate odabrati putanju do mape u kojoj se pohranjuju podaci web servera za postavljanje veze. Koriste se samo latinična slova;
  • Dvije karakteristike tipa "Boolean". Prvi nam je koristan ako trebamo konfigurirati pristup konfiguraciji preko web klijenta. Da biste objavili 1C uslugu, morate staviti drugu oznaku.

Ostaje samo provjeriti da li željeni WEB servis ima potvrdni okvir u prvoj koloni i kliknuti na "Objavi".


Budući da je ovaj mehanizam još uvijek prilično nov, možete naići na grešku poput "Greška pri izvođenju operacije datoteke ...". U ovom slučaju, samo trebate ponoviti dugme "Objavi". U većini slučajeva ovo pomaže i vidjet ćete poruku da je objavljivanje web usluge završeno.

en//ws/.1cws?wsdl

Kao odgovor na takav zahtjev za adresu, pretraživač mora prikazati strukturu XML datoteke. Ako vidite praznu stranicu, grešku ili čudne znakove (problemi kodiranja), morate ponovo provjeriti sve korake. Takođe je dobra ideja da se uverite da je server ispravno postavljen i da imate pristup njemu. Nakon uspješnog objavljivanja 1C WEB usluge, aplikacije trećih strana moći će je koristiti.

WEB-servis - (od engleskog web-service, sinonim - online usluga). Web usluge su usluge koje se pružaju na Internetu pomoću posebnih programa. Na primjer, uobičajene su usluge kao što su: hosting, e-pošta, skladištenje raznih informacija na Internetu (fajlovi, markeri), kalendar itd. Važna osobina web servisa je da ne zavisi od vašeg provajdera, računara ili pretraživača – sa svojim podacima možete raditi bilo gde u svetu gde imate pristup .

Knyazev A.A. Enciklopedijski rečnik masovnih medija. - Biškek: Izdavačka kuća KRSU. A. A. Knjazev. 2002 .

Pogledajte šta je "WEB-servis" u drugim rječnicima:

    web servis

    web servis- Web servis. Web servis, web servis (engleski web servis) je softverski sistem, identifikovan nizom interfejsa definisanih u XML-u, a prenosi se korišćenjem Internet protokola. Web servis je jedinica modularnosti kada se koristi ... ... Wikipedia

    Komunikacijski protokol Web Cache- (WCCP) Protokol za preusmjeravanje sadržaja koji je razvio Cisco. Pruža mehanizam za preusmjeravanje saobraćajnih tokova u realnom vremenu. Ima ugrađeno skaliranje, balansiranje opterećenja, toleranciju grešaka. Cisco IOS ... ... Wikipedia

    Web Map Service- (WMS Russian web map service) standardni protokol za serviranje preko Interneta geografski referenciranih slika koje generiše server za mapiranje na osnovu podataka iz GIS baze podataka. Ovaj standard je razvijen i po prvi put ... ... Wikipedia

    Web Hotel Salvador- (Salvador, Brazil) Kategorija hotela: hotel sa 2 zvjezdice Adresa: Rua das Alfazemas … Katalog hotela

    Web Hotel Aparecida- (Aparecida, Brazil) Kategorija hotela: hotel sa 3 zvezdice Adresa: Av. Isaac Ferrei … Imenik hotela

    servisno orijentisana arhitektura- Poslovni procesi organizacije se realizuju na osnovu usluga koje pružaju postojeće aplikacije Kupca. Ako aplikacije ne podržavaju mogućnost pružanja usluga (Web Services), razvija se implementacija proizvoda ... ... Priručnik tehničkog prevodioca

    web 2

    Web 2.0- Ključni koncepti povezani sa Web 2.0 Web 2.0 (definisao Tim O'Reilly) je tehnika za dizajniranje sistema koji, uzimajući u obzir mrežne interakcije, postaju bolji što ih više ljudi koristi. Web 2.0 funkcija. je princip ... ... Wikipedia

    web stranica- Upit "web stranica" je preusmjeren ovdje. Vidi takođe druga značenja. Web stranica (od engleskog Website: web web i stranica "mjesto") u računarskoj mreži ujedinjenoj pod jednim imenom domene ili IP adresom) zbirka dokumenata privatnog lica ili ... ... Wikipedia

Knjige

  • Informacione tehnologije u turističkoj industriji, VN Šitov. U priručniku se detaljno razmatraju kompjuterske tehnologije opće namjene koristeći popularne pakete Microsoft Office 2010 i alternativne komplekse, koristeći ... Kupite za 546 rubalja
  • 75 Spremna rješenja za Vašu web stranicu u PHP-u , Steinmetz W., Ward B.. Svako ko pravi ili će napraviti svoju web stranicu neminovno se suočava sa nizom zadataka i poteškoća: kako napraviti blog na stranici…. "pričvrstiti" glasanje, zatvoriti određene...

Na osnovu arhitekture web servisa kreiramo sljedeće dvije komponente kao dio implementacije web servisa:

Pružalac usluga ili izdavač

Ovo je provajder web usluga. Dobavljač usluge implementira ovu uslugu i čini je dostupnom na Internetu ili intranetu. Mi ćemo pisati i objavljivati ​​jednostavnu web uslugu koristeći .NET SDK.

Pružalac usluga ili potrošač

Ovo je svaki potrošač web usluge. Zahtjevalac koristi postojeću web uslugu otvaranjem mrežne veze i slanjem XML zahtjeva. Napisat ćemo i dva zahtjeva za web servise: jedan web potrošač (ASP.NET aplikacija) i drugi potrošač baziran na Windows aplikacijama.

Ispod je naš prvi primjer web servisa koji radi kao dobavljač usluga i izlaže dvije metode (add i SayHello) kao web usluge koje će koristiti aplikacije. Ovo je standardni predložak za web uslugu. .NET usluge koriste ekstenziju .asmx. Imajte na umu da metoda izložena kao web usluga ima atribut WebMethod. Sačuvajte ovu datoteku kao FirstService.asmx u IIS virtuelnom direktorijumu (kao što je opisano u postavci IIS-a, npr. c:\MyWebSerces).

FirstService.asmx

<%@ WebService language = "C" class = "FirstService" %>korištenje sistema; koristeći System.Web.Services; koristeći System.Xml.Serialization; javna klasa FirstService: WebService ( public int Add(int a, int b) ( return a + b; ) public String SayHello() (vrati "Hello World"; ) )

Da biste testirali web servis, on mora biti objavljen. Web servis može biti objavljen ili na intranetu ili na Internetu. Ovu web uslugu ćemo objaviti na IIS-u koji radi na lokalnom računalu. Počnimo sa postavljanjem IIS-a.

  • Otvorite Start → Settings → Control Panel → Administrative Tools → Internet Services Manager.
  • Proširite i kliknite desnim tasterom miša na Podrazumevana veb lokacija; izaberite Novo → Virtuelni imenik. Otvara se čarobnjak za kreiranje virtuelnog imenika. Kliknite na „Dalje.
  • Pojavljuje se ekran virtuelnog imenika. Unesite naziv za virtualni direktorij. Na primjer, MyWebServices. i kliknite na Next.
  • Otvara se ekran "Katalog web sadržaja".
  • Unesite ime direktorija za virtualni direktorij. Na primjer, c:\MyWebServices Kliknite na Next.
  • Pojavljuje se ekran Dozvola za pristup. Promijenite postavke prema vašim zahtjevima. Zadržimo zadane postavke za ovu vježbu.
  • Kliknite na "Dalje". Završava postavljanje IIS-a.
  • Kliknite "Finish" da završite podešavanje.

Da biste provjerili da li je IIS ispravno konfiguriran, kopirajte HTML datoteku (na primjer x.html) u virtuelni direktorij (C:\MyWebServices) kreiran iznad. Sada otvorite Internet Explorer i unesite http://localhost/MyWebServices/x.html. Trebalo bi otvoriti x.html datoteku.

Bilješka. Ako to ne uspije, pokušajte zamijeniti localhost IP adresom vašeg uređaja. Ako i dalje ne radi, provjerite radi li IIS; možda ćete morati ponovo konfigurirati IIS i virtualni direktorij.

Da biste testirali ovu web uslugu, kopirajte FirstService.asmx u IIS virtualni direktorij kreiran iznad (C:\MyWebServices). Otvorite web uslugu u Internet Explorer-u (http://localhost/MyWebServices/FirstService.asmx). Trebalo bi otvoriti stranicu web usluge. Stranica bi trebala imati veze do dvije metode koje pružamo kao web usluge našoj aplikaciji. Čestitamo! Napisali ste svoj prvi web servis!

Testiranje web servisa

Kao što smo upravo vidjeli, lako je pisati web servise u .NET Framework. Pisanje web servisa je takođe lako u .NET okruženju; međutim, malo je aktivniji. Kao što smo ranije raspravljali, pisat ćemo dvije vrste korisnika usluga: jedan je web stranica, a drugi je Windows aplikacija bazirana na korisniku. Hajde da napišemo našeg prvog korisnika web usluga.

Web usluge

Napišite web korisnika kao što je dato u nastavku. Nazovite ga WebApp.aspx. Imajte na umu da je ovo ASP.NET aplikacija. Sačuvajte ovo u virtuelnom direktorijumu web usluge (c:\MyWebServices\WebApp.axpx). Ova aplikacija ima dva tekstualna polja koja se koriste za dobijanje brojeva od korisnika za dodavanje. Ima jedno dugme Run koje, kada se klikne, dobija web usluge Add i SayHello.

WebApp.axpx

<%@ Page Language="C#" %>

Prvi broj za dodavanje: 4< /asp:TextBox>

Drugi broj za dodavanje: 5

Rezultat web usluge -

hello world service : etiketa< /asp:Label>

Dodaj uslugu : & etiketa

Nakon kreiranja potrošača, moramo kreirati proxy za korištenje web usluge. Visual Studio .NET automatski obavlja ovaj posao za nas kada se pozivamo na dodanu web uslugu. Evo koraka koje treba slijediti:

  • Kreirajte proxy za korištenje web usluge. Proxy se kreira pomoću WSDL uslužnog programa koji se isporučuje uz .NET SDK. Ovaj uslužni program preuzima informacije s web usluge i kreira proxy. Proxy server je važeći samo za određenu web uslugu. Ako trebate koristiti druge web usluge, također morate kreirati proxy za tu uslugu. Visual Studio .NET automatski kreira proxy kada se doda referenca web usluge. Kreirajte proxy za web uslugu koristeći WSDL uslužni program koji se isporučuje uz .NET SDK. To će kreirati datoteku FirstSevice.cs u trenutnom direktoriju. Moramo ga kompajlirati da generišemo FirstService.dll (proxy) za web uslugu.
  • c:>WSDL http://localhost/MyWebServices/FirstService.asmx?WSDL
  • c:> csc /t:library FirstService.cs
  • Postavite prevedeni proxy u bin direktorij virtualnog direktorija web usluge (c:\MyWebServices\bin). Internet Information Services (IIS) traži proxy server u ovom direktoriju.
  • Stvorite potrošača usluge kao što smo to učinili. Imajte na umu da je proxy objekt web usluge kreiran na potrošaču. Ovaj proxy vodi računa o interakciji sa uslugom.
  • Unesite URL korisnika u IE da ga testirate (na primjer, http://localhost/MyWebServices/WebApp.aspx).

Korisnici web servisa zasnovani na Windows aplikacijama

Pisanje aplikacije za web servis zasnovanu na Windows aplikacijama slično je pisanju bilo koje druge Windows aplikacije. Potrebno je samo da kreirate proxy (što smo već uradili) i da se pozovete na njega prilikom kompajliranja aplikacije. Ispod je naša Windows aplikacija koja koristi web uslugu. Ova aplikacija kreira objekt web usluge (naravno, proxy) i poziva metode SayHello i Add na njemu.

WinApp.cs

korištenje sistema; koristeći System.IO; imenski prostor SvcConsumer ( klasa SvcEater ( public static void Main(String args) ( FirstService mySvc = new FirstService(); Console.WriteLine("Pozivanje Hello World Service: " + mySvc.SayHello()); Console.WriteLine("Pozivanje Add( 2, 3) Usluga: " + mySvc.Add(2, 3).ToString()); ) ) )

Prevedite ga sa c: \> csc /r:FirstService.dll WinApp.cs . To će kreirati datoteku WinApp.exe. Pokrenite ga da testirate aplikaciju i web uslugu.

Sada se postavlja pitanje: kako možete biti sigurni da ova aplikacija zapravo poziva web servis?

Lako je to provjeriti. Zaustavite svoj web server tako da se ne može kontaktirati web usluga. Sada pokrenite WinApp aplikaciju. Izbacit će izuzetak u vrijeme izvođenja. Sada ponovo pokrenite web server. Mora da radi.