Vad är en webbtjänst? Vad är en webbtjänst Vad är webbtjänster för.

Vi undersökte de allmänna begreppen för att använda mekanismen « webb-tjänster ".Låt oss uppdatera lite kunskap.

Webbtjänster används för att utbyta data mellan server och klient; XML-format används för att "paketera" data för ömsesidig förståelse mellan båda parter i kommunikationen.

SEKTIONJag

EXEMPEL PÅ GENOMFÖRANDETWEBB-SERVICE I SYSTEMET "1C: FÖRETAG"

UPPGIFT: Det är nödvändigt att skapa en webbtjänst där kunderna kan bestämma all nödvändig information för sina applikationer.

Uppgiften är demo och fungerar endast som ett exempel för att förstå och lära ut mekanismenwebb-tjänster.

BESLUT:

Steg 1.Låt oss skapa en ny infobas utan konfiguration för att utveckla en ny konfiguration.

Steg 2.Låt oss lägga till flera nya objekt i konfigurationen

Katalog "Kunder";

Ansökningsdokument;

Uppräkning "Applikationsstatus".

Steg 3.Låt oss skapa ett nytt XDTO-paket.

Varför och varför skapar vi ett XDTO-paket? Mer information om användning av XDTO-mekanismen finns i "Kapitel 16. Utvecklarhandbok" och.

Låt oss bara kort notera att XDTO-mekanismen är på ett universellt sätt datapresentation för interaktion med olika externa datakällor och mjukvarusystem.

I vårt fall skapas XDTO-paketet för att beskriva webbtjänstens returvärde.

Öppna filialen "Allmänt" → "XDTO-paket" → Lägg till ...

Ange namnet på XDTO-paketet “ Dokumentdata"Och dess namnområde http: // localhost / begäran eller http://192.168.1.76/request (för att underlätta förståelsen och inlärningsprocessen anger vi den lokala IP-adressen till den dator där webbservern är installerad (webbservrar som stöds: IIS eller Apache)). Varje webbtjänst kan identifieras unikt med sitt namn och URI för namnområdet som den tillhör.

Vårt paket innehåller två typer av XDTO-objekt:

1) Kund - för att överföra data från katalogelementet "Klienter".

- namn ;

2) Dokumentera - att överföra uppgifterna i dokumentet "Applications"

Denna typ av XDTO-objekt kommer att innehålla följande egenskaper:

- Kund - Kundtyp från http://192.168.1.76/request namespace; är en länk till XDTO-objektet som vi definierade ovan;

- Status - strängtypen från namnområdet http://www.w3.org/2001/XMLSchema;

- Numder - strängtypen från http://www.w3.org/2001/XMLSchema namnområde.

Steg 4.Låt oss lägga till en ny webbtjänst i konfigurationen

Öppna filialen "Allmänt" → "Webbtjänster" → Lägg till ...

För webbtjänsten kommer vi att specificera följande egenskapsvärden:

Namn - Dokumentdata

Namnutrymme URI - http://192.168.1.76/request

XDTO-paket - Dokumentdataeller http://192.168.1.76/request

Publicera filnamn - request.1cws

Steg 5.Definiera åtgärden för den skapade webbtjänsten " Hämta data»

Operationsegenskapsvärden:

Returtyp - Dokument (http://192.168.1.76/request)

Eventuellt tomt värde - Sann

Förfarande namn - Hämta data.

Steg 6.Drift Hämta data definiera kundparametern med följande egenskapsvärden:

Värdetyp - typ sträng från namnområdet http://www.w3.org/2001/XMLSchema;

Överföringsriktning - inmatning.

Steg 7.Låt oss öppna modulen för den skapade webbtjänsten och lägga in Get () -funktionen i den, som kommer att köras när denna webbtjänst anropas.

Funktion GetData (Сustomer) // Hämta typerna av XDTO-objekt ClientType \u003d FactoryXDTO.Type ("http://192.168.1.76/request", "Сustomer"); RequestType \u003d FactoryXDTO.Type ("http://192.168.1.76/request", "Document"); // Skaffa klienten ClientLink \u003d Directories.Clients.FindByName (Kund); Om inte ValueFilled (CustomerRef) är Returen odefinierad; EndIf; Begäran \u003d Ny begäran; Request.Text \u003d "VÄLJ FÖRST 1 | Application.Link, | INLÄNDNING (Application.Status) AS Status, | Application.Number | FRÅN | Document.Application AS Application | WHERE | Application.Client \u003d & Client"; Request.SetParameter ("Client", ClientLink); QueryResult \u003d Query.Run (); Om QueryResult.Empty () är Retur odefinierad; EndIf; Selection \u003d QueryResult.Select (); Sample.Next (); Dokument \u003d Selection.Ref.GetObject (); // Skapa ett XDTO-objekt för applikationen Application \u003d XDTO Factory.Create (ApplicationType); Application.Numder \u003d Selection.Number; Client \u003d FactoryXDTO.Create (ClientType); Client.Name \u003d ClientRef.Name; Application.Customer \u003d Kund; Application.Status \u003d Selection.Status; // Returnera ansökan Return Application; EndFunction

Steg 8.Låt oss publicera den skapade webbtjänsten till webbservern.

Menypost Configurator: "Administration" → "Publicering på webbservern".

På fliken "Webbtjänster" ställer du in flaggan "Publicera webbtjänster" och mittemot vår nya webbtjänst sätter du också ett "kryss".

SEKTIONII

EXEMPEL PÅ HÄNVISNING TILLWEBB-SERVICE AV SYSTEMET "1C: FÖRETAG" FRÅN TREDJEPARTSANVÄNDNING

Huvudsyftet med webbtjänstmekanismen i 1C: Enterprise-systemet är att överföra nödvändig data till tredjepartsapplikationer.

Låt oss överväga ett exempel på att utveckla en applikation i Delphi genom att ringa vår webbtjänst från första delen av den här artikeln.

Steg 1.Låt oss skapa nytt projekt och placera flera kontroller på formuläret

Textfält - används för att visa information som tas emot från webbtjänsten;

Två knappar - rensa textfältet och öppna webbtjänsten;

Inmatningsfältet är en parameter som skickas till webbtjänsten.

Steg 2.Vi importerar WSDL-filen

Som ett resultat får vi en ny modul begäran(vi har definierat detta namn direkt i 1C). Denna modul innehåller all nödvändig information om webbtjänsten.

Steg 3.Låt oss skriva en hanterare för att ringa en webbtjänst

Variabel DocumentDataPortType är redan definierad i modulen begäran

Steg 4.Kör applikationen och kontrollera.

SEKTIONIII

EXEMPEL PÅ HÄNVISNING TILLWEBB-SERVICE I SYSTEMET "1C: FÖRETAG"

Steg 1.Låt oss skapa en ny extern bearbetning med namnet "WEB_Service"

Steg 2.För bearbetning definierar vi ett nytt formulär

Steg 3.Vi kommer att ange flera detaljer för formuläret

Klient - skriv "Sträng"

CustomerReturn - skriv "Sträng"

NumberReturn - typ "Sträng"

Returstatus - typ "sträng".

Låt oss visa detaljerna på formuläret.

Steg 4.Låt oss lägga till ett kommando i formuläret “ För att få data»

Låt oss ange kommandohanteraren

& OnClient-procedur GetData (kommando) GetDataOnServer (klient); EndProcedure Procedure GetDataOnServer (Client) // Skapa en WS-proxy baserat på länken och utför Get () -operationen Definition \u003d New WSDefinitions ("http://192.168.1.76/WEB_Service/ws/request.1cws?wsdl"); Proxy \u003d ny WSProxy (definition, "http://192.168.1.76/request", "DocumentsData", "DocumentsDataSoap"); ApplicationData \u003d Proxy.GetData (klient); If RequestData \u003d Odefinierad sedan CustomerReturn \u003d "Odefinierad"; Return Status \u003d "Odefinierad"; Return Number \u003d "Odefinierad"; Lämna tillbaka; EndIf; CustomerReturn \u003d ApplicationData.Customer.Name; Returstatus \u003d ApplicationData.Status; ReturnNumber \u003d ApplicationData.Numder; Slut på proceduren

1C: Enterprise-systemet kan använda webbtjänster från andra leverantörer på två sätt:

Genom statisk länkar skapade i konfigurationsträdet;

"ett plus": hög arbetshastighet

"minus": återimportera WSDL-beskrivningen med hjälp av konfiguratorn och spara den ändrade konfigurationen.

Genom dynamisk länkar skapade med hjälp av det inbäddade språket

(respektive "minus" av statisk för dynamisk - "plus")

SEKTIONIV

DEBUGGAR WEB-TJÄNSTER I 1C: FÖRETAGSSYSTEM

För en lokal webbtjänst behöver du:

Steg 1.Sätt på klienten där 1C-systemet lanseras webservicecfg.xmlmed följande innehåll

Steg 2.Att arkivera standard. vrd publicera config lägg till rad

Steg 3.Välj menyalternativet i konfiguratorn

"Felsök" → "Anslut" → " Automatisk anslutning"→" Webbtjänster på servern "

Steg 4.Klicka på knappen "OK"

För serverversionen måste du också starta 1c-servern i felsökningsläge med nyckeln / felsöka

Anteckning: Användningsområden. Fördelar. Funktioner för utveckling av webbtjänster för .NET-plattformen. Beskrivning och upptäckt av webbtjänsten

Vad är XML Web Service?

Som den informationsteknik det fanns olika sätt att skriva program: modulära programmeringhändelsestyrd programmeringkomponentinriktad programmering och design. Den logiska fortsättningen av dessa tillvägagångssätt var den serviceinriktade mjukvaruutveckling.

Användningen av serviceorienterade metoder gör att vi kan prata om återanvändning (återanvändning) på makronivå (servicenivå) i motsats till mikronivå (objektnivå). Det serviceorienterade tillvägagångssättet innebär användning av enkla och allmänt accepterade standarder, vilket gör det möjligt för en mängd olika applikationer att använda varandras funktioner. Tjänster kan skrivas med ett stort antal programmeringsspråk, på olika plattformar. Dessutom kan tjänsterna distribueras separat eller som en del av ett mjukvarupaket var som helst i världen och ger därmed tillgång till deras funktionalitet över nätverket.

Låt oss ringa service en resurs som implementerar en affärsfunktion och har följande egenskaper:

  • kan återanvändas;
  • definieras av ett eller flera explicita teknikoberoende gränssnitt;
  • svagt associerade med andra liknande resurser och kan anropas genom kommunikationsprotokoll som ger möjlighet att interagera resurser med varandra.

Ett speciellt fall för tjänsten är XML-webbtjänsten.

XML-webbtjänst är en speciell typ av webbapplikation som:

  • distribueras på en webbserver;
  • publicerar webbmetoder som kan anropas av externa klienter;
  • väntar på inkommande HTTP-förfrågningar, som är kommandon för att ringa webbmetoder;
  • kör webbmetoder och returnerar resultat.

Till skillnad från en traditionell webbapplikation har en webbtjänst inget användargränssnitt. Istället har han gjort det mjukvarugränssnitt det vill säga webbtjänsten tillhandahåller funktioner (webbmetoder) som kan anropas på distans (till exempel via Internet). Webbtjänsten är inte avsedd att betjäna slutanvändare. Dess uppgift är att tillhandahålla tjänster till andra applikationer, vare sig det är webbapplikationer, applikationer med grafiska användargränssnitt eller konsolapplikationer.

Webbtjänsten kan ge realtidsinformation om aktiekurser, check kreditkort eller rapportera väderprognosen. Webbtjänster är lika olika som konventionella applikationer.

Webbtjänster tillhör inte ett visst företag. Det är en industristandardbaserad öppna protokoll (SOAP, HTTP, etc.). Webbtjänster distribueras på en mängd olika plattformar (inklusive servrar som körs windows-hantering eller UNIX). Webbtjänster kan utvecklas med hjälp av många utvecklingsverktyg (från textredigerare till Microsoft Visual Studio-familjen).

De flesta webbtjänstmetoder åberopas av HTTP-förfrågningar som innehåller SOAP-meddelanden. SOAP är ett XML-ordförråd för att anropa fjärrprocedurer via HTTP och andra protokoll ( full beskrivning SOAP http://www.w3.org/TR/SOAP).

Plats för webbtjänster bland andra tekniker för fjärrsamtal

Det finns många protokoll och tekniker för fjärrsamtal: Microsofts distribuerade komponentobjektmodell (DCOM), Object Management Groups Common Object Request Broker Architecture (CORBA), Suns Remote Method Invocation (RMI). NET Remoting, XML Web Services.

Alla dessa komponentorienterade teknologier (DCOM, CORBA och RMI) har använts framgångsrikt i intranätapplikationer i många år. De ger en robust, skalbar arkitektur. Det finns dock två stora problem med användningen av dessa tekniker på Internet. För det första interagerar de inte bra med varandra. All teknik fungerar på objekt, men skiljer sig väsentligt i detaljer: livscykelhantering, konstruktörsstöd och graden av arvsstöd. Den andra och viktigare aspekten är att fokus på RPC-interaktioner leder till konstruktion av tätt anslutna system baserat på uttryckliga samtal till objektmetoder.

Till skillnad från dessa tekniker, XML Web Services och. NET Remoting helt implementera objektorienterat tillvägagångssätt för webbprogrammering.

XML-webbtjänst - en komponent som förser Internet-klienter med en uppsättning API-funktioner eller webbmetoder. XML går in i namnet eftersom webbtjänster och deras kunder använder det för att utbyta data. Webbtjänster baseras på öppna standarder som HTTP, XML (Extensible Markup Language), SOAP (Simple Object Access Protocol - Intenet-standarden, som beskriver hur applikationer kan kommunicera, det vill säga ringa varandras metoder, med hjälp av HTTP och andra protokoll. ). Huvuduppgiften för webbtjänster är att tillhandahålla interaktion mellan program. Många körs på UNIX-servrar och nås av Windows-klienter. Data som skickas till webbtjänster serieras till XML och skickas i SOAP-paket. Metadata om innehållet i sådana meddelanden lagras i webbtjänstens WSDL-kontrakt och XSD-scheman. Den största fördelen med detta tillvägagångssätt är läsbarheten av metadata. En utvecklare kan enkelt se hela webbtjänstbeskrivningen och till och med skapa en egen modul som analyserar SOAP-paket.

.NET fjärrkontroll tillhandahåller infrastruktur för distribuerade objekt. Det är mycket mer komplicerat än en enkel meddelandebaserad webbtjänstarkitektur. ... NET Remoting inkluderar överföring av parametrar efter referens och värde, återuppringning, aktivering av flera objekt och livscykelhanteringsprinciper. För att kunna använda dessa funktioner måste klientapplikationen vara skicklig i all teknik. Data i. NET Remoting skickas i binärt eller SOAP-format. I alla fall finns dock metadata om strukturen för den överförda informationen i den gemensamma språket runtime-miljö. Utan Common Language Runtime (CLR) kan klientapplikationen inte analysera. NET Remoting SOAP-rubriker. Dvs NET Remoting har betydligt högre krav jämfört med webbtjänster.

Utveckling av webbtjänster på .NET-plattformen

Det finns många sätt att skriva webbtjänster. De kan utvecklas manuellt eller med hjälp av SOAP-verktyg som tillhandahålls av Microsoft, IBM och andra med Microsoft... NET har två fördelar:

  • .NET Framework förenklar utvecklingsprocessen avsevärt genom att tillhandahålla ett klassbibliotek och automatisera individuella utvecklingssteg;
  • Webbtjänster skrivna med .NET Framework är hanterade applikationer. Det vill säga, i sådana applikationer finns det inga problem med minnesläckage, felaktigt initierade pekare och andra vanliga programmeringsproblem.

Varelse

Låt oss utveckla en enkel AdditionService-webbtjänst som lägger till två nummer. Det kommer bara att ha en Lägg till-metod, som tar två heltal som parameter och returnerar också ett heltal. AdditionService visar flera viktiga principer programmering av webbtjänster med hjälp av Microsoft .NET Framework.

  • Webbtjänster implementeras som ASMX-filer. ASMX är ett speciellt filnamnstillägg som är registrerat med ASP .NET (mer exakt ASP.NET HTTP-hanteraren) i ASP .NET-konfigurationsfilen Machine.config.
  • ASMX-filer börjar med @WebService-direktivet. Detta direktiv måste innehålla åtminstone klassattributet, som anger klassen som webbtjänsten består av.
  • Webbtjänstklasser kan ha valfria WebService-attribut. I detta exempel detta attribut tilldelar namnet på webbtjänsten och en beskrivning som visas på HTML-sidan när användaren anropar AdditionService.asmx i webbläsaren.
  • Webbmetoder deklareras genom att tilldela WebMethod-attributet till offentliga metoder i webbtjänstklassen. För hjälpmetodersom tillämpas internt men inte är tillgängliga för externa klienter, är detta attribut helt enkelt inte specificerat.
  • HTTP, XML och SOAP är "osynliga". .NET Framework hanterar XML-data och SOAP-meddelanden.

AdditionService.asmx<%@ WebService language="C#" Class="AddService" %> använder System med System.Web.Services-klassen AddService (public int Lägg till (int a, int b) (returnera a + b))

Trots sin lilla storlek är AdditionService.asmx en komplett webbtjänst när den installeras på en webbserver med ASP.NET. Dess metoder åberopas med SOAP, HTTP GET och HTTP POST, och det kan returnera resultat som SOAP-svar eller som enkla XML-omslag.

Med hjälp av bakgrundskod kan webbtjänstklasserna flyttas ut ur asmx-filerna till separata filer.

Webbtjänster stöder användningen av komplexa datatyper som ingångs- eller utgångsparametrar. Komplexa datatyper stöds eftersom XML tillåter att de flesta datatyper enkelt kan serieseras. När man automatiskt testar en webbtjänst genererar ASP .NET dock inte testsidor för metoder som accepterar komplexa datatyper. Detta beror på att du inte kan skicka komplexa datatyper till en webbmetod med HTTP GET och POST.

Webbtjänster låter dig ringa dina egna metoder asynkront... Ett asynkront samtal återkommer omedelbart, oavsett hur lång tid det tar för webbtjänsten att behandla samtalet. Asynkrona samtal är användbara när samtalet tar lång tid att bearbeta. Applikationen gör samtalet, fortsätter sedan att arbeta utan att vänta på resultatet av samtalet och får senare resultaten av det asynkrona samtalet. Resultatet erhålls när webbmetoden anropas igen vid en lämplig tidpunkt för applikationen, eller genom att prenumerera på ett meddelande om slutet på samtalsbehandlingen av webbtjänsten (delegatmekanismen).

Webbtjänster kan skapas med hjälp av verktyg som Microsoft Visual Studio 2005... Det finns en separat ASP .NET Web Service-projekttyp för att skapa webbtjänster. Visual Studio genererar en asmx-fil, en fil med bakgrundskod för beskrivning av webbtjänstklasser, en konfigurationsfil för webbtjänster etc. När ett projekt startas för körning sammanställs serviceklasserna och asmx-filen öppnas i ett webbläsarfönster.

Beskrivning av webbtjänster med hjälp av kontrakt

För att andra utvecklare ska kunna använda AdditionService måste de veta vilka metoder den tillhandahåller, vilka protokoll den stöder, metodsignaturer och webbtjänstadressen (URL). All denna och annan information kan beskrivas i WSDL (språk för webbtjänstbeskrivning).


Upptäckt av webbtjänster

Hur vet andra utvecklare om existensen av AdditionService?

Först med hjälp av DISCO (kort för upptäckt) - en filmekanism för att söka på lokala webbtjänster, det vill säga en mekanism för att få en lista över tillgängliga webbtjänster från DISCO-filer som finns på webbservrar. Dessutom innehåller DISCO-filer register över platsen för WSDL-kontrakt för tillgängliga tjänster. DISCO-fil är en XML-fil med poster.

Det är också möjligt att använda VSDISCO-filer, som liknar DISCO-filer, men deras innehåll är resultatet av en dynamisk sökning efter webbtjänster i de angivna katalogerna och alla kapslade underkataloger. ASP .NET mappar filnamnstillägget .vsdisco till en HTTP-hanterare, som ser i den angivna katalogen och dess underkataloger asmx och disco och returnerar ett dynamiskt genererat DISCO-dokument. Av säkerhetsskäl är dynamisk sökning inaktiverad i vissa versioner av .NET Framework, men den kan aktiveras genom att ändra posterna i filen Machine.config.

Men hur utförs sökandet efter webbtjänster i det globala nätverket? För att söka efter webbtjänster i det globala nätverket utvecklade Microsoft, IBM och Ariba UDDI (Universal Description Discovery and Integration) - en specifikation för att bygga distribuerade databaser data som gör att du kan hitta webbtjänster. UDDI stöds av hundratals företag. UDDI-webbplatser är själva webbtjänster. Vem som helst kan publicera sitt register baserat på UDDI. De flesta utvecklare använder aldrig UDDI API direkt. Istället hänvisas till UDDI-register med utvecklingsverktyg. De genererar också omslagsklasser för de upptäckta och utvalda webbtjänsterna.

Resultat

En XML-webbtjänst är en mjukvarukomponent som tillhandahåller funktionalitet som kan användas av en mängd olika system som stöder standarder som XML och HTTP. Webbtjänstklienter kan vara lokala eller avlägsna applikationer. Med webbtjänster kan du skapa strukturer som gör det lättare att integrera olika system baserat på enkla, allmänt accepterade standarder.

En webbtjänst är ett program som kan nås av andra program via Internet (http). Antag till exempel att du har en funktion som tillhandahåller HTML-formaterad text. Målet för applikationen är en webbläsare som visar resultaten och en person kan enkelt läsa den texten på sidan.

Å andra sidan, målgrupp webbtjänst är andra program eller andra webbtjänster som konsumerar den information som serveras av webbtjänsten. Vanligtvis är utdata på ett standardspråk som kan förstås av andra program. Ta exemplet ovan om webbtjänsten matar ut text till xML-formatsedan kan andra webbtjänster som kan läsa eller förstå XML använda denna utdata.

Den största fördelen med en webbtjänst är att applikationer kan skrivas på vilket språk som helst, men de kan kommunicera och kommunicera med varandra via webbtjänsten. Programvaror skrivna in olika språk programmering och körning på olika plattformar kan använda webbtjänster för att kommunicera via Internet (HTTP). Denna interoperabilitet (till exempel mellan Java och Python, eller Windows- och Linux-applikationer) innebär användning av öppna standarder (XML, SOAP, HTTP).

  • SOAP (Simple Object Access Protocol)
  • UDDI (Universal Description, Discovery and Integration)
  • WSDL (Webbtjänstens beskrivningsspråk)

Hur många olika typer av webbtjänster finns det?

Primärt finns det två typer av webbtjänster, Simple Object Access Protocol (SOAP) och Representative State Transfer (REST).

  • SOAP-webbtjänsten accepterar en XML-begäran och genererar XML-utdata.
  • REST-webbtjänsten är mer allmän och kan acceptera XML såväl som JSON som begäran och genererar utdata till XML såväl som JSON eller till och med HTML

Denna fråga kan studeras mer detaljerat om vår.

Idag används WEB-tjänster nästan överallt - de ger oss information om flyg med flygplan och tåg, växelkurser och väder. Det är inte förvånande att 1C också har förmågan att skapa sina egna WEB-tjänster, så att den kan fungera som både leverantör och konsument. Denna mekanism är inbyggd i plattformen 1C: Enterprise 8.3 och utvecklare kan till och med lägga till sina egna WEB-tjänster i standardkonfigurationen. Deras arkitektur bygger på en uppsättning tjänster som möjliggör informationsutbyte med annan programvara.

Skapa en 1C webbtjänst

En av de största fördelarna med 1C WEB-tjänster är frånvaron av behovet av att ge direkt tillgång till informationssäkerhetsdata. En korrekt konfigurerad 1C-webbtjänst gör det möjligt för andra applikationer att använda funktioner utifrån. I sådana fall bör själva funktionen bestämma rätten att använda informationen enligt de angivna parametrarna enligt de regler som utvecklaren föreskriver.

Hur skapar jag en webbtjänst i 1C?

För att en viss funktion i 1C-systemet ska bli tillgänglig för extern programvara måste följande sekvens av åtgärder utföras:

  1. Gå till konfigurationen och lägg till WEB-serviceobjektet i en viss gren av trädet;
  2. Beskriv alla funktioner som vår funktionalitet kan utföra. Funktionsbeskrivning görs i modulen på det språk som är inbyggt i 1C;
  3. Lägg till en beskrivning av parametrarna för webbtjänstfunktionerna. Observera att datatyperna beskrivs med hänsyn till de befintliga typerna av XDTO-mekanismen som visades i plattformsversion 8.1;
  4. Publicera den skapade WEB-tjänsten på servern. Mekanismen inbyggd i 1C-plattformen stöder följande standarder:
  • SSL / TLS
  • WS-I BP

Ett exempel på att skapa en enkel WEB-tjänst

För att tydligast visa hur WEB-tjänster fungerar, låt oss skapa ett exempel - en funktion som bestämmer längden på den inmatade strängen. programvara skickar en sträng som en frågeparameter och funktionen som beskrivs i 1C returnerar antalet tecken. När du skapar måste du komma ihåg att publiceringen av denna mekanism gör det möjligt för olika programvaror att komma åt den. Eftersom inte alla programvaror kan uppfatta det kyrilliska alfabetet, kommer vi att namnge konfigurationsobjekten med latinska tecken.

Öppna konfiguratorn, hitta grenen "WEB-services" i trädet och lägg till ny tjänst "Wa_LengthString". Det är också nödvändigt att lägga till en ny operation på fliken Operations. Låt oss kalla det "CalcLengthString", ange typen av returvärdet - int eller heltal i egenskaperna och skapa parametern "InputString" inuti den. Vi lämnar värdetypen som sträng.


Nu måste du registrera åtgärden för funktionen CalcLengthString i WEB-servicemodulen. För att göra detta, öppna egenskaperna för den skapade funktionen och klicka på förstoringsglasknappen till höger bredvid inmatningsfältet "Procedurnamn". 1C skapar automatiskt en funktion i modulen för vår WEB-tjänst och öppnar den för att vi ska kunna beskriva CalcLengthString-åtgärden. Låt oss använda detta och skriva funktionens funktion - bestämma längden på inmatningssträngen.


I själva verket kompletterar detta skapandet av den enklaste WEB-tjänsten. Nu måste du "lägga ut" den här tjänsten i allmän tillgångså att tredjepartsprogramvara eller andra 1C-system kan använda denna funktion.

För att vi ska kunna publicera den skapade webbtjänsten med dess funktionalitet måste vi ha tillgång till webbplatsen. Innan vi börjar publicera tjänsten måste vi kontrollera filnamnet i egenskaperna för den nyligen skapade wa_LengthString-modulen. Det ska vara tydligt, enkelt och ha förlängningen "1cws".


Nu är det dags att publicera WEB-tjänsten som vi skapade på servern. Denna funktion dök upp i version 8.3 av plattformen och många företag har redan förstått fördelarna med denna funktion. För att börja publicera måste du öppna formuläret "Administration / publicering på en webbserver ..." i konfiguratorn.


I fönstret som öppnas behöver vi webbkonfiguration 1C-tjänster och fylla i vissa fält:

  • Namn. Indikerar en mapp på en webbserver som lagrar en beskrivning av vår webbtjänst. Var försiktig med skiftläge, eftersom servrar ibland skiljer mellan stora och små bokstäver.
  • Webbserver. Du måste välja en server bland de som är installerade på datorn.
  • Katalog. Du måste välja sökvägen till mappen där webbserverns data om anslutningsinställningar lagras. Endast latinska bokstäver används;
  • Två tecken av typen "Boolean". Den första är användbar för oss om vi behöver konfigurera åtkomst via webbklienten till konfigurationen. För att publicera 1C-tjänsten måste du sätta det andra märket.

Det återstår bara att kontrollera att den önskade WEB-tjänsten har en kryssruta i den första kolumnen och klicka på "Publicera".


Därför att denna mekanism är fortfarande ganska nytt, då kan du stöta på ett fel i formuläret "Ett fel inträffade när du utför en filåtgärd ...". I det här fallet behöver du bara upprepa knappen "Publicera". I de flesta fall hjälper detta, och du får ett meddelande om att webbtjänsten har publicerats.

Ru // ws / .1cws? Wsdl

Som svar på en sådan begäran om en adress ska webbläsaren visa XML-filens struktur. Om du ser en tom sida, ett fel eller obegripliga tecken (kodningsproblem) måste du kontrollera alla åtgärder igen. Det kommer inte heller vara överflödigt att se till att servern är rätt konfigurerad och att du har tillgång till den. Efter framgångsrik publicering kommer 1C WEB-tjänst att kunna använda tredjepartsapplikationer.

Baserat på webbtjänstarkitekturen skapar vi följande två komponenter som en del av implementeringen av webbtjänsten:

Tjänsteleverantör eller utgivare

Detta är en webbtjänstleverantör. En tjänsteleverantör implementerar denna tjänst och gör den tillgänglig på Internet eller intranät. Vi kommer att skriva och publicera en enkel webbtjänst med .NET SDK.

Tjänsteleverantör eller konsument

Alla konsumenter av en webbtjänst. Begäraren använder en befintlig webbtjänst genom att öppna nätverksanslutning och skicka en XML-begäran. Vi kommer också att skriva två förfrågningar om webbtjänster: en webbkonsument (ASP.NET-applikation) och en annan konsument baserad på Windows-applikationer.

Nedan följer vårt första exempel på en webbtjänst som fungerar som en tjänsteleverantör och ger två metoder (lägg till och SayHello) som webbtjänster som ska användas av applikationer. Detta är standardmallen för en webbtjänst. .Asmx-tillägget används i NET-tjänster. Observera att en metod som exponeras som en webbtjänst har ett WebMethod-attribut. Spara den här filen som FirstService.asmx i den virtuella IIS-katalogen (som beskrivs när du konfigurerar IIS, till exempel c: \\ MyWebSerces).

FirstService.asmx

<%@ WebService language = "C" class = "FirstService" %> använder System; använder System.Web.Services; med System.Xml.Serialization; public class FirstService: WebService (public int Lägg till (int a, int b) (returnera a + b;) public String SayHello () (return "Hello World";))

För att testa en webbtjänst måste den publiceras. Webbtjänsten kan publiceras antingen på intranätet eller på Internet. Vi kommer att publicera denna webbtjänst till IIS som körs på en lokal maskin. Låt oss börja med att ställa in IIS.

  • Öppna "Start" → "Inställningar" → "Kontrollpanelen" → "Administrationsverktyg" → "Internet Service Manager".
  • Expandera och klicka högerklicka musens standardwebbplats; välj "Ny" → "Virtuell katalog". Guiden Ny virtuell katalog öppnas. Klicka på Nästa.
  • Skärmen "Virtual Directory" visas. Ange namnet på den virtuella katalogen. Till exempel MyWebServices. och klicka på Nästa.
  • Skärmen "Webbplatsens innehållskatalog" visas.
  • Ange katalognamnet för den virtuella katalogen. Till exempel c: \\ MyWebServices Klicka på Nästa.
  • Skärmen "Access Authorization" visas. Ändra inställningarna efter dina behov. Låt oss behålla standardinställningarna för den här övningen.
  • Klicka på "Nästa". Det slutför IIS-installationen.
  • Klicka på Slutför för att slutföra installationen.

För att kontrollera om IIS är korrekt konfigurerad, kopiera HTML-filen (t.ex. x.html) till den virtuella katalogen (C: \\ MyWebServices) som skapats ovan. Nu öppen Internet Explorer och skriv http: //localhost/MyWebServices/x.html. Den ska öppna x.html-filen.

Notera ... Om det inte fungerar, försök ersätta localhost med enhetens IP-adress. Om det fortfarande inte fungerar, kontrollera om IIS körs. du kan behöva konfigurera om IIS och den virtuella katalogen.

För att testa denna webbtjänst, kopiera FirstService.asmx till den virtuella IIS-katalogen som skapats ovan (C: \\ MyWebServices). Öppna webbtjänsten i Internet Explorer (http: //localhost/MyWebServices/FirstService.asmx). Det bör öppna webbtjänstsidan. Sidan ska länka till två metoder som vi tillhandahåller som webbtjänster i vår applikation. Grattis! Du har skrivit din första webbtjänst!

Testar webbtjänsten

Som vi just såg är det enkelt att skriva webbtjänster i .NET Framework. Att skriva webbtjänster är också enkelt i .NET; det är dock lite mer aktivt. Som tidigare nämnts kommer vi att skriva två typer av servicekonsumenter: en webbplats och en annan användare baserat på Windows-applikationer. Låt oss skriva vår första konsument för webbtjänster.

webbservice

Skriv en webbkonsument som nedan. Kalla det WebApp.aspx. Observera att detta är en ASP.NET-applikation. Spara detta i webbtjänstens virtuella katalog (c: \\ MyWebServices \\ WebApp.axpx). Den här appen har två textrutor som används för att få nummer från användaren att lägga till. Den har en enda Run-knapp som, när du klickar på den, tar emot Lägg till och SayHello webbtjänster.

WebApp.axpx

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

Första numret som ska läggas till: 4< /asp:TextBox>

Andra nummer som ska läggas till: 5

Webbtjänstresultat -

Hej världstjänst : Märka< /asp:Label>

Lägg till tjänst : & Märka

Efter att ha skapat konsumenten måste vi skapa en proxy för att konsumera webbtjänsten. Detta arbete utförs automatiskt av Visual Studio .NET för oss när vi hänvisar till den tillagda webbtjänsten. Här är stegen att följa:

  • Skapa en proxy för att använda webbtjänsten. Proxyn skapas med hjälp av WSDL-verktyget som medföljer .NET SDK. Detta verktyg extraherar information från en webbtjänst och skapar en proxyserver. Proxyen är endast giltig för en viss webbtjänst. Om du behöver använda andra webbtjänster måste du också skapa en proxy för den tjänsten. Visual Studio .NET skapar automatiskt en proxy när en webbtjänstreferens läggs till. Skapa en proxy för webbtjänsten med hjälp av WSDL-verktyget som medföljer .NET SDK. Det skapar en FirstSevice.cs-fil i den aktuella katalogen. Vi måste sammanställa den för att skapa FirstService.dll (proxy) för webbtjänsten.
  • c:\u003e WSDL http: //localhost/MyWebServices/FirstService.asmx? WSDL
  • c:\u003e csc / t: bibliotek FirstService.cs
  • Placera den sammanställda proxyn i bin-katalogen i den virtuella webbkatalogen (c: \\ MyWebServices \\ bin). Internet Information Services (IIS) söker i den här katalogen efter en proxyserver.
  • Skapa en tjänstekonsument precis som vi gör. Observera att webbtjänstens proxyobjekt skapas från konsumenten. Denna proxy tar hand om interaktionen med tjänsten.
  • Ange konsument-URL i IE för att kontrollera den (till exempel http: //localhost/MyWebServices/WebApp.aspx).

Windows applikationsbaserad webbtjänstkonsument

Att skriva en webbtjänstapplikation baserat på Windows-applikationer är som att skriva alla andra Windows-applikationer. Du behöver bara skapa en proxy (vilket vi redan har gjort) och referera till denna proxy när du kompilerar applikationen. Nedan följer vår Windows-applikation som använder webbtjänsten. Denna applikation skapar ett webbtjänstobjekt (proxy, naturligtvis) och kallar SayHello och Add-metoderna på det.

WinApp.cs

använder System; använder System.IO; namnområde SvcConsumer (klass SvcEater (public static void Main (String args)) (FirstService mySvc \u003d new FirstService (); Console.WriteLine ("Calling Hello World Service:" + mySvc.SayHello ()); Console.WriteLine ("Calling Add ( 2, 3) Tjänst: "+ mySvc.Add (2, 3) .ToString ());)))

Kompilera den med c: \\\u003e csc /r:FirstService.dll WinApp.cs. Det skapar en WinApp.exe-fil. Kör den för att testa din app och webbtjänst.

Nu är frågan, hur kan du vara säker på att den här applikationen faktiskt ringer webbtjänsten?

Det är lätt att kontrollera. Stoppa din webbserver så att webbtjänsten inte kan kontaktas. Starta nu WinApp-applikationen. Det kommer att kasta ett undantag vid körning. Starta nu webbservern igen. Det borde fungera.

Dela detta