XML վեբ ծառայություններ. Տեխնոլոգիայի ակնարկ

Թեմայի վերնագիրը իսկապես հարց է, քանի որ Ես ինքս չգիտեմ, թե դա ինչ է և առաջին անգամ կփորձեմ աշխատել դրա հետ այս հոդվածի շրջանակներում։ Միակ բանը, որ կարող եմ երաշխավորել, որ ստորև բերված կոդը կաշխատի, բայց իմ արտահայտությունները կլինեն պարզապես ենթադրություններ և ենթադրություններ այն մասին, թե ես ինքս ինչպես եմ հասկանում այս ամենը: Ուրեմն գնանք...

Ներածություն

Պետք է սկսել նրանից, թե ինչի համար է ստեղծվել վեբ ծառայությունների հայեցակարգը։ Երբ այս հայեցակարգը հայտնվեց, աշխարհում արդեն գոյություն ունեին տեխնոլոգիաներ, որոնք թույլ էին տալիս հավելվածներին փոխազդել հեռավորության վրա, որտեղ մի ծրագիր կարող էր որևէ մեթոդ կանչել մեկ այլ ծրագրում, որը կարող էր գործարկվել մեկ այլ քաղաքում կամ նույնիսկ երկրում գտնվող համակարգչի վրա: Այս ամենը կրճատված է որպես RPC (Remote Procedure Calling): Օրինակները ներառում են CORBA տեխնոլոգիաները, իսկ Java-ի համար՝ RMI (Remote Method Invoking): Եվ նրանց մեջ ամեն ինչ կարծես թե լավ է, հատկապես CORBA-ում, tk. դուք կարող եք աշխատել դրա հետ ցանկացած ծրագրավորման լեզվով, բայց ինչ-որ բան դեռ բացակայում էր: Կարծում եմ, որ CORBA-ի թերությունն այն է, որ այն աշխատում է իր որոշ ցանցային արձանագրությունների միջոցով՝ պարզ HTTP-ի փոխարեն, որը սողում է ցանկացած firewall-ի միջով: Վեբ ծառայության հիմքում ընկած գաղափարն էր ստեղծել RPC, որը կմնա HTTP փաթեթների մեջ: Այսպես սկսվեց ստանդարտի մշակումը։ Որո՞նք են այս ստանդարտի հիմնական հասկացությունները.
  1. Օճառ... Նախքան հեռակա ընթացակարգ կանչելը, դուք պետք է նկարագրեք այս զանգը SOAP XML ֆայլում: SOAP-ը պարզապես XML նշումներից մեկն է, որն օգտագործվում է վեբ ծառայություններում: Այն ամենը, ինչ մենք ուզում ենք ինչ-որ տեղ ուղարկել HTTP-ի միջոցով, սկզբում վերածվում է XML SOAP-ի նկարագրության, այնուհետև այն դրվում է HTTP փաթեթի մեջ և ուղարկվում է ցանցի մեկ այլ համակարգիչ TCP/IP-ի միջոցով:
  2. WSDL... Կա վեբ ծառայություն, այսինքն. ծրագիր, որի մեթոդները կարելի է զանգահարել հեռակա կարգով: Բայց ստանդարտը պահանջում է, որ այս ծրագրին կցվի նկարագրություն, որտեղ ասվում է, որ «այո, դուք չեք սխալվում. սա իսկապես վեբ ծառայություն է, և դուք կարող եք նրանից զանգահարել այսինչ մեթոդներին»: Այս նկարագրությունը ներկայացված է մեկ այլ XML ֆայլով, որն ունի այլ ձևաչափ, այն է՝ WSDL: Նրանք. WSDL-ը պարզապես XML նկարագրության ֆայլ է վեբ ծառայության համար և ուրիշ ոչինչ:
Ինչո՞ւ եք այդքան կարճ հարցնում. Չե՞ք կարող ավելի մանրամասն տեղեկություններ ստանալ: Հավանաբար կարող եք, բայց դրա համար պետք է դիմել այնպիսի գրքերի, ինչպիսին է Mashnin T. «Java Web Services»: Այնտեղ, առաջին 200 էջերի համար, կա SOAP և WSDL ստանդարտների յուրաքանչյուր պիտակի մանրամասն նկարագրություն: Պե՞տք է դա անեմ: Իմ կարծիքով, ոչ, tk. այս ամենը ավտոմատ կերպով ստեղծվում է Java-ում, և ձեզ հարկավոր է ընդամենը գրել այն մեթոդների բովանդակությունը, որոնք ենթադրաբար պետք է կանչվեն հեռակա կարգով: Այսպիսով, Java-ում կար այնպիսի API, ինչպիսին է JAX-RPC: Եթե ​​որևէ մեկը չգիտի, երբ ասում է, որ Java-ն ունի այսինչ API-ն, նշանակում է, որ կա մի փաթեթ, որտեղ կա դասերի հավաքածու, որը ներառում է տվյալ տեխնոլոգիան: JAX-RPC-ն երկար ժամանակ զարգացավ տարբերակից տարբերակ և ի վերջո վերածվեց JAX-WS-ի: WS-ն ակնհայտորեն նշանակում է WebService, և դուք կարող եք մտածել, որ սա RPC-ի պարզ վերանվանումն է մեր օրերում հայտնի բառի: Դա այդպես չէ, քանի որ Այժմ վեբ ծառայությունները հեռացել են սկզբնական գաղափարից և թույլ են տալիս ոչ միայն զանգահարել հեռավոր մեթոդներ, այլև պարզապես ուղարկել փաստաթղթերի հաղորդագրություններ SOAP ձևաչափով: Ինչու է դա անհրաժեշտ, ես դեռ չգիտեմ, պատասխանը դժվար թե լինի «միայն դեպքում, հանկարծ անհրաժեշտ լինի»։ Ես ինքս կցանկանայի սովորել ավելի փորձառու ընկերներից։ Եվ վերջինը, հետո կար նաև JAX-RS այսպես կոչված RESTful վեբ ծառայությունների համար, բայց սա առանձին հոդվածի թեմա է։ Այս պահին ներածությունը կարելի է ավարտել, քանի որ հաջորդիվ կսովորենք աշխատել JAX-WS-ի հետ։

Ընդհանուր մոտեցում

Վեբ ծառայությունները միշտ ունեն հաճախորդ և սերվեր: Սերվերը մեր վեբ ծառայությունն է և երբեմն կոչվում է վերջնակետ (ինչպես այն վերջնակետը, որտեղ գնում են հաճախորդի SOAP հաղորդագրությունները): Մենք պետք է անենք հետևյալը.
  1. Նկարագրեք մեր վեբ ծառայության ինտերֆեյսը
  2. Իրականացնել այս ինտերֆեյսը
  3. Սկսեք մեր վեբ ծառայությունը
  4. Գրեք հաճախորդ և հեռակա կարգով զանգահարեք վեբ ծառայության պահանջվող մեթոդին
Վեբ ծառայությունը կարող է գործարկվել տարբեր ձևերով. կա՛մ նկարագրել դասը հիմնական մեթոդով և գործարկել վեբ ծառայությունը ուղղակիորեն՝ որպես սերվեր, կա՛մ տեղակայել այն սերվերի վրա, ինչպիսին է Tomcat-ը կամ որևէ այլ սերվեր: Երկրորդ դեպքում, մենք ինքներս չենք բացում նոր սերվեր և չենք բացում այլ պորտ համակարգչի վրա, այլ պարզապես ասում ենք Tomcat սերվիլետ կոնտեյներին, որ «մենք այստեղ գրել ենք վեբ ծառայության դասերը, խնդրում եմ հրապարակեք դրանք, որպեսզի բոլորը, ովքեր կապ են հաստատում. դուք կարող եք օգտվել վեբ ծառայությունից»: Անկախ վեբ ծառայության գործարկման եղանակից, մենք կունենանք նույն հաճախորդը։

Սերվեր

Սկսենք IDEA-ն և ստեղծենք նոր նախագիծ Ստեղծել նոր նախագիծ... Եկեք անուն մուտքագրենք Բարև ՎեբՍերվիսև սեղմեք կոճակը Հաջորդը, ապա կոճակը Ավարտել... Թղթապանակում srcստեղծել փաթեթ ru.javarush.ws... Այս փաթեթում մենք կստեղծենք HelloWebService ինտերֆեյսը. փաթեթ ru: javarush. ws; // սրանք ծանոթագրություններ են, այսինքն. մեր դասերը և մեթոդները նշելու միջոց, // կապված վեբ ծառայության տեխնոլոգիայի հետներմուծել javax. jws. Վեբ մեթոդ; ներմուծել javax. jws. Վեբ ծառայություն; ներմուծել javax. jws. օճառ. SOAPկապում; // մենք ասում ենք, որ մեր ինտերֆեյսը կաշխատի որպես վեբ ծառայություն@WebService // ասեք, որ վեբ ծառայությունը կօգտագործվի մեթոդներ կանչելու համար@SOAPBinding (ոճ = SOAPBinding. Style. RPC) հանրային ինտերֆեյս HelloWebService ( // մենք ասում ենք, որ այս մեթոդը կարելի է զանգահարել հեռակա կարգով@WebMethod public String getHelloString (Տողի անունը); ) Այս կոդում WebService և WebMethod դասերը, այսպես կոչված, անոտացիաներ են և ոչինչ չեն անում, քան նշել մեր ինտերֆեյսը և դրա մեթոդը որպես վեբ ծառայություն: Նույնը վերաբերում է SOAPBinding դասին: Միակ տարբերությունն այն է, որ SOAPBinding-ը պարամետրի անոտացիա է: Այս դեպքում ոճի պարամետրն օգտագործվում է մի արժեքով, որն ասում է, որ վեբ ծառայությունը կաշխատի ոչ թե փաստաթղթային հաղորդագրությունների միջոցով, այլ որպես դասական RPC, այսինքն. մեթոդը զանգահարելու համար. Եկեք իրականացնենք մեր ինտերֆեյսի տրամաբանությունը և մեր փաթեթում ստեղծենք HelloWebServiceImpl դաս: Ի դեպ, նշեմ, որ Impl-ում դասի ավարտը Java-ի կոնվենցիա է, ըստ որի ինտերֆեյսների իրականացումը նշվում է այս կերպ (Impl - Implement, այսինքն՝ իրականացում բառից): Սա պահանջ չէ, և դուք ազատ եք դասին անվանել այն, ինչ ուզում եք, բայց լավ ձևի կանոնները դա են պահանջում՝ փաթեթ ru: javarush. ws; // նույն անոտացիան, ինչպես ինտերֆեյսը նկարագրելիս,ներմուծել javax. jws. Վեբ ծառայություն; // բայց այստեղ օգտագործվում է endpointInterface պարամետրով, // նշելով մեր վեբ ծառայության ինտերֆեյսի լրիվ որակավորված դասի անվանումը@WebService (endpointInterface = «ru.javarush.ws.HelloWebService») հանրային դասը HelloWebServiceImpl-ն իրականացնում է HelloWebService (@Override public String getHelloString (String name) ( // պարզապես ողջույնի խոսք ասացվերադարձիր «Բարև», + անուն + «!" ; )) Եկեք սկսենք մեր վեբ ծառայությունը որպես անկախ սերվեր, այսինքն. առանց որևէ Tomcat-ի և հավելվածի սերվերների ներգրավման (սա առանձին քննարկման թեմա է): Դա անելու համար թղթապանակում գտնվող նախագծի կառուցվածքում srcեկեք ստեղծենք փաթեթ ru.javarush.endpoint, և դրանում ստեղծենք HelloWebServicePublisher դասը հիմնական մեթոդով՝ փաթեթ ru: javarush. վերջնակետ; // դաս՝ վեբ ծառայություններով վեբ սերվեր սկսելու համարներմուծել javax. xml. ws. Վերջնակետ; // մեր վեբ ծառայության դասըներմուծում ru. javarush. ws. HelloWebServiceImpl; հանրային դաս HelloWebServicePublisher (public static void main (String... args) ( // գործարկել վեբ սերվերը 1986-ի նավահանգստում // և առաջին արգումենտում նշված հասցեում, // գործարկել երկրորդ արգումենտում փոխանցված վեբ ծառայությունըՎերջնակետ. հրապարակել ( «http: // localhost: 1986 / wss / բարև», նոր HelloWebServiceImpl ()); )) Այժմ եկեք գործարկենք այս դասը՝ սեղմելով Shift + F10... Վահանակում ոչինչ չի հայտնվում, բայց սերվերը աշխատում է: Դուք կարող եք դա հաստատել՝ բրաուզերում մուտքագրելով տողը http: // localhost: 1986 / wss / hello? Wsdl: Բացվող էջը մի կողմից ապացուցում է, որ մեր համակարգչում (localhost) 1986-ի նավահանգստում գործարկվել է վեբ սերվեր (http: //), իսկ մյուս կողմից ցույց է տալիս մեր վեբ ծառայության WSDL նկարագրությունը։ Եթե ​​դադարեցնեք հավելվածը, նկարագրությունը կդառնա անհասանելի, ինչպես նաև բուն վեբ ծառայությունը, ուստի մենք դա չենք անի, այլ կանցնենք հաճախորդին գրելուն:

Հաճախորդ

Ծրագրի թղթապանակում srcստեղծել փաթեթ ru.javarush.client, իսկ դրա մեջ HelloWebServiceClient դասը հիմնական մեթոդով՝ փաթեթ ru: javarush. հաճախորդ; // անհրաժեշտ է wsdl նկարագրությունը ստանալու համար և դրա միջոցով // հասնել վեբ ծառայության ինքնիններմուծել java. ցանց. URL; // նման կատարում տեղի կունենա URL օբյեկտի հետ աշխատելիսներմուծել java. ցանց. MalformedURLEբացառություն; // դասեր xml-ku-ն wsdl նկարագրությամբ վերլուծելու համար // և հասնել ծառայության պիտակի դրանումներմուծել javax. xml. անվանատարածք. QName; ներմուծել javax. xml. ws. Ծառայություն; // մեր վեբ ծառայության ինտերֆեյսը (մեզ ավելին է պետք)ներմուծում ru. javarush. ws. HelloWebService; հանրային դասի HelloWebServiceClient (public static void main (String args) նետում է MalformedURLException ( // ստեղծել wsdl նկարագրության հղում Url url = նոր url ( "http: // localhost: 1986 / wss / բարև? wsdl") ; // Մենք նայում ենք հաջորդ կոնստրուկտորի պարամետրերին WSDL նկարագրության հենց առաջին թեգում - սահմանումներ // տես 1-ին արգումենտը targetNamespace հատկանիշում // տե՛ս name հատկանիշի 2-րդ արգումենտը QName qname = նոր QName («http: //ws.site/», «HelloWebServiceImplService»); // Այժմ մենք կարող ենք հասնել ծառայության պիտակին wsdl նկարագրության մեջ,Ծառայության ծառայություն = Ծառայություն. ստեղծել (url, qname); // և այնուհետև մինչև nested port tag, այնպես որ // ստացեք հղում դեպի վեբ ծառայության օբյեկտ, որը հեռու է մեզանից HelloWebService բարև = ծառայություն: getPort (HelloWebService. դաս); // Ուռա՜ Այժմ դուք կարող եք զանգահարել հեռավոր մեթոդՀամակարգ. դուրս. println (բարև. getHelloString («CodeGym»)); )) Ես մաքսիմալ մեկնաբանություններ տվեցի ցուցակման կոդի վերաբերյալ։ Ես ավելացնելու ոչինչ չունեմ, այնպես որ գործարկեք (Shift + F10): Մենք պետք է տեսնենք տեքստը վահանակում. Բարև, CodeGym: Եթե ​​դուք չեք տեսել այն, հավանաբար մոռացել եք գործարկել վեբ ծառայությունը:

Եզրակացություն

Այս թեմայում ներկայացվեց հակիրճ էքսկուրսիա դեպի վեբ ծառայություններ։ Կրկին, իմ գրածներից շատերը իմ ենթադրություններն են այն մասին, թե ինչպես է այն աշխատում, և, հետևաբար, չպետք է նրանց շատ վստահել: Շնորհակալ կլինեմ, եթե բանիմաց մարդիկ ինձ ուղղեն, քանի որ այդ դեպքում ես ինչ-որ բան կսովորեմ։ UPD.

Վեբ ծառայություն (ծառայություն) - ծրագիր, որը կազմակերպում է կայքերի միջև փոխգործակցությունը: Մի պորտալից տեղեկատվությունը փոխանցվում է մյուսին:

Օրինակ՝ կա ավիաընկերություն։ Նա ունի շատ թռիչքներ, համապատասխանաբար, շատ տոմսեր: Այն վեբ ծառայության միջոցով տեղեկատվություն է փոխանցում ճանապարհորդական ագրեգատորի կայք: Ագրեգատոր այցելած օգտատերը կկարողանա գնել այս ավիաընկերության տոմսերը հենց այնտեղ:

Վեբ ծառայությունների մեկ այլ օրինակ է եղանակին հետևելու կայքը, որը պարունակում է տեղեկատվություն որոշակի քաղաքի կամ երկրի եղանակային պայմանների մասին, որպես ամբողջություն: Այս տեղեկատվությունը հաճախ օգտագործվում է նաև երրորդ անձանց կողմից:

Ինտերնետում տեղեկատվությունը բազմազան է. Կայքերը կառավարվում են տարբեր համակարգերով: օգտագործվում են տարբեր փոխանցման և կոդավորման արձանագրություններ: Վեբ ծառայությունները հեշտացնում են տեղեկատվության փոխանակումը տարբեր կայքերի միջև:

Վեբ ծառայությունների ճարտարապետություն և արձանագրություններ

Դուք կարող եք սահմանել 3 դեպք, որոնք փոխազդում են միմյանց հետ՝ կատալոգ, կապալառու և պատվիրատու: Ծառայություն ստեղծելուց հետո կապալառուն այն գրանցում է կատալոգում, և այնտեղ հաճախորդը գտնում է ծառայությունը։

Տվյալների փոխանակման մեխանիզմը ձևավորվում է Վեբ ծառայությունների նկարագրության նկարագրության մեջ: Այն սպեցիֆիկացիա է, որն ընդգրկում է տրանսպորտային ձևաչափերը, բովանդակության տեսակները, տրանսպորտային արձանագրությունները, որոնք օգտագործվում են հաճախորդի և ծառայության փոխադրողի միջև տեղեկատվության փոխանակման համար:

Այսօր մի քանի տեխնոլոգիաներ առավել հաճախ օգտագործվում են տարբեր վեբ ծառայությունների իրականացման համար.

  1. TCP / IP-ն արձանագրություն է, որը հասկանալի է գրեթե ցանկացած ցանցային սարքավորումների համար՝ հիմնական սարքերից մինչև շարժական սարքեր և PDA-ներ:
  2. HTML-ը ընդհանուր նշանակության նշագրման լեզու է, որն օգտագործվում է սպառողական սարքերում բովանդակությունը ցուցադրելու համար:
  3. XML-ը ունիվերսալ գործիք է բոլոր տեսակի տվյալների մշակման համար: Տեղեկատվության փոխանակման այլ արձանագրություններ կարող են աշխատել դրա հիման վրա՝ SOAP և WSDL:
  4. UDDI-ն ճանաչման, ինտեգրման և նկարագրության համընդհանուր աղբյուր է: Աշխատում է, որպես կանոն, մասնավոր ցանցերում և դեռ չի գտել բավարար բաշխում։

Ներկայացված տեխնոլոգիաների բազմակողմանիությունը հիմք է հանդիսանում վեբ ծառայությունները հասկանալու համար։ Նրանք աշխատում են ստանդարտ տեխնոլոգիաների վրա, որոնք անկախ են հավելվածների մատակարարներից և ցանցային այլ ռեսուրսներից: Կարող է օգտագործվել ցանկացած օպերացիոն համակարգի, հավելվածի սերվերի, ծրագրավորման լեզվի և այլնի վրա:

Առավելությունները

  • Ծրագրային բաղադրիչների փոխազդեցության համար անհրաժեշտ պայմանների ստեղծում՝ անկախ հարթակից:
  • Վեբ ծառայությունները հիմնված են բաց ստանդարտ արձանագրությունների վրա: XML-ի ներդրման շնորհիվ ապահովվում է վեբ ծառայությունների ձևավորման և կազմաձևման պարզությունը։
  • HTTP-ի օգտագործումը երաշխավորում է համակարգերի միջև փոխգործունակությունը ցանցային հասանելիության միջոցով:

Թերություններ

  • Ցածր կատարողականություն և երթևեկության մեծ ծավալ՝ համեմատած RMI, CORBA, DCOM համակարգերի հետ՝ տեքստի համատեքստում XML հաղորդագրությունների օգտագործման պատճառով:
  • Անվտանգության մակարդակ. Բոլոր ժամանակակից վեբ ծառայությունները պետք է իրականացնեն կոդավորում և պահանջեն օգտվողի թույլտվություն: Արդյոք այստեղ բավարար է HTTPS-ը, թե անհրաժեշտ են ավելի հուսալի արձանագրություններ, ինչպիսիք են XML կոդավորումը, SAML և այլն, զարգացման խնդիր է:

Վեբ ծառայությունների առաջադրանքներ

Վեբ ծառայությունները կարող են օգտագործվել բազմաթիվ ոլորտներում:

B2B գործարքներ

Գործընթացները ինտեգրվում են անմիջապես, առանց մարդկանց մասնակցության։ Օրինակ՝ առցանց խանութի կատալոգի համալրումը նոր ապրանքներով։ Դրանք բերվում են պահեստ, իսկ պահեստապետը գրանցում է ժամանումը տվյալների բազայում։ Տեղեկատվությունը ավտոմատ կերպով փոխանցվում է առցանց խանութին: Իսկ գնորդը ապրանքի քարտի վրա «Out of stock» նշելու փոխարեն տեսնում է դրա քանակը։

Ձեռնարկությունների ծառայության ինտեգրում

Եթե ​​ընկերությունն օգտագործում է կորպորատիվ ծրագրեր, ապա վեբ ծառայությունը կօգնի կարգավորել նրանց համագործակցությունը:

Հաճախորդ-սերվեր համակարգի ստեղծում

Ծառայություններն օգտագործվում են հաճախորդի և սերվերի աշխատանքը հարմարեցնելու համար: Սա ապահովում է հետևյալ առավելությունները.

  • դուք կարող եք վաճառել ոչ թե ծրագրակազմը, այլ վճարել վեբ ծառայության մուտքի համար.
  • ավելի հեշտ է լուծել խնդիրները երրորդ կողմի ծրագրերի միջոցով.
  • ավելի հեշտ է կազմակերպել սերվերի բովանդակության և նյութերի հասանելիությունը:

Վեբ ծառայությունը ծրագիր է, որը պարզեցնում է ռեսուրսների փոխազդեցության տեխնիկական կոնֆիգուրացիան:

Այսօր WEB ծառայություններն օգտագործվում են գրեթե ամենուր. դրանք մեզ տրամադրում են տեղեկատվություն ինքնաթիռների և գնացքների թռիչքների, փոխարժեքի և եղանակի մասին: Զարմանալի չէ, որ 1C-ն նաև հնարավորություն ունի ստեղծելու իր սեփական WEB ծառայությունները, որոնք թույլ են տալիս նրան հանդես գալ և՛ որպես մատակարար, և՛ որպես սպառող: Այս մեխանիզմը ներկառուցված է 1C: Enterprise 8.3 հարթակում, և մշակողները կարող են նույնիսկ ավելացնել իրենց WEB ծառայությունների օբյեկտները ստանդարտ կազմաձևում: Նրանց ճարտարապետությունը կառուցված է մի շարք ծառայությունների վրա, որոնք թույլ են տալիս տեղեկատվություն փոխանակել այլ ծրագրերի հետ:

1C վեբ ծառայության ստեղծում

1C WEB ծառայությունների հիմնական առավելություններից մեկը տեղեկատվական անվտանգության տվյալներին անմիջական մուտք ապահովելու անհրաժեշտության բացակայությունն է: Պատշաճ կազմաձևված 1C վեբ ծառայությունը թույլ է տալիս այլ հավելվածներին օգտագործել արտաքին գործառույթները: Նման դեպքերում ֆունկցիան ինքնին պետք է որոշի տվյալներն օգտագործելու իրավունքը՝ ըստ սահմանված պարամետրերի, մշակողի կողմից սահմանված կանոնների համաձայն։

Ինչպե՞ս ստեղծել վեբ ծառայություն 1C-ում:

Որպեսզի 1C համակարգի որոշակի գործառույթը հասանելի դառնա արտաքին ծրագրակազմին, պետք է կատարվեն գործողությունների հետևյալ հաջորդականությունը.

  1. Գնացեք կոնֆիգուրացիա և ավելացրեք WEB-ծառայության օբյեկտ ծառի կոնկրետ ճյուղում.
  2. Նկարագրեք բոլոր գործողությունները, որոնք կարող է կատարել մեր ֆունկցիոնալությունը: Գործառույթների նկարագրությունը կատարվում է մոդուլում 1C-ում ներկառուցված լեզվով.
  3. Ավելացրեք վեբ ծառայության գործառույթների պարամետրերի նկարագրությունը: Խնդրում ենք նկատի ունենալ, որ տվյալների տեսակները նկարագրված են՝ հաշվի առնելով XDTO մեխանիզմի գոյություն ունեցող տեսակները, որոնք հայտնվել են հարթակի 8.1 տարբերակում.
  4. Հրապարակեք ստեղծված WEB ծառայությունը սերվերի վրա: 1C հարթակում ներկառուցված մեխանիզմը աջակցում է հետևյալ ստանդարտներին.
  • SSL / TLS
  • WS-I BP

Պարզ WEB ծառայության ստեղծման օրինակ

Որպեսզի առավել հստակ ցուցադրենք WEB-services մեխանիզմի աշխատանքը, եկեք ստեղծենք մի օրինակ՝ ֆունկցիոնալ, որը որոշում է մուտքագրված տողի երկարությունը: Ծրագիրը կփոխանցի տողը որպես հարցման պարամետր, և 1C-ում նկարագրված գործառույթը կվերադարձնի նիշերի քանակը: Ստեղծելիս պետք է հիշել, որ այս մեխանիզմի հրապարակումը հնարավորություն կտա տարբեր ծրագրերի մուտք գործել դրան։ Քանի որ ոչ բոլոր ծրագրերն են կարողանում ընկալել կիրիլյան այբուբենը, մենք կանվանենք կազմաձևման օբյեկտները՝ օգտագործելով լատիներեն նիշերը:

Բացեք կոնֆիգուրատորը, ծառի մեջ գտեք «WEB-services» մասնաճյուղը և ավելացրեք նոր ծառայություն «wa_LengthString»: Անհրաժեշտ է նաև նոր գործողություն ավելացնել «Գործողություններ» ներդիրում: Եկեք այն անվանենք «CalcLengthString», հատկությունների մեջ նշենք վերադարձվող արժեքի տեսակը՝ int կամ integer և դրա ներսում ստեղծենք «InputString» պարամետրը։ Արժեքի տեսակը թողնում ենք որպես տող:


Այժմ դուք պետք է գրանցեք CalcLengthString ֆունկցիայի գործողությունը WEB ծառայության մոդուլում։ Դա անելու համար բացեք ստեղծված ֆունկցիայի հատկությունները և սեղմեք «Procedure name» մուտքագրման դաշտի աջ կողմում գտնվող խոշորացույցի կոճակը։ 1C-ն ավտոմատ կերպով գործառույթ կստեղծի մեր WEB ծառայության մոդուլում և կբացի այն, որպեսզի կարողանանք նկարագրել CalcLengthString գործողությունը: Եկեք օգտվենք դրանից և գրենք ֆունկցիայի գործողությունը՝ որոշելով մուտքային տողի երկարությունը:


Փաստորեն, սա ավարտում է ամենապարզ WEB-ծառայության ստեղծումը: Այժմ դուք պետք է «դնեք» այս ծառայությունը հանրային տիրույթում, որպեսզի երրորդ կողմի ծրագրակազմը կամ այլ 1C համակարգերը կարողանան օգտագործել այս գործառույթը:

Որպեսզի մենք կարողանանք հրապարակել ստեղծված վեբ ծառայությունն իր ֆունկցիոնալությամբ, պետք է մուտք գործենք կայք։ Նախքան ծառայության հրապարակումը սկսելը, մենք պետք է ստուգենք ֆայլի անունը նորաստեղծ wa_LengthString մոդուլի հատկություններում։ Այն պետք է լինի պարզ, պարզ և ունենա «1cws» ընդլայնում:


Այժմ ժամանակն է սերվերում հրապարակել մեր ստեղծած WEB ծառայությունը: Այս հատկությունը հայտնվել է հարթակի 8.3 տարբերակում, և շատ ընկերություններ արդեն հասկացել են այս ֆունկցիոնալության լիարժեք առավելությունները: Հրապարակումը սկսելու համար անհրաժեշտ է կոնֆիգուրատորում բացել «Կառավարում / Հրապարակում վեբ սերվերում ...» ձևը:


Բացվող պատուհանում մենք պետք է կարգավորենք 1C վեբ ծառայությունները և լրացնենք որոշակի դաշտեր.

  • Անուն. Ցույց է տալիս վեբ սերվերի թղթապանակը, որը կպահի մեր վեբ ծառայության նկարագրությունը: Զգույշ եղեք մեծատառերի հարցում, քանի որ երբեմն սերվերները տարբերում են մեծատառ և փոքրատառ նիշերը;
  • Վեբ սերվեր: Դուք պետք է ընտրեք սերվեր համակարգչում տեղադրվածներից;
  • Կատալոգ. Դուք պետք է ընտրեք ուղին դեպի այն թղթապանակը, որտեղ պահվում են կապը կարգավորելու համար վեբ սերվերի տվյալները: Օգտագործվում են միայն լատինական տառեր.
  • «Բուլյան» տիպի երկու նշան. Առաջինը օգտակար է մեզ համար, եթե մենք պետք է կարգավորենք մուտքը վեբ հաճախորդի միջոցով դեպի կոնֆիգուրացիա: 1C ծառայությունը հրապարակելու համար անհրաժեշտ է երկրորդ նշանը դնել։

Մնում է միայն ստուգել, ​​որ պահանջվող WEB ծառայությունն ունի վանդակ առաջին սյունակում և սեղմեք «Հրապարակել»:


Քանի որ այս մեխանիզմը դեռևս բավականին նոր է, կարող եք հանդիպել «Սխալ է տեղի ունեցել ֆայլի գործողությունը կատարելիս ...» ձևի սխալի հետ: Այս դեպքում պարզապես անհրաժեշտ է կրկնել «Հրապարակել» կոճակը: Շատ դեպքերում դա օգնում է, և ձեզ կներկայացվի հաղորդագրություն, որ վեբ ծառայությունը հրապարակվել է:

Ru // ws / .1cws Wsdl

Հասցեի նման խնդրանքին ի պատասխան զննարկիչը պետք է ցուցադրի XML ֆայլի կառուցվածքը: Եթե ​​տեսնում եք դատարկ էջ, սխալ կամ անհասկանալի նիշեր (կոդավորման խնդիրներ), ապա պետք է նորից ստուգեք բոլոր գործողությունները: Նաև ավելորդ չի լինի համոզվել, որ սերվերը ճիշտ կազմաձևված է, և դուք մուտք ունեք դրան: Հաջող հրապարակումից հետո 1C WEB ծառայությունը կկարողանա օգտագործել երրորդ կողմի հավելվածները:

WEB-service - (անգլերեն web-service-ից, հոմանիշը՝ առցանց ծառայություն): Վեբ ծառայությունները հասկացվում են որպես ծառայություններ, որոնք տրամադրվում են ինտերնետում հատուկ ծրագրերի միջոցով: Օրինակ՝ տարածված են այնպիսի ծառայություններ, ինչպիսիք են՝ հոսթինգը, էլեկտրոնային փոստը, համացանցում տարբեր տեղեկատվության (ֆայլեր, էջանիշեր) պահպանում, օրացույց և այլն։ Վեբ ծառայության կարևոր հատկությունն այն է, որ այն կախված չէ ձեր մատակարարից, համակարգչից կամ բրաուզերից. դուք կարող եք աշխատել ձեր տվյալների հետ աշխարհի ցանկացած կետում, որտեղ մուտք ունեք:

Կնյազև Ա.Ա. ԶԼՄ-ների հանրագիտարանային բառարան. - Բիշքեկ: KRSU-ի հրատարակչություն... Ա.Ա.Կնյազև. 2002 թ.

Տեսեք, թե ինչ է «WEB-service»-ը այլ բառարաններում.

    Վեբ ծառայություն

    Վեբ ծառայություն- Վեբ ծառայություն. Վեբ ծառայությունը, վեբ ծառայությունը ծրագրային համակարգ է, որը նույնացվում է տողի միջոցով, միջերեսները սահմանվում են XML-ով և փոխանցվում են ինտերնետ արձանագրությունների միջոցով: Վեբ ծառայությունը մոդուլյարության միավոր է, երբ օգտագործվում է ... ... Վիքիպեդիա

    Վեբ քեշի հաղորդակցման արձանագրություն- (WCCP) Cisco-ի բովանդակության վերահղման արձանագրություն: Ապահովում է իրական ժամանակում երթևեկության հոսքերը վերահղելու մեխանիզմ: Ունի ներկառուցված մասշտաբավորում, բեռի հավասարակշռում, սխալների հանդուրժողականություն: Cisco IOS ... ... Վիքիպեդիա

    Վեբ քարտեզի ծառայություն- (WMS rus. Վեբ քարտեզի ծառայություն) ստանդարտ արձանագրություն՝ Ինտերնետի միջոցով աշխարհագրական հղումով պատկերների սպասարկման համար, որը ստեղծվել է քարտեզագրական սերվերի կողմից՝ հիմնված GIS տվյալների բազայի տվյալների վրա: Այս ստանդարտը մշակվել է և առաջին անգամ ... ... Վիքիպեդիա

    Վեբ հյուրանոց Սալվադոր- (Սալվադոր, Բրազիլիա) Հյուրանոցի կատեգորիա՝ 2 աստղանի հյուրանոց Հասցե՝ Rua das Alfazemas… Հյուրանոցների տեղեկատու

    Վեբ հյուրանոց Aparecida- (Ապարեսիդա, Բրազիլիա) Հյուրանոցի կատեգորիա՝ 3 աստղանի հյուրանոց Հասցե՝ Ավ. Isaac Ferrei… Հյուրանոցային տեղեկատու

    սպասարկման վրա հիմնված ճարտարապետություն- Կազմակերպության բիզնես գործընթացներն իրականացվում են Հաճախորդի առկա հավելվածներով մատուցվող ծառայությունների հիման վրա։ Եթե ​​հավելվածները չեն ապահովում ծառայությունների մատուցման հնարավորությունը (Վեբ ծառայություններ), երբ արտադրանքը տեղակայվում է ... ... Տեխնիկական թարգմանչի ուղեցույց

    Վեբ 2

    Վեբ 2.0- Վեբ 2.0-ի հետ կապված հիմնական հասկացությունները Web 2.0-ը (ինչպես սահմանված է Թիմ Օ'Ռեյլիի կողմից) համակարգերի նախագծման մեթոդ է, որը, հաշվի առնելով ցանցային փոխազդեցությունները, ավելի լավանում է, որքան շատ մարդիկ օգտագործում են դրանք: Վեբ 2.0-ի առանձնահատկությունը. սկզբունքն է ... ... Վիքիպեդիա

    Կայք- «Կայքի» հարցումը վերահղված է այստեղ: Սմ. նաև այլ իմաստներ։ Վեբ կայքը (անգլերեն կայքէջից՝ վեբ կայք և կայք «տեղ») համակարգչային ցանցում՝ միավորված մեկ տիրույթի անվանման կամ IP հասցեի տակ) մասնավոր անձի փաստաթղթերի հավաքածու է կամ ... ... Վիքիպեդիա։

Գրքեր

  • Տեղեկատվական տեխնոլոգիաները զբոսաշրջության ոլորտում, V. N. Shitov. Ձեռնարկում մանրամասն քննարկվում են ընդհանուր նշանակության համակարգչային տեխնոլոգիաները՝ օգտագործելով Microsoft Office 2010 հայտնի փաթեթները և այլընտրանքային համալիրները, օգտագործման ... Գնել 546 ռուբլով:
  • 75 պատրաստի լուծումներ ձեր կայքի համար PHP-ում, Steinmetz U., Ward B .. Յուրաքանչյուր ոք, ով պատրաստում կամ պատրաստվում է ստեղծել իր սեփական կայքը, անխուսափելիորեն բախվում է մի շարք խնդիրների և դժվարությունների՝ ինչպես ստեղծել բլոգ կայքում ... .... «պղտորել» քվեարկությունը, փակել որոշակի ...

Վեբ ծառայության ճարտարապետության հիման վրա մենք ստեղծում ենք հետևյալ երկու բաղադրիչները՝ որպես վեբ ծառայությունների իրականացման մաս.

Ծառայությունների մատակարար կամ հրատարակիչ

Սա վեբ ծառայությունների մատակարար է: Ծառայությունների մատակարարն իրականացնում է այս ծառայությունը և այն հասանելի է դարձնում ինտերնետում կամ ինտրանետում: Մենք կգրենք և կհրապարակենք պարզ վեբ ծառայություն՝ օգտագործելով .NET SDK:

Ծառայությունների մատակարար կամ սպառող

Վեբ ծառայության ցանկացած սպառող: Հայտատուն օգտագործում է գոյություն ունեցող վեբ ծառայություն՝ բացելով ցանցային կապ և ներկայացնելով XML հարցում: Մենք նաև կգրենք վեբ ծառայությունների երկու հարցում՝ մեկ վեբ սպառող (ASP.NET հավելված) և մեկ այլ սպառող՝ հիմնված Windows հավելվածների վրա:

Ստորև բերված է վեբ ծառայության մեր առաջին օրինակը, որը գործում է որպես ծառայություններ մատուցող և տրամադրում է երկու մեթոդ (ավելացնել և SayHello) որպես վեբ ծառայություններ, որոնք կարող են օգտագործվել հավելվածների կողմից: Սա վեբ ծառայության ստանդարտ ձևանմուշն է: .asmx ընդլայնումն օգտագործվում է NET ծառայություններում: Նկատի ունեցեք, որ որպես վեբ ծառայության ցուցադրվող մեթոդը ունի WebMethod հատկանիշ: Պահպանեք այս ֆայլը որպես FirstService.asmx IIS վիրտուալ գրացուցակում (ինչպես նկարագրված է IIS-ի տեղադրման ժամանակ, օրինակ՝ c: \ MyWebSerces):

FirstService.asmx

<%@ WebService language = "C" class = "FirstService" %>օգտագործելով համակարգ; օգտագործելով System.Web.Services; օգտագործելով System.Xml.Serialization; հանրային դաս FirstService. WebService (public int Ավելացնել (int a, int b) (վերադարձնել a + b;) public String SayHello () (վերադարձել «Hello World»;))

Վեբ ծառայությունը փորձարկելու համար այն պետք է հրապարակվի: Վեբ ծառայությունը կարող է հրապարակվել ինչպես ինտրանետում, այնպես էլ ինտերնետում: Մենք կհրապարակենք այս վեբ ծառայությունը տեղական մեքենայի վրա աշխատող IIS-ում: Սկսենք IIS-ի կարգավորումից:

  • Բացեք «Սկսել» → «Կարգավորումներ» → «Կառավարման վահանակ» → «Ադմինիստրատիվ գործիքներ» → «Ինտերնետ ծառայության կառավարիչ»:
  • Ընդլայնել և աջ սեղմել լռելյայն կայքէջը; ընտրեք «Նոր» → «Վիրտուալ գրացուցակ»: Նոր վիրտուալ գրացուցակի մոգը կբացվի: Սեղմեք Հաջորդը:
  • Հայտնվում է «Վիրտուալ գրացուցակ» էկրանը: Մուտքագրեք վիրտուալ գրացուցակի անունը: Օրինակ՝ MyWebServices: և սեղմեք Հաջորդը:
  • Հայտնվում է «Կայքի բովանդակության գրացուցակ» էկրանը:
  • Մուտքագրեք գրացուցակի անունը վիրտուալ գրացուցակի համար: Օրինակ, c: \ MyWebServices Սեղմեք Հաջորդը:
  • Հայտնվում է «Մուտքի թույլտվություն» էկրանը: Փոխեք կարգավորումները՝ ըստ ձեր պահանջի: Եկեք պահպանենք այս վարժության լռելյայն կարգավորումները:
  • Սեղմեք «Հաջորդ»: Այն ավարտում է IIS-ի կոնֆիգուրացիան:
  • Կարգավորումն ավարտելու համար սեղմեք Ավարտել:

Ստուգելու համար, թե արդյոք IIS-ը ճիշտ է կազմաձևված, պատճենեք HTML ֆայլը (օրինակ՝ x.html) վերևում ստեղծված վիրտուալ գրացուցակում (C: \ MyWebServices): Այժմ բացեք Internet Explorer-ը և մուտքագրեք http: //localhost/MyWebServices/x.html: Այն պետք է բացի x.html ֆայլը:

Նշում... Եթե ​​դա չի աշխատում, փորձեք փոխարինել localhost-ը ձեր սարքի IP հասցեով: Եթե ​​այն դեռ չի աշխատում, ստուգեք, արդյոք IIS-ն աշխատում է. գուցե անհրաժեշտ լինի վերակազմավորել IIS-ը և վիրտուալ գրացուցակը:

Այս վեբ ծառայությունը փորձարկելու համար պատճենեք FirstService.asmx վերևում ստեղծված IIS վիրտուալ գրացուցակում (C: \ MyWebServices): Բացեք վեբ ծառայությունը Internet Explorer-ում (http: //localhost/MyWebServices/FirstService.asmx): Այն պետք է բացի վեբ ծառայության էջը: Էջը պետք է կապի երկու մեթոդների, որոնք մենք տրամադրում ենք որպես վեբ ծառայություններ մեր հավելվածում: Շնորհավորում եմ:Դուք գրել եք ձեր առաջին վեբ ծառայությունը:

Վեբ ծառայության փորձարկում

Ինչպես հենց նոր տեսանք, հեշտ է վեբ ծառայություններ գրել .NET Framework-ում: Վեբ ծառայություններ գրելը նույնպես հեշտ է .NET-ում; սակայն, այն մի փոքր ավելի ակտիվ է։ Ինչպես արդեն նշվեց, մենք կգրենք երկու տեսակի ծառայությունների սպառողներ՝ մեկ կայք և մեկ այլ օգտատեր՝ հիմնված Windows հավելվածների վրա: Եկեք գրենք մեր առաջին վեբ ծառայության սպառողը:

Վեբ ծառայություններ

Գրեք վեբ սպառող, ինչպես ստորև: Անվանեք այն WebApp.aspx: Խնդրում ենք նկատի ունենալ, որ սա ASP.NET հավելված է: Պահպանեք սա վեբ ծառայության վիրտուալ գրացուցակում (c: \ MyWebServices \ WebApp.axpx): Այս հավելվածն ունի երկու տեքստային տուփ, որոնք օգտագործվում են օգտվողից թվեր ստանալու համար՝ ավելացնելու համար: Այն ունի մեկ Run կոճակ, որը սեղմելիս ստանում է Ավելացնել և SayHello վեբ ծառայությունները:

WebApp.axpx

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

Առաջին համարը, որը պետք է ավելացնել: 4< /asp:TextBox>

Երկրորդ համարը ավելացնելու համար: 5

Վեբ ծառայության արդյունք -

Բարև համաշխարհային ծառայություն : Պիտակ< /asp:Label>

Ավելացնել ծառայություն : & Պիտակ

Սպառող ստեղծելուց հետո մենք պետք է պրոքսի ստեղծենք՝ վեբ ծառայությունը սպառելու համար։ Այս աշխատանքը ավտոմատ կերպով կատարվում է Visual Studio .NET-ի կողմից մեզ համար, երբ հղում ենք անում ավելացված վեբ ծառայությանը: Ահա այն քայլերը, որոնք պետք է հետևեն.

  • Ստեղծեք վստահված անձ՝ վեբ ծառայությունից օգտվելու համար: Վստահված անձը ստեղծվում է օգտագործելով WSDL կոմունալ ծրագիրը, որը տրամադրվում է .NET SDK-ով: Այս օգտակար ծրագիրը տեղեկատվություն է քաղում վեբ ծառայությունից և ստեղծում պրոքսի սերվեր: Վստահված անձը վավեր է միայն որոշակի վեբ ծառայության համար: Եթե ​​Ձեզ անհրաժեշտ է օգտվել այլ վեբ ծառայություններից, դուք նույնպես պետք է ստեղծեք վստահված անձ այդ ծառայության համար: Visual Studio .NET-ը ավտոմատ կերպով ստեղծում է վստահված անձ, երբ ավելացվում է վեբ ծառայության հղում: Ստեղծեք վստահված անձ վեբ ծառայության համար՝ օգտագործելով .NET SDK-ով տրամադրված WSDL կոմունալ ծրագիրը: Այն ընթացիկ գրացուցակում կստեղծի FirstSevice.cs ֆայլ: Մենք պետք է այն կազմենք՝ վեբ ծառայության համար FirstService.dll (proxy) ստեղծելու համար:
  • գ:> WSDL http: //localhost/MyWebServices/FirstService.asmx? WSDL
  • c:> csc / t: գրադարան FirstService.cs
  • Տեղադրեք կազմված վստահված անձը վեբ ծառայության վիրտուալ գրացուցակի bin գրացուցակում (c: \ MyWebServices \ bin): Ինտերնետ տեղեկատվական ծառայությունները (IIS) որոնում է այս գրացուցակը պրոքսի սերվերի համար:
  • Ստեղծեք ծառայության սպառող, ինչպես մենք: Նշենք, որ վեբ ծառայության վստահված անձի օբյեկտը ստեղծվել է սպառողի վրա: Այս պրոքսի սերվերը հոգ է տանում ծառայության հետ փոխգործակցության մասին:
  • Մուտքագրեք սպառողի URL-ը IE-ում՝ այն փորձարկելու համար (օրինակ՝ http: //localhost/MyWebServices/WebApp.aspx):

Windows հավելվածների վրա հիմնված վեբ ծառայությունների սպառող

Windows-ի հավելվածների վրա հիմնված վեբ ծառայության հավելված գրելը նման է Windows-ի ցանկացած այլ հավելված գրելուն: Ձեզ անհրաժեշտ է միայն ստեղծել վստահված անձ (ինչը մենք արդեն արել ենք) և հղում կատարել այս վստահված անձին ձեր դիմումը կազմելիս: Ստորև ներկայացված է մեր Windows հավելվածը, որն օգտագործում է վեբ ծառայությունը: Այս հավելվածը ստեղծում է վեբ ծառայության օբյեկտ (իհարկե պրոքսի) և դրա վրա կանչում է SayHello և Add մեթոդները։

WinApp.cs

օգտագործելով համակարգ; օգտագործելով System.IO; SvcConsumer (դաս SvcEater (public static void Main (String args) (FirstService mySvc = new FirstService (); Console.WriteLine ("Calling Hello World Service:" + mySvc.SayHello ()); Console.WriteLine ("Calling: 2, 3) Ծառայություն՝ «+ mySvc. Ավելացնել (2, 3) .ToString ());)))

Կազմել այն c: \> csc /r:FirstService.dll WinApp.cs-ով: Այն կստեղծի WinApp.exe ֆայլ: Գործարկեք այն՝ ձեր հավելվածը և վեբ ծառայությունը փորձարկելու համար:

Այժմ հարցն այն է, թե ինչպես կարող եք վստահ լինել, որ այս հավելվածն իրականում զանգում է վեբ ծառայություն:

Հեշտ է ստուգել: Դադարեցրեք ձեր վեբ սերվերը, որպեսզի հնարավոր չլինի կապ հաստատել վեբ ծառայության հետ: Այժմ սկսեք WinApp հավելվածը: Դա բացառություն կներկայացնի գործարկման ժամանակ: Այժմ նորից գործարկեք վեբ սերվերը: Այն պետք է աշխատի: