Što je "web usluga" na jednostavnom engleskom? Organizacija rada web servisa.

Praktična upotreba web servisa u IBM Lotus Domino 7

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

Serija sadržaja:

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

https://www..jsp?series_title_by=Practical+use+of+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, opisima softverski proizvodi ili čak u dijalozima s kolegama. Očigledno su web usluge nekim ljudima neophodne i važne, međutim, kada ste naišli na definicije poput "XML gramatike za definiranje skupova krajnjih točaka za razmjenu poruka", zaključili ste da se tako složene stvari ne isplati dirati.

Srećom, web usluge mogu se objasniti na način koji svatko može razumjeti bez ulaženja u detalje kako sve to funkcionira. Trebali biste pokušati razumjeti što su web-usluge budući da se opseg njihove (i srodne servisno-orijentirane arhitekture, SOA) primjene u IT svijetu neprestano širi.

Web usluge mogu se shvatiti kao automobil: 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, naravno, ako oni su mehaničari) . Isto je i s web-uslugama; kao IT stručnjak, samo trebate razumjeti što su i kako funkcioniraju kako biste razumjeli zašto su vam potrebne.

Postalo je puno lakše raditi s web uslugama bez dodirivanja skrivenih tehnologija niske razine, jer dobavljači softvera i zajednica ljudi koji pišu programe s otvoreni izvor, učinili su mnogo tijekom proteklih nekoliko godina kako bi odvojili sučelje web usluga od zadataka niske razine. To će vam omogućiti da radite jednostavnim povezivanjem komponenti zajedno, 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 mnoštvo korisnih informacija koje će biti od koristi svima koji žele razumjeti što su web usluge. Tehnologije u Lotus Domino V7.0 olakšavaju razvojnim programerima stvaranje i korištenje web usluga, a o tome ćemo detaljnije govoriti kasnije.

Prvo, shvatimo što je web usluga.

Što je web usluga?

Jednostavno rečeno, web usluga omogućuje računalni programi međusobno komuniciraju na standardiziran način.

Komunikacija između tri ili više strojeva

Iako u primjerima razmatramo transakcije unutar jednog ili dva računala, web usluge se također mogu koristiti za komunikaciju između veliki iznos računala. Na primjer, prosljeđivanje ili pohranjivanje transakcija može izvršiti posrednički uređaj ili poziv web servisu na jednom poslužitelju može rezultirati pozivom servisu na drugom.

Na kraju ovog članka, kada budemo gledali pravu SOA, govorit ćemo o web uslugama koje komuniciraju preko više strojeva, budući da je to ono što SOA uvijek radi.

Web usluga je apstraktna komponenta, baš kao što je apstraktan koncept dijaloga među ljudima. Dijalog uključuje dvije ili više osoba koje govore jezikom koji im je poznat. Njihov jezik definira riječi koje koriste i način na koji se te riječi koriste za oblikovanje rečenica. Tipično, dijalog ima strukturu pitanje-odgovor, kada netko postavlja pitanje ili daje izjavu, a sugovornik na to odgovara. Ljudi mogu biti u blizini, komunicirati telefonom, slati poruke jedni drugima putem pošte ili chata.

U svakom slučaju, dijalog ima složenu strukturu i može se odvijati na različite načine, ovisno o broju ljudi koji komuniciraju, jeziku komunikacije, tehnologijama koje se koriste za komunikaciju, 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 i kod običnog dijaloga - programi komuniciraju koristeći jezik koji im je poznat, ponekad preko mreže. Programi se mogu nalaziti na jednom računalu ili postaviti na različite strojeve u različitim dijelovima svijeta, povezani putem interneta usmjerivačima i poslužiteljima. Dobra stvar je što programi i računala ne moraju biti isti. Zahvaljujući web uslugama, dvije osobe mogu komunicirati Microsoft programi.NET na jednom laptopu, te Java program na kanadskom iSeries poslužitelju s C++ programom na Linux računalu iz Kine.

U komunikaciji putem web servisa koriste se sljedeće standardne tehnologije:

  • XML. Jezik (format podataka) koji koriste komponente web usluge.
  • 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. Pogledat ćemo to kasnije u članku, ali budući da korištenje UDDI-ja nije potrebno, mnoge web usluge ga ne koriste.

Neka terminologija: objavljivanje i korištenje web usluga

Prije nego krenemo u objašnjavanje naših pojmova, pogledajmo neke terminologije povezane s web uslugama.

Kada govorimo o objavljivanju web usluge, govorimo o programu 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 jednostavna datoteka XML.

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, npr. u elementu Ugniježđeni elementi , I .

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

  • Struktura i gramatika XML-a slična je strukturi drugih programskih jezika, tako da programi koji su u interakciji s web-uslugama ne moraju izravno izvoditi strukturnu analizu XML datoteka.
  • XML datoteke su tekstualne i čitljive (drugim riječima, ako poznajete XML, 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 da iskoristite ono š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 element PersonName, koji uključuje dva podelementa niza, FirstName i LastName.

    Također, 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 doista i jesu nedostaci, su:

  • XML je rigidan jezik, 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 prilikom stvaranja web-usluga), sama biblioteka provjerava je li ispravno oblikovana.
  • XML poruka pohranjuje se u regularni tekstualna datoteka, te stoga zauzima više prostora nego njegov ekvivalent u drugom formatu (kao što je podijeljeni, binarni ili "domaći" format).

Ali ti su problemi beznačajni u usporedbi s prednostima XML formata.

SOAP: poruke su poslane

Znate da web usluge komuniciraju XML format, međutim, ovo rješava samo pola problema. Aplikacije mogu analizirati poruku, ali kako znaju što učiniti s rezultatom dobivenim nakon analize?

Uputa koja opisuje pravila za oblikovanje 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 malo drugačije implementirati ove upute. 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, ispravno napisan klijent ili poslužitelj može obraditi bilo koju poruku koja je ispravno napisana prema SOAP uputama.

Osim toga, postoje neke važne razlike između izjava 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 se nikada prije niste susreli s WSDL datotekom i pokušali je otvoriti i pročitati, teško ćete iz nje izvući sve informacije, budući da 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, a da bi se konstruirala SOAP poruka, mora ih prikupiti klijentska aplikacija. Ovaj članak neće opisivati ​​dijelove WSDL datoteke i kako oni rade zajedno.

Tu nam tehnologija ponovno dolazi u pomoć. Kao programer, ne morate čitati, analizirati ili razumjeti sadržaj WSDL datoteke. Alati će dobiti te informacije umjesto vas, tako da samo trebate smisliti što poslati usluzi i gdje staviti rezultate. Vi niste samo možeš koristiti knjižnice i alate, ali i sigurno hoćeš. U svim komponentama web-usluga postoji dosta iznimaka, mana i složenosti koje biste trebali proučiti. korištenjem Web servis, umjesto rastavljanja nakon čega slijedi detaljno proučavanje svake komponente.

Protokoli: kako se poruke šalju

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

Obično se prenose preko mreže (i/ili interneta) pomoću HTTP protokola, gotovo 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.

Tipično, WSDL datoteka definira protokol koji se koristi za prijenos SOAP poruke 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 servise obično imaju slabe veze sa servisima, odnosno servisi potrebni za rad programa nisu izravno vezani uz njega, kao što ni program nije vezan uz servise. 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 (osobno, telefonom, preko elektronička pošta itd.). Svatko sam dolazi u restoran, a nakon ručka svatko sam plaća 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 trebate postići unaprijed definirane ciljeve. Pri izlasku iz garaže ubacite auto u rikverc i nagazite na gas. Kad skreneš lijevo, okrećeš volan ulijevo. Nemate priliku raditi istu stvar na različite načine, jer je cijeli sustav vrlo precizan i koherentan, a svaki njegov element povezan je s ostalima.

UDDI

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

Iako je UDDI prilično važan standard za definiranje web servisa, njegov značaj je uvelike umanjen činjenicom da je on izborni element web servisa, a kada se da izbor hoće li ga koristiti ili ne, mnogi ga odluče ne koristiti.

Većina organiziranih poslovnih okruženja s velikim brojem internih web usluga ima UDDI registre. Sjajno je imati korporativnu UDDI web stranicu koja sadrži informacije o web uslugama dostupnim u vašoj tvrtki. Objedinjujući sve usluge zajedno, UDDI vam omogućuje neprimjetnu i besprijekornu promjenu 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

Dok čitate o SOAP-u i WSDL-u, možda ćete primijetiti da tema sigurnosti nije pokrivena. Kako se provodi autentifikacija za servisne pozive ako davatelj radi s osjetljivim informacijama? Jasno je da nisu sve web usluge dostupne široj javnosti, zar ne?

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

  • Mogu li SOAP poruke stići kao tekst 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 tokenu?
  • Ako se tokeni koriste, moraju li biti potpisani i koji je ispravan način da ih uključite u SOAP poruku?
  • Što ako klijent ne šalje SOAP poruke izravno, već kroz neku međustrukturu, kao što je red poruka ili neki drugi web servis?

Dodatno, razmjena poruka možda neće uvijek koristiti HTTP, tako da nećete moći jednostavno koristiti sigurnosne sustave web usluga uz postojeće HTTP sigurnosne sustave.

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 smjernice, dostupni 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, sakupljen u jednu prilično veliku grupu, koji se obično nazivaju WS-* instrukcije. Zajedno se bave mnogim razmatranjima dizajna koja se javljaju kada sastavite mnoge web usluge u jedno okruženje. WS-* standardi rješavaju pitanja 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 industrijskom okruženju može biti mnogo složenija od jednostavnog zahtjeva/odgovora. Na primjer, kako osigurati da poruka stigne do davatelja i da se vrati korisniku? Š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 softverske tvrtke rad s ovim standardima predstavlja i izazove i prilike. Neki dobavljači prodaju čitave pakete srednjeg softvera za web usluge, često zvane Enterprise Service Buses ili ESB, koji mogu podnijeti sve ili barem neke od gore navedenih zadataka. Ovi ESB-ovi su također vrijedni jer mogu povezati višestruke web usluge unutar iste organizacije i pružiti njihovu funkcionalnost, bilježeći njihove radnje i pohranjujući poruke u redovima čekanja.

Servisno orijentirana arhitektura

I konačno, servisno orijentirana arhitektura. U većini slučajeva, to je jednostavno kombinacija svega navedenog: labavo povezane web usluge različitih dobavljača, u interakciji u skladu s prihvaćenim standardima (moguće uz sudjelovanje ESB-a) i prikupljene zajedno pomoću različitih programa koji uzimaju podatke iz usluga i koristiti ga na različite načine.

Budući da je SOA softverska arhitektura, ogromna količina rada na koordinaciji i planiranju povezana je s njezinom izgradnjom. To nije samo hrpa usluga 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 cijeli sustav nadziru i upravljaju.

Ako gledate globalnije, SOA je također vrsta razmišljanja. Tjera vas da ne razmišljate o neovisnim radnicima veliki programi, ali sve promatrati kao moguće komponente objavljene i korištene u proizvodnji. Umjesto aplikacija bogatih značajkama, razmišljate o specifičnim i dobro definiranim uslugama - a to su web usluge.

Zašto je to važno?

Sada već znate nešto o tome kako web usluge rade - klijent čita WSDL datoteku pružatelja usluga, formatira i šalje SOAP poruku u skladu s njom, a kao odgovor prima drugu SOAP poruku. Zašto je to tako važno? Što je bilo?

Dio važnosti usluga je u tome što pružaju standardni način za komunikaciju programa, bez obzira na jezike na kojima su napisani ili platforme na kojima rade. Ranije smo morali raditi s formatima podataka koji su bili 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. Jedna od glavnih poteškoća pri radu s različitim tehnologijama iz različitih proizvođača uvijek je bilo potrebno prisiliti sve te različite programe međusobno komuniciraju i razmjenjuju podatke. Sada kada sve vaše aplikacije mogu isporučivati ​​i/ili koristiti web usluge, interoperabilnost među njima je nevjerojatno jednostavna.

Još jedna prednost web usluga je ta što klijenti i dobavljači mogu biti na različitim strojevima, koristeći različit hardver i softver, a to neće ometati komunikaciju. Programe mogu koristiti drugi programi unutar istog stroja ili s drugih strojeva, ali koristeći određeni format prijenosa podataka. Web servisi trebaju samo mrežnu vezu i XML procesor.

Ako se svi ti faktori uzmu u obzir zajedno, rezultat je značajan. Jednom kada imamo standardni lijek Za komunikaciju između aplikacija preko mreže, naše programe možemo izgraditi drugačije. Umjesto pisanja monolitnih programa koji svaki put iznova izmišljaju kotač, možemo napisati 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 prikazuje podatke primljene s nekoliko web servisa. Kompilirani podaci primaju se od jedne ili više usluga, a rezultirajuće grafove stvara druga web-usluga koja prihvaća podatke i proizvodi grafikon.

Nadzorna ploča pretvara se iz velikog programa u jednostavno sučelje. Ako želimo dodati nove komponente, jednostavno se obratimo dodatne usluge. Ako trebamo drugu kartu, obratit ćemo se drugoj službi za izradu karata. Ako trebamo interaktivniju nadzornu ploču, s mogućnostima obuke ili sortiranja, tada nadzorna ploča može prenijeti poruke od korisnika do odgovarajućeg servisa. Možemo čak potpuno promijeniti usluge koje se pozivaju tako da korisnici to ne primijete (sve dok se WSDL datoteka ne promijeni), a ploča će ostati ista.

Kao IT stručnjak, možete razviti i sučelje i usluge, ili oboje. Razumijevanje kako sve to zajedno funkcionira (ili barem znanje o čemu se radi) važno je kada radite na ovakvom projektu.

Također je dobro što postoje mnogi alati koji će vam pomoći u pružanju i korištenju web-usluga i koji mogu obaviti velik dio teškog posla umjesto vas. U sljedećim dijelovima članka shvatit ćemo kako korištenjem IBM Lotus Domino V7.0 možete jednostavno isporučiti web usluge klijentima ili sustavima.

Pustili smo nova knjiga"Sadržajni marketing u u društvenim mrežama: Kako ući u glave svojih pretplatnika i natjerati ih da se zaljube u vaš brend.”

Pretplatite se

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

Na primjer, postoji zrakoplovna tvrtka. Ima mnogo letova, što znači da ima mnogo karata. Prenosi informacije putem web usluge na mjesto skupljača putovanja. Korisnik koji pristupi agregatoru moći će izravno ondje kupiti karte za ovu zrakoplovnu tvrtku.

Drugi primjer web usluga je stranica za praćenje vremena koja sadrži informacije o vremenskim uvjetima u određenom gradu ili zemlji u cjelini. Ova informacija također često koriste treće strane.

Informacije na internetu su raznolike. Mjesta su upravljana različitim sustavima. Koriste se različiti protokoli za prijenos i šifriranje. Web usluge pojednostavljuju razmjenu informacija između različitih stranica.

Arhitektura i protokoli web servisa

Možete definirati 3 autoriteta koji međusobno djeluju: katalog, izvođač i kupac. Nakon izrade usluge, izvođač je upisuje u katalog, a kupac tu uslugu pronalazi.

Mehanizam razmjene podataka formiran je u opisu Web usluge Opis. Ovo je specifikacija koja pokriva formate prosljeđivanja, vrste sadržaja, transportne protokole koji se koriste u procesu razmjene informacija između korisnika i prijenosnika usluge.

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 označni jezik koji se koristi za prikaz sadržaja na potrošačkim uređajima.
  3. XML je univerzalni alat za obradu svih vrsta 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, u pravilu, u privatnim mrežama i još nije pronašao dovoljnu distribuciju.

Svestranost predstavljenih tehnologija temelj je razumijevanja web usluga. Rade na standardnim tehnologijama koje su neovisne o pružateljima aplikacija i drugim mrežnim resursima. Može se koristiti u svim operativnim sustavima, aplikacijskim poslužiteljima, programskim jezicima itd.

Prednosti

  • Stvaranje potrebnih uvjeta za interakciju softverskih komponenti, bez obzira na platformu.
  • Web usluge temelje se na otvorenim standardnim protokolima. Uvođenjem XML-a pojednostavljena je izrada i konfiguracija web servisa.
  • Korištenje HTTP-a jamči interakciju sustava putem mrežnog pristupa.

Mane

  • Niske performanse i veliki obujam prometa, u usporedbi sa sustavima RMI, CORBA, DCOM, zbog korištenja XML poruka u kontekstu teksta.
  • Razina sigurnosti. Sve moderne web usluge moraju implementirati kodiranje i zahtijevaju autorizaciju korisnika. Je li ovdje dovoljan HTTPS ili su potrebni pouzdaniji protokoli, kao što je XML enkripcija, SAML itd., odlučuje se tijekom razvoja.

Zadaci web usluga

Web usluge mogu se koristiti u mnogim područjima.

B2B transakcije

Integracija procesa događa se odmah, bez sudjelovanja ljudi. Na primjer, ažuriranje kataloga online trgovine novim proizvodima. Dovoze se u skladište, a skladištar evidentira prispjeće u bazi podataka. Podaci se automatski prenose u online trgovinu. A kupac, umjesto oznake “Out of stock” na kartici proizvoda, vidi njegovu količinu.

Integracija usluga poduzeća

Ako tvrtka koristi korporativne programe, tada će web usluga pomoći u postavljanju njihovog zajedničkog rada.

Izrada sustava klijent-poslužitelj

Usluge se koriste za konfiguriranje rada klijenta i poslužitelja. Ovo pruža prednosti:

  • ne možeš ga sam prodati softver, ali neka se pristup web-usluzi plati;
  • Lakše je riješiti probleme pomoću softvera treće strane;
  • lakše je organizirati pristup sadržaju i materijalima poslužitelja.

Web usluga je aplikacija koja olakšava tehnička postavka interakcija resursa.

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 stranice i moj me klijent zamolio da dodam na web mjesto nova značajka: potrebno je dodati provjeru valjanosti Poštanski broj u obrascu 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 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.

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

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

Web servisi mogu komunicirati međusobno i sa aplikacije 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 WSDL specifikaciju i razvija svoj softver u skladu s njom. 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 programski sustavi 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. Manje performanse i veći 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)

Naslov teme je zapravo pitanje, jer... Ni sam ne znam što je to i po prvi put ću pokušati raditi s njim u okviru ovog članka. Jedino što mogu jamčiti je da će kod prikazan u nastavku raditi, ali moji će izrazi biti samo pretpostavke i nagađanja o tome kako ja osobno sve ovo razumijem. Pa, idemo...

Uvod

Moramo početi s time zašto je nastao koncept web usluga. U vrijeme kada se ovaj koncept pojavio u svijetu, već su postojale tehnologije koje su omogućavale interakciju aplikacija na daljinu, gdje je jedan program mogao pozvati neku metodu u drugom programu, koja se mogla pokrenuti na računalu koje se nalazi u drugom gradu ili čak državi. Sve se to skraćeno naziva RPC (Remote Procedure Calling). Primjeri uključuju CORBA tehnologije, a za Javu - RMI (Remote Method Invoking). 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 preko nekih vlastitih mrežnih protokola umjesto jednostavnog HTTP-a, koji će proći kroz svaki firewall. Ideja web servisa bila je stvoriti RPC koji bi se umetao u HTTP pakete. Tako je započeo razvoj standarda. Koji su osnovni koncepti ovog standarda:
  1. SAPUN. Prije pozivanja udaljene procedure, trebate opisati ovaj poziv u XML datoteci u SOAP formatu. SOAP je jednostavno jedno od mnogih XML oznaka koje se koriste u web uslugama. Sve što želimo nekamo poslati putem HTTP-a prvo se pretvara u XML SOAP opis, zatim se strpa u HTTP paket i šalje na drugo računalo na mreži putem TCP/IP-a.
  2. WSDL. Postoji web servis, tj. program čije se metode mogu pozivati ​​na daljinu. Ali standard zahtijeva da ovaj program bude popraćen opisom koji kaže da "da, u pravu ste - ovo je stvarno web servis i iz njega možete pozivati ​​te i te metode." Ovaj opis predstavljen je drugom XML datotekom, koja ima drugačiji format, naime WSDL. Oni. WSDL je samo XML datoteka koja opisuje web uslugu i ništa više.
Zašto tako kratko pitate? Ne možete li biti precizniji? Vjerojatno je moguće, ali da biste to učinili, morat ćete se okrenuti knjigama kao što je T. Mashnin, "Java Web Services." Eto, na prvih 200 stranica postoji Detaljan opis svaku oznaku SOAP i WSDL standarda. Isplati li se to učiniti? Po mom mišljenju ne, jer... sve se to automatski kreira u Javi, a vi samo trebate napisati sadržaj metoda koje bi trebale biti pozvane na daljinu. Tako se u Javi pojavio API kao što je JAX-RPC. Ako netko ne zna, kada kažu da Java ima takav i takav API, to znači da postoji paket sa skupom klasa koje enkapsuliraju dotičnu tehnologiju. JAX-RPC se vremenom razvijao od verzije do verzije i na kraju je postao JAX-WS. WS je očito kratica za WebService i mogli biste pomisliti da je ovo jednostavno preimenovanje RPC-a kao popularne poštarke ovih dana. To nije istina, jer Sada su se web usluge udaljile od izvorne ideje i omogućuju vam ne samo pozivanje udaljenih metoda, već i jednostavno slanje poruka dokumenata u SOAP formatu. Još ne znam zašto je to potrebno; malo je vjerojatno da će odgovor ovdje biti "samo u slučaju da je potrebno". I sam bih želio učiti od iskusnijih drugova. I na kraju, tada se pojavio JAX-RS za takozvane RESTful web servise, ali to je tema za poseban članak. Uvod se ovdje može završiti, jer... Zatim ćemo naučiti raditi s JAX-WS.

Opći pristup

U web uslugama uvijek postoji klijent i poslužitelj. Poslužitelj je naša web usluga i ponekad se naziva krajnja točka (kao, krajnja točka, gdje stižu SOAP poruke od klijenta). Moramo učiniti sljedeće:
  1. Opišite sučelje naše web usluge
  2. Implementirajte ovo sučelje
  3. Pokrenite našu web uslugu
  4. Napišite klijent i daljinski pozovite željenu metodu web usluge
Web servis se može pokrenuti različiti putevi: ili opišite klasu glavnom metodom i pokrenite web uslugu izravno kao poslužitelj ili je postavite na poslužitelj kao što je Tomcat ili bilo koji drugi. U drugom slučaju ne pokrećemo se sami novi poslužitelj i ne otvaramo drugi priključak na računalu, već jednostavno kažemo Tomcat spremniku servleta da "smo ovdje napisali klase web usluga, molimo vas da ih objavite tako da svi koji vas kontaktiraju mogu koristiti našu web uslugu." Bez obzira na način pokretanja web servisa, imat ćemo istog klijenta.

poslužitelj

Pokrenimo IDEA i napravimo novi projekt Stvori novi projekt. Naznačimo ime HelloWebService i pritisnite tipku Sljedeći, zatim gumb Završi. U mapi src napravimo paket ru.javarush.ws. U ovom paketu ćemo kreirati sučelje HelloWebService: package ru. javarush. ws; // ovo su anotacije, tj. način označavanja naših klasa i metoda, // u vezi s tehnologijom web usluge uvesti javax. jws. WebMethod; uvesti javax. jws. WebService; uvesti javax. jws. sapun. SOAPBinding; // kažemo da će naše sučelje raditi kao web servis@WebService // kažemo da će se web usluga 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 zabilješke i ne rade ništa osim označavanja našeg sučelja i njegove metode kao web usluge. Isto se odnosi i na klasu SOAPBinding. Jedina razlika je u tome što je SOAPBinding komentar s parametrima. U u ovom slučaju parametar style koristi se s vrijednošću koja pokazuje da web usluga neće raditi kroz poruke dokumenta, već kao klasični RPC, tj. za poziv metode. Implementirajmo našu logiku sučelja i stvorimo klasu HelloWebServiceImpl u našem paketu. Usput, napominjem da je završavanje klase s Impl konvencija u Javi, prema kojoj je implementacija sučelja tako označena (Impl - od riječi implementacija, tj. implementacija). Ovo nije uvjet i slobodni ste nazvati klasu kako god želite, ali to zahtijevaju dobri maniri: package ru. javarush. ws; // ista napomena kao kod opisa sučelja, uvesti javax. jws. WebService; // ali ovdje se koristi s parametrom endpointInterface, // koji označava puni naziv klase sučelja naše web usluge@WebService(endpointInterface= "ru.javarush.ws.HelloWebService") javna klasa HelloWebServiceImpl implementira HelloWebService ( @Override public String getHelloString (Naziv niza) ( // samo uzvrati pozdrav return "Zdravo, " + ime + "!" ; ) ) Pokrenimo našu web uslugu kao neovisni poslužitelj, tj. bez sudjelovanja Tomcata i aplikacijskih poslužitelja (ovo je tema za posebnu raspravu). Da biste to učinili, u strukturi projekta u mapi src Kreirajmo paket ru.javarush.endpoint, au njemu ćemo kreirati klasu HelloWebServicePublisher s glavnom metodom: package ru. javarush. krajnja točka; // klasa za pokretanje web poslužitelja s web uslugama uvesti javax. xml. ws. Krajnja točka; // klasa naše web usluge uvoz ru. javarush. ws. HelloWebServiceImpl; javna klasa HelloWebServicePublisher ( public static void main (String... args) ( // pokrenite web poslužitelj na portu 1986 // i na adresu navedenu u prvom argumentu, // pokretanje web usluge proslijeđene u drugom argumentu Krajnja točka. objaviti( "http://localhost:1986/wss/zdravo", novi HelloWebServiceImpl () ); ) ) Sada pokrenimo ovaj razred klikom Shift+F10. Ništa se neće pojaviti na konzoli, ali poslužitelj radi. To možete provjeriti upisivanjem reda http://localhost:1986/wss/hello?wsdl u svoj preglednik. Stranica koja se otvara, s jedne strane dokazuje da imamo web server (http://) koji radi na portu 1986 na našem računalu (localhost), as druge strane prikazuje WSDL opis naše web usluge. Ako zaustavite aplikaciju, opis će postati nedostupan, kao i sam web servis, pa to nećemo učiniti, već ćemo prijeći na pisanje klijenta.

Klijent

U mapi projekta src Kreirajmo paket ru.javarush.client , au njemu klasu HelloWebServiceClient s glavnom metodom: package ru. javarush. klijent; // potreban za dobivanje wsdl opisa i kroz njega // doći do same web usluge uvoz jave. neto. URL; // ova će se iznimka dogoditi kada radite s URL objektom uvoz jave. neto. MalformedURLException; // klase za raščlanjivanje xml s wsdl opisom // i doći do servisne oznake u njemu uvesti javax. xml. imenski prostor. QName; uvesti javax. xml. ws. Servis; // sučelje naše web usluge (trebamo više) uvoz ru. javarush. ws. HelloWebService; javna klasa HelloWebServiceClient ( public static void main (String args) baca MalformedURLException ( // kreirajte vezu na wsdl opis URL url = novi URL ( "http://localhost:1986/wss/hello?wsdl") ; // Gledamo parametre sljedećeg konstruktora u prvoj oznaci WSDL opisa - definicije // pogledajte 1. argument u atributu targetNamespace // pogledajte 2. argument u atributu imena QName qname = new QName ("http://ws.javarush.ru/" , "HelloWebServiceImplService" ) ; // Sada možemo doći do servisne oznake u wsdl opisu, Usluga usluge= Usluga. stvoriti (url, qname) ; // a zatim do oznake porta ugniježđene u njemu, tako da // dobiti vezu do objekta web usluge udaljenog od nas HelloWebService hello = usluga. getPort(HelloWebService.class); // Hura! Sada možete nazvati daljinska metoda Sustav. van. println (bok. getHelloString ( "JavaRush" ) ); ) ) Dao sam najviše komentara na kod u listingu. Nemam što dodati, pa trčimo (Shift+F10). Trebali bismo vidjeti tekst na konzoli: Pozdrav, JavaRush! Ako ga niste vidjeli, vjerojatno ste zaboravili pokrenuti web uslugu.

Zaključak

Ova je tema pružila kratki izlet u web usluge. Još jednom ću reći da je velik dio onoga što sam napisao moja pretpostavka o tome kako funkcionira i stoga mi ne biste trebali previše vjerovati. Bio bih zahvalan ako me upućeni ljudi isprave jer ću onda nešto naučiti. UPD.