Miestna webová služba. Čo je webová služba. Vývoj webových služieb na platforme .NET

  • 07.03.2020

Názov témy je naozaj otázny, pretože... Sám neviem, čo to je a po prvýkrát sa s tým pokúsim pracovať v rámci tohto článku. Jediná vec, ktorú môžem zaručiť, je, že nižšie uvedený kód bude fungovať, ale moje frázy budú iba domnienky a dohady o tom, ako tomu všetkému ja sám rozumiem. Tak, poďme...

Úvod

Treba začať tým, prečo vznikol koncept webových služieb. V čase, keď sa tento koncept objavil vo svete, už existovali technológie, ktoré umožňovali aplikáciám interakciu na diaľku, kde jeden program mohol zavolať nejakú metódu v inom programe, ktorú bolo možné spustiť na počítači umiestnenom v inom meste alebo dokonca krajine. To všetko sa označuje skratkou RPC (Remote Procedure Calling). Príklady zahŕňajú technológie CORBA a pre Java - RMI (Remote Method Invoking). A zdá sa, že je v nich všetko dobré, najmä v CORBE, pretože... Dá sa s ním pracovať v akomkoľvek programovacom jazyku, no stále tomu niečo chýbalo. Domnievam sa, že nevýhodou CORBA je, že namiesto jednoduchého HTTP funguje cez niektoré vlastné sieťové protokoly, ktoré sa zmestia cez každý firewall. Myšlienkou webovej služby bolo vytvoriť RPC, ktoré by bolo vložené do HTTP paketov. Tak sa začal vývoj štandardu. Aké sú základné pojmy tohto štandardu:
  1. SOAP. Pred volaním vzdialenej procedúry musíte toto volanie opísať v súbore XML vo formáte SOAP. SOAP je jednoducho jedným z mnohých značiek XML, ktoré sa používajú vo webových službách. Všetko, čo chceme niekam poslať cez HTTP, sa najskôr skonvertuje do XML SOAP popisu, potom sa napchá do HTTP paketu a cez TCP/IP sa pošle na iný počítač v sieti.
  2. WSDL. Existuje webová služba, t.j. program, ktorého metódy možno volať na diaľku. Norma však vyžaduje, aby bol tento program sprevádzaný popisom, ktorý hovorí, že „áno, máte pravdu – toto je skutočne webová služba a môžete z nej volať také a také metódy“. Tento popis je reprezentovaný iným súborom XML, ktorý má iný formát, a to WSDL. Tie. WSDL je len súbor XML popisujúci webovú službu a nič viac.
Prečo sa tak krátko pýtaš? Nemôžeš byť konkrétnejší? Pravdepodobne je to možné, ale aby ste to dosiahli, budete sa musieť obrátiť na knihy ako T. Mashnin, „Java Web Services“. Na prvých 200 stranách je podrobný popis každej značky štandardov SOAP a WSDL. Oplatí sa to robiť? Podľa mňa nie, pretože... toto všetko sa vytvára automaticky v Jave a stačí napísať obsah metód, ktoré sa majú volať na diaľku. V Jave sa teda objavilo API ako JAX-RPC. Ak niekto nevie, keď hovorí, že Java má také a také API, znamená to, že existuje balík s množinou tried, ktoré zapuzdrujú predmetnú technológiu. JAX-RPC sa postupom času vyvíjal z verzie na verziu a nakoniec sa stal JAX-WS. WS očividne znamená WebService a niekto by si mohol myslieť, že ide len o premenovanie RPC na populárny módny výraz súčasnosti. Nie je to pravda, pretože Teraz sa webové služby vzdialili od pôvodnej myšlienky a umožňujú nielen volať vzdialené metódy, ale aj jednoducho posielať správy dokumentov vo formáte SOAP. Zatiaľ neviem, prečo je to potrebné; je nepravdepodobné, že odpoveď tu bude „pre prípad, že by to bolo potrebné“. Sám by som sa rád učil od skúsenejších súdruhov. A nakoniec sa objavil JAX-RS pre takzvané RESTful webové služby, ale to je téma na samostatný článok. Úvod tu môže skončiť, pretože... Ďalej sa naučíme pracovať s JAX-WS.

Všeobecný prístup

Vo webových službách je vždy klient a server. Server je naša webová služba a niekedy sa nazýva koncový bod (napríklad koncový bod, kam sa dostanú správy SOAP od klienta). Musíme urobiť nasledovné:
  1. Popíšte rozhranie našej webovej služby
  2. Implementujte toto rozhranie
  3. Spustite našu webovú službu
  4. Napíšte klienta a na diaľku zavolajte požadovanú metódu webovej služby
Webovú službu môžete spustiť rôznymi spôsobmi: buď opíšte triedu hlavnou metódou a spustite webovú službu priamo ako server, alebo ju nasaďte na server, ako je Tomcat alebo akýkoľvek iný. V druhom prípade my sami nespustíme nový server a neotvoríme ďalší port na počítači, ale jednoducho povieme kontajneru servletov Tomcat, že „napísali sme tu triedy webových služieb, prosím, zverejnite ich, aby každý, kto vás kontaktuje, mohol použite našu webovú službu." Bez ohľadu na spôsob spustenia webovej služby budeme mať rovnakého klienta.

Server

Spustíme IDEA a vytvoríme nový projekt Vytvoriť nový projekt. Označme názov HelloWebService a stlačte tlačidlo Ďalšie, potom tlačidlo Skončiť. V priečinku src vytvoríme balíček ru.javarush.ws. V tomto balíku vytvoríme rozhranie HelloWebService: package ru. javarush. ws; // ide o anotácie, t.j. spôsob, ako označiť naše triedy a metódy, // v súvislosti s technológiou webových služieb importovať javax. jws. WebMethod; importovať javax. jws. Webová služba; importovať javax. jws. mydlo. SOAPBinding;// hovoríme, že naše rozhranie bude fungovať ako webová služba @Webová služba// hovoríme, že webová služba bude slúžiť na volanie metód @SOAPBinding (štýl = SOAPBinding. Štýl. RPC) verejné rozhranie HelloWebService (// hovoríme, že túto metódu možno volať na diaľku @WebMethod public String getHelloString(Názov reťazca) ; ) V tomto kóde sú triedy WebService a WebMethod takzvané anotácie a nerobia nič iné, len označujú naše rozhranie a jeho metódu ako webovú službu. To isté platí pre triedu SOAPBinding. Jediný rozdiel je v tom, že SOAPBinding je anotácia s parametrami. V tomto prípade sa používa parameter style s hodnotou označujúcou, že webová služba bude fungovať nie cez správy dokumentov, ale ako klasické RPC, t.j. zavolať metódu. Implementujme našu logiku rozhrania a vytvorte v našom balíku triedu HelloWebServiceImpl. Mimochodom, podotýkam, že ukončenie triedy pomocou Impl je v Jave konvencia, podľa ktorej sa tak označuje implementácia rozhraní (Impl - od slova implementácia, t.j. implementácia). Toto nie je požiadavka a triedu môžete pomenovať akokoľvek chcete, ale dobré mravy si to vyžadujú: package ru. javarush. ws;// rovnaká anotácia ako pri popise rozhrania, importovať javax. jws. Webová služba; // ale tu sa používa s parametrom endpointInterface,// označujúci úplný názov triedy rozhrania našej webovej služby @WebService(endpointInterface="ru.javarush.ws.HelloWebService" ) verejná trieda HelloWebServiceImpl implementuje službu HelloWebService ( @Override public String getHelloString (názov reťazca) (// stačí vrátiť pozdrav src návrat "Ahoj, " + meno + "!" ; ) ) Spustite našu webovú službu ako samostatný server, t.j. bez účasti akéhokoľvek Tomcatu a aplikačných serverov (toto je téma na samostatnú diskusiu). Ak to chcete urobiť, v štruktúre projektu v priečinku Vytvorme si balík ru.javarush.endpoint a v ňom vytvoríme triedu HelloWebServicePublisher s hlavnou metódou: package ru. javarush. koncový bod;// trieda pre spustenie webového servera s webovými službami importovať javax. xml. ws. koncový bod; dovoz ru. javarush. ws. HelloWebServiceImpl; public class HelloWebServicePublisher ( public static void main (String... args) ( // spustenie webového servera na porte 1986 // a na adresu uvedenú v prvom argumente, // spustenie webovej služby odovzdanej v druhom argumente Koncový bod. zverejniť ( "http://localhost:1986/wss/hello", nový HelloWebServiceImpl () ); ) ) Teraz spustíme túto triedu kliknutím Shift+F10. V konzole sa nič nezobrazí, ale server beží. Môžete si to overiť zadaním riadku http://localhost:1986/wss/hello?wsdl do svojho prehliadača. Stránka, ktorá sa otvorí, na jednej strane dokazuje, že máme webový server (http://) spustený na porte 1986 na našom počítači (localhost), a na druhej strane zobrazuje WSDL popis našej webovej služby. Ak zastavíte aplikáciu, popis bude nedostupný, rovnako ako samotná webová služba, takže to neurobíme, ale prejdeme na písanie klienta.

Zákazník

V priečinku projektu src Vytvorme si balík ru.javarush.client a v ňom triedu HelloWebServiceClient s hlavnou metódou: package ru. javarush. zákazník; // potreboval získať popis wsdl a cez to // dostať sa k samotnej webovej službe importovať java. net. URL; // táto výnimka sa vyskytne pri práci s objektom URL importovať java. net. MalformedURLException; // triedy na analýzu xml s popisom wsdl // a dostanete sa na servisný štítok v ňom importovať javax. xml. menný priestor. QName; importovať javax. xml. ws. servis; // rozhranie našej webovej služby (potrebujeme viac) dovoz ru. javarush. ws. HelloWebService; public class HelloWebServiceClient ( public static void main (String args) vyvolá MalformedURLException ( // vytvorte odkaz na popis wsdl URL URL = nová URL ( "http://localhost:1986/wss/hello?wsdl") ; // Na parametre ďalšieho konštruktora sa pozrieme v úplne prvej značke popisu WSDL - definície // pozrite sa na 1. argument v atribúte targetNamespace // pozrite sa na 2. argument v atribúte name QName qname = nový QName ("http://ws.site/" , "HelloWebServiceImplService" ) ; // Teraz sa môžeme dostať k servisnej značke v popise wsdl, Servisná služba = služba. create (url, qname) ; // a potom až po značku portu vnorenú v ňom, takže // získať odkaz na objekt webovej služby vzdialený od nás HelloWebService ahoj = služba. getPort(HelloWebService.class); // Hurá! Teraz môžete zavolať vzdialenú metódu Systém. von. println (ahoj. getHelloString ( "JavaRush" ) ) ; ) ) Maximálne komentáre som dal ku kódu vo výpise. Nemám čo dodať, tak poďme na to (Shift+F10). V konzole by sme mali vidieť text: Hello, JavaRush! Ak ste to nevideli, pravdepodobne ste zabudli spustiť webovú službu.

Záver

Táto téma poskytla krátky exkurz do webových služieb. Ešte raz poviem, že veľa z toho, čo som napísal, je môj odhad, ako to funguje, a preto by ste mi nemali príliš dôverovať. Bol by som vďačný, keby ma znalí ľudia opravili, lebo potom sa niečo naučím. UPD.

Anotácia: Oblasti použitia. Výhody. Vlastnosti vývoja webových služieb pre platformu .NET. Popis a objav webovej služby

Čo je webová služba XML?

S rozvojom informačných technológií vznikli rôzne prístupy k písaniu programov: modulárne programovanie, udalosťami riadené programovanie, orientovaný na komponenty programovanie a dizajn. Logické pokračovanie týchto prístupov bolo orientované na služby vývoj softvéru.

Použitie prístupov orientovaných na služby nám umožňuje hovoriť o opätovnom použití na makroúrovni (úroveň služby), na rozdiel od mikroúrovne (úroveň objektu). Prístup orientovaný na služby využíva jednoduché a všeobecne akceptované štandardy, ktoré umožňujú širokému spektru aplikácií navzájom zdieľať svoje funkcie. Služby je možné písať pomocou rôznych programovacích jazykov na rôznych platformách. Okrem toho môžu byť služby nasadené samostatne alebo ako súčasť softvérového balíka kdekoľvek na svete a poskytnú tak prístup k ich funkcionalite cez sieť.

Zavolajme služby zdroj, ktorý implementuje obchodnú funkciu a má nasledujúce vlastnosti:

  • je opakovane použiteľný;
  • definované jedným alebo viacerými explicitnými technologicky nezávislými rozhraniami;
  • je voľne prepojená s inými podobnými zdrojmi a môže byť vyvolaná prostredníctvom komunikačných protokolov, ktoré umožňujú zdrojom vzájomne interagovať.

Špeciálnym prípadom služby je webová služba XML.

Webová služba XML je špeciálny typ webovej aplikácie, ktorá:

  • nasadené na webovom serveri;
  • zverejňuje webové metódy, ktoré môžu volať externí klienti;
  • čaká na príjem HTTP požiadaviek, čo sú príkazy na volanie webových metód;
  • vykoná webové metódy a vráti výsledky.

Na rozdiel od tradičnej webovej aplikácie nemá webová služba používateľské rozhranie. Namiesto toho má programovacie rozhranie, to znamená, že webová služba sprístupňuje funkcie (webové metódy), ktoré možno volať na diaľku (napríklad cez internet). Webová služba nie je určená na to, aby slúžila koncovým používateľom. Jeho úlohou je poskytovať služby iným aplikáciám, či už ide o webové aplikácie, GUI aplikácie alebo konzolové aplikácie.

Webová služba môže poskytovať informácie o cenách akcií v reálnom čase, kontrolovať kreditné karty alebo hlásiť predpoveď počasia. Webové služby sú rovnako rozmanité ako bežné aplikácie.

Webové služby nie sú majetkom konkrétnej spoločnosti. Ide o priemyselný štandard založený na otvorených protokoloch (SOAP, HTTP atď.). Webové služby sú nasadené na rôznych platformách (vrátane serverov so systémom Windows alebo UNIX). Webové služby je možné vyvíjať pomocou mnohých vývojových nástrojov (od textového editora až po rodinu Microsoft Visual Studio).

Metódy väčšiny webových služieb sú volané HTTP požiadavkami obsahujúcimi SOAP správy SOAP je XML jazyk (XML slovník) na volanie vzdialených procedúr cez HTTP a iné protokoly (úplný popis SOAP http://www.w3.org/TR/SOAP) .

Miesto webových služieb medzi ostatnými technológiami vzdialeného volania

Existuje pomerne veľa protokolov a technológií vzdialeného vyvolávania: Microsoft Distributed Component Object Model (DCOM), architektúra spoločného makléra požiadaviek na objekty (CORBA) skupiny Object Management Group, vzdialené vyvolávanie metód od spoločnosti Sun (RMI), . NET Remoting, webové služby XML.

Všetky tieto technológie založené na komponentoch (DCOM, CORBA a RMI) sa už mnoho rokov úspešne používajú v intranetových aplikáciách. Poskytujú spoľahlivú, škálovateľnú architektúru. Pri používaní týchto technológií na internete však existujú dva vážne problémy. Po prvé, neinteragujú medzi sebou dobre. Všetky technológie fungujú na objektoch, ale výrazne sa líšia v detailoch: správa životného cyklu, podpora konštruktéra a stupeň podpory dedičnosti. Druhým, dôležitejším aspektom je, že zameranie sa na RPC interakcie vedie ku konštrukcii tesne prepojených systémov založených na explicitných volaniach objektových metód.

Na rozdiel od týchto technológií, XML Web Services a. NET Remoting sú plne implementované objektovo orientovaný prístup na programovanie webu.

Webová služba XML- komponent, ktorý poskytuje internetovým klientom súbor funkcií API alebo webových metód. XML je súčasťou názvu, pretože webové služby a ich klienti ho používajú na výmenu údajov. Webové služby sú založené na otvorených štandardoch, ako sú HTTP, XML (Extensible Markup Language), SOAP (Simple Object Access Protocol - štandard Intenet, ktorý popisuje, ako môžu aplikácie interagovať, to znamená volať si navzájom svoje metódy pomocou HTTP a iných protokolov). Hlavnou úlohou webových služieb je zabezpečiť medziprogramovú interakciu. Mnohé z nich pracujú na serveroch UNIX a pristupujú k nim klienti Windows. Údaje odosielané webovým službám sú serializované v XML a odosielané v paketoch SOAP. Metadáta o obsahu takýchto správ sú uložené v zmluve webovej služby WSDL a schémach XSD. Hlavnou výhodou tohto prístupu je čitateľnosť metadát. Vývojár môže jednoducho zobraziť celý popis webovej služby a dokonca vytvoriť svoj vlastný modul, ktorý analyzuje pakety SOAP.

.NET Remoting poskytuje infraštruktúru pre distribuované objekty. Je to oveľa zložitejšie ako jednoduchá architektúra webových služieb na odovzdávanie správ. . NET Remoting zahŕňa odovzdávanie parametrov podľa referencie a hodnoty, spätné volania, aktiváciu viacerých objektov a zásady správy životného cyklu. Na využitie týchto funkcií musí klientska aplikácia ovládať všetky technológie. Údaje c. NET Remoting sa prenášajú v binárnom alebo SOAP formáte. V každom prípade sú však metadáta o štruktúre prenášaných informácií obsiahnuté v prostredí vykonávania spoločného jazyka. Bez spoločného jazykového modulu runtime (CLR) nebude klientska aplikácia schopná analyzovať moduly špecifické pre daný jazyk. NET Remoting hlavičky SOAP. Teda. NET Remoting kladie podstatne vyššie požiadavky v porovnaní s webovými službami.

Vývoj webových služieb na platforme .NET

Existuje mnoho spôsobov, ako písať webové služby. Môžu byť vyvinuté manuálne alebo pomocou nástrojov SOAP poskytovaných spoločnosťami Microsoft, IBM atď. Tvorba webových služieb pomocou spoločnosti Microsoft. NET má dve výhody:

  • .NET Framework výrazne zjednodušuje proces vývoja tým, že poskytuje knižnicu tried a automatizuje jednotlivé fázy vývoja;
  • Webové služby napísané pomocou .NET Framework sú riadené aplikácie. To znamená, že takéto aplikácie nemajú problémy s únikmi pamäte, nesprávne inicializovanými ukazovateľmi a inými typickými problémami s programovaním.

Tvorba

Poďme vyvinúť jednoduchú webovú službu AdditionService, ktorá pridá dve čísla. Bude mať iba jednu metódu Add, ktorá berie ako parameter dve celé čísla a tiež vracia celé číslo. AdditionService demonštruje niekoľko dôležitých princípov programovania webových služieb pomocou Microsoft .NET Framework.

  • Webové služby sú implementované ako súbory ASMX. ASMX je špeciálna prípona názvu súboru registrovaná pre ASP .NET (konkrétnejšie ASP.NET HTTP Handler) v hlavnom konfiguračnom súbore ASP .NET Machine.config.
  • Súbory ASMX začínajú direktívou @WebService. Táto direktíva musí obsahovať aspoň atribút Class, ktorý špecifikuje triedu, z ktorej webová služba pozostáva.
  • Triedy webových služieb môžu mať voliteľné atribúty WebService. V tomto príklade takýto atribút určuje názov webovej služby a popis, ktorý sa zobrazí na stránke HTML, keď používateľ zavolá AdditionService.asmx v prehliadači.
  • Webové metódy sú deklarované priradením atribútu WebMethod k verejným metódam triedy webových služieb. Pre pomocné metódy, ktoré sa používajú interne, ale nie sú dostupné pre externých klientov, tento atribút jednoducho nie je špecifikovaný.
  • HTTP, XML a SOAP sú „neviditeľné“. .NET Framework spracováva údaje XML a správy SOAP.

AdditionService.asmx<%@ WebService language="C#" Class="AddService" %>pomocou systému pomocou triedy System.Web.Services AddService ( public int Add (int a, int b) ( return a + b ) )

Napriek svojej malej veľkosti je AdditionService.asmx plnohodnotnou webovou službou, ak je nainštalovaná na webovom serveri s ASP.NET. Jeho metódy sa volajú pomocou SOAP, HTTP GET a HTTP POST a môžu vrátiť výsledky ako odpovede SOAP alebo ako jednoduché obaly XML.

Pomocou kódu na pozadí je možné presunúť triedy webových služieb zo súborov asmx do samostatných súborov.

Webové služby podporujú používanie komplexné dátové typy ako vstupné alebo výstupné parametre. Komplexné typy údajov sú podporované, pretože XML umožňuje jednoduchú serializáciu väčšiny typov údajov. Pri automatickom testovaní webovej služby však ASP .NET negeneruje testovacie stránky pre metódy, ktoré akceptujú komplexné dátové typy. Stáva sa to preto, že nemôžete odovzdať zložité typy údajov webovej metóde pomocou HTTP GET a POST.

Webové služby vám umožňujú volať ich metódy asynchrónne. Asynchrónny hovor okamžite vráti kontrolu bez ohľadu na to, ako dlho trvá webovej službe spracovanie hovoru. Asynchrónne hovory sú užitočné, keď spracovanie hovoru trvá značné množstvo času. Aplikácia uskutoční hovor, potom pokračuje v behu bez čakania na výsledok hovoru a neskôr prijme výsledky asynchrónneho hovoru. Výsledok sa získa opätovným volaním webovej metódy v čase vhodnom pre aplikáciu alebo prihlásením sa na odber upozornenia o ukončení spracovania hovoru webovou službou (mechanizmus delegovania).

Webové služby je možné vytvárať pomocou nástrojov ako napr Microsoft Visual Studio 2005. Na vytváranie webových služieb existuje samostatný projekt typu ASP .NET Web Service. Visual Studio vygeneruje súbor asmx, súbor s kódom na pozadí na popis tried webových služieb, konfiguračný súbor webovej služby atď. Keď sa projekt spustí na spustenie, triedy služieb sa skompilujú a súbor asmx sa otvorí v okne prehliadača .

Popis webových služieb pomocou zmlúv

Aby mohli ostatní vývojári používať AdditionService, potrebujú vedieť, aké metódy poskytuje, aké protokoly podporuje, podpisy metód a adresu webovej služby (URL). Všetky tieto a ďalšie informácie je možné popísať v jazyku WSDL (Web Service Description language).


Zisťovanie webových služieb

Ako ostatní vývojári vedia o existencii AdditionService?

Po prvé, pomocou DISCO (skratka pre slovo discovery) - súborového mechanizmu na vyhľadávanie lokálnych webových služieb, teda mechanizmu na získanie zoznamu dostupných webových služieb zo súborov DISCO umiestnených na webových serveroch. Súbory DISCO navyše obsahujú záznamy o umiestnení zmlúv WSDL o dostupných službách. Súbor DISCO je súbor XML so záznamami.

Je možné použiť aj súbory VSDISCO, ktoré sú podobné súborom DISCO, ale ich obsah je výsledkom dynamického vyhľadávania webových služieb v zadaných adresároch a všetkých podadresároch. ASP .NET mapuje príponu súboru .vsdisco na obsluhu HTTP, ktorá v danom adresári a jeho podadresároch vyhľadá asmx a disco a vráti dynamicky generovaný DISCO dokument. Z bezpečnostných dôvodov je dynamické vyhľadávanie v niektorých verziách .NET Framework zakázané, ale môžete ho povoliť úpravou položiek v súbore Machine.config.

Ako vyhľadávate webové služby v globálnej sieti? Na vyhľadávanie webových služieb v globálnej sieti Microsoft, IBM a Ariba spoločne vyvinuli UDDI (Universal Description Discovery and Integration) – špecifikáciu na budovanie distribuovaných databáz, ktorá vám umožňuje vyhľadávať webové služby. UDDI podporujú stovky spoločností. Stránky UDDI sú samy osebe webovými službami. Každý môže zverejniť svoj register založený na UDDI. Väčšina vývojárov nikdy priamo nepoužíva UDDI API. Namiesto toho k registrom UDDI pristupujú vývojové nástroje. Generujú tiež obalové triedy pre objavené a vybrané webové služby.

Výsledky

Webová služba XML je softvérový komponent, ktorý poskytuje funkcie, ktoré môžu používať rôzne systémy podporujúce štandardy, ako sú XML a HTTP, klienti webových služieb môžu byť lokálne aj vzdialené aplikácie. Webové služby umožňujú vytvárať štruktúry, ktoré uľahčujú integráciu rôznych systémov na základe jednoduchých, všeobecne uznávaných štandardov.

Dnes sú WEB služby využívané takmer všade - poskytujú nám informácie o letoch lietadlom a vlakom, výmenných kurzoch a počasí. Nie je prekvapujúce, že 1C má tiež schopnosť vytvárať svoje vlastné WEB služby, čo jej umožňuje pôsobiť ako dodávateľ aj spotrebiteľ. Tento mechanizmus je zabudovaný do platformy 1C:Enterprise 8.3 a vývojári môžu dokonca do štandardnej konfigurácie pridať svoje vlastné objekty typu WEB služieb. Ich architektúra je postavená na súbore služieb, ktoré umožňujú výmenu informácií s iným softvérom.

Vytvorenie webovej služby 1C

Jednou z hlavných výhod 1C WEB služieb je absencia potreby poskytovať priamy prístup k údajom o bezpečnosti informácií. Správne nakonfigurovaná webová služba 1C umožňuje iným aplikáciám využívať funkcie zvonku. V takýchto prípadoch by mala samotná funkcia určiť právo na používanie údajov podľa špecifikovaných parametrov podľa pravidiel predpísaných vývojárom.

Ako vytvoriť webovú službu v 1C?

Aby bola určitá funkcia systému 1C dostupná pre externý softvér, je potrebné vykonať nasledujúci algoritmus akcií:

  1. Prejdite na konfiguráciu a pridajte objekt webovej služby do určitej vetvy stromu;
  2. Popíšte všetky operácie, ktoré môže naša funkcionalita vykonávať. Popis funkcií sa vykonáva v module v zabudovanom jazyku 1C;
  3. Pridajte popis parametrov funkcií webovej služby. Upozorňujeme, že typy údajov sú opísané s prihliadnutím na existujúce typy mechanizmu XDTO zavedené vo verzii 8.1 platformy;
  4. Uverejnite vytvorenú webovú službu na serveri. Mechanizmus zabudovaný do platformy 1C podporuje nasledujúce štandardy:
  • SSL/TLS
  • WS-I BP

Príklad vytvorenia jednoduchej WEB služby

Aby sme čo najjasnejšie demonštrovali fungovanie mechanizmu WEB služieb, vytvorte si príklad – funkcionalitu, ktorá určuje dĺžku zadávaného reťazca. Softvér odovzdá reťazec ako parameter požiadavky a funkcia opísaná v 1C vráti počet znakov. Pri vytváraní je potrebné pamätať na to, že zverejnenie tohto mechanizmu umožní prístup rôznym softvérom. Keďže nie každý softvér je schopný akceptovať cyriliku, budeme konfiguračné objekty pomenovať pomocou latinských znakov.

Otvorte konfigurátor, nájdite v strome vetvu „WEB services“ a pridajte novú službu „wa_LengthString“. Musíte tiež pridať novú operáciu na karte „Operácie“. Nazvime to „CalcLengthString“, vo vlastnostiach označíme typ návratovej hodnoty – int alebo integer a v jej vnútri vytvoríme parameter „InputString“. Typ hodnoty ponechajte ako reťazec.


Teraz je potrebné zaregistrovať akciu funkcie CalcLengthString v module WEB služby. Ak to chcete urobiť, otvorte vlastnosti vytvorenej funkcie a kliknite na tlačidlo vo forme lupy vpravo vedľa vstupného poľa „Názov postupu“. 1C automaticky vytvorí funkciu v našom module webovej služby a otvorí ju, aby sme mohli opísať akciu CalcLengthString. Využime to a napíšme akciu funkcie – určenie dĺžky vstupného reťazca.


V skutočnosti sa tým dokončí vytvorenie jednoduchej WEB služby. Teraz je potrebné „umiestniť“ túto službu do verejnej domény, aby softvér tretích strán alebo iné systémy 1C mohli používať túto funkciu.

Aby sme mohli vytvorenú webovú službu s jej funkcionalitou publikovať, potrebujeme mať na stránku prístup. Predtým, než začneme službu publikovať, musíme skontrolovať názov súboru vo vlastnostiach vytvoreného modulu wa_LengthString. Mal by byť jasný, jednoduchý a mal by mať príponu „1cws“.


Teraz je čas zverejniť webovú službu, ktorú sme vytvorili na serveri. Táto funkcia sa objavila v platforme verzie 8.3 a mnohé spoločnosti si už uvedomili všetky výhody tejto funkcie. Pre spustenie publikovania je potrebné v konfigurátore otvoriť formulár „Správa/Publikovanie na webovom serveri...“.


V okne, ktoré sa otvorí, musíme nakonfigurovať webové služby 1C a vyplniť určité polia:

  • Názov. Označuje priečinok na webovom serveri, v ktorom bude uložený popis našej webovej služby. Dávajte pozor na malé a veľké písmená, pretože niekedy servery rozlišujú medzi veľkými a malými písmenami;
  • Webový server. Musíte vybrať server z tých, ktoré sú nainštalované na vašom počítači;
  • Katalóg. Musíte vybrať cestu k priečinku, kde sú uložené údaje webového servera na nastavenie pripojenia. Používajú sa iba latinské písmená;
  • Dva znaky booleovského typu. Prvý sa nám bude hodiť, ak potrebujeme nakonfigurovať prístup ku konfigurácii cez webového klienta. Ak chcete publikovať službu 1C, musíte začiarknuť druhé políčko.

Zostáva len skontrolovať, či má požadovaná WEB služba začiarknuté políčko v prvom stĺpci a kliknúť na „Publikovať“.


Keďže tento mechanizmus je stále celkom nový, môžete sa stretnúť s chybou ako „Pri vykonávaní operácie so súborom sa vyskytla chyba...“. V tomto prípade stačí znova kliknúť na „Publikovať“. Vo väčšine prípadov to bude fungovať a zobrazí sa správa oznamujúca, že webová služba bola zverejnená.

Ru//ws/.1cws?wsdl

V reakcii na takúto žiadosť o adresu musí prehliadač zobraziť štruktúru súboru XML. Ak uvidíte prázdnu stránku, chybu alebo zvláštne znaky (problémy s kódovaním), musíte znova skontrolovať všetky kroky. Je tiež dobré sa uistiť, že server je správne nakonfigurovaný a máte k nemu prístup. Po úspešnom zverejnení budú môcť webovú službu 1C používať aplikácie tretích strán.

Webová služba je program, ku ktorému môžu pristupovať iné programy cez internet (http). Povedzme napríklad, že máte funkciu, ktorá poskytuje text vo formáte HTML. Účelom aplikácie je, aby webový prehliadač zobrazoval výsledky a človek si tento text na stránke ľahko prečítal.

Na druhej strane, cieľovým publikom webovej služby sú iné programy alebo iné webové služby, ktoré spotrebúvajú údaje poskytované webovou službou. Výstup je zvyčajne v štandardnom jazyku, ktorý je zrozumiteľný pre iné programy. Vezmite si príklad vyššie, ak webová služba vydáva text vo formáte XML, potom môžu tento výstup použiť iné webové služby, ktoré dokážu čítať alebo porozumieť XML.

Hlavnou výhodou webovej služby je, že aplikácie môžu byť napísané v akomkoľvek jazyku, ale môžu spolu komunikovať a komunikovať prostredníctvom webovej služby. Softvérové ​​aplikácie napísané v rôznych programovacích jazykoch a bežiace na rôznych platformách môžu využívať webové služby na komunikáciu cez internet (HTTP). Táto interakcia (napríklad medzi Java a Pythonom alebo aplikáciami pre Windows a Linux) zahŕňa použitie otvorených štandardov (XML, SOAP, HTTP).

  • SOAP (Simple Object Access Protocol)
  • UDDI (univerzálny popis, objavovanie a integrácia)
  • WSDL (jazyk popisu webových služieb)

Koľko rôznych typov webových služieb existuje?

Primárne existujú dva typy webových služieb, Simple Object Access Protocol (SOAP) a Representational State Transfer (REST).

  • Webová služba SOAP prijme požiadavku vo formáte XML a vygeneruje výstup vo formáte XML.
  • Webová služba REST je všestrannejšia a môže akceptovať XML aj JSON ako požiadavku a generuje výstup vo formáte XML, ako aj JSON alebo dokonca HTML.

Táto problematika sa dá podrobnejšie naštudovať na našej.