Što je web usluga? XML web usluge. Pregled tehnologije

Web usluga je program kojemu mogu pristupiti drugi programi preko Interneta (http). Na primjer, recimo da imate funkciju koja daje tekst u HTML formatu. Svrha aplikacije je da web preglednik prikaže rezultate i osoba će moći lako pročitati ovaj tekst na stranici.

Na drugoj strani, ciljanu publiku Web usluge su drugi programi ili druge web usluge koje troše podatke koje poslužuje web usluga. Obično se povlačenje vrši na standardni jezik, što mogu razumjeti drugi programi. Uzmimo gornji primjer, ako web servis ispisuje tekst XML format, onda druge web usluge koje mogu čitati ili razumjeti XML mogu koristiti ovaj izlaz.

Glavna prednost web servisa je da aplikacije mogu biti napisane na bilo kojem jeziku, ali mogu međusobno komunicirati i razmjenjivati ​​podatke putem web servisa. Softverske aplikacije napisano u različiti jezici programiranje i rad na raznim platformama, mogu koristiti web servise za komunikaciju putem interneta (HTTP). Ovo je interakcija (na primjer između Jave i Pythona, ili Windows aplikacije i Linux) povezana je s korištenjem otvorenih standarda (XML, SOAP, HTTP).

  • SOAP (Simple Object Access Protocol)
  • UDDI (Univerzalni opis, otkrivanje i integracija)
  • WSDL (Jezik za opis web usluga)

Koliko različitih vrsta web usluga postoji?

Prvenstveno postoje dvije vrste web usluga, Simple Object Access Protocol (SOAP) i Representational State Transfer (REST).

  • SOAP web usluga prihvaća zahtjev u XML formatu i generira izlaz u XML formatu.
  • REST web usluga je svestranija i može prihvatiti XML kao i JSON kao zahtjev i generira izlaz u XML kao i JSON ili čak HTML

Ovo pitanje može se detaljnije proučiti na našem.

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.

Web usluga naziva softverski sustav identificiran nizom URI, čija su sučelja i povezivanja definirana i opisana XML. Opis ovog softverskog sustava mogu pronaći drugi softverski sustavi koji mogu komunicirati s njim u skladu s ovim opisom putem poruka temeljenih na XML-u koje se prenose korištenjem internetskih protokola.

1.1 Osnove web usluga

Web usluge je nova obećavajuća arhitektura koja pruža novu razinu distribucije. Umjesto razvoja ili kupnje komponenti i njihovog ugrađivanja u IS, predlaže se kupiti njihovo vrijeme rada i formirati softverski sustav koji poziva metode od komponenti koje su u vlasništvu i koje podržavaju neovisni dobavljači. Zahvaljujući Web usluge funkcije bilo kojeg programa na mreži mogu biti dostupne putem Interneta. Najjednostavniji primjer Web usluga- sustav Putovnica na Hotmail, koji vam omogućuje stvaranje provjere autentičnosti korisnika na vlastitoj stranici.

Web usluge temelje se na sljedećim univerzalnim tehnologijama:

    TCP/IP– univerzalni protokol koji svi razumiju mrežni uređaji, od velikih računala do Mobiteli i PDA;

    HTML– univerzalni označni jezik koji se koristi za prikaz informacija na korisničkim uređajima;

    XML(Extensible Markup Language) – univerzalni jezik za rad s bilo kojom vrstom podataka.

Svestranost ovih tehnologija osnova je za razumijevanje web usluga. Temelje se samo na općeprihvaćenim, otvorenim i formalno neovisnim tehnologijama. Samo se time može postići glavna prednost web usluga kao koncepta izgradnje distribuiranih IS-a - njihova univerzalnost, odnosno mogućnost korištenja za bilo koje operacijske sustave, programske jezike, aplikacijske poslužitelje i sl.

Time web servisi rješavaju izvorni problem – problem integracije aplikacija različite prirode i izgradnje distribuiranog IS-a. Ovo je glavna temeljna razlika između web usluga i njihovih prethodnika.

Web usluge - Ovo XML aplikacije, povezivanje podataka s programima, objektima, bazama podataka ili cijelim poslovnim transakcijama. XML dokumenti oblikovani kao poruke razmjenjuju se između web usluge i programa. Standardi web servisa definiraju format takvih poruka, sučelje na koje se poruka šalje, pravila za vezanje sadržaja poruke za aplikaciju koja implementira uslugu i obrnuto, kao i mehanizme za objavljivanje i pretraživanje sučelja.

XML(Engleskiex rastezljiv M arkup L jezik- proširivo označni jezik; izgovara se [ x-em-el]). Preporučeno World Wide Web Consortium(W3C). XML specifikacija opisuje XML dokumente i djelomično opisuje ponašanje XML procesora (programi koji čitaju XML dokumente i omogućuju pristup njihovom sadržaju). XML je dizajniran kao jezik s jednostavnim formalnim sintaksa, pogodno za stvaranje i programe za obradu dokumenata, au isto vrijeme pogodan za čitanje i stvaranje dokumenata ljudima, s naglaskom na korištenje na Internetu. Jezik se naziva proširivim jer ne popravlja oznake koje se koriste u dokumentima: razvojni programer može slobodno izraditi oznake prema potrebama određenog područja, ograničen samo sintaktička pravila Jezik. Kombinacija jednostavne formalne sintakse, prilagođenosti ljudima, proširivosti i utemeljenosti na kodiranju Unicode za predstavljanje sadržaja dokumenata dovela je do široke upotrebe i samog XML-a i mnogih izvedenih specijaliziranih jezika temeljenih na XML-u u širokom spektru softverskih alata.

Standardne XML aplikacije

XML se može koristiti za više od pukog opisa jednog dokumenta. Pojedinac, tvrtka ili odbor za standarde može definirati potreban skup XML elemenata i strukturu dokumenta koji će se koristiti za određenu klasu dokumenata. Sličan skup elemenata i opis strukture dokumenta naziva se XML aplikacija ili XML rječnik. Na primjer, organizacija može definirati XML aplikaciju za stvaranje dokumenata koji opisuju molekularne strukture, multimedijske prezentacije ili sadrže vektorsku grafiku.

Web usluge može se koristiti u mnogim aplikacijama. Bez obzira pokreću li se web usluge sa stolnih ili prijenosnih računala kupaca, one se mogu koristiti za pristup internetskim aplikacijama kao što su prednarudžbe ili praćenje narudžbi.

Web usluge pogodan za B2B integracija (posao za posao), zatvaranje zahtjeva koje izvode različite organizacije u jedan proizvodni proces. Web usluge također može riješiti širi problem integracije poslovnih aplikacija (Enterprise Application Integration, EAI), povezujući više aplikacija iz jednog poduzeća s više drugih aplikacija. U svim tim slučajevima tehnologije web usluga su "ljepilo" koje povezuje različite dijelove softvera.

Kao što se može vidjeti sa Sl. 1, Web usluge su omotač koji pruža standardni način interakcije s okruženjima aplikacijskog softvera kao što su sustavi za upravljanje bazom podataka (DBMS), .NET, J2EE (Java2 Platforma, Enterprise Edition), CORBA (Common Object Request Broker Architecture), preprodavači paketa za planiranje poslovnih resursa ( Planiranje resursa poduzeća, ERP), integracijski brokeri itd.

Sl. 1. Web usluge su u interakciji s aplikacijskim sustavima

Sučelja web servisa dobivaju se iz mrežnog okruženja standardne XML poruke, transformirati XML podaci u format koji "razumije" određena aplikacija programski sustav, i pošaljite poruku odgovora (ovo posljednje nije obavezno). Softverska implementacija web usluga (osnovni softver, niža razina) može se izraditi u bilo kojem programskom jeziku korištenjem bilo kojeg operativnog sustava i bilo kojeg međuprograma ( međuprogramska oprema).

Jednostavan primjer: traženje informacija

Trenutačno se većina usluga poziva putem interneta unosom podataka u HTML obrasci i slanje ovih podataka servisu njihovim dodavanjem nizu Uniform Resource Locator ( Uniform Resource Locator, URL):

http://www.google.com/search?q=Skate+boots&btnG=Google+Search

Ovaj primjer ilustrira jednostavnost web interakcija (kao što je pretraživanje, kupnja dionica ili traženje uputa za vožnju) gdje su parametri i ključne riječi ugrađeni izravno u URL. U u ovom slučaju zahtjev za jednostavno pretraživanje skate boots (čizme s klizaljkama) prikazan je u nizu upita Google tražilici. Ključna riječ pretraživanje predstavlja uslugu kojoj će se pristupiti, a parametar Skate+boots je niz za pretraživanje koji je upisan u HTML formu na stranici Google web stranice. Servis Google pretraživanje proslijedit će ovaj zahtjev različitim tražilicama, koje će vratiti popis URL-ova za stranice koje odgovaraju parametru pretraživanja Skate+boots. Ova neučinkovita metoda pretraživanja interneta u potpunosti se temelji na podudaranju navedenog tekstualnog niza s indeksiranim HTML stranice.

XML - Najbolji način slanje podataka. XML pruža značajne prednosti pri prijenosu podataka preko Interneta. Sada se prethodni upit može predstaviti kao XML dokument:

xmlns:s="www.xmlbus.com/SearchService">

Klizati

čizme

veličina 7.5

Slanje zahtjeva u obrascu XML dokument ima sljedeće prednosti: mogućnost definiranja tipova i struktura podataka, veću fleksibilnost i proširivost. XML može predstavljati strukturirane podatke ili podatke određene vrste (na primjer, prihvatljivo je navesti vrijednost polja veličine kao niz brojeva ili kao broj s pomičnim zarezom) i sadržavati više informacija nego što dopušta URL.

Ovaj primjer predstavljen je u obliku SOAP (Simple Object Access Protocol) poruke, standardnog oblika razmjene XML poruka koja je jedna od tehnologija u podlozi web usluga. U SOAP poruci, naziv tražene usluge i ulazni parametri predstavljeni su kao zasebni XML elementi. Ovaj primjer također ilustrira korištenje XML imenskih prostora (xmlns:), još jednog važnog elementa web usluga. Budući da XML dokumenti podržavaju više tipova podataka, složene strukture i agregaciju shema, moderne tehnologije web usluga pružaju značajne prednosti u odnosu na postojeće mogućnosti za pristup softverskim aplikacijama putem HTML-a i URL-ova.

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. Može se vidjeti da su nekim ljudima web usluge potrebne i važne, međutim, nakon susreta s definicijama poput "XML gramatika za definiranje skupova krajnje točke za razmjenu poruka, odluč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 dovoljno korisna informacija, a bit će koristan 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 znate XML, možete otvoriti XML datoteku u uređivač teksta i razumjeti njegov 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 u XML formatu, ali 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čite tehnologije 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 da klijenti i dobavljači mogu biti na različitim strojevima, koristeći različit hardver i softver, a to ne ometa 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.

Gdje ćemo početi? I to izravno iz kontakta naručitelj-izvođač: zvoni telefon u internetskom studiju. Voditelj računa podiže slušalicu i pozdravlja vas. S te strane zvuči otprilike ovako:

- Dobar dan. Trebam web stranicu, jednostavnu. Koliko košta? (ista priča s web aplikacijama).


Ovo je uistinu glavobolja za svaki račun. Ali nije nervozan i objašnjava da se stranice razlikuju po složenosti, funkcionalnosti itd. Pojašnjava što klijent treba i što znači "jednostavno" u njegovom razumijevanju. Na primjer, dobiva sljedeći odgovor:

- Pa vidite, ja imam posao prodaje prozora. Bilo bi lijepo napraviti web stranicu tako da možete sami sebi napraviti “virtualni” prozor. Odaberite boju, materijal, veličinu. Navedite količinu. Pogledajte kako će to izgledati. Pa, onda bi naši stručnjaci otišli na mjesto. Dogovoren?


Ovo je već zanimljivo. Ali to nije sve:

- I da, imam još jednu želju. Imamo odjel u Moskvi, St. Petersburgu i Novosibirsku. Osoblje je veliko, postoji papirologija, dobro, razumijete. Možete napraviti nešto poput... male društvene mreže unutar stranice, ili što? Bit će nam zgodnije komunicirati na ovaj način, bez ikakvih “asa”. I pohraniti dokumente u jedan "oblak" - čuo sam da to rade.


Voditelj računa sve zapisuje, daje grubu procjenu i imenuje trošak. Potencijalni klijent zakoluta očima (možete to čuti čak i preko telefona), kaže “vaše cijene su nestvarne” i pristojno poklopi slušalicu.

Naravno, ovo je megapretjerana situacija, ali to se stalno događa i kod programiranja internetskih aplikacija i kod izrade web stranica. Naš cilj je otkriti zašto se to događa.

Što je web usluga?

Razvoj web servisa je, uglavnom, isti razvoj web stranice. Ali postoji jedno veliko "ALI": za razliku od promotivnih stranica i korporativnih događaja koji su već svima poznati, online usluga ima jedinstvenu funkcionalnost. To može biti dizajner proizvoda (kao u gornjem primjeru), hosting fotografija, zatvorena društvena mreža za korporativnu upotrebu, otvorena društvena mreža (danedaiboh), oglasna ploča...

Za izradu web usluge uglavnom se odlučuju oni koji se oslanjaju na inovativnost, praktičnost i moderne web tehnologije. U ovom slučaju, jedinstvena funkcionalnost djeluje kao "adut" poslovanja, uz njegovu pomoć treba ugušiti konkurente i povećati bazu kupaca.

A sve ovo znači da:

  • Trebat će neko vrijeme da se sagledaju sve mogućnosti za budući projekt. Obično puno vremena.
  • Bit će potrebna detaljna studija tehnički zadatak. Ili još bolje, prototip.
  • Morat ćete razviti sam web servis (neočekivano, zar ne?). Učinite to od nule ili koristeći postojeće razvoje. Ali u svakom slučaju, neće biti moguće "sastaviti" ga na koljenima, iz kutije, prema predlošku i "na brzinu".
  • Proizvod će morati biti temeljito testiran prije puštanja u promet.

Zbog toga će cijena izrade web usluge (zajedno s programiranjem) varirati. Ali uvijek će biti viši od mjesta s "uobičajenim" skupom funkcija.

Za naš primjer: kada je klijent spomenuo unutarnje društvena mreža, pohrana u oblaku za podatke i dizajner prozora - sve zajedno postalo je moguće nazvati web uslugom. Zbog toga je trošak nazvan "neočekivan" za kupca.

“Svemirske” cijene pri razvoju internetskih usluga opravdana su mjera. To je objektivno težak i dugotrajan posao.

Treba li poduzeću takva usluga zadatak je vaših marketinških stručnjaka.


Posebna i svima omiljena tema su društvene mreže.

Ovdje se događaju prilično smiješne stvari. Štoviše, te se komedije igraju s ozbiljnim licem. Na primjer, određeni aktivni postotak školaraca, "naprednih" korisnika VKontaktea, stalno želi vlastitu igru. Do vrtoglavog uspjeha. I kako ne bi smetali.

Kao rezultat toga, primamo gomilu pisama u inboxu iu zajednici s tekstom "prodajte/razvijte poslovnu aplikaciju/igru/nešto drugo za nas." Nešto kao ovo:

Da, 5000 rubalja za nekoliko tjedana rada - ok. Sada govorimo samo o primjerenim primjercima, a ne o onima koji dobiju publiku od 200 korisnika i nestanu.

Ako vas je ipak uhvatila manija da napravite uspješan klon, onda barem razmislite koliko je autore originala koštala promocija i promoviranje web aplikacije ili usluge (obično je to razvojni proračun pomnožen s deset).

Nemojte griješiti. Izračunajte svoju snagu. Pokretanje uspješnih internetskih projekata. Amen.

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. Tako smo magijom SOAP-a stvorili zahtjev koji nam služi koristan rad. 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 alati otvorenog koda ( otvoreni izvor okviri). 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)