Ce este un serviciu web și tipurile lor? Ce este un serviciu web?

De unde începem? Și direct de la contactul client-performer: telefonul sună în studioul de internet. Managerul de cont ridică telefonul și te salută. Din partea asta suna ceva de genul:

- Bună ziua. Am nevoie de un site, unul simplu. Care este pretul? (aceeași poveste cu aplicațiile web).


Este doar durere de cap fiecare cont. Dar nu este nervos și explică că site-urile variază ca complexitate, funcționalitate etc. Clarifică ce are nevoie clientul și ce înseamnă „simplu” în înțelegerea sa. De exemplu, el primește următorul răspuns:

- Ei, vezi tu, am o afacere care vinde ferestre. Ar fi bine să faci un site web, astfel încât să poți crea o fereastră „virtuală” pentru tine. Alege culoarea, materialele, dimensiunile. Specificați cantitatea. Vezi cum va arăta. Ei bine, atunci specialiștii noștri ar merge la locul respectiv. De acord?


Acest lucru este deja interesant. Dar asta nu este tot:

- Și da, mai am o dorință. Avem o divizie la Moscova, Sankt Petersburg și Novosibirsk. Personalul este mare, documente, ei bine, înțelegi. Puteți face ceva de genul... o mică rețea socială în interiorul site-ului, sau ce? Ne va fi mai convenabil să comunicăm în acest fel, fără niciun „ass”. Și stocați documentele într-un singur „nor” - am auzit că fac asta.


Managerul de cont notează totul, face o estimare aproximativă și numește costul. Potențialul client face ochii mari (puteți auzi asta chiar și la telefon), spune „prețurile voastre sunt pur și simplu din lumea asta” și închide politicos.

Desigur, aceasta este o situație mega-exagerată, dar asta se întâmplă tot timpul atât la programarea aplicațiilor de internet, cât și la crearea site-urilor web. Scopul nostru este să ne dăm seama de ce se întâmplă acest lucru.

Ce este un serviciu web?

Dezvoltarea de servicii web este în esență aceeași cu dezvoltarea site-ului web. Dar există un mare „DAR”: spre deosebire de site-urile promoționale și evenimentele corporative deja familiare tuturor, serviciul online are o funcționalitate unică. Acesta ar putea fi un designer de produs (ca în exemplul de mai sus), găzduire foto, o rețea socială închisă pentru uz corporativ, o rețea socială deschisă (danedaiboh), un buletin...

În cea mai mare parte, cei care decid să creeze un serviciu web sunt cei care se bazează în mod special pe inovație, comoditate și tehnologii web moderne. În acest caz, funcționalitatea unică acționează ca „atuul” afacerii, cu ajutorul ei ar trebui să înăbușe concurenții și să mărească baza de clienți.

Și toate acestea înseamnă că:

  • Va dura ceva timp pentru a descoperi toate posibilitățile pentru viitorul proiect. De obicei mult timp.
  • Va fi necesară o specificație tehnică detaliată. Sau mai bine zis, un prototip.
  • Va trebui să dezvoltați serviciul web în sine (în mod neașteptat, nu?). Fă-o de la zero sau folosind dezvoltările existente. Dar, în orice caz, va fi imposibil să-l „asamblezi” în genunchi, din cutie, conform unui șablon și „rapid”.
  • Produsul va trebui testat temeinic înainte de lansare.

Ca urmare, prețul creării unui serviciu web (împreună cu programarea acestuia) va fluctua. Dar va fi întotdeauna mai mare decât cea a unui site cu un set „tipic” de funcții.

Pentru exemplul nostru: când clientul a menționat intern retea sociala, stocare în cloud pentru date și un designer de ferestre - toate acestea împreună au devenit posibile apelarea unui serviciu web. De aceea, costul a fost numit „neașteptat” pentru client.

Prețurile de „spațiu” la dezvoltarea serviciilor de internet este o măsură justificată. Aceasta este în mod obiectiv o muncă dificilă și îndelungată.

Dacă o afacere are nevoie de un astfel de serviciu este o sarcină pentru marketerii dvs.


Un subiect special și preferat pentru toată lumea sunt rețelele de socializare.

Aici se întâmplă lucruri destul de amuzante. Mai mult, aceste comedii sunt jucate cu o față serioasă. De exemplu, un anumit procent activ de școlari, utilizatori „avansați” VKontakte, își doresc în mod constant propriul joc. Spre un succes amețitor. Și ca să nu deranjez.

Drept urmare, primim tone de scrisori în căsuța noastră de e-mail și în comunitate cu textul „vinde/dezvolta o aplicație de afaceri/joc/altceva pentru noi”. Ceva de genul asta:

Da, 5.000 de ruble pentru câteva săptămâni de muncă - ok. Vorbim acum doar despre copii potrivite, și nu despre cele care câștigă o audiență de 200 de utilizatori și se ofilesc.

Dacă totuși ești depășit de mania de a face o clonă de succes, atunci măcar gândește-te cât i-a costat pe autorii originalului să promoveze și să promoveze o aplicație sau un serviciu web (de obicei acesta este bugetul de dezvoltare înmulțit cu zece).

Nu face greșeli. Calculați-vă puterea. Lansați proiecte de succes pe Internet. Amin.

19 răspunsuri

Definiție simplă: un serviciu web este o funcție care poate fi accesată de alte programe prin Internet (Http). Ca să clarificăm puțin, atunci când creați un site web în PHP care scoate HTML, ținta acestuia este browserul și, în plus, persoana care citește pagina în browser. Serviciul web nu este destinat oamenilor, ci mai degrabă altor programe.

Deci, site-ul dvs. PHP care generează un întreg aleator poate fi un serviciu web dacă scoate numărul întreg într-un format care poate fi utilizat de un alt program. Acesta poate fi în XML sau alt format, atâta timp cât alte programe pot înțelege rezultatul.

Definiția completă este evident mai complexă, dar ați cerut o engleză simplă.

Explicație simplificată, non-tehnică: un servlet web permite PROGRAM să vorbească cu o pagină web, în ​​loc să fie nevoit să folosească browserul pentru a deschide pagina web.

Exemplu: pot să merg la maps.google.com și să introduc adresa mea de acasă și să văd unde locuiesc în browser.

Dar ce se întâmplă dacă scrii un program de calculator în care vrei să iei o adresă și să-i arăți o hartă frumoasă, la fel ca Google Maps?

Ei bine, ai putea scrie absolut program nou mapări de la zero sau puteți apela serviciul web pe care Google Maps îl oferă, trimiteți-i adresa și va returna o hartă grafică a locației pe care o puteți afișa în programul dvs.

Există mult mai multe în acest lucru, deoarece unele dintre celelalte mesaje vin, dar rezultatul este că permite aplicației dvs. fie să preia informații DE LA, fie să transmită informații către o resursă. Alte exemple:

Da, este un serviciu web simplu.

Serviciile web nu sunt altceva decât un mecanism de cerere/răspuns care permite unui client să acceseze/modifica datele de la distanță. Există standarde oficiale pentru serviciile web (SOAP, SOA etc.), dar pagina ta simplă este și un serviciu.

Principalul dezavantaj al tipăririi pe o pagină este că serviciul dvs. va returna HTML. Formatele de date preferate sunt JSON și XML, deoarece majoritatea framework-urilor la nivelul clientului (și a cadrelor serverului) sunt dezvoltate folosind JSON și XML.

Deci, dacă ați schimbat serviciul de returnare:

un număr aleatoriu

... un număr aleatoriu

atunci acest lucru ar fi mai util pentru majoritatea clienților

În termeni mai simplificați, un serviciu web este ceva care oferă date ca serviciu prin protocolul http. Bineînțeles că nu este adevărat... dar este aproape.

Serviciile web standard folosesc protocolul SOAP, care definește comunicarea și structura mesajelor, iar XML este formatul de date.

Serviciile web sunt concepute pentru a permite aplicațiilor create folosind diferite tehnologii să comunice între ele fără probleme.

Exemple de servicii web sunt lucruri precum Weather.com, care oferă informații despre vreme pe care le puteți utiliza pe site-ul dvs. sau UPS, care oferă o metodă de solicitare a ofertelor sau de urmărire a pachetelor.

Am schimbat formularea referitoare la SOAP, deoarece nu este întotdeauna SOAP, așa cum am menționat, dar am vrut să o fac mai clar. Cheia expune datele ca un serviciu, mai degrabă decât un element de interfață.

Un serviciu web diferă de un site web prin faptul că un serviciu web oferă informații care sunt consumate de software și nu de oameni. Drept urmare, de obicei vorbim despre servicii expuse JSON, XML sau SOAP.

Serviciile web sunt o componentă cheie în mashup-uri. Mashup-urile sunt atunci când informațiile de pe mai multe site-uri sunt agregate automat într-un serviciu nou și util. De exemplu, există site-uri care combină Hărți Google cu informații din rapoartele de poliție pentru a vă oferi o imagine grafică a criminalității din zona dvs. Un alt tip de mashup ar fi să luați date reale de stoc furnizate de un alt site și să le combinați cu o aplicație de tranzacționare falsă pentru a crea un „joc de piață” pe bursă.

Serviciile web sunt, de asemenea, folosite pentru a oferi știri (vezi RSS), cele mai recente articole adăugate pe site, informații despre produse noi, podcasturi și alte caracteristici grozave care oferă web-ului modern o întorsătură.

Sper că acest lucru ajută!

Pentru majoritatea site-urilor pe care le aveți Pagini HTML, pe care îl vizitați când utilizați browserul. Acestea sunt paginile lizibilă de om(după randarea în browser) unde o mulțime de date pot fi copleșite pentru că are sens pentru oameni.

Acum imaginați-vă că cineva dorește să folosească unele dintre aceste date. Îți pot încărca pagina și începe să filtreze prin tot „zgomotul” pentru a obține datele de care au nevoie, dar majoritatea site-urilor web nu sunt construite în așa fel încât datele să fie 100% sigure să fie plasate în același loc pentru toate elementele, deci, pe lângă faptul că este voluminos, devine și nesigur.

Accesați serviciile web.

Un serviciu web este ceea ce oferă un site web celor care doresc să citească, să actualizeze și/sau să șteargă date de pe site-ul dvs. O puteți numi o „uşă din spate” pentru datele dvs. În loc să prezinte datele ca parte a paginii web, acestea sunt prezentate într-un mod predefinit, unde unele dintre cele mai populare sunt XML și JSON. Există mai multe moduri de a comunica cu un serviciu web, unele folosesc SOAP, altele folosesc serviciile web REST etc.

Ceea ce este comun tuturor serviciilor web este că acestea sunt echivalentul citibil de mașină al paginilor web pe care site-ul le oferă altora. Aceasta înseamnă că alții care doresc să utilizeze datele pot trimite o solicitare pentru date specifice care sunt ușor de analizat și utilizat. Unele site-uri vă pot solicita să furnizați un nume de utilizator/parolă în cererea de date sensibile, în timp ce alte site-uri permit oricui să preia orice date de care ar putea avea nevoie.

Cea mai bună explicație la engleză explicat prin analogie:

  • Paginile web permit oamenilor să comunice și să colaboreze între ei.
  • Serviciile web permit programelor să comunice și să colaboreze între ele.

Exemplul dvs. PHP este un serviciu web după această definiție, deoarece rezultatul poate fi utilizat de un alt program. Dar, în realitate, HTML screen scraper nu este o modalitate fiabilă sau acceptată de a crea servicii web.

Un serviciu web este un set de protocoale și standarde deschise utilizate pentru a face schimb de date între aplicații sau sisteme. Aplicații software scrise în limbi diferite programare și lucru platforme diferite, poate utiliza serviciile Web pentru a face schimb de date prin rețele de computere, cum ar fi Internetul, într-un mod similar cu comunicarea între procesor pe un singur computer. Această interoperabilitate (de exemplu, între Java și Python, sau aplicațiile Windows și Linux) implică utilizarea standardelor deschise (XML, SOAP, HTTP).

Toate serviciile web standard funcționează folosind următoarele componente:

  • SOAP (Protocol de acces simplu la obiect)
  • UDDI (Descriere universală, descoperire și integrare)
  • WSDL (Web Services Description Language)

Funcționează cam așa:

Serviciul web este o tehnologie prin care două sau mai multe aplicații web la distanță comunică între ele printr-o rețea/Internet. Poate fi implementat folosind Java, .net, PHP etc.

Caracteristici ale serviciului web: -

Sistemul de operare oferă o interfață GUI (și CLI) cu care puteți interacționa. De asemenea, oferă un API cu care puteți interacționa cu software-ul.

De asemenea, un site web oferă pagini HTML cu care puteți interacționa și poate oferi, de asemenea, un API care oferă aceleași informații și operațiuni în mod programatic. Sau aceste servicii pot fi accesibile numai printr-un API fără o interfață de utilizator corespunzătoare.

Serviciu web folosit de dezvoltatori software, se referă de obicei la o operațiune efectuată pe un server la distanță și invocată folosind specificația XML/SOAP. Ca și în cazul tuturor definițiilor, există nuanțe, dar aceasta este cea mai comună utilizare a termenului.

Modul simplu de a explica serviciul web este::

  • Un serviciu web este o metodă de comunicare între două dispozitive electronice prin World Wide Web.
  • Poate fi numit un proces pe care programatorul îl folosește pentru a comunica cu serverul.
  • Programatorul poate folosi SOAP, etc. pentru a apela acest proces.
  • Serviciile web sunt construite pe standarde deschise, cum ar fi TCP/IP, HTTP

Avantajul unui serviciu web este că să presupunem că dezvoltați o singură bucată de cod în .net și doriți să utilizați JAVA pentru a consuma acel cod. Puteți interacționa direct cu stratul de abstractizare și nu știți că tehnologia a fost dezvoltată pentru a dezvolta codul.

După cum a spus @Vincent Ramdhanie, serviciul web nu este menit să fie vizualizat/consumat de utilizatorul final, ci de un alt program. Deci logica tehnică din programul dvs. ar fi:

În cazul unui program normal

Utilizator pe site -> HTML/JS/JQuery etc -> dați-mi un număr aleator -> programul dvs

programul ur -> generează număr aleator -> generează HTML și încapsulează o/p -> mergi înapoi la utilizator

Să sunăm serviciu o resursă care implementează o funcție de afaceri și are următoarele proprietăți:

    este reutilizabil;

    definit de una sau mai multe interfețe explicite independente de tehnologie;

    este slab cuplat cu alte resurse similare și poate fi invocat prin protocoale de comunicare care permit resurselor să interacționeze între ele.

Serviciu web numit sistem software identificat prin șir URI, ale căror interfețe și legături sunt definite și descrise de XML. Descrierea acestui sistem software poate fi găsită de alte sisteme software care pot interacționa cu acesta conform acestei descrieri prin mesaje bazate pe XML transmise folosind protocoale Internet.

1.1 Elemente de bază ale serviciilor web

Servicii web este o nouă arhitectură promițătoare care oferă un nou nivel de distribuție. În loc să dezvolte sau să achiziționeze componente și să le încorporeze într-un IS, se propune să le cumpere timpul de funcționare și să formeze un sistem software care să efectueze apeluri de metodă de la componente care sunt deținute și susținute de furnizori independenți. Datorită Servicii web funcțiile oricărui program din rețea pot fi puse la dispoziție prin Internet. Cel mai simplu exemplu Serviciu web- sistem Paşaport pe Hotmail, care vă permite să creați autentificarea utilizatorului pe propriul site.

Serviciile web se bazează pe următoarele tehnologii universale:

    TCP/IP– un protocol universal înțeles de toate dispozitivele din rețea, de la mainframe până la telefoane mobileși PDA;

    HTML– un limbaj de marcare universal utilizat pentru afișarea informațiilor pe dispozitivele utilizatorului;

    XML(Extensible Markup Language) – un limbaj universal pentru lucrul cu orice tip de date.

Versatilitatea acestor tehnologii este baza pentru înțelegerea serviciilor web. Acestea se bazează numai pe tehnologii general acceptate, deschise și oficial neutre din punct de vedere al furnizorilor. Numai prin aceasta poate fi atins principalul avantaj al serviciilor web ca concept de construire a SI distribuit - universalitatea lor, adică capacitatea de a fi utilizat pentru orice sisteme de operare, limbaje de programare, servere de aplicații etc.

Astfel, serviciile web rezolvă problema inițială - problema integrării aplicațiilor de diferite naturi și construirii SI distribuite. Aceasta este principala diferență fundamentală dintre serviciile web și predecesorii lor.

Servicii web - Asta aplicații XML, conectarea datelor cu programe, obiecte, baze de date sau tranzacții comerciale întregi. Documentele XML formatate ca mesaje sunt schimbate între serviciul web și program. Standardele de servicii web definesc formatul unor astfel de mesaje, interfața către care este trimis mesajul, regulile de legare a conținutului mesajului de aplicația care implementează serviciul și invers, precum și mecanismele de publicare și căutare a interfețelor.

XML(englezăeX tensionabile M arkup L limbaj- extensibil limbaj de marcare; pronuntat [ x-em-el]). Recomandat Consorțiul World Wide Web(W3C). Specificația XML descrie documentele XML și descrie parțial comportamentul procesoarelor XML (programe care citesc documente XML și oferă acces la conținutul acestora). XML a fost conceput ca un limbaj cu un simplu formal sintaxă, convenabil pentru creareși programe de procesare a documentelor și, în același timp, convenabile pentru oameni să citească și să creeze documente, punând accent pe utilizarea pe Internet. Limbajul se numește extensibil deoarece nu fixează marcajul folosit în documente: dezvoltatorul este liber să creeze markup în funcție de nevoile unui anumit domeniu, limitat doar de regulile sintactice ale limbajului. Combinație de sintaxă formală simplă, prietenie umană, extensibilitate și codare bazată Unicode pentru reprezentarea conținutului documentelor a condus la utilizarea pe scară largă atât a XML-ului în sine, cât și a multor limbaje specializate derivate bazate pe XML într-o mare varietate de instrumente software.

Aplicații XML standard

XML poate fi folosit pentru mai mult decât pentru a descrie un singur document. Un individ, o companie sau un comitet de standarde poate defini setul necesar de elemente XML și structura documentului pentru a fi utilizate pentru o anumită clasă de documente. Se numește un set similar de elemente și descrierea structurii documentului aplicație XML sau Dicționar XML. De exemplu, o organizație poate defini o aplicație XML pentru a crea documente care descriu structuri moleculare, prezentări multimedia sau care conțin grafică vectorială.

Servicii web poate fi folosit în multe aplicații. Indiferent dacă serviciile web rulează de pe desktop-urile sau laptopurile clienților, acestea pot fi utilizate pentru a accesa aplicații de internet, cum ar fi precomandă sau urmărirea comenzilor.

Servicii web potrivit pentru Integrare B2B (business-to-business),închiderea aplicaţiilor efectuate de diferite organizaţii într-un singur proces de producţie. Servicii web poate aborda, de asemenea, problema mai largă a integrării aplicațiilor pentru întreprinderi (Integrarea aplicațiilor pentru întreprinderi, EAI), conectând mai multe aplicații de la o întreprindere la mai multe alte aplicații. În toate aceste cazuri, tehnologiile de servicii web sunt „cleiul” care conectează diferitele bucăți de software.

După cum se poate observa din fig. 1, serviciile web sunt un înveliș care oferă o modalitate standard de interacțiune cu mediile software de aplicație, cum ar fi sisteme de gestionare a bazelor de date (DBMS), .NET, J2EE (Java2 Platform, Enterprise Edition), CORBA (Common Object Request Broker Architecture), revânzători de pachete de planificare a resurselor întreprinderii ( Planificarea resurselor întreprinderii, ERP), brokeri de integrare etc.

Fig.1. Serviciile web interacționează cu sistemele de aplicații

Interfețele pentru servicii web sunt obținute din mediul de rețea mesaje XML standard, transforma date XMLîntr-un format „înțeles” de o anumită aplicație sistem softwareși trimiteți un mesaj de răspuns (cel din urmă este opțional). Implementarea software a serviciilor web (software de bază, nivel inferior) poate fi creată în orice limbaj de programare folosind orice sistem de operare și orice middleware ( middleware).

Un exemplu simplu: căutarea de informații

În prezent, majoritatea serviciilor sunt apelate prin Internet prin introducerea datelor în Formulare HTMLși trimiterea acestor date către serviciu prin adăugarea lor la șirul Uniform Resource Locator ( Localizator uniform de resurse, URL):

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

Acest exemplu ilustrează ușurința interacțiunii web (cum ar fi căutarea, cumpărarea de acțiuni sau solicitarea de indicații rutiere) în care parametrii și cuvintele cheie sunt încorporate direct în adresa URL. În acest caz, o interogare simplă de căutare pentru cizme de skate este prezentată în șirul de interogări motorului de căutare Google. Cuvântul cheie de căutare reprezintă serviciul care va fi accesat, iar parametrul Skate+boots este șirul de căutare care a fost introdus în formularul HTML de pe pagina site-ului Google. Căutarea Google va transmite această solicitare către diferite motoare de căutare, care vor returna o listă de adrese URL pentru paginile care se potrivesc cu parametrul de căutare Skate+boots. Această metodă ineficientă de căutare pe Internet se bazează în întregime pe potrivirea șirului de text specificat cu indexat Pagini HTML.

XML - cel mai bun mod trimiterea datelor. XML oferă avantaje semnificative la transmiterea datelor prin Internet. Acum interogarea anterioară poate fi reprezentată ca document XML:

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

Patine

cizme

marimea 7.5

Trimiterea unei cereri în formular document XML are următoarele avantaje: capacitatea de a defini tipuri și structuri de date, flexibilitate și extensibilitate mai mari. XML poate reprezenta date structurate sau date de un anumit tip (de exemplu, este acceptabil să specificați valoarea câmpului de dimensiune fie ca șir de numere, fie ca număr în virgulă mobilă) și să conțină mai multe informații decât permite o adresă URL.

Acest exemplu este prezentat sub forma unui mesaj SOAP (Simple Object Access Protocol), o formă standard de schimb de mesaje XML, care este una dintre tehnologiile care stau la baza serviciilor web. Într-un mesaj SOAP, numele serviciului solicitat și parametrii de intrare sunt reprezentați ca elemente XML separate. Acest exemplu ilustrează și utilizarea spațiilor de nume XML (xmlns:), un alt element important al serviciilor web. Deoarece documentele XML acceptă mai multe tipuri de date, structuri complexe și agregarea schemelor, tehnologiile moderne de servicii web oferă avantaje semnificative față de capabilitățile existente pentru accesarea aplicațiilor software prin HTML și URL-uri.

Valentin Kolesov
dezvoltator al filialei Krasnoyarsk a companiei din Sankt Petersburg „Astrosoft”, specialist certificat Microsoft (MCSD, MCSE, MCDBA)
[email protected]

Demonstrare a modului în care funcționează SOAP folosind exemplul de scriere a unui server Web

Ce este SAPUNUL

Tehnologiile răspândite în prezent pentru apelarea metodelor de la distanță (DCOM, CORBA/IIOP și RMI) sunt destul de dificil de configurat și organizat interacțiunea. Aceasta implică dificultăți în funcționarea și funcționarea sistemelor distribuite (probleme de securitate, inconveniente de transport prin firewall-uri etc.). Multe probleme au fost rezolvate prin crearea SOAP (Simple Object Access Protocol), un protocol simplu bazat pe XML pentru schimbul de mesaje în medii distribuite (WWW). Protocolul este conceput pentru crearea de servicii Web și metode de apelare de la distanță. SOAP poate fi utilizat în combinație cu diferite protocoale de transport, inclusiv HTTP, SMTP și altele.

Ce sunt serviciile web

Numim servicii web conținut activ care implementează anumite funcționalități și date situate pe servere web și puse la dispoziție pentru utilizare de către aplicații externe. Serviciile web sunt complet independente de limbajul și platforma de implementare. Aplicațiile externe interacționează cu serviciile folosind protocoale și formate de date standard. Tehnologia serviciilor web este piatra de temelie a modelului de programare .NET al Microsoft.

Pentru a demonstra capabilitățile SOAP, acest articol utilizează implementarea recent lansată a SOAP Toolkit versiunea 2.0 de la Microsoft. Trebuie remarcat faptul că versiunea actuală a Toolkit-ului este semnificativ diferită de cea anterioară (Microsoft SOAP Toolkit pentru Visual Studio 6.0) și de versiunea beta a SOAP Toolkit 2.0.

Modelul obiect SOAP Toolkit oferă atât interfețe de nivel scăzut, cât și de nivel înalt (SOAPClient, SOAPServer), care ascund de programator întreaga „bucătărie internă” - analizarea și generarea de pachete, metode de apelare etc. Folosind aceste interfețe, puteți utiliza Instrumente bazate pe web într-un mod foarte elegant în aplicații dezvoltate. Obiectul SOAPClient acționează ca un proxy, oferind o interfață de serviciu Web și permițându-vă să lucrați cu el ca cu un obiect COM obișnuit (Fig. 1).

  1. Aplicația client instanțiază obiectul SOAPClient.
  2. SOAPClient citește fișierele de descriere a metodei serviciului web (în WSDL și Web Services Meta Language, WSML). Aceste fișiere pot fi stocate și pe partea clientului.
  3. Aplicația client, folosind capacitățile de legare tardivă ale obiectului SOAPClient, apelează metoda serviciului. SOAPClient generează un pachet de solicitare (SOAP Envelope) și îl trimite către server. Poate fi folosit orice protocol de transport, dar HTTP este folosit de obicei.
  4. Aplicația server Listener (aceasta poate fi o aplicație ISAPI sau o pagină ASP) primește pachetul, creează un obiect SOAPServer și îi transmite pachetul de solicitare. În plus, ascultătorul procesează pachete HTTP de la client, trimite pachete cu rezultatul serviciului către client, gestionează erorile și folosește funcționalitatea obiectelor SOAP.
  5. SOAPServer citește descrierea serviciului Web, încarcă descrierea și pachetul de solicitare în arborele XML DOM.
  6. SOAPServer apelează o metodă pe obiectul sau aplicația care implementează serviciul.
  7. Rezultatele execuției metodei sau descrierea erorii sunt convertite de obiectul SOAPServer într-un pachet de răspuns și trimise clientului.
  8. Obiectul SOAPClient analizează pachetul primit și returnează aplicației client rezultatele serviciului sau o descriere a erorii care a apărut.

Un fișier WSDL este un document XML care descrie metodele furnizate de un serviciu Web, precum și parametrii metodei, tipurile acestora, numele și locația serviciului de ascultare. Expertul SOAP Toolkit generează automat acest document, un extras din care este prezentat mai jos:

Eticheta Plic trebuie să fie elementul rădăcină al pachetului. Elementul Header este opțional, dar elementul Body trebuie să fie prezent și să fie un copil direct al elementului Envelope. În cazul unei erori de execuție a metodei, serverul generează un pachet care conține un element Fault în eticheta Body, care conține descriere detaliată erori.

Dacă utilizați interfețele de nivel înalt SOAPClient, SOAPServer, atunci nu trebuie să intrați în complexitatea formatului pachetului, dar dacă doriți, puteți utiliza interfețe de nivel scăzut sau chiar puteți crea un pachet „manual” folosind orice programare. limbă.

Modelul obiect SOAP Toolkit face posibilă lucrarea cu obiecte API de nivel scăzut:

  • SoapConnector - oferă lucru cu protocolul de transport pentru schimbul de pachete SOAP.
  • SoapConnectorFactory - Oferă o metodă de a crea un conector pentru protocolul de transport specificat în fișierul WSDL (etichetă).
  • SoapReader - citește mesajele SOAP și construiește arbori DOM XML.
  • SoapSerializer - conține metode pentru crearea unui mesaj SOAP.·
  • IsoapTypeMapper, SoapTypeMapperFactory - interfețe care vă permit să lucrați cu tipuri complexe de date.

Folosind obiecte API de nivel înalt, puteți transfera doar date tipuri simple(int, string, float etc.), dar specificația SOAP 1.1 permite lucrul cu tipuri de date mai complexe, cum ar fi matrice, structuri, liste și combinații ale acestora. Pentru a lucra cu astfel de tipuri, trebuie să utilizați interfețele IsoapTypeMapper și SoapTypeMapperFactory.

Exemplu

Pentru a demonstra cum funcționează SOAP, să scriem un serviciu web simplu care poate adăuga și scădea numere. Pentru a rula aplicația server, veți avea nevoie de IIS 5 pe Windows 2000 sau IIS4 pe Windows NT 4.0 Service Pack 6, precum și de SOAP Toolkit 2.0 instalat.

Cerințe pentru aplicația client: Microsoft Windows 98/Me sau Windows NT 4.0 Service Pack 6/2000 Service Pack 1 și SOAP Toolkit 2.0 instalat.

Crearea unui server

Deschide în VB proiect nou ActiveX DLL. Schimbați numele clasei în SOAPClass și numele proiectului în SOAPProj.

În clasă, creați următoarele metode:

În următoarea fereastră Expert, puteți selecta metodele care vor fi incluse în serviciul web. În acest caz, selectați toate metodele. Apoi specificați unde va fi localizată aplicația Web (de exemplu, http://wsd010/soap/), setați tipul de aplicație Listener (ASP sau ISAPI), selectați ASP, formatul de schemă (implicit). Specificați calea unde vor fi localizate fișierele de descriere a serviciului web și codificarea. După terminarea programului Wizard, fișierele ASP, WSDL și WSML vor apărea în directorul Web - acesta este Listener pentru ASP și descrierile de servicii (vezi Listările 1-3).

Tot ce rămâne este să configurați drepturile de acces la aplicația Web - este recomandabil să instalați autentificarea NT Challenge/Response. Acest lucru completează munca de creare a serverului.

Crearea unui client

Deschideți un nou proiect EXE standard în VB. În meniul Proiect/Referințe, faceți un link către biblioteca de tip Microsoft SOAP. Creați un buton pe formular, scrieți următorul cod în manipulatorul de clic pe buton:

Dim SoapClient ca nou SoapClient SoapClient.mssoapinit „http://wsd010/soap/SOAPService.wsdl” MsgBox SoapClient.AddNumbers(4, 3) MsgBox SoapClient.SubtractNumbers(3, 2)

Nu uitați să schimbați adresa serverului Web și calea către fișierul WSDL din a doua linie la adresa și calea către serviciul dvs. Web.

După crearea obiectului SOAPClient, acesta trebuie inițializat - specificați calea către documentul de descriere a serviciului Web. După inițializare, obiectul va avea metode de serviciu Web. Puteți lucra cu ele ca și cu un obiect COM obișnuit.

Folosind excelentul MsSoapT.exe (Trace Utility) inclus în Toolkit, puteți vizualiza pachetele care merg de la client la server și înapoi în timp real. Pentru a face acest lucru, trebuie să găsiți o etichetă în fișierul WSDL și în loc de o linie precum http://wsd010/soap/SOAPService.ASP scrieți http://wsd010:8080/soap/SOAPService.ASP, adică să specificați portul 8080. După aceasta, trebuie să rulați utilitarul de urmărire și să acceptați setările implicite, apoi să creați un nou obiect Formatted Trace. Acum toate pachetele SOAP pentru lucrul cu serviciul Web sunt disponibile pentru vizualizare rapidă. Dacă trasorul nu este încărcat, atunci trebuie să eliminați indicația portului 8080. În Fig. Figura 4 prezintă conținutul pachetului de solicitare pentru executarea metodei SubstractNumbers.

Și pachetul de răspuns arată ca după cum urmează:

1

Iată cum arată pachetul de server când a venit ca răspuns la o solicitare cu un format incorect:

SOAP-ENV:Server Conector - Solicitare greșită către server. -2146823238 800a13ba

Informații suplimentare despre subiect

http://msdn.microsoft.com/webservices/ și http://msdn.microsoft.com/soap/ - cele mai recente știri despre SOAP și serviciile Web de la Microsoft. Aici puteți găsi și cele mai recente versiuni de software.

http://www.vbxml.com/soap/ - multe informatii utile pentru dezvoltatori. Există prezentări și tutoriale despre SOAP.

http://www.w3.org/TR/SOAP/ - specificația SOAP de la W3C.

http://www.w3.org/TR/wsdl - informații despre standardul Web Services Definition Language (WSDL) 1.1/

http://microsoft.public.xml.soap - în cadrul acestei conferințe, experții vor ajuta la rezolvarea problemelor complexe de programare SOAP.

Listare 1. Cod de ascultător pentru ASP

<%@ LANGUAGE=VBScript %> <% Option Explicit On Error Resume Next Response.ContentType = "text/xml" Dim SoapServer If Not Application("SoapServerInitialized") Then Application.Lock If Not Application("SoapServerInitialized") Then Dim WSDLFilePath Dim WSMLFilePath WSDLFilePath = Server.MapPath("SOAPService.wsdl") WSMLFilePath = Server.MapPath("SOAPService.wsml") Set SoapServer = Server.CreateObject("MSSOAP.SoapServer") If Err Then SendFault "Cannot create SoapServer object. " & Err.Description SoapServer.Init WSDLFilePath, WSMLFilePath If Err Then SendFault "SoapServer.Init failed. " & Err.Description Set Application("SOAPServiceServer") = SoapServer Application("SoapServerInitialized") = True End If Application.UnLock End If Set SoapServer = Application("SOAPServiceServer") SoapServer.SoapInvoke Request, Response, "" If Err Then SendFault "SoapServer.SoapInvoke failed. " & Err.Description Sub SendFault(ByVal LogMessage) Dim Serializer On Error Resume Next " "URI Query" logging must be enabled for AppendToLog to work Response.AppendToLog " SOAP ERROR: " & LogMessage Set Serializer = Server.CreateObject("MSSOAP.SoapSerializer") If Err Then Response.AppendToLog "Could not create SoapSerializer object. " & Err.Description Response.Status = "500 Internal Server Error" Else Serializer.Init Response If Err Then Response.AppendToLog "SoapSerializer.Init failed. " & Err.Description Response.Status = "500 Internal Server Error" Else Serializer.startEnvelope Serializer.startBody Serializer.startFault "Server", "The request could not be processed due to a problem in the server. Please contact the system administrator. " & LogMessage Serializer.endFault Serializer.endBody Serializer.endEnvelope If Err Then Response.AppendToLog "SoapSerializer failed. " & Err.Description Response.Status = "500 Internal Server Error" End If End If End If Response.End End Sub %>

Lista 2. Cod fișier WSDL

Lista 3. Cod fișier WSDL

Un serviciu web este un software care oferă acces independent de platformă la datele sale către alte produse software prin Internet, utilizând XML și standarde precum SOAP, WSDL și UDDI.

Pentru ce pot fi folosite serviciile web în practică? Imaginați-vă o bursă de valori ale cărei servere au informații complete despre cotațiile curente ale tuturor valorilor mobiliare tranzacționate pe această bursă. Aceasta este o informație foarte importantă, la care accesul online poate fi foarte valoros și util pentru sistemele software de la distanță. Sau un alt exemplu mai apropiat de omul obișnuit: un server de birou meteo poate conține informații despre condițiile meteorologice dintr-o anumită regiune sau de pe întreaga planetă. Aceste informații pot fi folosite și de aplicații terțe.

Mulți oameni au văzut adesea informatori de site-uri meteo, dar aceasta nu este cea mai convenabilă metodă de a obține informații reale pentru aplicațiile corporative, deoarece limitează capacitatea de a opera cu informațiile primite. Puteți face doar două lucruri cu un astfel de informator: „agățați-l” pe site-ul dvs. sau eliminați-l de pe site dacă este deja postat acolo. Dar cum rămâne cu aplicațiile care trebuie să primească date brute de la serverul Met Office și să le proceseze pentru a efectua unele operațiuni complexe (de exemplu, modelează grafic hărți și trasează temperatura corespunzătoare pe regiuni)?

Pentru a rezolva astfel de probleme, un server de bursă sau de birou meteo poate deveni furnizor de servicii Web, iar aplicațiile care primesc date de la acestea prin Internet pot deveni consumatori ai acestor date. În acest fel, se formează o arhitectură client-server, în care furnizorul de date este serverul și consumatorul este clientul, în timp ce software-ul serverului și clientului nu trebuie să fie compatibil, condiția principală este suportul pentru serviciile Web.

Schimbul dintre server și client se realizează folosind protocoale standard de Internet, cum ar fi HTTP. Serviciul web se descrie și definește un API pentru interacțiunea cu acesta. în acest caz, elementele acestui API sunt convertite automat în constructe de limbaj pentru limbajul de programare pe care îl folosește aplicația client. Serviciile web sunt descrise conform specificației WSDL (Web Services Description Language). Datele în sine sunt transferate de la server la client în format SOAP (Simple Object Access Protocol).

Cu alte cuvinte, aplicația client accesează fișierul WSDL prin URL-ul său, adică. folosind metoda obișnuită GET. În același timp, primește o descriere a metodelor serviciului Web și apoi le poate folosi ca proprii (adică, fără a scrie cod suplimentar pe partea clientului - serviciul Web devine, așa cum ar fi, o continuare la distanță a clientului program).