Kako razmestiti spletno storitev na internetu. Spletne storitve. Zagotavljanje funkcionalnosti prek spletnih storitev

Naslov teme je res vprašanje, ker... Sam ne vem, kaj je to in prvič bom poskušal delati z njim v okviru tega članka. Edino, kar lahko zagotovim, je, da bo spodaj predstavljena koda delovala, vendar bodo moje fraze le domneve in ugibanja o tem, kako sam razumem vse to. Torej, gremo ...

Uvod

Začeti moramo s tem, zakaj je nastal koncept spletnih storitev. Ko se je ta koncept pojavil v svetu, so že obstajale tehnologije, ki so aplikacijam omogočale interakcijo na daljavo, kjer je lahko en program poklical neko metodo v drugem programu, ki se je lahko zagnala na računalniku, ki se nahaja v drugem mestu ali celo državi. Vse to se skrajšano imenuje RPC (Remote Procedure Calling). Primeri vključujejo tehnologije CORBA in za Javo - RMI (Remote Method Invoking). In zdi se, da je v njih vse dobro, še posebej v CORBI, ker ... Z njim lahko delate v katerem koli programskem jeziku, vendar nekaj še vedno manjka. Mislim, da je slabost CORBE ta, da deluje prek nekaterih svojih omrežni protokoli namesto preprostega HTTP-ja, ki bo prišel skozi vsak požarni zid. Ideja spletne storitve je bila ustvariti RPC, ki bi bil vstavljen v pakete HTTP. Tako se je začel razvoj standarda. Kateri so osnovni koncepti tega standarda:
  1. MILO. Preden pokličete oddaljeni postopek, morate ta klic opisati datoteko XML e format SOAP. SOAP je preprosto ena od mnogih oznak XML, ki se uporabljajo v spletnih storitvah. Vse, kar želimo nekam poslati prek HTTP, se najprej pretvori v opis XML SOAP, nato pa se stlači v paket HTTP in pošlje drugemu računalniku v omrežju prek TCP/IP.
  2. WSDL. Obstaja spletna storitev, tj. program, katerega metode lahko kličete na daljavo. Toda standard zahteva, da je temu programu priložen opis, ki pravi, da "da, prav imate - to je res spletna storitev in iz nje lahko pokličete takšne in drugačne metode." Ta opis je predstavljen z drugo datoteko XML, ki ima drugačen format, in sicer WSDL. Tisti. WSDL je le datoteka XML, ki opisuje spletno storitev in nič več.
Zakaj tako na kratko sprašujete? Ne moreš biti bolj natančen? Verjetno je mogoče, vendar se boste za to morali obrniti na knjige, kot je T. Mashnin, "Java Web Services." Tam je na prvih 200 straneh natančen opis vsako oznako standardov SOAP in WSDL. Je vredno narediti? Po moje ne, ker... vse to se samodejno ustvari v Javi, zapisati pa morate le vsebino metod, ki naj bi jih klicali na daljavo. Tako se je v Javi pojavil API, kot je JAX-RPC. Če kdo ne ve, ko rečejo, da ima Java tak in tak API, to pomeni, da obstaja paket z nizom razredov, ki enkapsulirajo zadevno tehnologijo. JAX-RPC se je sčasoma razvijal od različice do različice in na koncu postal JAX-WS. WS očitno pomeni WebService in morda mislite, da je to preprosto preimenovanje RPC kot priljubljene modne besede v teh dneh. To ni res, saj Zdaj so se spletne storitve oddaljile od prvotne ideje in vam omogočajo ne samo klicanje oddaljenih metod, temveč tudi preprosto pošiljanje sporočil dokumentov v formatu SOAP. Ne vem, zakaj je to še potrebno; malo verjetno je, da bo odgovor tukaj "za vsak slučaj." Sam bi se rad učil od bolj izkušenih tovarišev. In nazadnje, takrat se je pojavil JAX-RS za tako imenovane spletne storitve RESTful, vendar je to tema posebnega članka. Uvod lahko tukaj končamo, saj... Nato se bomo naučili delati z JAX-WS.

Splošni pristop

V spletnih storitvah sta vedno odjemalec in strežnik. Strežnik je naša spletna storitev in se včasih imenuje končna točka (na primer končna točka, kamor dosežejo sporočila SOAP od odjemalca). Narediti moramo naslednje:
  1. Opišite vmesnik naše spletne storitve
  2. Izvedite ta vmesnik
  3. Zaženite našo spletno storitev
  4. Napišite stranko in na daljavo pokličite želeno metodo spletne storitve
Spletno storitev je mogoče zagnati različne poti: bodisi opišite razred z glavno metodo in zaženite spletno storitev neposredno kot strežnik ali pa jo namestite na strežnik, kot je Tomcat ali kateri koli drug. V drugem primeru sami ne zaženemo novega strežnika in ne odpremo drugih vrat na računalniku, ampak vsebniku strežniškega programčka Tomcat preprosto povemo, da »smo tukaj napisali razrede spletnih storitev, prosimo, objavite jih, da lahko vsi, ki stopijo v stik z vami, uporabite našo spletno storitev." Ne glede na način zagona spletne storitve bomo imeli istega odjemalca.

Strežnik

Zaženimo IDEA in ustvarjajmo nov projekt Ustvari nov projekt. Navedemo ime HelloWebService in pritisnite gumb Naslednji, nato gumb Končaj. V mapi src ustvarimo paket ru.javarush.ws. V tem paketu bomo ustvarili vmesnik HelloWebService: paket ru. javarush. ws; // to so opombe, tj. način za označevanje naših razredov in metod, // v povezavi s tehnologijo spletnih storitev uvozi javax. jws. WebMethod; uvozi javax. jws. spletna storitev; uvozi javax. jws. milo. SOAPBinding; // pravimo, da bo naš vmesnik deloval kot spletna storitev@WebService // pravimo, da bo spletna storitev uporabljena za klicanje metod@SOAPBinding (style = SOAPBinding. Style. RPC) javni vmesnik HelloWebService ( // pravimo, da je to metodo mogoče poklicati na daljavo@WebMethod public String getHelloString(Ime niza) ; ) V tej kodi sta razreda WebService in WebMethod tako imenovani opombi in ne delata ničesar, razen da naš vmesnik in njegovo metodo označita kot spletno storitev. Enako velja za razred SOAPBinding. Edina razlika je v tem, da je SOAPBinding opomba s parametri. V tem primeru se parameter sloga uporablja z vrednostjo, ki označuje, da spletna storitev ne bo delovala prek sporočil dokumentov, temveč kot klasičen RPC, tj. za klic metode. Implementirajmo našo logiko vmesnika in ustvarimo razred HelloWebServiceImpl v našem paketu. Mimogrede, ugotavljam, da je zaključek razreda z Impl konvencija v Javi, po kateri je tako označena izvedba vmesnikov (Impl - iz besede implementacija, tj. Izvedba). To ni pogoj in razred lahko poimenujete, kakor želite, vendar to zahtevajo dobre manire: paket ru. javarush. ws; // enaka opomba kot pri opisu vmesnika, uvozi javax. jws. spletna storitev; // ampak tukaj se uporablja s parametrom endpointInterface, // nakazuje polno ime razred vmesnika naše spletne storitve@WebService(endpointInterface= "ru.javarush.ws.HelloWebService") javni razred HelloWebServiceImpl izvaja HelloWebService ( @Override javni niz getHelloString (ime niza) ( // samo vrni pozdrav return "Pozdravljeni, " + ime + "!" ; ) ) Zaženimo našo spletno storitev kot neodvisen strežnik, tj. brez sodelovanja Tomcata in aplikacijskih strežnikov (to je tema za ločeno razpravo). Če želite to narediti, v strukturi projekta v mapi src Ustvarimo paket ru.javarush.endpoint in v njem ustvarimo razred HelloWebServicePublisher z glavno metodo: package ru. javarush. končna točka; // razred za izvajanje spletnega strežnika s spletnimi storitvami uvozi javax. xml. ws. Končna točka; // razred naše spletne storitve uvoz ru. javarush. ws. HelloWebServiceImpl; javni razred HelloWebServicePublisher ( javni statični void main (String... args) ( // zaženi spletni strežnik na vratih 1986 // in na naslov, naveden v prvem argumentu, // zagon spletne storitve, posredovane v drugem argumentu Končna točka. objavi( "http://localhost:1986/wss/zdravo", novo HelloWebServiceImpl () ); ) ) Zdaj pa poženimo ta razred s klikom Shift+F10. V konzoli se ne bo prikazalo nič, vendar strežnik deluje. To lahko preverite tako, da v brskalnik vnesete vrstico http://localhost:1986/wss/hello?wsdl. Stran, ki se odpre, na eni strani dokazuje, da imamo na našem računalniku (localhost) na vratih 1986 (http://) delujoč spletni strežnik, na drugi strani pa prikazuje WSDL opis naše spletne storitve. Če ustavite aplikacijo, bo opis postal nedostopen, prav tako spletna storitev sama, zato tega ne bomo storili, ampak prešli na pisanje odjemalca.

Stranka

V mapi projekta src Ustvarimo paket ru.javarush.client in v njem razred HelloWebServiceClient z glavno metodo: package ru. javarush. stranka; // potrebno za pridobitev opisa wsdl in prek njega // dosežete samo spletno storitev uvozi java. mreža. URL; // do te izjeme pride pri delu s predmetom URL uvozi java. mreža. MalformedURLException; // razredi za razčlenitev xml z opisom wsdl // in doseže servisno oznako v njem uvozi javax. xml. imenski prostor. QName; uvozi javax. xml. ws. storitev; // vmesnik naše spletne storitve (potrebujemo več) uvoz ru. javarush. ws. HelloWebService; public class HelloWebServiceClient ( public static void main (String args) vrže MalformedURLException ( // ustvarite povezavo do opisa wsdl URL url= nov URL ( "http://localhost:1986/wss/hello?wsdl") ; // Ogledamo si parametre naslednjega konstruktorja v prvi oznaki opisa WSDL - definicije // poglejte 1. argument v atributu targetNamespace // poglejte 2. argument v atributu imena QName qname = novo QName ("http://ws.site/" , "HelloWebServiceImplService" ) ; // Zdaj lahko dosežemo servisno oznako v opisu wsdl, Servisni servis= Storitev. ustvari (url, qname) ; // in nato do oznake vrat, ki je v njej ugnezdena, tako da // pridobite povezavo do predmeta spletne storitve, oddaljenega od nas HelloWebService hello = storitev. getPort(HelloWebService.class); // Hura! Zdaj lahko pokličete oddaljeno metodo Sistem. ven. println (zdravo. getHelloString ("JavaRush")); ) ) Na kodo v seznamu sem dal največ komentarjev. Nimam kaj dodati, zato poženimo (Shift+F10). V konzoli bi morali videti besedilo: Pozdravljeni, JavaRush! Če ga niste videli, ste verjetno pozabili zagnati spletno storitev.

Zaključek

Ta tema je ponudila kratek izlet v spletne storitve. Še enkrat bom rekel, da je večina tega, kar sem napisal, moja domneva o tem, kako deluje, zato mi ne smete preveč zaupati. Hvaležen bi bil, če bi me poznavalci popravili, ker se bom potem kaj naučil. UPD.

Spletne storitve v 1C

Ta članek bo obravnaval integracijo 1C z obstoječimi spletnimi storitvami in uporabo samega 1C kot spletne storitve.

V tem primeru bomo pod spletnimi storitvami razumeli sisteme, ki delujejo na internetu in zagotavljajo interakcijo z njimi ne samo preko SOAP (ki je ravno spletna storitev), ampak tudi na druge načine, vključno z običajnimi HTTP(S) zahtevami.


Tveganja pri uporabi spletnih storitev 1C

Platforma 1C81 je uvedla implementacijo spletnih storitev.

Toda njihova uporaba je polna tveganj:

  1. 1C8 ne deluje dobro prek HTTPS, diagnostičnih orodij ni, zato je včasih nemogoče razumeti, zakaj storitev, tudi če obstaja certifikat, noče delovati prek HTTPS. Rešitev je implementacija spletnih storitev prek CURL ali dvig tunela HTTPS.
  2. 1C8 se drži svojih pravil za preverjanje shem WSDL. Včasih se iz nerazložljivih razlogov shema WSDL ne želi naložiti v povezavo WS. Razlog lahko ugotovite samo na partnerskem forumu pri enem strokovnjaku. Diagnostičnih orodij za shemo WSDL ni, naveden ni niti razlog ali vrstica, pri kateri je nalaganje sheme prekinjeno.

Pravila za gradnjo prodajnih storitev

Stranki se prodajni dokument (račun) izda le, če je storitev uspešna. V nasprotnem primeru je možna situacija, ko stranka prejme ček in je prepričana, da je prejela storitev, v resnici pa je ni.

Uporaba zunanjih storitev SOAP

Spletne storitve SOAP za predstavitev podatkov uporabljajo sheme WSDL in objekte XDTO.

Nalaganje WSDL

Če želite uporabljati zunanjo storitev, morate prenesti njeno shemo WSDL.

Preverjanje veljavnosti sheme WSDL

Včasih se shema WSDL ne naloži v 1C. Veljavnost (pravilnost) sheme lahko preverite s katerim koli validatorjem sheme WSDL, na primer http://www.validwsdl.com/.

Shemo morate naložiti na kakšno http stran (lahko uporabite ftp) in navesti naslov datoteke, v kateri je shema naložena:

Značilnosti nalaganja WSDL v 1C

Posebnost nalaganja WSDL v 1C je, da veljavnih shem ni mogoče naložiti. Ni vgrajenega validatorja, zato morate iskati napako z destruktivno analizo, ki zaporedno zmanjšuje število elementov v vezju. Izbrišete lahko na primer opis spletne storitve.

Obdelava za testiranje delujoče zunanje spletne storitve

Če želite preizkusiti delujočo zunanjo spletno storitev, uporabite obdelavo »Test ArbitraryWebService.epf« iz paketa za ta članek.

Testiranje je mogoče uporabiti na primeru storitve Morpher, ki zavrača imena (naslov storitve http://www.morpher.ru/WebServices/Morpher.asmx?WSDL):

Na ta način lahko preizkusite katero koli storitev, ki ima preproste vstopne točke s parametri enostavne vrste: številka, datum, niz.

Med obdelavo lahko določite tudi prijavo in geslo, ki sta potrebna za avtorizacijo dostopa do spletne storitve.

Standardna orodja za storitve odpravljanja napak

Za odpravljanje napak lahko uporabite program SoapUI, ki lahko spletni storitvi pošlje poljubno zahtevo in od nje prejme odgovor.

SOAP in HTTPS

Na žalost se SOAP v 1C obnaša precej muhasto pri delu prek protokola HTTPS, praksa pa kaže, da je povezave HTTPS nemogoče doseči, čeprav je na platformi navedena možnost. Pomanjkanje diagnostičnih orodij in orodij za odpravljanje napak, s katerimi bi ugotovili razloge, zakaj povezava ni vzpostavljena, terja svoj davek. Zato je priročno uporabljati SOAP prek CURL.

Vgrajeni mehanizem za uporabo HTTPS pomeni, da morajo biti vsi certifikati objavljeni v datoteka v skupni rabi pem v programskem imeniku 1C.

Uporaba 1C kot storitve

Pravila za razvoj storitve, ki temelji na 1C

Operacija Pozdravljeni

Pravilo dobre forme je ustvariti operacijo v storitvi, ki obvešča, da je storitev na voljo. To olajša življenje integratorjem, lažje bodo preverili, ali je komunikacija s storitvijo vzpostavljena.

Uporabite lahko na primer operacijo Hello brez parametrov, ki preprosto vrne logično vrednost True.

Objava spletne storitve

Postopek je dobro opisan v dokumentaciji: file:///C:/Program%20Files/1cv81/AddDoc/RU/V8AddDoc81.htm#_Toc176167634:

Naloga objave spletnih storitev se zmanjša na namestitev *.1cws konfiguracijskih datotek spletnih storitev v ustrezen imenik spletnega strežnika z ustreznimi nastavitvami za spletni strežnik. Če želite objaviti spletne storitve, morate izvesti menijski ukaz »Administracija | Objavljanje spletnih storitev."

Kot rezultat izvedbe tega ukaza se odpre okno za objavo spletnih storitev.

Okno za objavo spletnih storitev vsebuje pot do spletnega strežnika in dva seznama:

  • “Spletne storitve” - seznam konfiguracijskih spletnih storitev;
  • “Publikacija” - seznam spletnih storitev, objavljenih na določenem spletnem strežniku.

Z gumbom "Povezava ..." morate določiti spletni strežnik, na katerem želite objaviti spletne storitve.

Okno za izbiro poti spletnega strežnika vam omogoča, da določite pot na dva načina:

  • na zavihku "Datoteke" - ta način se uporablja, ko se objava izvaja na istem računalniku, na katerem je nameščen spletni strežnik. Pot je lokalni imenik, ki ustreza internetni strani, s katere bo objavljen objavljeni spletni strežnik;
  • na zavihku »Stran FTP« - ta metoda se uporablja, ko morate objaviti spletno storitev na oddaljenem računalniku. Za objavo morate določiti parametre povezave FTP z oddaljeni računalnik in imenik, v katerem bo objavljena spletna storitev.

Izbrano spletno storitev objavimo z gumbom »Objavi«.

Za preklic objave spletne storitve uporabite gumb »Izbriši«.

Objavite lahko v lokalnem imeniku ali prek FTP. Objavite lahko tudi na oddaljenem strežniku prek poti UNC, če je oddaljeni strežnik del lokalnega omrežja.

Po objavi je spletna storitev na voljo na naslovu “http://localhost/test.1cws” ali “http://xxx.ru/test.1cws”, kjer je xxx.ru naslov oddaljenega strežnika in localhost je tipičen naslov lokalnega strežnika.

Pooblastilo za spletno storitev 1C

Za dostop do storitve morate opraviti avtentikacijo.

Težave z avtorizacijo so dobro obravnavane tukaj: http://www.forum.mista.ru/topic.php?id=341168 in v datoteki dokumentacije: ///c:/Program%20Files/1cv81/AddDoc/RU/V8AddDoc81. htm

Običajno se spletna storitev izvaja pod enim določenim uporabnikom (običajno posebej ustvarjenim). Uporabnika 1C lahko z uporabo avtentikacije Windows "priložite" uporabniku Windows IUSR_ (onemogočite avtorizacijo 1C za uporabnika). Lahko pa počistite seznam uporabnikov 1C, potem avtorizacija ni potrebna.

Če je potrebnih več uporabnikov, lahko ustvarite več prijav za spletni strežnik in jih povežete z vsakim od njih Uporabnik sistema Windows in v skladu s tem registrirajte dostop do uporabnikov sistema Windows v 1C.

V lastnostih Uporabnik in Geslo objekta WSProxy se ne uporablja prijava 1C, temveč prijava uporabnika spletnega strežnika.

Testiranje spletne storitve 1C

Če želite preizkusiti 1C kot spletno storitev, uporabite obdelavo »Test ArbitraryWebService.epf«, kot je opisano v razdelku »Testiranje delujoče zunanje spletne storitve«.

Datoteka 1cws je WSDL opis spletne storitve 1C.

Uporaba storitev v maloprodaji

Običajno se maloprodajne storitve uporabljajo za zagotavljanje različnih storitev prebivalstvu - sprejemanje plačil, odplačilo posojil, nakazila denarja, nakup programsko opremo in tako naprej.

V tem primeru se v 1C za opravljeno storitev ustvari potrdilo, v katerem so shranjeni parametri transakcije. Nato se ta ček natisne stranki z podrobne informacije o opravljeni storitvi. Možno je natisniti predček, tako da stranka s podpisom potrdi vnesene podatke z njegovih besed.

Storitev je mogoče na različne načine vključiti v maloprodajni program, napisan v jeziku 1C (UT, Retail in drugi):

  1. Obdelava ali koda je lahko napisana v jeziku 1C, ki opravlja vse delo s storitvijo.
  2. Uporabite lahko program, ki deluje s storitvijo, v 1C pa prenaša samo informacije za preverjanje luknjanja.

Organizacija storitvenih podatkov v 1C

Če želite podatke o transakciji shraniti v potrdilo, morate ustvariti dodatno tabelarnega dela“Kompleksna prodaja” s podrobnostmi:

  • Nomenklatura - povezava do nomenklature čeka.
  • Parameter - povezava do referenčne knjige "Kompleksna prodaja: parametri".
  • Vrednost - vrednost parametra, kompleksna vrsta. Predstavitev niza mora biti precej dolga (1024 znakov), da sprejme kontrolno besedilo.

Imenik "Complex Sales: Parameters" vsebuje seznam parametrov transakcije.

Bolj donosno je uporabljati tabelarični del kot nabor podrobnosti, ker transakcija jih ima lahko veliko in pri drugih preverjanjih, ki niso povezana s storitvijo, ti podatki ne bodo uporabljeni in bodo zavzemali dodatni prostor. Poleg tega je takšna rešitev univerzalna za vsako storitev in ne zahteva prestrukturiranja podatkov po uvedbi nove storitve.

Prodajalec dobi ločen zaznamek (ali natisnjen obrazec, da ne spremeni konfiguracije), v katerem si lahko ogleda tablico s podrobnostmi transakcije za ček.

Uporaba obdelave v jeziku 1C

Oglejmo si primer pogojne storitve Paym za konfiguracijo »Maloprodaja«.

  1. Ustvarimo vnaprej določen element imenika nomenklature "Paym" v 1C. V načinu 1C:Enterprise mu je treba po posodobitvi konfiguracije dodeliti vrsto izdelka »Storitev«.
  2. V postopku “Dodaj postavko v tabelo. del« modula obrazca »Registracija prodaje« imenujemo obdelava dela s storitvijo, napisana v jeziku 1C. Če je plačilo uspešno, ček evidentiramo in objavimo:
If (Nomenclature = Directories.Nomenclature.Paym) IN (Type of Transfer Transaction. Types of Operations Check KKM. Return) Then Payment Processing = Give External Processing ("Paym"); PaymentForm = PaymentProcessing.GetForm(); Rezultat = PaymentForm.OpenModal(); If Result = Undefined Then Return; endIf; ThisObject.Write(DocumentWriteMode.Post); endIf;
  1. Obdelava naj natisne predračun (po potrebi), izpolni tabelarični del kompleksne prodaje in pripravi besedilo za tiskanje čeka v preddefiniranem atributu “PaymCheckText”.
  2. V postopku “Pošlji in natisni potrdilo” modula Prejem zamenjamo naziv izdelka s tistim, ki je shranjen v podrobnostih za potrdilo. Besedilo se zamenja samo za prodajo, za vračila pa se natisne le ime storitve, kot običajno.
OtherwiseIf Type of Transaction Transaction.Types of OperationsCheck KKM.Return And Selection.NomenclatureLink = Directories.Nomenclature.Paym Then //Osipov PaymMaster ComplexSales Line = ComplexSales.Find(Directories.ComplexSalesParameters.PaymReceiptText, "Properties"); Če je kompleksna prodajna linija nedefinirana, potem Product.Name = skrajšano LP(kompleksna prodajna linija. vrednost); endIf;

Ločeno vprašanje je, kako zagotoviti dokončanje transakcije. Tisti. če je transakcija potekala v storitvi, kako zagotoviti, da se ne izgubi v 1C. Najbolj optimalna pot je uskladitev registrov. Toda to je tema za ločeno obravnavo.

Uporaba programov, ki se integrirajo z 1C

XDTO

XDTO se pogosto uporablja v spletnih storitvah. Tukaj so najpomembnejši nasveti in recepti za uporabo XDTO v 1C.

XDTO v platformi 1C

Paketi XDTO, opisani v veji »XDTO objects« konfiguracije, so na voljo za ustvarjanje tipov in objektov v globalni tovarni XDTO Factory. To ni takoj očitno.

Nekateri tipi v shemi nimajo imena, zato morate iti skozi hierarhijo tipov.

Primer je opisoval sistemski seznam, ki vsebuje strukture XDTO. Če želite ustvariti samo strukturo, ste morali pridobiti njen tip tako:

Vrsta = Factory.Type("urn:my.ru:MasterData:Business", "Business").Properties.Get("System").Type;

Pogoste težave z XDTO

Različni formati shem XSD

V nekaterih formatih se oznake imenujejo xs:, v nekaterih xsd:, vendar 1C varno razume oba formata. Nekoč je prišlo do situacije, ko je bil XSD normalno uvožen v 1C brez napak, vendar ni ustvaril niti enega paketa. Razlog je bila odsotnost atributa targetNamespace pri oznaki torej 1C ni vedel, v kateri paket naj postavi diagram, vendar ni ustvaril napak.

Servisna podpora

Glede na to, da je storitev kombinacija dveh sistemov - 1C in zunanjega, lahko pride do napak v obeh sistemih, kar zmanjša splošno zanesljivost delovanja.

Da bi lažje razumeli razloge za okvare storitev, je priporočljivo uporabiti nabor ukrepov.

Zahteve za beleženje

Povezave

  • XDTO
    • Dober opis XDTO http://pro1c.org.ua/index.php?showtopic=214
  • Brezplačne zanimive spletne storitve:
    • Aeroflot - informacije o voznih redih letal
    • Morpher - sklanjatev imen http://www.morpher.ru/WebServices/Morpher.aspx
  • Nesestavljeno:
    • Namestitev in uporaba spletnih storitev
      • v8: kako spremeniti konfiguracijsko datoteko apache?
      • v8: nadaljevanje teme s spletnimi storitvami - ne morem povezati spletne storitve
      • v8: Še naprej brskam po spletnih storitvah - ne morem ustvariti posrednika ...
      • Knowledge Book: v8: Uporaba zunanjih spletnih storitev v 1C:Enterprise 8;

Spletne storitve je eden od mehanizmov platforme, ki se uporablja za integracijo z drugimi informacijskimi sistemi. Je sredstvo za podporo SOA (Service-Oriented Architecture), storitveno usmerjene arhitekture, ki je sodoben standard za integracijo aplikacij in informacijskih sistemov.

Pomembna prednost storitveno usmerjene arhitekture je, da omogoča enoten razvoj infrastrukture podjetja, ne da bi uničili obstoječe rešitve. Njegova uporaba vam omogoča zmanjšanje stroškov z integracijo heterogenih in podedovanih sistemov v krajino sodobnega podjetja. Omogoča vam implementacijo ohlapno povezanih komponent programske opreme, da povečate njihovo ponovno uporabo.

Storitveno usmerjena arhitektura se intenzivno razvija in podpira s strani večjih ponudnikov. Zgrajena je na podlagi storitev, avtonomnih ali upravljanih od zunaj. Najprimernejši način njihove implementacije so spletne storitve. So neodvisni od platforme, samostojni in podprti povsod.

Aplikativna rešitev 1C:Enterprise 8 je lahko tako ponudnik spletnih storitev kot porabnik spletnih storitev drugih ponudnikov.

Sistemi, ki uporabljajo poljubno strojno opremo in programske platforme. Tehnologija spletnih storitev je neodvisna od platforme.


Tehnična izvedba spletnih storitev

Če je aplikativna rešitev ponudnik spletne storitve, se tako v datotečnem kot odjemalsko-strežniškem načinu delovanja interakcija med aplikativno rešitvijo in porabniki spletne storitve izvaja prek spletnega strežnika z uporabo razširitvenega modula spletnega strežnika.

V tem primeru, ko potrošnik dostopa do spletne storitve aplikacijske rešitve, se izvede modul spletne storitve. Ta modul je vsebovan v konfiguraciji in vsebuje postopke, ki se izvajajo pri klicu določenih operacij spletne storitve.

V primeru odjemalsko-strežniške različice dela se bo ta modul izvajal v gruči. V primeru datotečne različice dela - v razširitvenem modulu spletnega strežnika.

Če je aplikacijska rešitev porabnik zunanjega ponudnika spletnih storitev, se v tem primeru izvaja interakcija med aplikacijsko rešitvijo in ponudnikom spletnih storitev.

Izmenjava podatkov je običajno organizirana tako, da se datoteka naloži iz enega programa in jo naloži v drugega. Nekateri programerji ponujajo programi tretjih oseb dostop do Baza podatkov SQL 1C (kar se zdi močno odsvetovano).

Izraz »izmenjava podatkov« ne ustreza vedno nalogi, včasih je bolj pravilno reči zagotavljanje podatkov. Na primer, zunanji program mora ugotoviti, ali taka stranka obstaja v 1C in njeno stanje.

Zagotavljanje dostopa do podatkov 1C je napačno zaradi varnosti podatkov. Potreben je bolj mehanizem preverjanja z imenom in geslom z nadaljnjim vračilom stanja.

Ta pristop se imenuje storitveni pristop, ko program ne zagotavlja podatkov, temveč storitev, ki vam omogoča identifikacijo stranke in ugotovitev njenega stanja.

Kako deluje?

Zunanje funkcije se pokličejo (zaženejo) z zahtevo po protokolu SOAP.

Uporablja se za posredovanje parametrov in rezultatov. Za delo s spletnimi storitvami morate imeti osnovno razumevanje .

Spletne storitve 1C

Spletna storitev 1C je metoda, s katero lahko dovolite zagon nekaterih funkcij 1C zunaj baze podatkov 1C, tudi iz drugih programov ali drugih baz podatkov 1C.

To je bolje kot zagotavljanje neposrednega dostopa do podatkov 1C, saj pri klicu metode (funkcije) spletne storitve 1C zunanji program nima dostopa do podatkov. Funkcija v jeziku 1C neodvisno določa pravico zunanji program prejmete določeno količino podatkov glede na posredovane parametre (na primer uporabniško ime in geslo).

V mnogih primerih ne morete ustvariti lastnega paketa XDTO, ampak uporabite privzetega, tako da s seznama izberete paket www.sample-package.org

Metode spletne storitve 1C

Po tem morate dodati seznam funkcij (metode spletne storitve 1C), ki bodo na voljo zunaj. Bolje jih je poklicati v angleščini. Funkcija ima lahko parametre.

Osnovne vrste za uporabo:

  • vrvica – vrvica
  • int ali integer – celo število
  • realno – delno število
  • datum – datum.

Za vsako dodano funkcijo spletne storitve 1C jo morate ustvariti v lastnostih, tako kot smo naredili v itd.

Ta funkcija 1C bo izvedena pri klicu metode spletne storitve 1C. Ne pozabite, da bo izvedeno na strežniku 1C. Datotečni način dela s spletnimi storitvami 1C ni priporočljiv.

Funkcija običajno vrne nekaj podatkov. Običajno je tip niz in vrnjen je niz XML.

Niz XML lahko ustvarite z jezikovnimi objekti 1C za ali pa preprosto ustvarite besedilni niz, v katerem je shranjeno besedilo XML.

Objava spletne storitve 1C

Kot smo že povedali, morajo drugi programi "vedeti", da spletna storitev 1C obstaja, ima takšen seznam metod in tako naprej.

Opis naj bo na spletni strani. Za to potrebujete:

  • Imeti spletno stran
  • V lastnostih spletne storitve 1C določite ime datoteke s pripono 1cws, ki je povezava do opisa WSDL
  • To datoteko naložite na spletno mesto v konfiguratorju z menijsko postavko Administracija/Objava na spletnem strežniku.

Brskalnik bi moral prikazati nekakšno datoteko XML (primer datoteke WSDL tukaj http://ru.wikipedia.org/wiki/WSDL) in ne napake, ne prazne strani in ne nerazločnega besedila v katerem koli kodiranju.

Po uspešni objavi se lahko uporablja spletna storitev 1C. Če želite to narediti v drugem programu, ki ga morate uporabiti ta internet naslov za povezave do spletne storitve 1C.

na primer Visual Studio omogoča kateri koli jezik (C++, C#, Visual basic) – vključite spletno storitev 1C v projekt v skladu z njenim WSDL opisom in ustvarite razred za uporabo spletne storitve 1C.

Na srečo pri delu s spletnimi storitvami ni omejitev.

Dodajanje spletne storitve v metapodatke

Odprite konfiguracijsko drevo, vejo So pogosti, Nadalje Spletne storitve, dodajte novo spletno storitev (imenoval jo bom my_ws) in izpolnite lastnosti, kot je prikazano na sliki.

O lastnostih spletnih storitev je treba narediti nekaj pojasnil.

  • Paketi XDTO- To polje določa seznam paketov XDTO, katerih vrste je mogoče uporabiti v vrednosti, ki je vrnjena kot rezultat operacij spletne storitve.
  • URI imenskega prostora je niz, ki določa URI imenskega prostora za te spletne storitve. Vsako spletno storitev je mogoče enolično identificirati s kombinacijo njenega imena in imenskega prostora. Jasno je treba razumeti, da ta lastnost nima nobene zveze s fizičnim naslovom spletnega strežnika ali s spletno stranjo organizacije itd. To je samo virtualni naslov. Zato morate dodeliti jasno ime, ki lahko pove na primer o območju lokacije in uporabe spletne storitve. Zlasti je lahko prisotna okrajšava tipična konfiguracija v katero sodi spletna storitev.

Operacije spletnih storitev

Da bi zagotovili delovanje spletne storitve, je treba zanjo ustvariti operacije, ki bodo izvajale določene akcije in po potrebi vrnile potrebne podatke.

Na primer, ustvarimo operacijo za našo spletno storitev, ki bo vrnila klasično frazo "Hello world!" Pokličimo jo zdravo:

Ustvarimo funkcijo v modulu spletne storitve Pozdravljen, svet(), povezava do katere bo vstavljena v ustrezno lastnost operacije.

Funkcija HelloWorld() Vrne "Pozdravljen svet!" ; EndFunction

Toda ta operacija ima eno pomanjkljivost. Vanj ne morete prenesti izvirnih podatkov. Za te namene delovanje spletnih storitev uporablja svoje podrejene objekte – Opcije.

Dodajmo še eno operacijo - Pozdravljeni Usr in ustvarite parameter zanj Ime.

Ta operacija bo uporabniku vrnila pozdrav s klicem naslednje funkcije:

Funkcija HelloUser(UserName) Vrne "Hello, " + UserName + "!" ; EndFunction

Objava spletne storitve

Zdaj smo pripravljeni za objavo spletne storitve. Če želite to narediti, se morate prijaviti v konfigurator s skrbniškimi pravicami. Kliknite bližnjico 1C desni klik in izberite ustrezen element menija:

Izberite v meniju Administracija —> Objava na spletnem strežniku

V oknu, ki se odpre, vnesite ime publikacije in potrdite polje Objavite spletne storitve in označite tudi spletno storitev, ki smo jo ustvarili:

WS povezave

Za delo s spletnimi storitvami se uporablja naslednji objekt 1C: WS-povezava. Gre za WSDL opis spletne storitve, pridobljen z uvozom iz vira, na katerem se spletna storitev nahaja. Se pravi, najprej moramo poznati naslov, na katerem lahko dobimo WSDL opis spletne storitve. V zvezi z našim primerom bo ta naslov v skladu z nastavitvami, ki smo jih naredili v procesu ustvarjanja in objave spletne storitve, videti takole:

http://localhost/professia1c/ws/my_ws.1cws?wsdl

Poglejmo, iz katerih delov je sestavljen ta naslov.

  • http://localhost/- Ta naslov označuje fizično lokacijo spletnega strežnika. Ker ga imam na lokalnem računalniku, je to localhost, v praksi pa je to bodisi naslov IP strežnika ali njegovo ime
  • professia1c je ime publikacije. Vnesli smo ga v polje Ime v pogovornem oknu ob objavi spletne storitve
  • ws- znak, da dostopamo do spletne storitve
  • my_ws.1cws— ime datoteke objave, ki smo jo navedli v lastnostih pri ustvarjanju spletne storitve
  • ?wsdl- parameter, ki nakazuje, da moramo dobiti opis WSDL

Po objavi spletne storitve, da zagotovite, da je bila objavljena uspešno, lahko vnesete naslov njenega WSDL opisa v naslovna vrstica brskalnik. V tem primeru bi morali v oknu brskalnika prejeti datoteko XML s približno naslednjo vsebino:

  1. Uporaba dinamične ws povezave.
  2. Ustvarjanje statične ws povezave.

Oglejmo si vsako od teh metod.

Dinamične WS povezave

&OnServer postopek ConnectOnServer() WSOdefinition = New WSDefinition( "http://localhost/professia1c/ws/my_ws.1cws?wsdl", "Sidorov" , "" ); WSProxy = New WSProxy(WSOdefinition, "http://www.site/" , "my_ws" , "my_wsSoap" ) ; VSProxy. Uporabnik = "Sidorov" ; VSProxy. Geslo = "" ; TextVS = VSProxy. PozdravljeniUsr("Vasja" ); Sporočilo = Novo sporočiloUporabniku; Sporočilo. Besedilo = TextVS; Sporočilo. Poročati() ; Konec postopka

Kot morda ugibate, bo rezultat tega postopka besedilo v oknu sporočila "Pozdravljeni, Vasja!"

Statične WS povezave

Namesto programskega ustvarjanja predmeta Definicije WS lahko neposredno ustvarimo metapodatkovni objekt WS-link v konfiguracijskem drevesu. Med postopkom ustvarjanja se bo prikazalo okno, v katerem boste morali določiti naslov definicije WSDL, da jo uvozite:

Nato se lahko neposredno sklicujemo na to referenco WS v kodi. In postopek za dostop do spletne storitve bo imel naslednjo obliko:

&OnServer postopek ConnectThroughLinkOnServer() VSProxy = WSLinks. WSlink_my_ws. CreateWSProxy("http://www.site/" , "my_ws" , "my_wsSoap" ) ; VSProxy. Uporabnik = "Sidorov" ; VSProxy. Geslo = "" ; TextVS = VSProxy. PozdravljeniUsr("Vasja" ); Sporočilo = Novo sporočiloUporabniku; Sporočilo. Besedilo = TextVS; Sporočilo. Poročati() ; Konec postopka