Servicii web XML. Prezentare generală a tehnologiei

Titlul subiectului este într-adevăr o întrebare, pentru că Eu însumi nu știu ce este și pentru prima dată voi încerca să lucrez cu el în cadrul acestui articol. Singurul lucru pe care îl pot garanta este că codul de mai jos va funcționa, cu toate acestea, frazele mele vor fi doar presupuneri și presupuneri despre cum înțeleg eu însumi toate acestea. Deci să mergem...

Introducere

Trebuie să începem cu ce a fost creat conceptul de servicii web. Până la apariția acestui concept, în lume existau deja tehnologii care permiteau aplicațiilor să interacționeze la distanță, unde un program putea apela o metodă într-un alt program, care putea fi apoi lansată pe un computer situat într-un alt oraș sau chiar țară. Toate acestea sunt prescurtate ca RPC (Remote Procedure Calling - apel de procedură la distanță). Exemplele includ tehnologiile CORBA, iar pentru Java - RMI (Remote Method Invoking - remote method invocation). Și totul pare să fie bine în ei, mai ales în CORBA, pentru că poți lucra cu el în orice limbaj de programare, dar încă lipsea ceva. Cred că dezavantajul CORBA este că funcționează prin unele dintre protocoalele sale de rețea în loc de simplu HTTP, care se va accesa cu crawlere prin orice firewall. Ideea unui serviciu web a fost de a crea un astfel de RPC care să fie împins în pachete HTTP. Astfel a început dezvoltarea standardului. Care sunt conceptele de bază ale acestui standard:
  1. SĂPUN. Înainte de a apela o procedură la distanță, trebuie să descrieți acest apel într-un fișier XML în format SOAP. SOAP este doar unul dintre numeroasele markupuri XML utilizate în serviciile web. Tot ceea ce dorim să trimitem undeva prin HTTP este mai întâi transformat într-o descriere XML SOAP, apoi introdus într-un pachet HTTP și trimis către un alt computer din rețea prin TCP/IP.
  2. WSDL. Există un serviciu web, adică un program ale cărui metode pot fi apelate de la distanță. Dar standardul cere ca acestui program să fie atașată o descriere, care spune că „da, nu v-ați înșelat - acesta este într-adevăr un serviciu web și puteți apela astfel de metode din acesta”. Această descriere este reprezentată de un alt fișier XML care are alt format și anume WSDL. Acestea. WSDL este doar un fișier XML care descrie un serviciu web și nimic altceva.
De ce intrebi asa scurt? Nu poți intra în mai multe detalii? Probabil că poți, dar pentru asta va trebui să apelezi la cărți precum Mashnin T. „Java Web Services”. Acolo, pentru primele 200 de pagini, există o descriere detaliată a fiecărei etichete a standardelor SOAP și WSDL. Merita? După părerea mea, nu, pentru că toate acestea sunt create automat în Java și trebuie doar să scrieți conținutul metodelor care ar trebui să fie apelate de la distanță. Deci, în Java există un astfel de API precum JAX-RPC. Dacă cineva nu știe când spune că Java are un astfel de API, asta înseamnă că există un pachet cu un set de clase care încapsulează tehnologia în cauză. JAX-RPC a evoluat de la versiune la versiune pentru o lungă perioadă de timp și în cele din urmă a evoluat în JAX-WS. WS înseamnă, în mod evident, WebService și s-ar putea să credeți că aceasta este o simplă redenumire a RPC într-un cuvânt popular în zilele noastre. Nu este așa, pentru că acum serviciile web s-au îndepărtat de ideea originală și permit nu numai apelarea metodelor de la distanță, ci și pur și simplu trimiterea de mesaje de document în format SOAP. De ce este nevoie de acest lucru, nu știu încă, este puțin probabil ca răspunsul aici să fie „pentru orice eventualitate, este brusc necesar”. Eu însumi aș dori să învăț de la camarazi mai experimentați. Și în sfârșit, JAX-RS a apărut pentru așa-numitele servicii web RESTful, dar acesta este un subiect pentru un articol separat. Această introducere poate fi completată, deoarece. în continuare vom învăța cum să lucrăm cu JAX-WS.

Abordare generală

Serviciile web au întotdeauna un client și un server. Serverul este serviciul nostru web și uneori este numit punctul final (cum ar fi punctul final unde ajung mesajele SOAP de la client). Trebuie să facem următoarele:
  1. Descrieți interfața serviciului nostru web
  2. Implementați această interfață
  3. Porniți serviciul nostru web
  4. Scrieți un client și apelați de la distanță metoda de serviciu web dorită
Puteți lansa un serviciu web în diferite moduri: fie descrieți o clasă cu o metodă principală și rulați serviciul web direct ca server, fie implementați-l pe un server precum Tomcat sau oricare altul. În cel de-al doilea caz, noi înșine nu pornim un nou server și nu deschidem alt port pe computer, ci pur și simplu spunem containerului de servlet Tomcat că „am scris clase de servicii web aici, vă rugăm să le publicați pentru ca toți cei care vă contactează să vă poată folosi serviciul web. Indiferent de modul în care se lansează serviciul web, vom avea același client.

Server

Lansați IDEA și creați un nou proiect Creați un nou proiect. Specificați un nume Hellowebserviceși apăsați butonul Următorul, apoi butonul finalizarea. În dosar src creați un pachet ro.javarush.ws. În acest pachet, vom crea interfața HelloWebService: pachet ru. javarush. ws; // acestea sunt adnotări, i.e. o modalitate de a ne marca clasele și metodele, // în legătură cu tehnologia serviciilor web import javax. jws. WebMethod; import javax. jws. serviciu web; import javax. jws. săpun. SAPUNLegare; // spunem că interfața noastră va funcționa ca un serviciu web@Serviciu web // spune că serviciul web va fi folosit pentru a apela metode@SOAPBinding(style = SOAPBinding.Style.RPC) interfață publică HelloWebService( // spune că această metodă poate fi apelată de la distanță@WebMethod public String getHelloString(Nume șir) ; ) În acest cod, clasele WebService și WebMethod sunt așa-numitele adnotări și nu fac altceva decât să marcheze interfața noastră și metoda acesteia ca serviciu web. Același lucru este valabil și pentru clasa SOAPBinding. Singura diferență este că SOAPBinding este o adnotare cu parametri. În acest caz, parametrul de stil este utilizat cu o valoare care spune că serviciul web va funcționa nu prin mesaje de document, ci ca un RPC clasic, adică. a apela metoda. Să implementăm logica interfeței noastre și să creăm o clasă HelloWebServiceImpl în pachetul nostru. Apropo, observ că clasa care se termină cu Impl este o convenție în Java, conform căreia implementarea interfețelor este astfel desemnată (Impl - din cuvântul implementare, adică implementare). Aceasta nu este o cerință și sunteți liber să denumiți clasa cum doriți, dar bunele maniere o cer: pachet ru. javarush. ws; // aceeași adnotare ca și pentru descrierea interfeței, import javax. jws. serviciu web; // dar aici este folosit cu parametrul endpointInterface, // indicând numele complet al clasei de interfață a serviciului nostru web@WebService(endpointInterface= „en.javarush.ws.HelloWebService”) clasa publică HelloWebServiceImpl implementează HelloWebService ( @Override public String getHelloString (nume șir) ( // returnează doar salutul returnează "Bună ziua, " + nume + "!" ; ) ) Să rulăm serviciul nostru web ca server autonom, de ex. fără participarea niciunui Tomcat și a serverelor de aplicații (acesta este un subiect pentru o discuție separată). Pentru a face acest lucru, în structura proiectului din folder src haideți să creăm un pachet ru.javarush.endpoint și în el vom crea o clasă HelloWebServicePublisher cu metoda main: package ru. javarush. punct final; // clasă pentru a porni un server web cu servicii web import javax. xml. ws. punct final; // clasa serviciului nostru web import en. javarush. ws. hellowebserviceimpl; clasă publică HelloWebServicePublisher( public static void main(String. . . args)( // porniți serverul web pe portul 1986 // și la adresa specificată în primul argument, // pornește serviciul web transmis în al doilea argument punctul final. publica( „http://localhost:1986/wss/hello”, nou HelloWebServiceImpl () ); ) ) Acum rulați această clasă făcând clic Shift+F10. Nu va apărea nimic în consolă, dar serverul rulează. Puteți verifica acest lucru tastând http://localhost:1986/wss/hello?wsdl în browser. Pagina deschisă, pe de o parte, demonstrează că avem un server web (http://) care rulează pe portul 1986 pe computerul nostru (localhost) și, pe de altă parte, arată descrierea WSDL a serviciului nostru web. Dacă opriți aplicația, atunci descrierea va deveni inaccesibilă, precum și serviciul web în sine, așa că nu vom face acest lucru, ci vom trece la scrierea clientului.

Client

În folderul de proiect src să creăm un pachet ru.javarush.client , iar în el clasa HelloWebServiceClient cu metoda principală: pachet ru. javarush. client; // necesar pentru a obține descrierea wsdl și prin ea // ajunge la serviciul web în sine import java. net. URL; // o astfel de excepție va apărea când lucrați cu obiectul URL import java. net. MalformedURLException; // clase pentru a analiza xml cu descrierea wsdl // și atingeți eticheta de serviciu din ea import javax. xml. spatiu de nume. Qname; import javax. xml. ws. serviciu; // interfața serviciului nostru web (avem nevoie de mai mult) import en. javarush. ws. hellowebservice; clasă publică HelloWebServiceClient( public static void main(String args) aruncă MalformedURLException( // creează un link către descrierea wsdl URL URL = adresă URL nouă( „http://localhost:1986/wss/hello?wsdl”) ; // Ne uităm la parametrii următorului constructor din prima etichetă de descriere WSDL - definiții // uită-te la primul argument din atributul targetNamespace // Al doilea argument se uită în atributul nume QName qname = nou QName ("http://ws.site/" , "HelloWebServiceImplService" ); // Acum putem ajunge la eticheta de serviciu din descrierea wsdl, Service service = Service. create (url, qname); // și apoi la eticheta de port imbricată în ea, astfel încât // obțineți o referință la un obiect de serviciu web aflat la distanță de la noi HelloWebService hello = serviciu. getPort(HelloWebService.class) ; // Ura! Acum puteți apela metoda de la distanță Sistem. afară. println(bună ziua. getHelloString("JavaRush") ); ) ) Am dat maxim de comentarii la codul din listare. Nu am nimic de adăugat, așa că rulați (Shift + F10). Ar trebui să vedem textul în consolă: Bună ziua, JavaRush! Dacă nu l-ați văzut, atunci probabil ați uitat să porniți serviciul web.

Concluzie

În acest subiect, a fost prezentată o scurtă excursie în serviciile web. Încă o dată, mare parte din ceea ce am scris este presupunerea mea despre cum funcționează și, prin urmare, nu ar trebui să am prea multă încredere în mine. Aș fi recunoscător dacă oamenii cunoscători mă corectează, pentru că atunci voi învăța ceva. UPD.

Un serviciu web (serviciu) este un program care organizează interacțiunea dintre site-uri. Informațiile de pe un portal sunt transferate pe altul.

De exemplu, există o companie aeriană. Are multe zboruri, respectiv multe bilete. Transmite informații printr-un serviciu web către site-ul agregatorului de călătorii. Un utilizator care intră în agregator va putea cumpăra bilete pentru această companie aeriană chiar de acolo.

Un alt exemplu de servicii web este un site de urmărire a vremii care oferă informații despre condițiile meteorologice dintr-un anumit oraș sau țară în ansamblu. Aceste informații sunt adesea folosite și de terți.

Informațiile de pe internet sunt diverse. Site-urile sunt gestionate de diferite sisteme. sunt utilizate diferite protocoale de transmisie și criptare. Serviciile web simplifică schimbul de informații între diferite site-uri.

Arhitectura și protocoalele serviciilor web

Puteți defini 3 instanțe care interacționează între ele: catalog, contractor și client. După crearea serviciului, executantul îl înregistrează în catalog, iar clientul găsește serviciul acolo.

Mecanismul de schimb de date este format în Descrierea Serviciilor Web. Aceasta este o specificație care acoperă formatele de redirecționare, tipurile de conținut, protocoalele de transport care sunt utilizate în schimbul de informații între client și transportatorul de servicii.

Astăzi, mai multe tehnologii sunt cel mai adesea folosite pentru a implementa diverse servicii web:

  1. TCP/IP este un protocol care este înțeles de aproape orice echipament de rețea, de la mainframe la dispozitive portabile și PDA-uri.
  2. HTML este un limbaj de marcare universal folosit pentru a afișa conținut pe dispozitivele consumatorilor.
  3. XML este un instrument universal pentru manipularea tuturor tipurilor de date. Pe baza acestuia pot funcționa și alte protocoale de schimb de informații: SOAP și WSDL.
  4. UDDI este o sursă universală de recunoaștere, integrare și descriere. Funcționează, de regulă, în rețelele private și nu a găsit încă o distribuție suficientă.

Versatilitatea tehnologiilor prezentate stă la baza înțelegerii serviciilor web. Ei lucrează pe tehnologii standard care sunt independente de furnizorii de aplicații și de alte resurse de rețea. Poate fi folosit în orice sisteme de operare, servere de aplicații, limbaje de programare etc.

Avantaje

  • Crearea condițiilor necesare pentru interacțiunea componentelor software, indiferent de platformă.
  • Serviciile web se bazează pe protocoale standard deschise. Prin introducerea XML, este ușor să creați și să configurați servicii web.
  • Utilizarea HTTP garantează interacțiunea sistemelor prin acces inter-rețea.

Defecte

  • Performanță scăzută și volum mare de trafic, în comparație cu sistemele RMI, CORBA, DCOM, datorită utilizării mesajelor XML în contextul textului.
  • Nivel de securitate. Toate serviciile web moderne trebuie să implementeze codificare și să necesite autorizarea utilizatorului. Dacă HTTPS este suficient aici sau dacă sunt necesare protocoale mai fiabile, cum ar fi criptarea XML, SAML etc., se decide în timpul dezvoltării.

Sarcini de servicii web

Serviciile web pot fi utilizate în multe domenii.

Tranzacții B2B

Integrarea proceselor are loc imediat, fără participarea oamenilor. De exemplu, actualizarea catalogului unui magazin online cu produse noi. Sunt aduși la depozit, iar depozitarul marchează sosirea în baza de date. Informațiile sunt transferate automat către magazinul online. Iar cumpărătorul, în loc să marcheze „Stoc epuizat” pe cardul produsului, își vede cantitatea.

Integrarea serviciilor de întreprindere

Dacă compania folosește programe corporative, atunci serviciul web va ajuta la configurarea activității lor comune.

Crearea unui sistem client-server

Serviciile sunt folosite pentru a personaliza funcționarea clientului și a serverului. Acest lucru vă oferă următoarele beneficii:

  • nu puteți vinde software-ul în sine, ci puteți face acces plătit la serviciul web;
  • mai ușor de rezolvat probleme folosind software-ul terților;
  • este mai ușor să organizați accesul la conținutul și materialele serverului.

Un serviciu web este o aplicație care simplifică configurarea tehnică a interacțiunilor cu resursele.

Astăzi, serviciile WEB sunt folosite aproape peste tot - ne oferă informații despre zborurile cu avioane și trenuri, cursuri de schimb și vreme. Nu este de mirare că 1C are și capacitatea de a-și crea propriile servicii WEB, permițându-vă să acționați atât ca furnizor, cât și ca consumator. Acest mecanism este încorporat în platforma 1C:Enterprise 8.3, iar dezvoltatorii pot chiar adăuga propriile obiecte de tip servicii WEB la configurația standard. Arhitectura lor este construită pe un set de servicii care vă permit să faceți schimb de informații cu alte software-uri.

Crearea unui serviciu web 1C

Unul dintre principalele avantaje ale serviciilor 1C WEB este absența necesității de a oferi acces direct la datele de securitate a informațiilor. Un serviciu web 1C configurat corespunzător permite altor aplicații să folosească funcții din exterior. În astfel de cazuri, funcția în sine ar trebui să determine dreptul de a utiliza datele în conformitate cu parametrii specificați, conform regulilor prescrise de dezvoltator.

Cum se creează un serviciu web în 1C?

Pentru ca o anumită funcție a sistemului 1C să devină disponibilă software-ului extern, trebuie să efectuați următorul algoritm de acțiuni:

  1. Accesați configurația și adăugați un obiect de serviciu WEB într-o anumită ramură a arborelui;
  2. Descrieți toate operațiunile pe care funcționalitatea noastră le poate efectua. Descrierea funcțiilor se face în modul în limbajul 1C încorporat;
  3. Adăugați o descriere a parametrilor funcțiilor serviciului web. Vă rugăm să rețineți că tipurile de date sunt descrise ținând cont de tipurile existente ale mecanismului XDTO introdus în platforma versiunea 8.1;
  4. Publicați serviciul WEB creat pe server. Mecanismul încorporat în platforma 1C acceptă următoarele standarde:
  • SSL/TLS
  • WS-I BP

Un exemplu de creare a unui serviciu WEB simplu

Pentru a demonstra cel mai clar funcționarea mecanismului de servicii WEB, să creăm un exemplu - un funcțional care determină lungimea șirului introdus. Software-ul va transmite un șir ca parametru de interogare, iar funcția descrisă în 1C va returna numărul de caractere. Atunci când creați, trebuie să vă amintiți că publicarea acestui mecanism va face posibilă accesarea diverselor programe software. Deoarece nu orice software este capabil să perceapă chirilic, vom numi obiectele de configurare folosind caractere latine.

Deschideți configuratorul, găsiți ramura „Servicii WEB” în arbore și adăugați un nou serviciu „wa_LengthString”. De asemenea, trebuie să adăugați o nouă operațiune în fila „Operațiuni”. Să-i spunem „CalcLengthString”, în proprietăți specificăm tipul valorii returnate - int sau întreg și creăm un parametru „InputString” în interiorul acestuia. Lăsați tipul valorii ca șir.


Acum este necesar să înregistrați acțiunea funcției CalcLengthString în modulul de serviciu WEB. Pentru a face acest lucru, deschideți proprietățile funcției create și apăsați butonul sub formă de lupă din dreapta, lângă câmpul de introducere „Nume procedură”. 1C va crea automat o funcție în modulul nostru de servicii WEB și o va deschide, astfel încât să putem descrie acțiunea CalcLengthString. Să profităm de acest lucru și să scriem acțiunea funcției - determinând lungimea șirului de intrare.


De fapt, aceasta completează crearea celui mai simplu serviciu WEB. Acum trebuie să „puneți” acest serviciu în domeniul public, astfel încât software-ul terță parte sau alte sisteme 1C să poată utiliza această funcționalitate.

Pentru a putea publica serviciul web creat cu funcționalitatea acestuia, trebuie să avem acces la site. Înainte de a începe publicarea serviciului, trebuie să verificăm numele fișierului în proprietățile modulului wa_LengthString generat. Ar trebui să fie clar, simplu și să aibă extensia „1cws”.


Acum este timpul să publicăm serviciul WEB pe care l-am creat pe server. Această caracteristică a apărut în versiunea 8.3 a platformei, iar multe companii au realizat deja beneficiul complet al acestei funcționalități. Pentru a începe publicarea, trebuie să deschideți formularul „Administrare/Publicare pe un server web...” din configurator.


În fereastra care se deschide, trebuie să setăm serviciile 1C Web și să completăm anumite câmpuri:

  • Nume. Indică un folder de pe serverul web în care va fi stocată descrierea serviciului nostru web. Fiți atenți la majuscule, deoarece serverele fac uneori distincția între litere mari și minuscule;
  • server web. Trebuie să selectați un server dintre cele instalate pe computer;
  • Catalog. Trebuie să selectați calea către folderul în care sunt stocate datele serverului web pentru configurarea conexiunii. Se folosesc numai litere latine;
  • Două caracteristici de tip „boolean”. Primul ne este util dacă trebuie să configuram accesul prin clientul web la configurație. Pentru a publica un serviciu 1C, trebuie să puneți a doua notă.

Rămâne doar să verificați dacă serviciul WEB dorit are o casetă de selectare în prima coloană și să faceți clic pe „Publica”.


Deoarece acest mecanism este încă destul de nou, este posibil să întâmpinați o eroare precum „Eroare la efectuarea operațiunii fișierului...”. În acest caz, trebuie doar să repetați butonul „Publicare”. În cele mai multe cazuri, acest lucru vă ajută și veți vedea un mesaj că publicația serviciului web este finalizată.

en//ws/.1cws?wsdl

Ca răspuns la o astfel de solicitare de adresă, browserul trebuie să afișeze structura fișierului XML. Dacă vedeți o pagină goală, o eroare sau caractere ciudate (probleme de codare), atunci trebuie să verificați din nou toți pașii. De asemenea, este o idee bună să vă asigurați că serverul este configurat corect și că aveți acces la el. După publicarea cu succes a serviciului 1C WEB, aplicațiile terțe îl vor putea folosi.

WEB-service - (din limba engleză web-service, sinonim - serviciu online). Serviciile web sunt servicii care sunt furnizate pe Internet folosind programe speciale. De exemplu, sunt comune servicii precum: hosting, e-mail, stocarea diverselor informații pe Internet (fișiere, marcaje), calendar etc. O proprietate importantă a unui serviciu web este că nu depinde de furnizorul dvs., computer sau browser - puteți lucra cu datele dvs. oriunde în lume unde aveți acces la .

Knyazev A.A. Dicţionar enciclopedic al mass-media. - Bishkek: Editura KRSU. A. A. Knyazev. 2002 .

Vedeți ce este „serviciul WEB” în alte dicționare:

    serviciu web

    serviciu web- Serviciu web. Serviciu web, serviciu web (serviciu web în engleză) este un sistem software, identificat printr-un șir de interfețe definite în XML și transmis folosind protocoale Internet. Un serviciu web este o unitate de modularitate atunci când se utilizează ... ... Wikipedia

    Protocolul de comunicare Web Cache- Protocolul de redirecționare a conținutului (WCCP) dezvoltat de Cisco. Oferă un mecanism de redirecționare a fluxurilor de trafic în timp real. Are încorporat scalare, echilibrare a sarcinii, toleranță la erori. Cisco IOS ... ... Wikipedia

    Serviciul de hartă web- (Serviciul de hărți web rusesc WMS) un protocol standard pentru difuzarea pe Internet a imaginilor cu referințe geografice generate de un server de cartografiere pe baza datelor dintr-o bază de date GIS. Acest standard a fost dezvoltat și pentru prima dată ...... Wikipedia

    Web Hotel Salvador- (Salvador, Brazilia) Categoria hotel: hotel 2 stele Adresa: Rua das Alfazemas … Catalog hotel

    Web Hotel Aparecida- (Aparecida, Brazilia) Categoria hotelului: hotel de 3 stele Adresa: Av. Isaac Ferrei… Director hotel

    Arhitectura orientată spre servicii- Procesele de afaceri ale organizației sunt implementate pe baza serviciilor furnizate de aplicațiile existente ale Clientului. Dacă aplicațiile nu acceptă capacitatea de a furniza servicii (Servicii web), implementarea produsului se dezvoltă ... ... Manualul Traducătorului Tehnic

    web 2

    Web 2.0- Concepte cheie asociate cu Web 2.0 Web 2.0 (definit de Tim O'Reilly) este o tehnică de proiectare a sistemelor care, ținând cont de interacțiunile din rețea, se îmbunătățesc cu cât le folosesc mai mulți oameni. Caracteristica Web 2.0. este principiul ...... Wikipedia

    site-ul web- Interogarea „site-ul web” este redirecționată aici. Vedea de asemenea, alte sensuri. Site web (din engleză Website: web web și site „loc”) într-o rețea de computere unite sub un nume de domeniu sau adresă IP) o colecție de documente ale unei persoane private sau ... ... Wikipedia

Cărți

  • Tehnologii informaționale în industria turismului, VN Shitov. Manualul discută în detaliu tehnologiile informatice de uz general folosind pachete populare Microsoft Office 2010 și complexe alternative, folosind ... Cumpărați pentru 546 de ruble
  • 75 Soluții gata pentru site-ul dvs. web în PHP , Steinmetz W., Ward B.. Toți cei care își creează sau urmează să își creeze propriul site web se confruntă inevitabil cu o serie de sarcini și dificultăți: cum să facă un blog pe site…... . „strângeți” votul, închideți sigur...

Pe baza arhitecturii serviciului web, creăm următoarele două componente ca parte a implementării serviciilor web:

Furnizor de servicii sau editor

Acesta este un furnizor de servicii web. Furnizorul de servicii implementează acest serviciu și îl pune la dispoziție pe Internet sau intranet. Vom scrie și publica un serviciu web simplu folosind SDK-ul .NET.

Furnizor de servicii sau consumator

Acesta este orice consumator al serviciului web. Solicitantul consumă un serviciu web existent prin deschiderea unei conexiuni la rețea și trimiterea unei cereri XML. De asemenea, vom scrie două solicitări pentru servicii web: un consumator web (aplicația ASP.NET) și un alt consumator bazat pe aplicații Windows.

Mai jos este primul nostru exemplu de serviciu web care rulează ca furnizor de servicii și expune două metode (adăugați și Spuneți salut) ca servicii web pentru a fi utilizate de aplicații. Acesta este șablonul standard pentru un serviciu web. Serviciile .NET folosesc extensia .asmx. Rețineți că o metodă expusă ca serviciu web are un atribut WebMethod. Salvați acest fișier ca FirstService.asmx în directorul virtual IIS (așa cum este descris în configurarea IIS, de exemplu, c:\MyWebSerces).

FirstService.asmx

<%@ WebService language = "C" class = "FirstService" %>folosind System; folosind System.Web.Services; folosind System.Xml.Serialization; clasă publică FirstService: WebService ( public int Add(int a, int b) ( return a + b; ) public String SayHello() ( return "Hello World"; ) )

Pentru a testa un serviciu web, acesta trebuie publicat. Un serviciu web poate fi publicat fie pe un intranet, fie pe Internet. Vom publica acest serviciu web pe IIS care rulează pe mașina locală. Să începem prin a configura IIS.

  • Deschideți Start → Setări → Panou de control → Instrumente administrative → Manager servicii Internet.
  • Extindeți și faceți clic dreapta pe Site Web implicit; selectați Nou → Director virtual. Se deschide Virtual Directory Creation Wizard. Faceți clic pe „Următorul.
  • Apare ecranul Director virtual. Introduceți un nume pentru directorul virtual. De exemplu, MyWebServices. și faceți clic pe Următorul.
  • Se deschide ecranul „Director de conținut web”.
  • Introduceți un nume de director pentru directorul virtual. De exemplu, c:\MyWebServices Faceți clic pe Următorul.
  • Apare ecranul Permisiuni de acces. Modificați setările în funcție de cerințele dvs. Să păstrăm setările implicite pentru acest exercițiu.
  • Faceți clic pe „Următorul”. Acesta finalizează configurarea IIS.
  • Faceți clic pe „Terminare” pentru a finaliza configurarea.

Pentru a verifica dacă IIS este configurat corect, copiați fișierul HTML (de exemplu x.html) în directorul virtual (C:\MyWebServices) creat mai sus. Acum deschideți Internet Explorer și introduceți http://localhost/MyWebServices/x.html. Ar trebui să deschidă fișierul x.html.

Notă. Dacă acest lucru nu funcționează, încercați să înlocuiți localhost cu adresa IP a dispozitivului dvs. Dacă tot nu funcționează, verificați dacă IIS rulează; poate fi necesar să reconfigurați IIS și directorul virtual.

Pentru a testa acest serviciu web, copiați FirstService.asmx în directorul virtual IIS creat mai sus (C:\MyWebServices). Deschideți serviciul web în Internet Explorer (http://localhost/MyWebServices/FirstService.asmx). Ar trebui să deschidă pagina serviciului web. Pagina ar trebui să aibă legături către două metode pe care le oferim ca servicii web aplicației noastre. Felicitări! Ai scris primul tău serviciu web!

Testarea serviciului web

După cum tocmai am văzut, este ușor să scrieți servicii web în .NET Framework. Scrierea serviciilor web este, de asemenea, ușoară în mediul .NET; cu toate acestea, este puțin mai activ. După cum am discutat mai devreme, vom scrie două tipuri de consumatori de servicii: unul este un site web și celălalt este o aplicație Windows bazată pe utilizator. Să scriem primul nostru consumator de servicii web.

Servicii web

Scrieți un consumator web așa cum este prezentat mai jos. Numiți-o WebApp.aspx. Rețineți că aceasta este o aplicație ASP.NET. Salvați acest lucru în directorul virtual al serviciului web (c:\MyWebServices\WebApp.axpx). Această aplicație are două câmpuri de text care sunt folosite pentru a obține numere de la utilizator pentru a le adăuga. Are un buton Executare care, atunci când este făcut clic, primește serviciile web Adaugă și Salutare.

WebApp.axpx

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

Primul număr de adăugat: 4< /asp:TextBox>

Al doilea număr de adăugat: 5

Rezultat serviciu web -

salut serviciu mondial : eticheta< /asp:Label>

Adăugați serviciu : & eticheta

După crearea consumatorului, trebuie să creăm un proxy pentru a consuma serviciul web. Această lucrare este realizată automat de Visual Studio .NET pentru noi atunci când ne referim la serviciul web adăugat. Iată pașii de urmat:

  • Creați un proxy pentru a utiliza serviciul web. Proxy-ul este creat folosind utilitarul WSDL furnizat împreună cu .NET SDK. Acest utilitar preia informații de la un serviciu web și creează un proxy. Serverul proxy este valabil doar pentru un anumit serviciu web. Dacă trebuie să utilizați alte servicii web, trebuie să creați și un proxy pentru acel serviciu. Visual Studio .NET creează automat un proxy atunci când este adăugată o referință de serviciu web. Creați un proxy pentru serviciul web folosind utilitarul WSDL furnizat împreună cu SDK-ul .NET. Acesta va crea un fișier FirstSevice.cs în directorul curent. Trebuie să-l compilam pentru a genera FirstService.dll (proxy) pentru serviciul web.
  • c:>WSDL http://localhost/MyWebServices/FirstService.asmx?WSDL
  • c:> csc /t:library FirstService.cs
  • Plasați proxy-ul compilat în directorul bin al directorului virtual al serviciului web (c:\MyWebServices\bin). Internet Information Services (IIS) caută un server proxy în acest director.
  • Creați un consumator de servicii exact așa cum am făcut noi. Rețineți că obiectul proxy al serviciului web este creat pe consumator. Acest proxy se ocupă de interacțiunea cu serviciul.
  • Introduceți adresa URL a consumatorului în IE pentru a-l testa (de exemplu, http://localhost/MyWebServices/WebApp.aspx).

Consumator de servicii web bazat pe aplicații Windows

Scrierea unei aplicații de serviciu web bazată pe aplicații Windows este similară cu scrierea oricărei alte aplicații Windows. Trebuie doar să creați un proxy (ceea ce am făcut deja) și să faceți referire la acest proxy atunci când compilați aplicația. Mai jos este aplicația noastră Windows care utilizează serviciul web. Această aplicație creează un obiect de serviciu web (un proxy, desigur) și apelează metodele SayHello și Add pe el.

WinApp.cs

folosind System; folosind System.IO; namespace SvcConsumer ( clasa SvcEater ( public static void Main(String args) ( FirstService mySvc = new FirstService(); Console.WriteLine("Apelarea serviciului Hello World: " + mySvc.SayHello()); Console.WriteLine("Apelarea Add() 2, 3) Serviciu: " + mySvc.Add(2, 3).ToString()); ) ) )

Compilați-l cu c: \> csc /r:FirstService.dll WinApp.cs . Acesta va crea un fișier WinApp.exe. Rulați-l pentru a testa aplicația și serviciul web.

Acum întrebarea este: cum poți fi sigur că această aplicație apelează de fapt un serviciu web?

Este ușor de verificat. Opriți serverul dvs. web, astfel încât serviciul web să nu poată fi contactat. Acum lansați aplicația WinApp. Va arunca o excepție în timpul execuției. Acum porniți din nou serverul web. El trebuie să lucreze.