WSDL ഫയൽ: ഇത് എന്താണ് കഴിക്കുന്നത്? സോപ്പുഐ. വെബ് സേവനങ്ങളുടെ വിവരണം ഭാഷ (WSDL): ആൻഡ്രൂ ട്രോൾസെൻ

ആമുഖം

ഉപഭോക്താക്കളുടെ ഉപഭോക്താക്കൾ ഉപഭോക്താക്കളോട് ചോദിച്ചു xsd ഫയലുകൾനടപ്പിലാക്കിയ വെബ് സേവനങ്ങൾ പാസ്സാക്കിയ ഘടനകൾക്കായി. WSDL-കൾ സൃഷ്ടിക്കാൻ ഉപഭോക്താക്കളുടെ ഉപഭോക്താക്കളെ ക്ഷണിച്ചുകൊണ്ട് ഉപഭോക്താക്കൾ പ്രതികരിച്ചു. അത്. പെട്ടെന്ന്, "നീലത്തിൽ നിന്ന്," ഡാറ്റ മൂല്യനിർണ്ണയത്തിനായി xsd സ്കീമകൾ മാത്രമല്ല, "മുഴുവൻ WSDL-കളും" നിർമ്മിക്കേണ്ടതിൻ്റെ ആവശ്യകത ഉയർന്നു. സാധാരണയായി WSDL-കൾ SOAP-ന് ഉപയോഗിക്കുന്നു, എന്നാൽ ഞങ്ങൾ REST ഉപയോഗിക്കുന്നു...

ഞാൻ മുമ്പ് എഴുതിയിരുന്നു

ആമുഖം

വെബ് സേവനങ്ങൾ എന്ന പദം സാധാരണയായി SOAP അല്ലെങ്കിൽ WS-അഡ്രസ്സിംഗ് അല്ലെങ്കിൽ WS-സെക്യൂരിറ്റി പോലുള്ള ഡബ്ല്യുഎസ്* സ്റ്റാൻഡേർഡുകൾ അടിസ്ഥാനമാക്കിയുള്ള ഓപ്പറേഷൻ അല്ലെങ്കിൽ പ്രവർത്തന-അടിസ്ഥാന സേവനങ്ങളുമായി ബന്ധപ്പെട്ടിരിക്കുന്നു. REST വെബ് സേവനങ്ങൾ എന്ന പദം സാധാരണയായി എച്ച്ടിടിപി വഴി XML ആശയവിനിമയം നടത്തുന്ന വെബ് സേവനങ്ങളുടെ ഒരു റിസോഴ്സ്-അടിസ്ഥാന ആർക്കിടെക്ചറിനെ സൂചിപ്പിക്കുന്നു. ഈ വാസ്തുവിദ്യാ ശൈലികളിൽ ഓരോന്നിനും ഉണ്ട് സ്വന്തം സ്ഥലം, എന്നാൽ അടുത്തിടെ വരെ, WSDL സ്റ്റാൻഡേർഡ് ഈ രണ്ട് ശൈലികളെയും പിന്തുണച്ചിരുന്നില്ല. WSDL 1.1 HTTP ബൈൻഡിംഗ്, ആശയവിനിമയം വിവരിക്കാൻ അപര്യാപ്തമായിരുന്നു XML ഉപയോഗിക്കുന്നു HTTP വഴി, അതായത്. WSDL ഉപയോഗിച്ചുള്ള REST വെബ് സേവനങ്ങളെ വിവരിക്കാൻ ഔപചാരികമായ മാർഗമില്ല. WSDL 2.0 സ്റ്റാൻഡേർഡിൻ്റെ പ്രസിദ്ധീകരണം (ഇത് REST വെബ് സേവനങ്ങൾ വിവരിക്കേണ്ടതിൻ്റെ ആവശ്യകത കണക്കിലെടുത്താണ് വികസിപ്പിച്ചത്) ശുപാർശ നില വേൾഡ് വൈഡ് REST വെബ് സേവനങ്ങൾ വിവരിക്കുന്നതിന് വെബ് കൺസോർഷ്യം (W3C) ഒരു ഭാഷ നൽകിയിട്ടുണ്ട്.

REST എന്നത് വെബിനെ ഒരു റിസോഴ്സ് കേന്ദ്രീകൃത ആപ്ലിക്കേഷനായി പരിഗണിക്കുന്ന ഒരു വാസ്തുവിദ്യാ ശൈലിയാണ്. പ്രായോഗികമായി, ഒരു RESTful ആപ്ലിക്കേഷനിലെ എല്ലാ URL ഉം ഒരു ഉറവിടത്തെ പ്രതിനിധീകരിക്കുന്നു എന്നാണ് ഇതിനർത്ഥം. URL-കൾ മനസിലാക്കാനും ഓർമ്മിക്കാനും എളുപ്പമാണ്. ഉദാഹരണത്തിന്, ഒരു ബുക്ക്‌സ്റ്റോർ അവർ വിൽക്കുന്ന പുസ്തകങ്ങളുടെ ലിസ്റ്റിനായി http://www.bookstore.com/books/ എന്ന URL നിർവചിച്ചേക്കാം, കൂടാതെ ഒരു പ്രത്യേക പുസ്തകത്തെക്കുറിച്ചുള്ള വിശദാംശങ്ങൾക്ക് http://www.bookstore.com/books/0321396855/ ISBN 0321396855. ഇത് പ്രവർത്തന കേന്ദ്രീകൃത ആപ്ലിക്കേഷനുകളുമായി വ്യത്യസ്‌തമാണ്, സാധാരണയായി ചെയ്യേണ്ട പ്രവർത്തനങ്ങളെ വിവരിക്കുന്ന ദൈർഘ്യമേറിയതും സങ്കീർണ്ണവുമായ URL-കൾ ഉണ്ട്, ഉദാഹരണത്തിന് http://www.bookstore.com/action/query?t=b&id=11117645532&qp=0321396855. ആവശ്യമായ ഡാറ്റ തിരഞ്ഞെടുക്കാൻ ക്വറി പാരാമീറ്ററുകൾ ഉപയോഗിക്കുന്നു. ബുക്ക്‌സ്റ്റോർ ഉദാഹരണം ഉപയോഗിച്ച്, വിഷയ പാരാമീറ്റർ വ്യക്തമാക്കുന്നത് പുസ്തകത്തിൻ്റെ വിഷയത്തെ പരിമിതപ്പെടുത്തുന്നു. ഉദാഹരണത്തിന്, ഫിസിക്‌സ് അല്ലെങ്കിൽ ഡിറ്റക്റ്റീവ് സ്റ്റോറികൾ, അല്ലെങ്കിൽ ഉദാഹരണത്തിന് URL http://www.bookstore.com/books/?subject=computers/eclipse - എക്ലിപ്‌സ് പ്ലാറ്റ്‌ഫോമിനെക്കുറിച്ചുള്ള പുസ്‌തകങ്ങളുടെ ഒരു ലിസ്റ്റ് തിരികെ നൽകുന്ന ഒരു അഭ്യർത്ഥന.

റോയ് ഫീൽഡിംഗ് തൻ്റെ പിഎച്ച്ഡി തീസിസിലാണ് REST എന്ന പദം ഉപയോഗിച്ചത്. ഒരു ആപ്ലിക്കേഷൻ്റെ അവസ്ഥ മാറ്റുന്നതിനുള്ള (സംഭരിക്കുന്നതിനുള്ള) ഉപാധിയായി അദ്ദേഹം ഹൈപ്പർലിങ്കുകളെ വീക്ഷിച്ചു. ഹൈപ്പർലിങ്കുകൾ ആപ്ലിക്കേഷൻ റിസോഴ്സുകളിൽ സംഭരിച്ചിരിക്കുന്നു, കൂടാതെ ഒരു സംസ്ഥാനത്തിൽ നിന്ന് മറ്റൊന്നിലേക്ക് റീഡയറക്‌ടുചെയ്യുന്ന ആപ്ലിക്കേഷൻ നില മാറ്റുന്നതിനുള്ള ഒരു രീതിയാണ്. സാധാരണഗതിയിൽ (X)HTML-ലെ ഹൈപ്പർലിങ്കുകൾ മനുഷ്യരുടെ ഉപയോഗത്തിന് വേണ്ടിയുള്ളതാണ്; മെഷീൻ പ്രോസസ്സിംഗിനായി ഉദ്ദേശിച്ചിട്ടുള്ള XML-ൽ അവ ഉപയോഗിച്ചിട്ടില്ല. (X)HTML പോലെ, REST വെബ് സേവനങ്ങൾ XML-ൽ ഹൈപ്പർലിങ്കുകൾ ഉപയോഗിക്കുന്നു.

HTTP GET അല്ലെങ്കിൽ POST പ്രവർത്തനങ്ങളിലൂടെ പരമ്പരാഗത വെബ് ആപ്ലിക്കേഷനുകൾ ഉറവിടങ്ങൾ ആക്സസ് ചെയ്യുന്നു. RESTfull ആപ്ലിക്കേഷനുകൾ "സൃഷ്ടിക്കുക, വായിക്കുക, അപ്ഡേറ്റ് ചെയ്യുക, ഇല്ലാതാക്കുക (CRUD)" ശൈലിയിൽ ഉറവിടങ്ങൾ ഉപയോഗിച്ച് പ്രവർത്തിക്കുന്നു മുഴുവൻ കഴിവുകളും HTTP പ്രോട്ടോക്കോൾ (POST, GET, PUT, DELETE)

മറ്റൊന്ന് പ്രധാന കുറിപ്പ് RESTful ആപ്ലിക്കേഷനുകളെക്കുറിച്ച്: RESTful ആപ്ലിക്കേഷനുകൾ നിലയില്ലാത്തതായിരിക്കണം. ഇതിനർത്ഥം ഒരു REST ആപ്ലിക്കേഷൻ സെർവർ ഭാഗത്ത് ഒരു സെഷൻ നിലയും നിലനിർത്തുന്നില്ല എന്നാണ്. അഭ്യർത്ഥന പൂർത്തിയാക്കാൻ ആവശ്യമായ എല്ലാ വിവരങ്ങളും അഭ്യർത്ഥനയിൽ തന്നെ കൈമാറുന്നു. (അതിനാൽ, ആവർത്തിച്ചുള്ള അഭ്യർത്ഥനകളോട് സെർവർ അതേ രീതിയിൽ പ്രതികരിക്കണം. വിവർത്തകൻ്റെ കുറിപ്പ്). അതനുസരിച്ച്, ക്ലയൻ്റിന് ലഭിച്ച ഉറവിടങ്ങൾ കാഷെ ചെയ്യാൻ കഴിയും, ഇത് സേവനം വ്യക്തമായി അനുവദിക്കുന്ന ആപ്ലിക്കേഷൻ്റെ വേഗത ഗണ്യമായി വർദ്ധിപ്പിക്കും. REST-നെ കുറിച്ച് കൂടുതലറിയാൻ, ലേഖനത്തിലേക്കുള്ള ലിങ്കുകൾ കാണുക.

WSDL ഉം REST ഉം

ഇനിപ്പറയുന്നവ ഉൾപ്പെടെ വെബ് സേവനത്തെക്കുറിച്ചുള്ള എല്ലാ വിശദാംശങ്ങളും WSDL-ൽ അടങ്ങിയിരിക്കുന്നു:

    വെബ് സേവന URL
    വെബ് സേവനം മനസ്സിലാക്കുന്ന ആശയവിനിമയ സംവിധാനങ്ങൾ
    ഒരു വെബ് സേവനത്തിന് ചെയ്യാൻ കഴിയുന്ന പ്രവർത്തനങ്ങൾ
    വെബ് സേവന സന്ദേശ ഘടന

സേവനവുമായി സംവദിക്കാൻ ഉപഭോക്താക്കൾക്ക് ലിസ്‌റ്റ് ചെയ്‌ത വിശദാംശങ്ങൾ ഉപയോഗിക്കാം.

WSDL 2.0 ഒരു W3C ശുപാർശയായി 2007 ജൂണിൽ പ്രഖ്യാപിച്ചു. WSDL 1.1 സ്റ്റാൻഡേർഡിലെ പ്രശ്നങ്ങൾ പരിഹരിക്കുന്നതിനാണ് WSDL സ്റ്റാൻഡേർഡിൻ്റെ ഈ പതിപ്പ് പുറത്തിറക്കിയത്, അവയിൽ പലതും ഓർഗനൈസേഷൻ തിരിച്ചറിഞ്ഞു. വെബ് സേവനങ്ങൾപരസ്പര പ്രവർത്തനക്ഷമത (WS-I). കൂടാതെ, WSDL 2.0 മെച്ചപ്പെട്ടു HTTP പിന്തുണബന്ധനങ്ങൾ

WSDL തന്നെ XML ആണ്, ഒരു വെബ് സേവനത്തെ ഔപചാരികമായി വിവരിക്കുന്ന ഒരു ഉപവിഭാഗം. ക്ലയൻ്റുമായുള്ള അതിൻ്റെ API കരാറായി ഒരു വെബ് സേവനത്തിൻ്റെ WSDL വിവരണത്തെക്കുറിച്ച് ചിന്തിക്കുക. വെബ് സേവനത്തിൻ്റെ വിലാസം, വിവരങ്ങൾ കൈമാറുന്നതിനുള്ള സ്വീകാര്യമായ രീതികൾ, ഇൻ്റർഫേസുകൾ, സന്ദേശ തരങ്ങൾ എന്നിവ WSDL വ്യക്തമാക്കുന്നു. ചുരുക്കത്തിൽ, ഒരു ക്ലയൻ്റിന് ഒരു വെബ് സേവനം ഉപയോഗിക്കുന്നതിന് ആവശ്യമായ എല്ലാ വിവരങ്ങളും ഒരു WSDL വിവരണത്തിൽ അടങ്ങിയിരിക്കുന്നു.

WSDL-ൻ്റെ പ്രയോഗക്ഷമത അതിൻ്റെ API കരാറായി ഉപയോഗിക്കുന്നതിനും അപ്പുറമാണ്. ഒരു ഔപചാരിക നിർവചനം എന്ന നിലയിൽ, ഇത്തരം പ്രവർത്തനങ്ങൾക്കായി വെബ് സേവനങ്ങൾ നടപ്പിലാക്കുന്നത് ലളിതമാക്കാൻ സോഫ്‌റ്റ്‌വെയറിന് WSDL ഉപയോഗിക്കാം:

  • സൃഷ്ടിക്കുന്നു സോഴ്സ് കോഡ്വിവിധ പ്രോഗ്രാമിംഗ് ഭാഷകളിൽ വെബ് സേവനത്തിനുള്ള ക്ലയൻ്റ് ആപ്ലിക്കേഷനും സെർവറും
  • ഒരു വെബ് സേവനം പ്രസിദ്ധീകരിക്കുന്നു
  • ഡൈനാമിക് വെബ് സേവന പരിശോധന

ഭൂരിപക്ഷം സോഫ്റ്റ്വെയർവെബ് സേവനങ്ങളുമായി പ്രവർത്തിക്കുന്നതിന് WSDL 1.1-നുള്ള പിന്തുണ ഉൾപ്പെടുന്നു. അടുത്തിടെ, WSDL 2.0 പിന്തുണയ്ക്കുന്ന വെബ് സേവന വികസന ഉപകരണങ്ങളുടെ എണ്ണം വർദ്ധിച്ചുകൊണ്ടിരിക്കുകയാണ്. പദ്ധതി അപ്പാച്ചെ വെബ്നിലവിൽ WSDL 2.0 പിന്തുണയ്ക്കുന്ന രണ്ട് ഉപപദ്ധതികൾ സേവനങ്ങളിൽ അടങ്ങിയിരിക്കുന്നു. വോഡൻ ഒരു ജാവ അധിഷ്ഠിത WSDL 2.0 പാർസർ-വാലിഡേറ്ററാണ്. അപ്പാച്ചെ വെബ് സേവന പദ്ധതി ഒരു XSL (XSLT) WSDL 2.0 രൂപാന്തരവും നൽകുന്നു. WSDL 2.0 മനോഹരമായ പ്രിൻ്റർ, മെച്ചപ്പെട്ട മനുഷ്യ വായനാക്ഷമത നൽകുന്നു WSDL പ്രമാണം. Axis2 ഒരു WSDL 2.0 ഡോക്യുമെൻ്റിൽ നിന്ന് ക്ലയൻ്റ്, സെർവർ ജാവ കോഡ് സൃഷ്‌ടിക്കുന്ന ഒരു ജനപ്രിയ വെബ് സേവന എഞ്ചിനാണ് (അപ്പാച്ചെയിൽ നിന്നുള്ളതും).

WSDL 2.0 ഉപയോഗിക്കുന്ന ഒരു REST വെബ് സേവനത്തിൻ്റെ വിവരണം

വിപുലമായ URL ഉള്ള ഒരു പുസ്തകശാല നിങ്ങൾ സൃഷ്ടിക്കുന്നു: http://www.bookstore.com. നിങ്ങൾ ഇതിനകം രണ്ട് REST വെബ് സേവനങ്ങൾ സൃഷ്ടിച്ചു:

  • പുസ്തക പട്ടിക - നിങ്ങൾ വിറ്റ പുസ്തകങ്ങളുടെ ഒരു ലിസ്റ്റ് സേവനത്തിന് ലഭിക്കും.
  • പുസ്തക വിശദാംശങ്ങൾ - സേവനത്തിന് ഒരു പ്രത്യേക പുസ്തകത്തെക്കുറിച്ചുള്ള വിവരങ്ങൾ ലഭിക്കുന്നു.

പ്രതികരണം XML ഡോക്യുമെൻ്റുകളിൽ നൽകുന്നു.

ഘടകം ഇൻ്റർഫേസ്പ്രവർത്തനങ്ങളുടെ ഇൻപുട്ട്, ഔട്ട്പുട്ട്, പിശക് സന്ദേശങ്ങൾ എന്നിവയുടെ വിവരണവും പ്രക്ഷേപണ ക്രമവും ഉൾപ്പെടെ വെബ് സേവന പ്രവർത്തനങ്ങളുടെ ഒരു ലിസ്റ്റ് നിർവചിക്കുന്നു.

ഘടകം ബന്ധിക്കുന്നുക്ലയൻ്റും വെബ് സേവനവും തമ്മിലുള്ള ആശയവിനിമയ മാർഗങ്ങൾ നിർണ്ണയിക്കുന്നു. REST വെബ് സേവനങ്ങളുടെ കാര്യത്തിൽ, ആശയവിനിമയത്തിനുള്ള മാർഗമായി HTTP വ്യക്തമാക്കിയിരിക്കുന്നു.

സേവന ഘടകം വെബ് സേവന വിലാസങ്ങളെ നിർദ്ദിഷ്ട ഇൻ്റർഫേസുകളുമായും ബൈൻഡിംഗുകളുമായും ബന്ധപ്പെടുത്തുന്നു. (അതായത്, വെബ് സേവന പ്രവർത്തനത്തിൻ്റെ URL ഉം ഘടകവും തമ്മിലുള്ള കത്തിടപാടുകൾ ഇത് സജ്ജമാക്കുന്നു ബന്ധിക്കുന്നു).

പുസ്‌തക പട്ടിക HTTP-യിലേക്ക് ബന്ധിപ്പിക്കുക

ഘടകം ബന്ധിക്കുന്നുഒരു നിർദ്ദിഷ്ട ഡാറ്റാ ട്രാൻസ്ഫർ പ്രോട്ടോക്കോളിലേക്ക് വെബ് സേവനത്തിൻ്റെ ബൈൻഡിംഗ് വ്യക്തമാക്കുന്നു. പുസ്തകം കെട്ടാൻ സേവന പട്ടിക HTTP-യ്‌ക്ക് നിങ്ങൾ ആട്രിബ്യൂട്ടിനായി http://www.w3.org/ns/wsdl/http എന്ന മൂല്യം വ്യക്തമാക്കേണ്ടതുണ്ട് തരംഘടകം ബന്ധിക്കുന്നു.

ഘടകം ബന്ധിക്കുന്നുഓപ്ഷണലായി പരാമർശിക്കാം ഇൻ്റർഫേസ്. ആട്രിബ്യൂട്ട് ഉപേക്ഷിക്കുക ഇൻ്റർഫേസ്ശൂന്യം. നിങ്ങൾ അത് അടുത്ത വിഭാഗത്തിൽ സൃഷ്ടിക്കും. എങ്കിൽ ഇൻ്റർഫേസ്ബന്ധപ്പെട്ട ബന്ധിക്കുന്നു, പിന്നെ ബന്ധിക്കുന്നുഒരു മൂലകത്തിന് ഓപ്ഷണലായി ഒരു ചൈൽഡ് എലമെൻ്റ് നിർവചിക്കാം ഓപ്പറേഷൻ, ഏത് കണ്ണാടിയാണ് ഇൻ്റർഫേസ് പ്രവർത്തനംഘടകം. നിങ്ങൾ ഒരു എലമെൻ്റ് സ്റ്റബ് സൃഷ്‌ടിക്കേണ്ടതുണ്ട് ഓപ്പറേഷൻഎന്നതിലേക്കുള്ള ലിങ്ക് പൂരിപ്പിക്കുക ഓപ്പറേഷൻപിന്നീട് സൃഷ്ടിക്ക് ശേഷം ഇൻ്റർഫേസ്.

4 HTTP ആശയവിനിമയ രീതികളുണ്ട്

  • ഇല്ലാതാക്കുക

ബുക്ക് ലിസ്റ്റ് സേവനം അഭ്യർത്ഥന വായിക്കുകയും HTTP GET ഉപയോഗിച്ച് പ്രവർത്തിക്കുകയും ചെയ്യുന്നു. ഇൻസ്റ്റാൾ ചെയ്യുക GET രീതി WSDL 2.0 HTTP നെയിംസ്‌പേസിൽ നിന്നുള്ള മെത്തേഡ് ആട്രിബ്യൂട്ട് ഉപയോഗിച്ച് ഓപ്പറേഷൻ എലമെൻ്റിനായി. ഈ ആട്രിബ്യൂട്ട് ഉപയോഗിക്കുന്നതിന്, നിങ്ങൾ ആദ്യം നെയിംസ്പേസ് http://www.w3.org/ns/wsdl/http നിർവചിക്കേണ്ടതുണ്ട്. വിവരണം.

ബുക്ക് ലിസ്റ്റ് ബൈൻഡിംഗ് സേവനം ഇനിപ്പറയുന്ന ലിസ്റ്റിംഗിൽ നിർവചിച്ചിരിക്കുന്നു. ഇപ്പോൾ വ്യക്തമാക്കുക ബന്ധിക്കുന്നുമൂലകത്തിൽ അവസാന പോയിൻ്റ്: tns:BookListHTTPബൈൻഡിംഗ്.

പുസ്തകശാലയുടെ പുസ്തക പട്ടിക സേവനം.

ബുക്ക് ലിസ്റ്റ് സേവന പ്രവർത്തനത്തിൻ്റെ നിർവ്വചനം

പുസ്‌തക ലിസ്‌റ്റ് വെബ് സേവനവുമായി എങ്ങനെ അഭിസംബോധന ചെയ്യാമെന്നും ആശയവിനിമയം നടത്താമെന്നും നിങ്ങൾ ഇതുവരെ പഠിച്ചു. അടുത്തതായി നിങ്ങൾ ബുക്ക് ലിസ്റ്റ് സർവീസ് ഓപ്പറേഷൻ വ്യക്തമാക്കുന്നു, അത് ബുക്ക് ലിസ്റ്റ് സേവനം എന്താണ് ചെയ്യുന്നതെന്ന് വിവരിക്കുന്നു.

അതിനാൽ, വെബ് സേവനത്തിനായി വിലാസം എങ്ങനെ ക്രമീകരിക്കാമെന്നും ബൈൻഡിംഗ് (ആശയവിനിമയ രീതി) സജ്ജീകരിക്കാമെന്നും നിങ്ങൾ പഠിച്ചു. അടുത്തതായി, നിങ്ങൾ ഒരു സേവന പ്രവർത്തനം സജ്ജീകരിക്കേണ്ടതുണ്ട്, അത് ബുക്ക് ലിസ്റ്റ് വെബ് സേവനം എന്താണെന്ന് നിർണ്ണയിക്കുന്നു.

സേവന പ്രവർത്തനങ്ങൾ നിർവചിക്കാൻ ഇൻ്റർഫേസ് ഘടകവും അതിൻ്റെ ചൈൽഡ് ഓപ്പറേഷൻ ഘടകവും ഉപയോഗിക്കുന്നു. പുസ്തക ലിസ്റ്റിൻ്റെ കാര്യത്തിൽ, പുസ്തകങ്ങളുടെ ഒരു ലിസ്റ്റ് നൽകുന്ന getBookList എന്ന ഒരൊറ്റ പ്രവർത്തനം നിങ്ങൾ നിർവ്വചിക്കുന്നു.

അടുത്തതായി, പ്രവർത്തന ഘടകത്തിനായുള്ള മൂന്ന് ആട്രിബ്യൂട്ടുകൾ നിർവചിക്കുക:

മാതൃക

ഒരു സന്ദേശമയയ്‌ക്കൽ പാറ്റേൺ വ്യക്തമാക്കാൻ ഉപയോഗിക്കുന്നു സന്ദേശ കൈമാറ്റ പാറ്റേൺ(MEP) പ്രവർത്തനത്തിന്. ഒരു പ്രവർത്തനത്തിനായുള്ള സന്ദേശങ്ങളുടെ ക്രമവും അവയുടെ ദിശയും MEP നിർവചിക്കുന്നു. ഈ സാഹചര്യത്തിൽ, വെബ് സേവനത്തിന് പുസ്‌തകങ്ങളുടെ ഒരു ലിസ്റ്റ് ആവശ്യപ്പെട്ട് ഒരു ഇൻപുട്ട് സന്ദേശം ലഭിക്കുന്നുവെന്നും ഒരു ഔട്ട്‌പുട്ട് സന്ദേശം അയയ്‌ക്കുന്നുവെന്നും സൂചിപ്പിക്കാൻ നിങ്ങൾ http://www.w3.org/ns/wsdl/in-out മൂല്യം വ്യക്തമാക്കണം. പുസ്തകങ്ങളുടെ ഒരു ലിസ്റ്റ്. ഈ MEP-യെ പിന്തുണയ്ക്കാൻ, കുട്ടികളെ വ്യക്തമാക്കുക ഇൻപുട്ട്ഒപ്പം ഔട്ട്പുട്ട്മൂലകത്തിന് ഓപ്പറേഷൻ. സന്ദേശ ഘടനകൾ നിർവചിക്കുന്നതിന് ഈ ഘടകങ്ങൾ XML സ്കീമയിൽ വിവരിച്ചിരിക്കുന്ന ഘടകങ്ങൾ ഉപയോഗിക്കുന്നു. വിശദാംശങ്ങൾ അടുത്ത വിഭാഗത്തിൽ.

ശൈലി

ജോലിയെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾ സൂചിപ്പിക്കാൻ ഉപയോഗിക്കുന്നു. ഇൻപുട്ട് ഘടകങ്ങളുടെ ഉള്ളടക്കത്തിൽ നിയന്ത്രണങ്ങൾ ഏർപ്പെടുത്തുന്ന http://www.w3.org/ns/wsdl/style/iri മൂല്യം വ്യക്തമാക്കുക, അതായത് XML സ്കീമ ഘടകങ്ങൾ മാത്രം ഉപയോഗിക്കേണ്ടത് ആവശ്യമാണ്.

wsdlx:സുരക്ഷിതം

wsdlx:safe: WSDL എക്സ്റ്റൻഷൻസ് നെയിംസ്പേസിൽ നിന്ന്, ഈ ആട്രിബ്യൂട്ട് ഈ ഓപ്പറേഷൻ ഐഡമ്പറ്റൻ്റാണെന്ന് പ്രഖ്യാപിക്കുന്നു. ഇത്തരത്തിലുള്ള പ്രവർത്തനം റിസോഴ്‌സ് പരിഷ്‌ക്കരിക്കില്ല, അതിനാൽ ഒരേ ഫലങ്ങളോടെ നിരവധി തവണ വിളിക്കാം. ഈ ഘടകം ഉപയോഗിക്കുന്നതിന്, വിവരണ ഘടകത്തിൽ WSDL വിപുലീകരണങ്ങളുടെ നെയിംസ്പേസ് http://www.w3.org/ns/wsdl-extensions പ്രഖ്യാപിക്കുക.

ഈ ആട്രിബ്യൂട്ട് WSDL എക്സ്റ്റൻഷൻസ് നെയിംസ്പേസിൽ നിന്നുള്ളതാണ്. ഇത് ഓപ്പറേഷൻ ആണെന്ന് നിർണ്ണയിക്കുന്നു ബുദ്ധിശൂന്യൻ. ഈ പ്രവർത്തനം റിസോഴ്‌സ് പരിഷ്‌ക്കരിക്കുന്നില്ല, അതിനാൽ ഒരേ ഫലങ്ങളോടെ ഇതിനെ ഒന്നിലധികം തവണ വിളിക്കാം. ഈ ഘടകം ഉപയോഗിക്കുന്നതിന്, റൂട്ട് എലമെൻ്റിൽ (വിവരണ ഘടകം) നെയിംസ്പേസ് WSDL എക്സ്റ്റൻഷനുകൾ http://www.w3.org/ns/wsdl-extensions നിങ്ങൾ പ്രഖ്യാപിക്കണം.

WSDL 2.0 ഭാഗം 2: അനുബന്ധങ്ങളിൽ നിങ്ങൾക്ക് മുൻകൂട്ടി നിശ്ചയിച്ചിട്ടുള്ള സന്ദേശ കൈമാറ്റ പാറ്റേണുകളും ശൈലികളും wsdlx: സുരക്ഷിതമായ നിർവചനങ്ങളും കണ്ടെത്താനാകും.

അധിക വിവരണത്തോടുകൂടിയ പുസ്തക ലിസ്റ്റ് സേവനത്തിൻ്റെ നിർവചനം ചുവടെയുണ്ട് ഇൻ്റർഫേസ്. ഇൻ്റർഫേസ് ചേർത്ത ശേഷം, വിവരിച്ചതിലേക്കുള്ള ലിങ്കുകൾ വ്യക്തമാക്കുന്നതിന് നിങ്ങൾക്ക് ഇപ്പോൾ ബൈൻഡിംഗ് ഓപ്പറേഷൻ എലമെൻ്റ് മാറ്റാം ഇൻ്റർഫേസ്ഒപ്പം ഓപ്പറേഷൻ.

ബുക്ക് ലിസ്റ്റ് സേവനത്തിനായുള്ള RESTful HTTP ബൈൻഡിംഗ്. പുസ്തകശാലയുടെ പുസ്തക പട്ടിക സേവനം.

ബുക്ക് ലിസ്റ്റ് ഓപ്പറേഷൻ സേവന സന്ദേശങ്ങൾ നിർവചിക്കുന്നു

ബുക്ക് ലിസ്റ്റ് വെബ് സേവനം രണ്ട് സന്ദേശങ്ങൾ ഉപയോഗിക്കുന്നു: ഇൻപുട്ട്, ഔട്ട്പുട്ട്. ഈ സന്ദേശങ്ങളുടെ ഘടന നിങ്ങൾ വിവരിക്കേണ്ടതാണ്, അതുവഴി ക്ലയൻ്റ് പ്രോഗ്രാമുകൾക്ക് സേവനത്തിലേക്ക് എന്താണ് അയയ്ക്കേണ്ടതെന്നും എന്താണ് തിരികെ പ്രതീക്ഷിക്കേണ്ടതെന്നും അറിയാൻ കഴിയും.

WSDL 2.0 സന്ദേശ ഉള്ളടക്കം വിവരിക്കുന്നതിന് ഒന്നിലധികം തരം സിസ്റ്റങ്ങളെ പിന്തുണയ്ക്കുന്നു, എന്നാൽ XML സ്കീമ മാത്രമാണ് ഉപയോഗത്തിലുള്ളത്. ഈ വിഭാഗം XML സ്കീമയുടെ വിശദാംശങ്ങൾ ഉൾക്കൊള്ളുന്നില്ല. WSDL 1.1 പോലെയുള്ള മറ്റ് പല ആപ്ലിക്കേഷനുകളിലും XML സ്കീമ ഉപയോഗിക്കുന്നു, അതിനെക്കുറിച്ച് ധാരാളം നല്ല ലേഖനങ്ങളുണ്ട്. ബുക്ക് ലിസ്റ്റ് REST വെബ് സേവനത്തിനായി XML സ്കീമ എങ്ങനെ ഉപയോഗിക്കാമെന്നും ഒരു സ്കീമ ആട്രിബ്യൂട്ട് വ്യാഖ്യാനിക്കാൻ WSDL 2.0 നിർവ്വചിച്ച അധിക ആട്രിബ്യൂട്ടുകൾ എങ്ങനെ ഉപയോഗിക്കാമെന്നും ഈ വിഭാഗം എടുത്തുകാണിക്കുന്നു.

WSDL 2.0 പല തരത്തിലുള്ള ഡെഫനിഷൻ സിസ്റ്റങ്ങളെ പിന്തുണയ്ക്കുന്നു, എന്നാൽ പ്രായോഗികമായി XML സ്കീമ മാത്രമേ ഉപയോഗിക്കുന്നുള്ളൂ. ഈ ലേഖനം XML സ്കീമയെക്കുറിച്ച് വിശദമായി പറയുന്നില്ല. WSDL 1.1 പോലെയുള്ള മറ്റ് പല ആപ്ലിക്കേഷനുകളിലും XML സ്കീമ ഉപയോഗിക്കുന്നു, കൂടാതെ ധാരാളം ഉണ്ട് നല്ല ലേഖനങ്ങൾഅവനെ കുറിച്ച്. (). ഒരു ബുക്ക് ലിസ്റ്റ് REST സേവനത്തിൻ്റെ ഒരു പ്രത്യേക ഉദാഹരണവുമായി ബന്ധപ്പെട്ട് XML സ്കീമയുടെ ഉപയോഗവും സ്കീമ ആട്രിബ്യൂട്ട് വ്യാഖ്യാനത്തിനായി WSDL 2.0-ൽ നിർവചിച്ചിരിക്കുന്ന അധിക ആട്രിബ്യൂട്ടുകളുടെ ഉപയോഗവും ഈ വിഭാഗം കാണിക്കുന്നു.

ഒരു പുസ്തക ലിസ്റ്റിനായി 2 സന്ദേശങ്ങൾ വിവരിക്കുന്നതിന്, നിങ്ങൾ 2 ആഗോള ഘടകങ്ങൾ വിവരിക്കേണ്ടതുണ്ട്.

  • getBookListഇൻപുട്ട് സന്ദേശത്തെ പ്രതിനിധീകരിക്കുന്നു. സേവനത്തിനായി അനുവദിച്ചിരിക്കുന്ന ഓരോ അഭ്യർത്ഥന പാരാമീറ്ററും ഉൾപ്പെടെ, ഘടകങ്ങളുടെ ഒരു ശ്രേണി ഇതിൽ അടങ്ങിയിരിക്കുന്നു: അധികാരം, ശീർഷകം, പ്രസാധകൻ, വിഷയംഒപ്പം ഭാഷ. ഇൻ്റർഫേസ് പ്രവർത്തനത്തിനായി IRI ശൈലി തിരഞ്ഞെടുത്തിരിക്കുന്നതിനാൽ, getBookList സന്ദേശത്തിനുള്ളിൽ ഘടകങ്ങൾ മാത്രമേ ഉപയോഗിക്കാൻ കഴിയൂ.
  • പുസ്തകപട്ടികഔട്ട്പുട്ട് സന്ദേശത്തെ പ്രതിനിധീകരിക്കുന്നു. അതിൽ പുസ്തക ഘടകങ്ങളുടെ ഒരു ശ്രേണി അടങ്ങിയിരിക്കുന്നു. ഓരോ പുസ്തക ഘടകത്തിലും തലക്കെട്ടും url ആട്രിബ്യൂട്ടുകളും അടങ്ങിയിരിക്കുന്നു. തലക്കെട്ട് ആട്രിബ്യൂട്ട് സ്വയം വിശദീകരിക്കുന്നതാണ്. തിരികെ നൽകുന്ന പുസ്തക വിശദാംശ സേവനത്തിലേക്കുള്ള ഒരു ലിങ്കാണ് url ആട്രിബ്യൂട്ട് പൂർണമായ വിവരംഒരു പ്രത്യേക പുസ്തകത്തെക്കുറിച്ച്.

നിങ്ങളുടെ url ആട്രിബ്യൂട്ട് നിർവചനം WSDL എക്സ്റ്റൻഷൻ നെയിംസ്പേസിൽ നിന്ന് 2 ആട്രിബ്യൂട്ടുകൾ ഉപയോഗിക്കുന്നു. wsdlx:interface, wsdlx:ബൈൻഡിംഗ് ആട്രിബ്യൂട്ടുകൾ സേവനത്തിനായുള്ള ഇൻ്റർഫേസും ബൈൻഡിംഗും വ്യക്തമാക്കുന്നു. സേവനം സ്വയമേവ കണ്ടെത്തുന്നതിന് സോഫ്റ്റ്‌വെയറിന് ഈ വിവരങ്ങൾ ഉപയോഗിക്കാം. ഈ ആട്രിബ്യൂട്ടുകൾ ഉപയോഗിക്കുന്നതിന്, ഘടകത്തിനായുള്ള WSDL എക്സ്റ്റൻഷൻസ് നെയിംസ്പേസ് വ്യക്തമാക്കുക സ്കീമ. WSDL 2.0 വിവരണത്തിൽ നിന്ന് പുസ്തകത്തിൻ്റെ വിശദാംശങ്ങളുടെ നെയിംസ്പേസും ഉൾപ്പെടുത്തുക.

ബുക്ക് ലിസ്റ്റ് സേവനത്തിനായുള്ള XML സ്കീമ ചുവടെ നൽകിയിരിക്കുന്നു.

പുസ്തക ലിസ്റ്റ് സേവനത്തിനായുള്ള അഭ്യർത്ഥന ഘടകം. ബുക്ക് ലിസ്റ്റ് സേവനത്തിനുള്ള പ്രതികരണ ഘടകം.

ഇൻപുട്ട്, ഔട്ട്പുട്ട് ഘടകങ്ങൾ റഫറൻസ് ചെയ്യുന്നതിന്, നിങ്ങളുടെ WSDL പ്രമാണത്തിലേക്ക് സ്കീമ ഇറക്കുമതി ചെയ്യണം. സ്‌കീമ ഇമ്പോർട്ടുചെയ്യാൻ, ചുവടെയുള്ള ലിസ്റ്റിംഗിൽ കാണിച്ചിരിക്കുന്ന തരത്തിൽ തരം വിഭാഗത്തിലെ സ്‌കീമ ഇറക്കുമതി ഘടകം ഉപയോഗിക്കുക. കൂടാതെ, ഇൻ്റർഫേസ് ഓപ്പറേഷൻ ഇൻപുട്ട്, ഔട്ട്പുട്ട് എലമെൻ്റുകളിലെ getBookList, Booklist ഘടകങ്ങൾ എന്നിവയിലേക്ക് നിങ്ങൾ റഫറൻസുകൾ ചേർക്കേണ്ടതുണ്ട്, കൂടാതെ WSDL റൂട്ട് എലമെൻ്റിലേക്ക് ബുക്ക് ലിസ്റ്റ് XML സ്കീമ നെയിംസ്പേസുകൾ ചേർക്കുകയും വേണം.

ബുക്ക് ലിസ്റ്റ് വെബ് സേവനത്തിനായി WSDL തയ്യാറാണ്.

പുസ്‌തക വിവരങ്ങൾ നേടുന്നതിനുള്ള സാമ്പിൾ ബുക്ക്‌സ്റ്റോർ സേവന ലിസ്റ്റിംഗിൻ്റെ WSDL 2.0 വിവരണമാണിത്. ഈ പ്രവർത്തനം പുസ്തകങ്ങളുടെ ഒരു ലിസ്റ്റ് നൽകുന്നു. ബുക്ക് ലിസ്റ്റ് സേവനത്തിനായുള്ള RESTful HTTP ബൈൻഡിംഗ്. പുസ്തകശാലയുടെ പുസ്തക പട്ടിക സേവനം.

വിവർത്തകൻ്റെ കുറിപ്പ്

സംഗ്രഹവും ലിങ്കുകളും വിവർത്തനം ചെയ്യാതിരിക്കാനുള്ള സ്വാതന്ത്ര്യം ഞാൻ എടുത്തു. രണ്ടിനും രചയിതാവിനെ കാണുക. യഥാർത്ഥ ലേഖനത്തിൽ. യഥാർത്ഥ ഭാഷ വളരെ ബുദ്ധിമുട്ടാണെന്ന് ഞാൻ പറയണം. എന്നിരുന്നാലും, ലേഖനം ഉപയോഗപ്രദമാകുമെന്ന് ഞാൻ പ്രതീക്ഷിക്കുന്നു.

വിഷയത്തിൻ്റെ പേര് ശരിക്കും ഒരു ചോദ്യമാണ്, കാരണം... അത് എന്താണെന്ന് എനിക്കറിയില്ല, ഈ ലേഖനത്തിൻ്റെ ചട്ടക്കൂടിനുള്ളിൽ ഞാൻ ആദ്യമായി പ്രവർത്തിക്കാൻ ശ്രമിക്കും. ചുവടെ അവതരിപ്പിച്ചിരിക്കുന്ന കോഡ് പ്രവർത്തിക്കുമെന്ന് എനിക്ക് ഉറപ്പുനൽകാൻ കഴിയുന്ന ഒരേയൊരു കാര്യം, എന്നാൽ എൻ്റെ ശൈലികൾ ഇതെല്ലാം ഞാൻ എങ്ങനെ മനസ്സിലാക്കുന്നു എന്നതിനെക്കുറിച്ചുള്ള അനുമാനങ്ങളും ഊഹങ്ങളും മാത്രമായിരിക്കും. അതിനാൽ, നമുക്ക് പോകാം ...

ആമുഖം

എന്തുകൊണ്ടാണ് വെബ് സേവനങ്ങൾ എന്ന ആശയം സൃഷ്ടിക്കപ്പെട്ടത് എന്നതിൽ നിന്ന് നമ്മൾ ആരംഭിക്കേണ്ടതുണ്ട്. ഈ ആശയം ലോകത്ത് പ്രത്യക്ഷപ്പെട്ട സമയമായപ്പോഴേക്കും, ആപ്ലിക്കേഷനുകളെ വിദൂരമായി സംവദിക്കാൻ അനുവദിക്കുന്ന സാങ്കേതികവിദ്യകൾ നിലവിലുണ്ടായിരുന്നു, അവിടെ ഒരു പ്രോഗ്രാമിന് മറ്റൊരു പ്രോഗ്രാമിൽ ചില രീതികൾ വിളിക്കാം, അത് മറ്റൊരു നഗരത്തിലോ രാജ്യത്തിലോ സ്ഥിതി ചെയ്യുന്ന ഒരു കമ്പ്യൂട്ടറിൽ സമാരംഭിക്കാനാകും. ഇതെല്ലാം RPC (റിമോട്ട് പ്രൊസീജർ കോളിംഗ്) എന്ന് ചുരുക്കിയിരിക്കുന്നു. ഉദാഹരണങ്ങളിൽ CORBA സാങ്കേതികവിദ്യകൾ, ജാവ - RMI (റിമോട്ട് മെത്തേഡ് ഇൻവോക്കിംഗ്) എന്നിവ ഉൾപ്പെടുന്നു. അവയിൽ എല്ലാം നല്ലതാണെന്ന് തോന്നുന്നു, പ്രത്യേകിച്ച് കോർബയിൽ, കാരണം... ഏത് പ്രോഗ്രാമിംഗ് ഭാഷയിലും നിങ്ങൾക്ക് ഇത് ഉപയോഗിച്ച് പ്രവർത്തിക്കാൻ കഴിയും, പക്ഷേ ഇപ്പോഴും എന്തോ നഷ്‌ടമായിരുന്നു. കോർബയുടെ പോരായ്മ അത് അതിൻ്റേതായ ചിലതിലൂടെ പ്രവർത്തിക്കുന്നു എന്നതാണ് നെറ്റ്‌വർക്ക് പ്രോട്ടോക്കോളുകൾഇതിനുപകരമായി ലളിതമായ HTTP, ഏത് ഫയർവാളിലൂടെയും യോജിക്കും. എച്ച്ടിടിപി പാക്കറ്റുകളിൽ ചേർക്കുന്ന ഒരു ആർപിസി സൃഷ്ടിക്കുക എന്നതായിരുന്നു വെബ് സേവനത്തിൻ്റെ ആശയം. അങ്ങനെ സ്റ്റാൻഡേർഡിൻ്റെ വികസനം ആരംഭിച്ചു. ഈ മാനദണ്ഡത്തിൻ്റെ അടിസ്ഥാന ആശയങ്ങൾ എന്തൊക്കെയാണ്:
  1. സോപ്പ്. ഒരു വിദൂര നടപടിക്രമം വിളിക്കുന്നതിന് മുമ്പ്, SOAP ഫോർമാറ്റിലുള്ള ഒരു XML ഫയലിൽ നിങ്ങൾ ഈ കോൾ വിവരിക്കേണ്ടതുണ്ട്. സോപ്പ് പലതിൽ ഒന്ന് മാത്രമാണ് XML മാർക്ക്അപ്പ്, ഇത് വെബ് സേവനങ്ങളിൽ ഉപയോഗിക്കുന്നു. HTTP വഴി നമ്മൾ എവിടെയെങ്കിലും അയയ്‌ക്കാൻ ആഗ്രഹിക്കുന്നതെല്ലാം ആദ്യം ഒരു XML SOAP വിവരണത്തിലേക്ക് പരിവർത്തനം ചെയ്യപ്പെടുന്നു, തുടർന്ന് ഒരു HTTP പാക്കറ്റിലേക്ക് നിറച്ച് TCP/IP വഴി നെറ്റ്‌വർക്കിലെ മറ്റൊരു കമ്പ്യൂട്ടറിലേക്ക് അയയ്ക്കുന്നു.
  2. WSDL. ഒരു വെബ് സേവനം ഉണ്ട്, അതായത്. വിദൂരമായി വിളിക്കാവുന്ന ഒരു പ്രോഗ്രാം. എന്നാൽ സ്റ്റാൻഡേർഡ് ഈ പ്രോഗ്രാമിനൊപ്പം "അതെ, നിങ്ങൾ പറഞ്ഞത് ശരിയാണ് - ഇത് ശരിക്കും ഒരു വെബ് സേവനമാണ്, നിങ്ങൾക്ക് അതിൽ നിന്ന് അത്തരം രീതികളും അത്തരം രീതികളും വിളിക്കാം" എന്ന് പറയുന്ന ഒരു വിവരണം ആവശ്യമാണ്. ഈ വിവരണം മറ്റൊരു XML ഫയൽ പ്രതിനിധീകരിക്കുന്നു, അതിന് മറ്റൊരു ഫോർമാറ്റ് ഉണ്ട്, അതായത് WSDL. ആ. WSDL എന്നത് ഒരു വെബ് സേവനത്തെ വിവരിക്കുന്ന ഒരു XML ഫയൽ മാത്രമാണ്, അതിൽ കൂടുതലൊന്നുമില്ല.
എന്തിനാണ് ഇത്രയും ചുരുക്കി ചോദിക്കുന്നത്? നിങ്ങൾക്ക് കൂടുതൽ വ്യക്തമായി പറയാൻ കഴിയില്ലേ? ഇത് സാധ്യമാണ്, പക്ഷേ ഇത് ചെയ്യുന്നതിന് നിങ്ങൾ T. Mashnin, "Java Web Services" പോലുള്ള പുസ്തകങ്ങളിലേക്ക് തിരിയേണ്ടിവരും. അവിടെ, ആദ്യത്തെ 200 പേജുകളിൽ, SOAP, WSDL മാനദണ്ഡങ്ങളുടെ ഓരോ ടാഗിൻ്റെയും വിശദമായ വിവരണം ഉണ്ട്. ഇത് ചെയ്യുന്നത് മൂല്യവത്താണോ? എൻ്റെ അഭിപ്രായത്തിൽ, ഇല്ല, കാരണം ... ഇതെല്ലാം ജാവയിൽ യാന്ത്രികമായി സൃഷ്ടിക്കപ്പെടുന്നു, കൂടാതെ വിദൂരമായി വിളിക്കപ്പെടുന്ന രീതികളുടെ ഉള്ളടക്കങ്ങൾ മാത്രം നിങ്ങൾ എഴുതേണ്ടതുണ്ട്. അതിനാൽ, JAX-RPC പോലുള്ള ഒരു API ജാവയിൽ പ്രത്യക്ഷപ്പെട്ടു. ആർക്കെങ്കിലും അറിയില്ലെങ്കിൽ, ജാവയ്ക്ക് അത്തരമൊരു എപിഐ ഉണ്ടെന്ന് പറയുമ്പോൾ, സംശയാസ്പദമായ സാങ്കേതികവിദ്യയെ ഉൾക്കൊള്ളുന്ന ഒരു കൂട്ടം ക്ലാസുകളുള്ള ഒരു പാക്കേജ് ഉണ്ടെന്നാണ് അർത്ഥമാക്കുന്നത്. JAX-RPC കാലക്രമേണ പതിപ്പിൽ നിന്ന് പതിപ്പിലേക്ക് പരിണമിക്കുകയും ഒടുവിൽ JAX-WS ആയി മാറുകയും ചെയ്തു. WS വ്യക്തമായും WebService-നെ സൂചിപ്പിക്കുന്നു, മാത്രമല്ല ഇത് RPC-യുടെ പേരുമാറ്റം മാത്രമാണെന്ന് നിങ്ങൾ കരുതിയേക്കാം. ഇത് ശരിയല്ല, കാരണം ഇപ്പോൾ വെബ് സേവനങ്ങൾ യഥാർത്ഥ ആശയത്തിൽ നിന്ന് മാറി, വിദൂര രീതികളെ വിളിക്കാൻ മാത്രമല്ല, SOAP ഫോർമാറ്റിൽ പ്രമാണ സന്ദേശങ്ങൾ അയയ്‌ക്കാനും നിങ്ങളെ അനുവദിക്കുന്നു. എന്തുകൊണ്ടാണ് ഇത് ഇതുവരെ ആവശ്യമെന്ന് എനിക്കറിയില്ല; ഇവിടെ ഉത്തരം "ആവശ്യമെങ്കിൽ" എന്നായിരിക്കാൻ സാധ്യതയില്ല. കൂടുതൽ പരിചയസമ്പന്നരായ സഖാക്കളിൽ നിന്ന് പഠിക്കാൻ ഞാൻ ആഗ്രഹിക്കുന്നു. അവസാനമായി, RESTful വെബ് സേവനങ്ങൾ എന്ന് വിളിക്കപ്പെടുന്നവയ്ക്കായി JAX-RS പ്രത്യക്ഷപ്പെട്ടു, എന്നാൽ ഇത് ഒരു പ്രത്യേക ലേഖനത്തിൻ്റെ വിഷയമാണ്. ആമുഖം ഇവിടെ അവസാനിപ്പിക്കാം, കാരണം... അടുത്തതായി നമ്മൾ JAX-WS-നൊപ്പം പ്രവർത്തിക്കാൻ പഠിക്കും.

പൊതുവായ സമീപനം

വെബ് സേവനങ്ങളിൽ എല്ലായ്പ്പോഴും ഒരു ക്ലയൻ്റും സെർവറും ഉണ്ട്. സെർവർ ഞങ്ങളുടെ വെബ് സേവനമാണ്, ഇതിനെ ചിലപ്പോൾ എൻഡ്‌പോയിൻ്റ് എന്ന് വിളിക്കുന്നു (ക്ലയൻ്റിൽനിന്നുള്ള SOAP സന്ദേശങ്ങൾ എത്തിച്ചേരുന്ന അവസാന പോയിൻ്റ് പോലെ). ഞങ്ങൾ ഇനിപ്പറയുന്നവ ചെയ്യേണ്ടതുണ്ട്:
  1. ഞങ്ങളുടെ വെബ് സേവനത്തിൻ്റെ ഇൻ്റർഫേസ് വിവരിക്കുക
  2. ഈ ഇൻ്റർഫേസ് നടപ്പിലാക്കുക
  3. ഞങ്ങളുടെ വെബ് സേവനം സമാരംഭിക്കുക
  4. ഒരു ക്ലയൻ്റ് എഴുതി വിദൂരമായി വിളിക്കുക ആവശ്യമുള്ള രീതിവെബ് സേവനം
വെബ് സേവനം ആരംഭിക്കാം വ്യത്യസ്ത വഴികൾ: ഒന്നുകിൽ ഒരു പ്രധാന രീതി ഉപയോഗിച്ച് ഒരു ക്ലാസ് വിവരിക്കുകയും വെബ് സേവനം നേരിട്ട് ഒരു സെർവറായി പ്രവർത്തിപ്പിക്കുകയും ചെയ്യുക, അല്ലെങ്കിൽ അത് ടോംകാറ്റ് അല്ലെങ്കിൽ മറ്റേതെങ്കിലും സെർവറിലേക്ക് വിന്യസിക്കുക. രണ്ടാമത്തെ കാര്യത്തിൽ, ഞങ്ങൾ സ്വയം ലോഞ്ച് ചെയ്യുന്നില്ല പുതിയ സെർവർഞങ്ങൾ കമ്പ്യൂട്ടറിൽ മറ്റൊരു പോർട്ട് തുറക്കില്ല, പക്ഷേ ടോംകാറ്റ് സെർവ്‌ലെറ്റ് കണ്ടെയ്‌നറിനോട് "ഞങ്ങൾ ഇവിടെ വെബ് സേവന ക്ലാസുകൾ എഴുതിയിട്ടുണ്ട്, ദയവായി അവ പ്രസിദ്ധീകരിക്കുക, അതുവഴി നിങ്ങളെ ബന്ധപ്പെടുന്ന എല്ലാവർക്കും ഞങ്ങളുടെ വെബ് സേവനം ഉപയോഗിക്കാനാകും." വെബ് സേവനം ആരംഭിക്കുന്ന രീതി പരിഗണിക്കാതെ തന്നെ, ഞങ്ങൾക്ക് ഒരേ ക്ലയൻ്റ് ഉണ്ടായിരിക്കും.

സെർവർ

നമുക്ക് IDEA സമാരംഭിച്ച് ഒരു പുതിയ പ്രോജക്റ്റ് സൃഷ്ടിക്കാം പുതിയ പ്രോജക്റ്റ് സൃഷ്ടിക്കുക. നമുക്ക് പേര് സൂചിപ്പിക്കാം HelloWebServiceബട്ടൺ അമർത്തുക അടുത്തത്, തുടർന്ന് ബട്ടൺ പൂർത്തിയാക്കുക. ഫോൾഡറിൽ srcനമുക്ക് ഒരു പാക്കേജ് ഉണ്ടാക്കാം ru.javarush.ws. ഈ പാക്കേജിൽ നമ്മൾ HelloWebService ഇൻ്റർഫേസ് ഉണ്ടാക്കും: പാക്കേജ് ru. ജവരുഷ്. ws; // ഇവ വ്യാഖ്യാനങ്ങളാണ്, അതായത്. ഞങ്ങളുടെ ക്ലാസുകളും രീതികളും അടയാളപ്പെടുത്തുന്നതിനുള്ള ഒരു മാർഗം, // വെബ് സേവന സാങ്കേതികവിദ്യയുമായി ബന്ധപ്പെട്ടിരിക്കുന്നു javax ഇറക്കുമതി ചെയ്യുക. jws. WebMethod; javax ഇറക്കുമതി ചെയ്യുക. jws. വെബ് സേവനം; javax ഇറക്കുമതി ചെയ്യുക. jws. സോപ്പ്. SOAP ബൈൻഡിംഗ്; // ഞങ്ങളുടെ ഇൻ്റർഫേസ് ഒരു വെബ് സേവനമായി പ്രവർത്തിക്കുമെന്ന് ഞങ്ങൾ പറയുന്നു@വെബ് സേവനം // കോൾ രീതികൾക്കായി വെബ് സേവനം ഉപയോഗിക്കുമെന്ന് ഞങ്ങൾ പറയുന്നു@SOAPBinding (style = SOAPBinding. Style. RPC) പൊതു ഇൻ്റർഫേസ് HelloWebService ( // ഈ രീതി വിദൂരമായി വിളിക്കാമെന്ന് ഞങ്ങൾ പറയുന്നു@WebMethod public String getHelloString(സ്ട്രിംഗ് നാമം) ; ) ഈ കോഡിൽ, WebService, WebMethod ക്ലാസുകൾ വ്യാഖ്യാനങ്ങൾ എന്ന് വിളിക്കപ്പെടുന്നവയാണ്, ഞങ്ങളുടെ ഇൻ്റർഫേസും അതിൻ്റെ രീതിയും ഒരു വെബ് സേവനമായി അടയാളപ്പെടുത്തുകയല്ലാതെ ഒന്നും ചെയ്യരുത്. SOAPBinding ക്ലാസിനും ഇത് ബാധകമാണ്. ഒരേയൊരു വ്യത്യാസം SOAPBinding എന്നത് പാരാമീറ്ററുകളുള്ള ഒരു വ്യാഖ്യാനമാണ്. IN ഈ സാഹചര്യത്തിൽവെബ് സേവനം ഡോക്യുമെൻ്റ് സന്ദേശങ്ങളിലൂടെയല്ല, മറിച്ച് ഒരു ക്ലാസിക് RPC ആയി പ്രവർത്തിക്കുമെന്ന് സൂചിപ്പിക്കുന്ന ഒരു മൂല്യത്തോടെയാണ് സ്റ്റൈൽ പാരാമീറ്റർ ഉപയോഗിക്കുന്നത്, അതായത്. ഒരു രീതി വിളിക്കാൻ. നമുക്ക് നമ്മുടെ ഇൻ്റർഫേസ് ലോജിക് നടപ്പിലാക്കുകയും ഞങ്ങളുടെ പാക്കേജിൽ ഒരു HelloWebServiceImpl ക്ലാസ് സൃഷ്ടിക്കുകയും ചെയ്യാം. വഴിയിൽ, Impl ഉപയോഗിച്ച് ഒരു ക്ലാസ് അവസാനിപ്പിക്കുന്നത് ജാവയിലെ ഒരു കൺവെൻഷനാണെന്ന് ഞാൻ ശ്രദ്ധിക്കുന്നു, അതിനനുസരിച്ച് ഇൻ്റർഫേസുകൾ നടപ്പിലാക്കുന്നത് നിയുക്തമാക്കിയിരിക്കുന്നു (Impl - നടപ്പിലാക്കൽ എന്ന വാക്കിൽ നിന്ന്, അതായത് നടപ്പിലാക്കൽ). ഇത് ഒരു ആവശ്യകതയല്ല, നിങ്ങൾക്ക് ആവശ്യമുള്ളതെന്തും ക്ലാസിന് പേരിടാൻ നിങ്ങൾക്ക് സ്വാതന്ത്ര്യമുണ്ട്, എന്നാൽ നല്ല പെരുമാറ്റത്തിന് അത് ആവശ്യമാണ്: പാക്കേജ് ru. ജവരുഷ്. ws; // ഇൻ്റർഫേസ് വിവരിക്കുമ്പോൾ അതേ വ്യാഖ്യാനം, javax ഇറക്കുമതി ചെയ്യുക. jws. വെബ് സേവനം; // എന്നാൽ ഇവിടെ ഇത് എൻഡ് പോയിൻ്റ് ഇൻ്റർഫേസ് പാരാമീറ്റർ ഉപയോഗിച്ചാണ് ഉപയോഗിക്കുന്നത്, // സൂചിപ്പിക്കുന്നത് പൂർണ്ണമായ പേര്ഞങ്ങളുടെ വെബ് സേവനത്തിൻ്റെ ഇൻ്റർഫേസ് ക്ലാസ്@WebService(endpointInterface= "ru.javarush.ws.HelloWebService") പൊതു ക്ലാസ് HelloWebServiceImpl HelloWebService നടപ്പിലാക്കുന്നു ( @Override public String getHelloString (സ്ട്രിംഗ് നാമം) ( // ആശംസകൾ തിരികെ നൽകുകതിരികെ "ഹലോ, " + പേര് + "!" ; ) ) നമുക്ക് നമ്മുടെ വെബ് സേവനം ഒരു സ്വതന്ത്ര സെർവറായി സമാരംഭിക്കാം, അതായത്. ഏതെങ്കിലും ടോംകാറ്റിൻ്റെയും ആപ്ലിക്കേഷൻ സെർവറുകളുടെയും പങ്കാളിത്തമില്ലാതെ (ഇത് ഒരു പ്രത്യേക ചർച്ചയ്ക്കുള്ള വിഷയമാണ്). ഇത് ചെയ്യുന്നതിന്, ഫോൾഡറിലെ പ്രോജക്റ്റ് ഘടനയിൽ srcനമുക്ക് ഒരു പാക്കേജ് ru.javarush.endpoint സൃഷ്ടിക്കാം, അതിൽ പ്രധാന രീതി ഉപയോഗിച്ച് ഞങ്ങൾ ഒരു HelloWebServicePublisher ക്ലാസ് സൃഷ്ടിക്കും: പാക്കേജ് ru. ജവരുഷ്. അവസാന പോയിൻ്റ്; // വെബ് സേവനങ്ങളുള്ള ഒരു വെബ് സെർവർ പ്രവർത്തിപ്പിക്കുന്നതിനുള്ള ക്ലാസ് javax ഇറക്കുമതി ചെയ്യുക. xml ws. അവസാന പോയിൻ്റ്; // ഞങ്ങളുടെ വെബ് സേവനത്തിൻ്റെ ക്ലാസ് ru ഇറക്കുമതി ചെയ്യുക. ജവരുഷ്. ws. HelloWebServiceImpl; പൊതു ക്ലാസ് HelloWebServicePublisher ( പൊതു സ്റ്റാറ്റിക് ശൂന്യ പ്രധാനം (സ്ട്രിംഗ്... ആർഗ്സ്) ( // 1986 പോർട്ടിൽ വെബ് സെർവർ ആരംഭിക്കുക // കൂടാതെ ആദ്യത്തെ ആർഗ്യുമെൻ്റിൽ വ്യക്തമാക്കിയ വിലാസത്തിലേക്ക്, // രണ്ടാമത്തെ ആർഗ്യുമെൻ്റിൽ പാസ്സായ വെബ് സേവനം ആരംഭിക്കുകഅവസാന പോയിൻ്റ്. പ്രസിദ്ധീകരിക്കുക( "http://localhost:1986/wss/hello", പുതിയ HelloWebServiceImpl () ); ) ) ഇനി നമുക്ക് ഈ ക്ലാസ് ക്ലിക്ക് ചെയ്ത് പ്രവർത്തിപ്പിക്കാം Shift+F10. കൺസോളിൽ ഒന്നും ദൃശ്യമാകില്ല, പക്ഷേ സെർവർ പ്രവർത്തിക്കുന്നു. നിങ്ങളുടെ ബ്രൗസറിൽ http://localhost:1986/wss/hello?wsdl എന്ന വരി ടൈപ്പ് ചെയ്തുകൊണ്ട് നിങ്ങൾക്ക് ഇത് സ്ഥിരീകരിക്കാൻ കഴിയും. തുറക്കുന്ന പേജ്, ഒരു വശത്ത്, ഞങ്ങളുടെ കമ്പ്യൂട്ടറിൽ (ലോക്കൽ ഹോസ്റ്റ്) പോർട്ട് 1986-ൽ പ്രവർത്തിക്കുന്ന ഒരു വെബ് സെർവർ (http://) ഉണ്ടെന്ന് തെളിയിക്കുന്നു, മറുവശത്ത്, ഞങ്ങളുടെ വെബ് സേവനത്തിൻ്റെ ഒരു WSDL വിവരണം കാണിക്കുന്നു. നിങ്ങൾ ആപ്ലിക്കേഷൻ നിർത്തുകയാണെങ്കിൽ, വെബ് സേവനത്തെപ്പോലെ വിവരണം ലഭ്യമല്ലാതാകും, അതിനാൽ ഞങ്ങൾ ഇത് ചെയ്യില്ല, പക്ഷേ ക്ലയൻ്റ് എഴുതുന്നതിലേക്ക് നീങ്ങുക.

കക്ഷി

പ്രോജക്റ്റ് ഫോൾഡറിൽ srcനമുക്ക് ഒരു പാക്കേജ് സൃഷ്ടിക്കാം ru.javarush.client , അതിൽ പ്രധാന രീതി ഉപയോഗിച്ച് HelloWebServiceClient ക്ലാസ്: പാക്കേജ് ru. ജവരുഷ്. കക്ഷി; // wsdl വിവരണവും അതിലൂടെയും ലഭിക്കേണ്ടതുണ്ട് // വെബ് സേവനത്തിൽ തന്നെ എത്തിച്ചേരുകജാവ ഇറക്കുമതി ചെയ്യുക. വല. URL; // ഒരു URL ഒബ്‌ജക്‌റ്റിൽ പ്രവർത്തിക്കുമ്പോൾ ഈ ഒഴിവാക്കൽ സംഭവിക്കുംജാവ ഇറക്കുമതി ചെയ്യുക. വല. തെറ്റായ യുആർഎൽഎക്സപ്ഷൻ; // wsdl വിവരണത്തോടൊപ്പം xml പാഴ്‌സ് ചെയ്യാനുള്ള ക്ലാസുകൾ // കൂടാതെ അതിലെ സേവന ടാഗിൽ എത്തുക javax ഇറക്കുമതി ചെയ്യുക. xml നെയിംസ്പേസ്. QName; javax ഇറക്കുമതി ചെയ്യുക. xml ws. സേവനം; // ഞങ്ങളുടെ വെബ് സേവനത്തിൻ്റെ ഇൻ്റർഫേസ് (ഞങ്ങൾക്ക് കൂടുതൽ ആവശ്യമാണ്) ru ഇറക്കുമതി ചെയ്യുക. ജവരുഷ്. ws. HelloWebService; പൊതു ക്ലാസ് HelloWebServiceClient ( പൊതു സ്റ്റാറ്റിക് ശൂന്യമായ മെയിൻ (സ്ട്രിംഗ് ആർഗ്സ്) MalformedURLexception ( // wsdl വിവരണത്തിലേക്ക് ഒരു ലിങ്ക് സൃഷ്ടിക്കുക URL url= പുതിയ URL ( "http://localhost:1986/wss/hello?wsdl") ; // WSDL വിവരണത്തിൻ്റെ ആദ്യ ടാഗിൽ ഞങ്ങൾ അടുത്ത കൺസ്ട്രക്റ്ററിൻ്റെ പാരാമീറ്ററുകൾ നോക്കുന്നു - നിർവചനങ്ങൾ // targetNamespace ആട്രിബ്യൂട്ടിലെ ആദ്യ ആർഗ്യുമെൻ്റ് നോക്കുക // നെയിം ആട്രിബ്യൂട്ടിലെ രണ്ടാമത്തെ ആർഗ്യുമെൻ്റ് നോക്കുക QName qname = പുതിയ QName ("http://ws.site/" , "HelloWebServiceImplService" ); // ഇപ്പോൾ നമുക്ക് wsdl വിവരണത്തിലെ സേവന ടാഗിൽ എത്താം,സേവന സേവനം = സേവനം. സൃഷ്ടിക്കുക (url, qname) ; // തുടർന്ന് അതിൽ നെസ്റ്റ് ചെയ്ത പോർട്ട് ടാഗ് വരെ, അങ്ങനെ // ഞങ്ങളിൽ നിന്ന് റിമോട്ട് ഒരു വെബ് സേവന ഒബ്ജക്റ്റിലേക്കുള്ള ഒരു ലിങ്ക് നേടുക HelloWebService ഹലോ = സേവനം. getPort(HelloWebService.class); // ഹൂറേ! നിങ്ങൾക്ക് ഇപ്പോൾ വിദൂര രീതിയിലേക്ക് വിളിക്കാംസിസ്റ്റം. പുറത്ത്. println (ഹലോ. getHelloString ("JavaRush") ); ) ) ലിസ്റ്റിംഗിലെ കോഡിന് ഞാൻ പരമാവധി അഭിപ്രായങ്ങൾ നൽകി. എനിക്ക് ഒന്നും ചേർക്കാനില്ല, അതിനാൽ നമുക്ക് പ്രവർത്തിപ്പിക്കാം (Shift+F10). കൺസോളിലെ വാചകം നമ്മൾ കാണണം: ഹലോ, JavaRush! നിങ്ങൾ അത് കണ്ടില്ലെങ്കിൽ, വെബ് സേവനം ആരംഭിക്കാൻ നിങ്ങൾ മറന്നിരിക്കാം.

ഉപസംഹാരം

ഈ വിഷയത്തിൽ അവതരിപ്പിച്ചു ചെറിയ ഉല്ലാസയാത്രവെബ് സേവനങ്ങളിലേക്ക്. ഒരിക്കൽ കൂടി, ഞാൻ എഴുതിയതിൽ ഭൂരിഭാഗവും അത് എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്നതിനെക്കുറിച്ചുള്ള എൻ്റെ ഊഹമാണ്, അതിനാൽ നിങ്ങൾ എന്നെ അമിതമായി വിശ്വസിക്കരുത്. എങ്കിൽ ഞാൻ നന്ദിയുള്ളവനായിരിക്കും അറിവുള്ള ആളുകൾഅവർ എന്നെ തിരുത്തും, കാരണം ഞാൻ എന്തെങ്കിലും പഠിക്കും. UPD.

WSDL (വെബ് സേവനങ്ങളുടെ വിവരണ ഭാഷ) പതിപ്പ് 1.1 2001 മാർച്ച് 15 ന് പ്രസിദ്ധീകരിച്ചു. WSDLഒരു നിർദ്ദിഷ്‌ട വെബ് സേവനം എങ്ങനെ ആക്‌സസ് ചെയ്യാം എന്നതിനെക്കുറിച്ചുള്ള വിവരങ്ങൾ അടങ്ങിയ സന്ദേശങ്ങൾ ഉപയോഗിച്ച് വെബ് സേവനങ്ങളെ വിവരിക്കാൻ ഉപയോഗിക്കുന്ന ഒരു XML-അടിസ്ഥാന ഫോർമാറ്റാണ്. WSDLവിപുലീകരിക്കാവുന്നത്, ഏത് സന്ദേശ ഫോർമാറ്റുകളോ നെറ്റ്‌വർക്ക് പ്രോട്ടോക്കോളുകളോ ഗതാഗതത്തിനായി ഉപയോഗിച്ചാലും സേവനങ്ങളും അവയുടെ സന്ദേശങ്ങളും വിവരിക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നു, എന്നിരുന്നാലും, SOAP 1.1, HTTP GET/POST, MIME എന്നിവയ്‌ക്കൊപ്പം WSDL 1.1 മിക്കപ്പോഴും ഉപയോഗിക്കുന്നു. എന്തുകൊണ്ടെന്നാല് WSDL SOAP-യുമായി സംയുക്തമായി വികസിപ്പിച്ചെടുത്തു, അതേ കമ്പനികളായ Microsoft, Ariba, IBM എന്നിവ അതിൻ്റെ വികസനത്തിൽ പങ്കാളികളായി. ഞങ്ങൾ പ്രമാണം പരിഗണിക്കുകയാണെങ്കിൽ WSDLഅവബോധപൂർവ്വം, അത് അനുവദിക്കുന്നു എന്ന് നമുക്ക് പറയാം 4 ചോദ്യങ്ങൾക്ക് ഉത്തരം നൽകുക:

1) നീ എന്ത് ചെയ്യുന്നു? ഈ ചോദ്യത്തിനുള്ള ഉത്തരം മനുഷ്യൻ്റെ ധാരണയ്ക്കും യന്ത്രം മനസ്സിലാക്കാവുന്ന രൂപത്തിനും അനുയോജ്യമായ ഒരു രൂപത്തിലാണ് നൽകിയിരിക്കുന്നത്. ടാഗിലുള്ള വ്യക്തിക്കുള്ള ഉത്തരം:<പേര്/>, <പ്രമാണീകരണം/>, കാറിന് -<സന്ദേശം/>, <പോയിൻ്റ് തരം>

2) ഏത് ഭാഷയാണ് നിങ്ങൾ സംസാരിക്കുന്നത്? (ഏത് തരങ്ങളാണ് നിങ്ങൾ ഉപയോഗിക്കുന്നത്?) ടാഗിൽ ഉത്തരം നൽകുക:<തരങ്ങൾ/>

3) ഞാൻ നിങ്ങളുമായി എങ്ങനെ ആശയവിനിമയം നടത്തും? (ക്ലയൻ്റ് എങ്ങനെ വെബ് സേവനം ആക്സസ് ചെയ്യും?): HTTP അല്ലെങ്കിൽ SMTP. ഉത്തരം അതിലുണ്ട്<ബന്ധിക്കുന്നു/>

4) എനിക്ക് നിങ്ങളെ എവിടെ കണ്ടെത്താനാകും? (എനിക്ക് ഈ വെബ് സേവനം എവിടെ കണ്ടെത്താനാകും അല്ലെങ്കിൽ അതിൻ്റെ URL എന്താണ്?). ഉത്തരം ഇതാണ്:<സേവനം/>

ഘടന:

ഓരോ WSDL പ്രമാണവും മൂന്ന് ലോജിക്കൽ ഭാഗങ്ങളായി വിഭജിക്കാം:

1. ഡാറ്റ തരങ്ങൾ നിർവചിക്കുന്നു - XML ​​സേവനം അയച്ചതും സ്വീകരിച്ചതുമായ സന്ദേശങ്ങളുടെ തരം നിർണ്ണയിക്കുന്നു

2. അമൂർത്തമായ പ്രവർത്തനങ്ങൾ - സന്ദേശങ്ങൾ ഉപയോഗിച്ച് ചെയ്യാൻ കഴിയുന്ന പ്രവർത്തനങ്ങളുടെ ലിസ്റ്റ്

3. സേവന ലിങ്കിംഗ് - സന്ദേശം കൈമാറുന്ന രീതി

പ്രമാണീകരണം WSDLസ്വമേധയാ സൃഷ്ടിക്കാൻ കഴിയും, എന്നാൽ ഭാഷ കർശനമായി ഔപചാരികമാക്കിയിരിക്കുന്നു WSDLഎഴുത്ത് പ്രക്രിയ ഓട്ടോമേറ്റ് ചെയ്യാൻ നിങ്ങളെ അനുവദിക്കുന്നു WSDL-രേഖകൾ. പല വെബ് സർവീസ് ഓതറിംഗ് ടൂളുകളിലും സ്വയമേവ സൃഷ്ടിക്കുന്ന യൂട്ടിലിറ്റികൾ അടങ്ങിയിരിക്കുന്നു WSDLറെഡിമെയ്ഡ് വെബ് സേവനങ്ങൾ വിവരിക്കുന്ന ഫയലുകൾ. ഉദാഹരണത്തിന്, Web Services Authoring Tool അപ്പാച്ചെ ആക്സിസ്ഒരു ക്ലാസ് അടങ്ങിയിരിക്കുന്നു Java2WSDL, ഉണ്ടാക്കുന്നു WSDL- ഒരു വെബ് സേവനത്തെ വിവരിക്കുന്ന ഒരു ജാവ ക്ലാസിൻ്റെ അല്ലെങ്കിൽ ഇൻ്റർഫേസിൻ്റെ ഒരു ഫയൽ. ഉൾപ്പെടുന്ന IBM WSTK പാക്കേജ് അച്ചുതണ്ട്, യൂട്ടിലിറ്റി അടങ്ങിയിരിക്കുന്നു java2wsdl, ഈ ക്ലാസിൽ നിന്ന് ഒരു ഒബ്ജക്റ്റ് സൃഷ്ടിക്കുകയും പ്രവർത്തിപ്പിക്കുകയും ചെയ്യുന്നു. കമാൻഡ് ലൈനിൽ നിന്നാണ് ഇത് പ്രവർത്തിക്കുന്നത്.

WSDL ഡോക്യുമെൻ്റ് ഘടകങ്ങൾ

ഏറ്റവും സാധാരണയായി ഉപയോഗിക്കുന്ന WSDL ടാഗുകൾ വിവരിക്കാം:

ടാഗ് ചെയ്യുക എല്ലാ WSDL പ്രമാണങ്ങളുടെയും റൂട്ട് ടാഗ് ആണ്. ഇത് നിരവധി നെയിംസ്പേസുകളെ നിർവചിക്കുന്നു:

1) ടാർഗെറ്റ് നെയിം സ്പേസ് ഞങ്ങളുടെ വെബ് സേവനത്തിൻ്റെ നെയിംസ്പേസ് ആണ്

2) xmlns - സാധാരണ WSDL ഡോക്യുമെൻ്റ് നെയിംസ്പേസ്

3)xmlns: SOAP_ENC – SOAP എൻകോഡിംഗിനെ വിവരിക്കാൻ ഉപയോഗിക്കുന്ന നെയിംസ്പേസ്


4) xmlns: impl, intf - ഞങ്ങളുടെ വെബ് സേവനത്തിൻ്റെ നടപ്പാക്കലിൻ്റെയും നിർവചനത്തിൻ്റെയും നെയിംസ്പേസ്

· വെബ് സർവീസ് ഡെഫനിഷൻ ഡോക്യുമെൻ്റ്

ഒരു വെബ് സേവനം നടപ്പിലാക്കുന്നതിനുള്ള പ്രമാണം

ലാളിത്യത്തിനായി, ചട്ടം പോലെ, അവർ എല്ലാ വിവരങ്ങളും ഉൾക്കൊള്ളുന്ന 1 ഫയൽ ഉപയോഗിക്കുന്നു

ഘടകം - ഒരു അവസാന പോയിൻ്റിൽ നിന്ന് മറ്റൊന്നിലേക്ക് കൈമാറുന്ന ഡാറ്റയെക്കുറിച്ചുള്ള വിവരങ്ങൾ നൽകുന്നു.

ഒരു RPC കോൾ വിവരിക്കുന്നതിന്, നിങ്ങൾ ഒരു ഇൻപുട്ട് സന്ദേശവും ഒരു ഔട്ട്പുട്ട് സന്ദേശവും സൃഷ്ടിക്കേണ്ടതുണ്ട്.

ഈ ഘടകത്തിനുള്ളിൽ, എലമെൻ്റ് ഉപയോഗിച്ച് നിങ്ങൾക്ക് രീതി പാരാമീറ്ററുകൾ വ്യക്തമാക്കാൻ കഴിയും

ഘടകം ഒരു വെബ് സേവനം പിന്തുണയ്ക്കുന്ന പ്രവർത്തനങ്ങളോ രീതികളോ വിവരിക്കുകയും നിർവചിക്കുകയും ചെയ്യുന്നു

പ്രവർത്തനങ്ങളിൽ ഇൻപുട്ട് സന്ദേശങ്ങളും പിശക് സന്ദേശങ്ങളും ഉണ്ടാകാം.

ഘടകം - ഒരു പോർട്ട് തരത്തിൽ വ്യക്തമാക്കിയ പ്രവർത്തനങ്ങൾ നെറ്റ്‌വർക്കിലൂടെ എങ്ങനെ കൈമാറുമെന്ന് വിവരിക്കുന്നു. കാരണം ഘടകം ഒരു പോർട്ട് തരം ഉപയോഗിക്കുന്നു, അത് ഡോക്യുമെൻ്റിൽ എവിടെയോ നേരത്തെ നിർവചിച്ച ഒരു തരം വ്യക്തമാക്കണം.

ഘടകം - വെബ് സേവനം എവിടെ കണ്ടെത്തണമെന്ന് സൂചിപ്പിക്കുന്നു

ഘടകം ഇറക്കുമതി . പ്രായോഗികതയുടെ കാരണങ്ങളാൽ മിക്കപ്പോഴും സേവന ഘടകം അതിൻ്റെ wsdl ഡോക്യുമെൻ്റിലേക്ക് അനുവദിച്ചിരിക്കുന്നു.

നിരവധി wsdl പ്രമാണങ്ങൾ ഒന്നായി സംയോജിപ്പിക്കാൻ അനുവദിക്കുന്നതിന്, ഇറക്കുമതി ഘടകം ഉപയോഗിക്കുന്നു. ഒരു wsdl പ്രമാണം മറ്റൊന്നിലേക്ക് ഉൾപ്പെടുത്താൻ ഇത് നിങ്ങളെ അനുവദിക്കുന്നു.

ഘടകം തരങ്ങൾ സ്റ്റാൻഡേർഡ് അല്ലെങ്കിൽ ട്രാൻസ്മിറ്റ് ചെയ്ത ഡാറ്റയുടെ തരങ്ങൾ വ്യക്തമാക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നു.

WSDL 4 പ്രവർത്തന രീതികളെ പിന്തുണയ്ക്കുന്നു:

· വൺ-വേ അല്ലെങ്കിൽ വൺ-വേ പ്രവർത്തനങ്ങൾ. സേവനം അവസാന പോയിൻ്റിലേക്ക് സന്ദേശം അയയ്‌ക്കുന്നു. ഈ സാഹചര്യത്തിൽ, പ്രവർത്തനം ഒരു ഇൻപുട്ട് സന്ദേശം മാത്രമേ വിവരിച്ചിട്ടുള്ളൂ.

· അഭ്യർത്ഥന-പ്രതികരണം - അഭ്യർത്ഥന-പ്രതികരണ മോഡ്. ഈ പ്രവർത്തന രീതി ഏറ്റവും സാധാരണമാണ്. ഈ മോഡിൽ, പ്രവർത്തന വിവരണത്തിൽ ഒരു ഇൻപുട്ട്, ഔട്ട്പുട്ട് സന്ദേശവും ഒരു ഓപ്ഷണൽ പിശക് സന്ദേശവും അടങ്ങിയിരിക്കുന്നു.

· അഭ്യർത്ഥന-പ്രതികരണ തരം പ്രവർത്തനം. ഈ മോഡിൽ, ഒരു എൻഡ് പോയിൻ്റ് മറ്റൊരു എൻഡ് പോയിൻ്റിൻ്റെ ക്ലയൻ്റാണ്. ഓപ്പറേഷൻ ഫോർമാറ്റ് അഭ്യർത്ഥന-പ്രതികരണ മോഡിന് സമാനമാണ്, എന്നാൽ ഇൻപുട്ട് ഡാറ്റയ്ക്ക് മുമ്പായി ഔട്ട്പുട്ട് ഡാറ്റ ലിസ്റ്റ് ചെയ്തിരിക്കുന്നു.

· പ്രവർത്തന അറിയിപ്പ്. ഈ മോഡ് വൺ-വേ ട്രാൻസ്മിഷൻ പ്രിമിറ്റീവിൻ്റെ മറ്റൊരു പതിപ്പാണ്, അതിൽ സന്ദേശം സ്വീകരിക്കുന്നതിനുപകരം എൻഡ് പോയിൻ്റ് അയയ്ക്കുന്നു. പ്രവർത്തനത്തിൽ ഒരു ഔട്ട്പുട്ട് സന്ദേശം മാത്രമേ അടങ്ങിയിട്ടുള്ളൂ.

ഇൻകമിംഗ് (3), ഔട്ട്‌ഗോയിംഗ് (4) പിശക് സന്ദേശങ്ങൾ (5) എന്നിവയ്ക്കായി ഒരു നിർദ്ദിഷ്ട വ്യാകരണം വ്യക്തമാക്കുന്നതിന് ബൈൻഡിംഗ് എക്സ്റ്റൻഷൻ ഘടകങ്ങൾ ഉപയോഗിക്കുന്നു. പ്രവർത്തന നില (2), ബൈൻഡിംഗ് ലെവൽ (1) വിവരങ്ങളും വ്യക്തമാക്കിയേക്കാം.

ഓപ്പറേഷൻ ബൈൻഡിംഗ് എലമെൻ്റിൽ അതേ പേരിലുള്ള പ്രവർത്തനത്തിനുള്ള ഡാറ്റ അടങ്ങിയിരിക്കുന്നു ബന്ധപ്പെട്ട തരംതുറമുഖം. എന്നിരുന്നാലും, പ്രവർത്തനത്തിൻ്റെ പേര് പൊതുവെ അദ്വിതീയമല്ല (ഉദാഹരണം: രീതികൾ / ഫംഗ്‌ഷനുകളുടെ ഓവർലോഡിംഗ് - വ്യത്യസ്ത ഒപ്പുകളുള്ള ഒരേ പേരുകൾ ഉപയോഗിക്കുന്നു), അതിനാൽ പോർട്ട് തരത്തിൻ്റെ ടാർഗെറ്റ് പ്രവർത്തനം അദ്വിതീയമായി നിർണ്ണയിക്കാൻ ഇത് മതിയാകില്ല. അത്തരം സന്ദർഭങ്ങളിൽ, നെയിം ആട്രിബ്യൂട്ട് ഉപയോഗിച്ച് ഉചിതമായ wsdl:input, wsdl:output എലമെൻ്റ് പേരുകൾ അധികമായി വ്യക്തമാക്കിക്കൊണ്ടാണ് ടാർഗെറ്റ് ഓപ്പറേഷൻ അഭിസംബോധന ചെയ്യുന്നത്.

ബൈൻഡിംഗ് വേണംഒരു പ്രോട്ടോക്കോൾ മാത്രം ഇൻസ്റ്റാൾ ചെയ്യുക.

ബൈൻഡിംഗ് പാടില്ലവിലാസ വിവരങ്ങൾ അടങ്ങിയിരിക്കുന്നു.

തുറമുഖം

ബന്ധിപ്പിക്കുന്നതിന് ഒരു വിലാസം സജ്ജീകരിച്ചുകൊണ്ട് ഒരു പോർട്ട് ഒരൊറ്റ എൻഡ് പോയിൻ്റിനെ നിർവചിക്കുന്നു.

  1. <wsdl:നിർവചനങ്ങൾ .... >
  2. <wsdl:സേവനം .... > *
  3. <wsdl:തുറമുഖംപേര് = "nmtoken" ബൈൻഡിംഗ് = "qname" > *
  4. <-- extensibility element (1) -->
  5. wsdl:തുറമുഖം>
  6. wsdl:സേവനം>
  7. wsdl:നിർവചനങ്ങൾ>

WSDL ഡോക്യുമെൻ്റിനുള്ളിലെ എല്ലാ പോർട്ടുകൾക്കിടയിലും നെയിം ആട്രിബ്യൂട്ട് ഒരു അദ്വിതീയ നാമം വ്യക്തമാക്കുന്നു. QName തരത്തിൻ്റെ ബൈൻഡിംഗ് ആട്രിബ്യൂട്ടിൽ ബൈൻഡിംഗിനെക്കുറിച്ചുള്ള ഒരു റഫറൻസ് അടങ്ങിയിരിക്കുന്നു (കാണുക).

വിലാസം വ്യക്തമാക്കാൻ വിപുലീകരണ ഘടകങ്ങൾ (1) ഉപയോഗിക്കുന്നു.

തുറമുഖം പാടില്ലഒന്നിലധികം വിലാസങ്ങൾ വ്യക്തമാക്കുക.

തുറമുഖം പാടില്ലഒരു വിലാസം ഒഴികെയുള്ള ഏതെങ്കിലും ബൈൻഡിംഗ് വിവരങ്ങൾ അടങ്ങിയിരിക്കുന്നു.

സേവനം

ഒരു സേവനം അനുബന്ധ പോർട്ടുകളുടെ ഒരു കൂട്ടം ബണ്ടിൽ ചെയ്യുന്നു.

  1. <wsdl:നിർവചനങ്ങൾ .... >
  2. <wsdl:സേവനംപേര് = "nmtoken" > *
  3. <wsdl:തുറമുഖം .... /> *
  4. wsdl:സേവനം>
  5. wsdl:നിർവചനങ്ങൾ>

WSDL ഡോക്യുമെൻ്റിനുള്ളിൽ നിർവചിച്ചിരിക്കുന്ന എല്ലാ സേവനങ്ങളിലും ഒരു അദ്വിതീയ നാമം നെയിം ആട്രിബ്യൂട്ട് വ്യക്തമാക്കുന്നു.

ഒരു സേവനത്തിനുള്ളിലെ പോർട്ടുകൾ ഇനിപ്പറയുന്ന രീതിയിൽ ബന്ധിപ്പിച്ചിരിക്കുന്നു:

  • പോർട്ടുകൾ പരസ്പരം ആശയവിനിമയം നടത്തുന്നില്ല (അതായത്, ഒരു പോർട്ടിൻ്റെ ഔട്ട്പുട്ട് മറ്റൊന്നിൻ്റെ ഇൻപുട്ട് അല്ല).
  • ഒരു സേവനത്തിന് പൊതുവായ പോർട്ട് തരം പങ്കിടുന്ന ഒന്നിലധികം പോർട്ടുകൾ ഉണ്ടെങ്കിലും വ്യത്യസ്ത ബൈൻഡിംഗുകൾ ഉപയോഗിക്കുന്നു അല്ലെങ്കിൽ വ്യത്യസ്ത വിലാസങ്ങൾ ഉണ്ടെങ്കിൽ, ആ പോർട്ടുകൾ ഇതര പോർട്ടുകളാണ്. അത്തരം ഓരോ പോർട്ടും യുക്തിപരമായി തുല്യമായ പെരുമാറ്റം നടപ്പിലാക്കുന്നു (അനുബന്ധ ബൈൻഡിംഗ് ചുമത്തിയ ഗതാഗത, സന്ദേശ ഫോർമാറ്റ് നിയന്ത്രണങ്ങൾക്കുള്ളിൽ). ഇത് അടിസ്ഥാനമാക്കി ആശയവിനിമയത്തിനായി ഒരു പ്രത്യേക പോർട്ട് തിരഞ്ഞെടുക്കാൻ ക്ലയൻ്റിനെ അനുവദിക്കുന്നു വിവിധ മാനദണ്ഡങ്ങൾ(ഗതാഗത പ്രോട്ടോക്കോൾ പിന്തുണ മുതലായവ).
  • പോർട്ടുകൾ നോക്കുന്നതിലൂടെ, ഏത് പോർട്ട് തരങ്ങളാണ് സേവനം പിന്തുണയ്ക്കുന്നതെന്ന് നിങ്ങൾക്ക് നിർണ്ണയിക്കാനാകും. ഈ ഡാറ്റയെ അടിസ്ഥാനമാക്കി, ഒരു നിർദ്ദിഷ്ട സേവനവുമായി സംവദിക്കാനുള്ള കഴിവ് ക്ലയൻ്റിന് നിർണ്ണയിക്കാനാകും. മുതലുള്ള പ്രവർത്തനങ്ങൾക്കിടയിൽ ഒരു ബന്ധം സൂചിപ്പിക്കുകയാണെങ്കിൽ ഇത് ഉപയോഗപ്രദമാണ് വത്യസ്ത ഇനങ്ങൾപോർട്ടുകൾ, ഒരു നിശ്ചിത ചുമതല നിർവഹിക്കുന്നതിന് എല്ലാവർക്കും സേവനത്തിൽ നിന്നുള്ള പിന്തുണ ആവശ്യമാണ് ആവശ്യമായ തരങ്ങൾതുറമുഖങ്ങൾ.
  1. 2001 മാർച്ച് 15-ലെ വെബ് സേവന വിവരണ ഭാഷ (WSDL) 1.1 എന്ന ഡോക്യുമെൻ്റിൻ്റെ സൗജന്യവും ഭാഗികവും വിപുലീകരിച്ചതുമായ വിവർത്തനമാണിത്.
  2. ലാറ്റിൻ ഭാഷയിൽ എഴുതിയിരിക്കുന്ന നിർവചിക്കാനാവാത്ത പദങ്ങൾ ഉപയോഗിച്ച് പ്രവർത്തിക്കുന്നത് അങ്ങേയറ്റം അസൗകര്യമാണ്, മാത്രമല്ല അവ അവ്യക്തമായി വിവർത്തനം ചെയ്യപ്പെടുകയും ചെയ്യുന്നു. അതിനാൽ, ഒരു പുതിയ പദം അവതരിപ്പിക്കുമ്പോൾ മാത്രമേ യഥാർത്ഥ പേര് നൽകൂ, തുടർന്ന് വാചകത്തിൽ റഷ്യൻ വിവർത്തനം ഉപയോഗിക്കുന്നു.

അദ്ധ്യായം 2-ൽ, സെർവറിൽ ഒരു വെബ് സേവനം സൃഷ്ടിച്ചതിന് ശേഷം, ഒരു സെർവറ്റ്, JSP പേജ്, JWS ഫയൽ, EJB അല്ലെങ്കിൽ മറ്റ് ഒബ്‌ജക്റ്റ്, നിങ്ങൾ ഒരു പ്ലാറ്റ്‌ഫോം-സ്വതന്ത്ര ഭാഷയിൽ വെബ് സേവനത്തിൻ്റെ ഘടനയും കഴിവുകളും വിവരിക്കണമെന്ന് ഞങ്ങൾ ചർച്ച ചെയ്തു. ഓപ്പറേറ്റിംഗ് സിസ്റ്റം, വെബ് സേവനം സൃഷ്ടിക്കാൻ ഉപയോഗിക്കുന്ന പ്രോഗ്രാമിംഗ് സിസ്റ്റം. ഈ വിവരണം ഒരു UDDI അല്ലെങ്കിൽ ebXML രജിസ്ട്രി പോലുള്ള ഇൻ്റർനെറ്റിൽ പൊതുവായി ആക്സസ് ചെയ്യാവുന്ന ഒരു ലൊക്കേഷനിൽ രജിസ്റ്റർ ചെയ്തിരിക്കുന്നു അല്ലെങ്കിൽ ഒരു വെബ് സേവന സെർവറിൽ സംഭരിച്ചിരിക്കുന്നു. വിവരണത്തിൽ വെബ് സേവനം നൽകുന്ന എല്ലാ സേവനങ്ങളെയും കുറിച്ചുള്ള പൂർണ്ണവും കൃത്യവുമായ വിവരങ്ങൾ, സേവനങ്ങൾ നേടുന്നതിനുള്ള രീതികൾ, സേവനത്തിനായുള്ള അഭ്യർത്ഥനയുടെ ഉള്ളടക്കം, നൽകിയിരിക്കുന്ന വിവരങ്ങളുടെ ഫോർമാറ്റ് എന്നിവ അടങ്ങിയിരിക്കണം.

വെബ് സേവനങ്ങളെ കൃത്യമായും ഏകീകൃതമായും വിവരിക്കുന്നതിനുള്ള ഒരു ഉപാധിയാണ് W3C കൺസോർഷ്യം സൃഷ്ടിച്ച WSDL ഭാഷ. ഈ ഭാഷ XML-ൻ്റെ മറ്റൊരു നിർവ്വഹണമാണ്. അതിൻ്റെ ഏറ്റവും പുതിയ ശുപാർശിത സ്പെസിഫിക്കേഷൻ എപ്പോഴും പേജിൽ പ്രസിദ്ധീകരിക്കും http://www.w3.org/TR/wsdI. പുസ്തകം എഴുതുന്ന സമയത്ത്, WSDL പതിപ്പ് 1.2 ആയിരുന്നു, അത് ഞങ്ങൾ ഈ അധ്യായത്തിൽ വിവരിക്കും.

ഒരു WSDL ഡോക്യുമെൻ്റിൻ്റെ രചന

XML പ്രമാണത്തിൻ്റെ മൂല ഘടകം - WSDL വിവരണം - മൂലകമാണ് . ഈ ഘടകത്തിൽ, വിവരണത്തിന് ഒരു പേര് നൽകാൻ നിങ്ങൾക്ക് ഓപ്ഷണൽ നെയിം ആട്രിബ്യൂട്ട് ഉപയോഗിക്കാം. വിവരണത്തിൽ ഉപയോഗിച്ചിരിക്കുന്ന നെയിംസ്പേസുകൾ പരിചയപ്പെടുത്തുന്നതിനുള്ള സൗകര്യപ്രദമായ സ്ഥലം കൂടിയാണിത്.

WSDL നിർവചനങ്ങൾ വിവിധ നെയിംസ്പേസുകൾ വിപുലമായി ഉപയോഗിക്കുന്നു. ശരിയായ പേരുകൾക്ക് പുറമേ, XSD സ്കീമ വിവരണ ഭാഷയുടെ തരങ്ങളുടെയും ഘടകങ്ങളുടെയും പേരുകളും (അധ്യായം 1 കാണുക) ഭാഷാ പേരുകളും WSDL പലപ്പോഴും ഉപയോഗിക്കുന്നു. SOAP പ്രോട്ടോക്കോൾ. ഡബ്ല്യുഎസ്ഡിഎൽ നെയിംസ്പേസിനെ സ്ഥിരസ്ഥിതി നെയിംസ്പേസ് എന്ന് വിശേഷിപ്പിക്കാറുണ്ട്. എഴുതുന്ന സമയത്ത് ഏറ്റവും പുതിയ WSDL 1.2 പതിപ്പിൻ്റെ നെയിംസ്പേസ് ഐഡൻ്റിഫയർ തുല്യമായിരുന്നു http://www.w3.org/2002/07/wsdl. ആട്രിബ്യൂട്ട് ഉപയോഗിച്ച് ഐഡൻ്റിഫയർ വ്യക്തമാക്കുന്ന ടാർഗെറ്റ് നെയിംസ്‌പേസ് സാധാരണയായി tns (ടാർഗെറ്റ് നെയിംസ്‌പെയ്‌സ്) ഉപയോഗിച്ച് പ്രിഫിക്‌സ് ചെയ്യുന്നു.

മൂല ഘടകത്തിലേക്ക് ആറ് അടിസ്ഥാന ഘടകങ്ങളുടെയും രണ്ട് അധിക തരങ്ങളുടെയും ഘടകങ്ങൾ ഉൾച്ചേർത്തിരിക്കുന്നു. എല്ലാ ഘടകങ്ങളും ഓപ്ഷണൽ ആണ്, എലമെൻ്റ് ഒഴികെ അവയിൽ എത്ര വേണമെങ്കിലും ഉണ്ടാകാം , ഒരു ഡോക്യുമെൻ്റിൽ ഒരിക്കൽ മാത്രമേ ദൃശ്യമാകൂ. ഓരോ ഘടകത്തിനും ഒരു പേരുണ്ട്, ആവശ്യമുള്ള നാമം ആട്രിബ്യൂട്ട് അനുസരിച്ച് നിർണ്ണയിക്കപ്പെടുന്നു. ഈ പേരുകൾ ഉപയോഗിച്ച് ഘടകങ്ങൾ പരസ്പരം പരാമർശിക്കുന്നു. റൂട്ട് മൂലകത്തിൽ കൂടുകൂട്ടിയ മൂലകങ്ങൾ ഇതാ

? - XSD അല്ലെങ്കിൽ മറ്റൊരു തരം നിർവചന ഭാഷ ഉപയോഗിച്ച് വെബ് സേവനം ഉപയോഗിക്കുന്ന സങ്കീർണ്ണ തരങ്ങൾ നിർവചിക്കുന്നു. വെബ് സേവനം മാത്രം ഉപയോഗിക്കുകയാണെങ്കിൽ ഈ ഘടകം ആവശ്യമില്ല ലളിതമായ തരങ്ങൾ, XSD ഭാഷയിൽ വിവരിച്ചിരിക്കുന്നു.

? - ഓരോ SOAP സന്ദേശവും വിവരിക്കുന്നു: അഭ്യർത്ഥന, പ്രതികരണം, പ്രമാണ കൈമാറ്റം. ഈ മൂലകത്തിൽ ഘടകങ്ങൾ അടങ്ങിയിരിക്കുന്നു WSDL-ൻ്റെ വീക്ഷണകോണിൽ നിന്ന് അവിഭാജ്യമായ സന്ദേശത്തിൻ്റെ ഭാഗങ്ങൾ വിവരിക്കുന്നു. നടപടിക്രമപരമായ തരത്തിലുള്ള സന്ദേശങ്ങൾക്കായി, ഓരോ ഘടകങ്ങളും ഒരൊറ്റ അഭ്യർത്ഥന ആർഗ്യുമെൻ്റിൻ്റെ പേരും തരവും അല്ലെങ്കിൽ റിട്ടേൺ മൂല്യത്തിൻ്റെ തരവും വിവരിക്കാൻ കഴിയും. പ്രമാണ തരം സന്ദേശങ്ങൾ, ഘടകങ്ങൾ "മൾട്ടിപാർട്ട്/അനുബന്ധം" എന്ന സന്ദേശത്തിൻ്റെ ഓരോ ഭാഗവും വിവരിക്കാം. ഈ അമൂർത്ത വിവരണം പിന്നീട് ഘടകങ്ങളാൽ മാംസളമാക്കുന്നു .

? ഒരു വെബ് സേവനത്തിൻ്റെ ഇൻ്റർഫേസ് വിവരിക്കുന്നു, WSDL-ൽ ഒരു സന്ദേശത്തിൻ്റെ എൻഡ് പോയിൻ്റ് അല്ലെങ്കിൽ പോർട്ട് ഓഫ് അറൈവൽ എന്ന് വിളിക്കുന്നു. WSDL-ൽ ഓപ്പറേഷൻസ് എന്ന് വിളിക്കപ്പെടുന്ന ഒരു കൂട്ടം വെബ് സേവനങ്ങൾ എന്നാണ് ഇതിനെ വിവരിക്കുന്നത്. ഈ വിവരണം ഒരു പ്രോഗ്രാമിംഗ് ഭാഷയിലേക്ക് വിവർത്തനം ചെയ്യുന്നതിലൂടെ, പോർട്ട് ജാവ ഇൻ്റർഫേസിലേക്ക് നന്നായി മാപ്പ് ചെയ്യുന്നതായി നിങ്ങൾക്ക് കാണാൻ കഴിയും, കൂടാതെ ഓരോ പ്രവർത്തനവും ഈ ഇൻ്റർഫേസിലെ ഒരു രീതിയിലേക്ക് നന്നായി മാപ്പ് ചെയ്യുന്നു. നെസ്റ്റഡ് ഘടകങ്ങളാൽ പ്രവർത്തനങ്ങൾ വിവരിക്കുന്നു , ഓരോ വ്യക്തിഗത സേവനവും വിവരിക്കുന്നു. നാല് തരങ്ങളായി തിരിച്ചിരിക്കുന്ന പ്രവർത്തനങ്ങളാൽ സേവനത്തെ വിവരിക്കുന്നു. അത് രണ്ടാണ് ലളിതമായ ഘട്ടങ്ങൾ: "ഒരു സന്ദേശം സ്വീകരിക്കുന്നു", "ഒരു പ്രതികരണം അയയ്‌ക്കുന്നു", കൂടാതെ രണ്ട് സംയോജിത പ്രവർത്തനങ്ങൾ: "ഒരു സന്ദേശം അയയ്‌ക്കുന്നു - ഒരു പ്രതികരണം സ്വീകരിക്കുന്നു" അല്ലെങ്കിൽ, നേരെമറിച്ച്, "ഒരു സന്ദേശം സ്വീകരിക്കുന്നു - ഒരു പ്രതികരണം അയയ്ക്കുന്നു". സ്വീകരിക്കുന്നതും അയയ്‌ക്കുന്നതും നെസ്റ്റഡ് ഘടകങ്ങളാൽ വിവരിക്കപ്പെടുന്നു ഒപ്പം , കൂടാതെ പിശക് സന്ദേശം മൂലകമാണ് . സ്വീകരിച്ചതും അയച്ചതുമായ സന്ദേശങ്ങൾ ഇതിനകം തന്നെ ഘടകങ്ങളാൽ വിവരിച്ചിരിക്കണം , ഘടകങ്ങൾ , ഒപ്പം അവരുടെ സന്ദേശ ആട്രിബ്യൂട്ട് ഉപയോഗിച്ച് അവരെ റഫർ ചെയ്യുക.

? - നെസ്റ്റഡ് ഘടകങ്ങൾ പട്ടികപ്പെടുത്തുന്നു ഒരൊറ്റ വെബ് സേവനവുമായി ബന്ധപ്പെട്ട ഒരു കൂട്ടം പോർട്ടുകൾ. ഒരേ പോർട്ട് ഒന്നിലധികം സേവനങ്ങളുമായി ബന്ധപ്പെടുത്താം.

? - ഒരു സന്ദേശം അയയ്ക്കുന്നതിനുള്ള നിർദ്ദിഷ്ട ഫോർമാറ്റ് വിവരിക്കുന്നു: SOAP അല്ലെങ്കിൽ HTTP പോലുള്ള പ്രോട്ടോക്കോളുകൾ, സന്ദേശം പാക്കേജിംഗ് രീതികൾ, അതിൻ്റെ ഉള്ളടക്കത്തിൻ്റെ തരം: HTML, XML അല്ലെങ്കിൽ മറ്റൊരു MIME സന്ദേശ തരം. ഓരോ ഘടകവും അത്തരം നിരവധി ഘടകങ്ങളുമായി ബന്ധപ്പെടുത്താം, ഓരോ ഫോർവേഡിംഗ് രീതിക്കും ഒന്ന്. തിരഞ്ഞെടുത്ത പ്രോട്ടോക്കോൾ സ്കീമയിൽ നിർവചിച്ചിരിക്കുന്ന ഘടകങ്ങൾ ഈ ഘടകത്തിൽ അടങ്ങിയിരിക്കുന്നു.

? < service >- ഒന്നോ അതിലധികമോ പോർട്ടുകളായി വെബ് സേവനത്തിൻ്റെ സ്ഥാനം വ്യക്തമാക്കുന്നു. ഓരോ തുറമുഖവും ഒരു നെസ്റ്റഡ് മൂലകത്താൽ വിവരിച്ചിരിക്കുന്നു ഘടകത്തിൽ തിരഞ്ഞെടുത്ത നിയമങ്ങൾ അനുസരിച്ച് വ്യക്തമാക്കിയ വെബ് സേവന ഇൻ്റർഫേസിൻ്റെ വിലാസം അടങ്ങിയിരിക്കുന്നു ഷിപ്പിംഗ് രീതി.

ഈ ആറ് പ്രധാന ഘടകങ്ങൾക്ക് പുറമേ, രണ്ട് സഹായ ഘടകങ്ങൾ കൂടി ഉണ്ട്.

? - ഒരു WSDL XSD സ്കീമ ഫയൽ അല്ലെങ്കിൽ മറ്റൊരു WSDL ഫയൽ ഉൾപ്പെടുന്നു.

ഒരു അഭിപ്രായം. ഏത് ഘടകത്തിലും ഇത് ഉൾപ്പെടുത്താം

WSDL വിവരണങ്ങൾ.

ഘടകങ്ങൾ എന്ന് നമുക്ക് പറയാം , ഒപ്പം വിവരിച്ച വെബ് സേവനത്തിന് എന്താണുള്ളത്, അത് എന്ത് സേവനങ്ങൾ നൽകുന്നു, സേവനങ്ങൾ എങ്ങനെയാണ് ക്രമീകരിച്ചിരിക്കുന്നത്, ഈ സേവനങ്ങൾക്ക് ഏത് തരത്തിലുള്ള ഡാറ്റയാണ് ഉള്ളതെന്ന് അവർ കാണിക്കുന്നു.

ഘടകങ്ങൾ വെബ് സേവനം എങ്ങനെയാണ് നടപ്പിലാക്കുന്നത്, സന്ദേശ ട്രാൻസ്മിഷൻ പ്രോട്ടോക്കോൾ എന്താണെന്ന് വിശദീകരിക്കുക: HTTP, SMTP അല്ലെങ്കിൽ മറ്റെന്തെങ്കിലും, കൂടാതെ വ്യക്തമാക്കുന്നു സവിശേഷതകൾഡാറ്റ ട്രാൻസ്മിഷൻ.

അവസാനമായി, ഘടകങ്ങൾ വിവരണം ലിങ്ക് ചെയ്തുകൊണ്ട് വെബ് സേവനം എവിടെയാണെന്ന് കാണിക്കുക നിർദ്ദിഷ്ട വെബ് സേവന വിലാസങ്ങൾക്കൊപ്പം.

ഒരു WSDL ഡോക്യുമെൻ്റിൻ്റെ ഘടന ലിസ്റ്റിംഗ് 4.1 ൽ കാണിച്ചിരിക്കുന്നു. ചതുര ബ്രാക്കറ്റിനുള്ളിലെ പ്രതീകങ്ങൾ പ്രമാണത്തിൽ അടങ്ങിയിട്ടില്ല. അവർ ഒരു വെബ് സേവന വിവരണത്തിൽ ഒരു ഘടകത്തിൻ്റെ അല്ലെങ്കിൽ ആട്രിബ്യൂട്ടിൻ്റെ ആവർത്തനം കാണിക്കുന്നു:

[?] പ്രതീകം അർത്ഥമാക്കുന്നത് മൂലകമോ ആട്രിബ്യൂട്ടോ ഡോക്യുമെൻ്റിൽ പൂജ്യമോ ഒരു തവണയോ ദൃശ്യമാകാം എന്നാണ്;

[*] ചിഹ്നം അർത്ഥമാക്കുന്നത് മൂലകം പൂജ്യമോ അതിലധികമോ തവണ ദൃശ്യമാകാം എന്നാണ്;

[+] ചിഹ്നം അർത്ഥമാക്കുന്നത് മൂലകം ഒന്നോ അതിലധികമോ തവണ പ്രത്യക്ഷപ്പെടാം എന്നാണ്;

സ്ക്വയർ ബ്രാക്കറ്റുകളിൽ ഒരു പ്രതീകത്തിൻ്റെ അഭാവം അർത്ഥമാക്കുന്നത് ആട്രിബ്യൂട്ട് ഒരു തവണ കൃത്യമായി പ്രത്യക്ഷപ്പെടണം എന്നാണ്.

j ലിസ്റ്റിംഗ് 4.1. WSDL ഡോക്യുമെൻ്റ് സ്കീമ

ടാർഗെറ്റ് നെയിംസ്പേസ്="nfleH l ra«iij

ലൊക്കേഷൻ="URI-aflpec" /> [*]

സ്വതന്ത്ര അഭിപ്രായം

സങ്കീർണ്ണവും നിലവാരമില്ലാത്തതുമായ തരങ്ങളുടെ വിവരണങ്ങൾ.

[*]

[*]

[? ]

ഒരു SOAP സന്ദേശത്തിൻ്റെ ഘടകഭാഗങ്ങളുടെ ഒരു കൂട്ടം എന്നതിൻ്റെ അമൂർത്തമായ വിവരണം.

[*]

പ്രവർത്തനങ്ങളുടെ (സേവനങ്ങൾ) ഒരു വെബ് സേവനത്തിൻ്റെ ഒരു അമൂർത്ത വിവരണം.

[*]

സന്ദേശങ്ങൾ സ്വീകരിക്കുന്നതും (ഇൻപുട്ട്) അയയ്ക്കുന്നതും (ഔട്ട്പുട്ട്, തകരാർ) ആയി സേവനത്തിൻ്റെ വിവരണം.

[?]

സന്ദേശം ലഭിച്ചു.

[?] [?]

അയച്ചു

സന്ദേശം="nMH അനുബന്ധ ഘടകം "> [*] [?]

അയയ്‌ക്കേണ്ട പിശക് സന്ദേശം.

[*]

[+]

ടൈപ്പ്="അനുയോജ്യമായ മൂലകത്തിൻ്റെ MMH "> [*]

[?]

നിർദ്ദിഷ്ട പ്രോട്ടോക്കോൾ വിശദാംശങ്ങൾ. അവ സ്കീമയിൽ നിർവചിച്ചിരിക്കുന്നു

ഈ പ്രോട്ടോക്കോൾ. ->

[*]

[?]

വിശദാംശങ്ങൾ വിവരിക്കുന്ന ഘടകങ്ങൾ ഇവിടെ എഴുതിയിരിക്കുന്നു

നിർദ്ദിഷ്ട പ്രവർത്തനം. ->

[?]

വിവരിക്കുന്ന ഘടകങ്ങൾ

ലഭിച്ച പ്രത്യേക സന്ദേശത്തിൻ്റെ വിശദാംശങ്ങൾ. ->

[?]

[?]

വിവരിക്കുന്ന ഘടകങ്ങൾ

അയച്ച പ്രത്യേക സന്ദേശത്തിൻ്റെ വിശദാംശങ്ങൾ. ->

[*]

[?]

വിവരിക്കുന്ന ഘടകങ്ങൾ

നിർദ്ദിഷ്ട പിശക് സന്ദേശത്തിൻ്റെ വിശദാംശങ്ങൾ. ->

serviceType="അനുബന്ധ ഘടകത്തിൻ്റെ MMH "> [*]

ഒരു കൂട്ടം പോർട്ടുകളായി വെബ് സേവന ഇൻ്റർഫേസിൻ്റെ വിവരണം.

ബന്ധപ്പെട്ട മൂലകത്തിൻ്റെ ബൈൻഡിംഗ്="nMH "> [*]

[?]

വെബ് സേവന ഇൻ്റർഫേസിൻ്റെ നിർബന്ധവും ഏകവുമായ വിലാസം ഇവിടെ എഴുതിയിരിക്കുന്നു, നിയമങ്ങൾക്കനുസൃതമായി എഴുതിയിരിക്കുന്നു

മൂലകത്തിൽ വ്യക്തമാക്കിയ പ്രോട്ടോക്കോൾ . ->

ഓരോ നിർദ്ദിഷ്ട സന്ദേശ കൈമാറ്റ പ്രോട്ടോക്കോളും - SOAP, HTTP, FTP, SMTP - ഈ പ്രോട്ടോക്കോളിൻ്റെ സവിശേഷതകൾ വിവരിക്കുന്ന WSDL ഭാഷയുടെ ആറ് പ്രധാന, രണ്ട് സഹായ ഘടകങ്ങളിലേക്ക് അതിൻ്റേതായ അധിക ഘടകങ്ങൾ ചേർക്കുന്നു.

ഒരു ലളിതമായ ഉദാഹരണം പറയാം. ലിസ്‌റ്റിംഗ് 3.14-ൽ, ഒരു ജാവ ക്ലാസായി ഞങ്ങൾ ഒരു ലളിതമായ വെബ് സേവനം എഴുതി, അത് പ്രോസസ്സിംഗ് കൂടാതെ അയച്ച അഭ്യർത്ഥന തിരികെ നൽകുന്നു:

പൊതു ക്ലാസ് എക്കോ സർവീസ്(

public String getEcho(String req) ( റിട്ടേൺ req;

SOAP പ്രോട്ടോക്കോൾ ഉപയോഗിച്ച് WSDL-ൽ ഈ വെബ് സേവനം ലിസ്റ്റിംഗ് 4.2 വിവരിക്കുന്നു.

ലിസ്റ്റിംഗ് 4.2. EchoService വെബ് സേവനത്തിൻ്റെ വിവരണം

പതിപ്പ്="1.0" എൻകോഡിംഗ്="UTF-8" ?>

targetNamespace="http://echoservice.com/echoservice.wsdl" xmlns="http://www.w3.org/2002/07/wsdl" xmlns:tns="http://echoservice.com/echoservice.wsdl " xmlns:soap="http://www.w3.org/2002/07/wsdl/soapl2" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

transport="http://schemas.xmlsoap.org/soap/http" />

"http://schemas.xmlsoap.org/soap/encoding/"

namespace= "http://echoservice.ccm/echcservice.wsdl" use="encoded" />

^oapKbocy enccdingStyle=

"http: //schemas .xmlsoap. org/soap/encoding/" namespace= "http: //echoservice. c^/ech^service .wsdl" use="encoded" />

name="EchoServService">

Binding="tns:EchoServiceSoapBinding" name="EchoService"> സ്ഥാനം=

"http://localhost:8080/axis/EchoService.jws" />

ലിസ്റ്റിംഗ് 4.2 ൽ നമ്മൾ എലമെൻ്റിലാണ് നമുക്ക് ആവശ്യമുള്ള എല്ലാ നെയിംസ്പേസുകളുടെയും പ്രിഫിക്സുകൾ ഞങ്ങൾ നിർവചിച്ചു. അടുത്തതായി, അഭ്യർത്ഥനയും പ്രതികരണവും ഞങ്ങൾ രണ്ട് ഘടകങ്ങളിൽ വിവരിച്ചു . ഞങ്ങൾ അവർക്ക് "getEchoRequest", "getEchoResponse" എന്നീ പേരുകൾ നൽകി. അഭ്യർത്ഥനയിൽ xsd തരത്തിലുള്ള ഒരു ആർഗ്യുമെൻ്റ് അടങ്ങിയിരിക്കുന്നു: സ്ട്രിംഗ്. ഈ തരം XSD ഭാഷയിൽ നിർവചിച്ചിരിക്കുന്നു. ഞങ്ങൾ ആർഗ്യുമെൻ്റിന് req എന്ന പേര് നൽകി, അത് getEcho() രീതിയുടെ ആർഗ്യുമെൻ്റ് നാമത്തിന് സമാനമാണ്. മെത്തേഡ് റിട്ടേൺ നൽകിയ മൂല്യത്തിന് ഞങ്ങൾ പേര് നൽകി, അതിൻ്റെ തരവും xsd: സ്ട്രിംഗ് ആണ്.

"getEchoRequest", "getEchoResponse" എന്നീ പേരുകൾ അടുത്ത ഘടകത്തിൽ ഉപയോഗിക്കുന്നു ഒരു വെബ് സേവനത്തിൻ്റെ ഇൻപുട്ട്, ഔട്ട്പുട്ട് പാരാമീറ്ററുകൾ വ്യക്തമാക്കുന്നതിന്. അതിൽ ഒരു ഘടകം അടങ്ങിയിരിക്കുന്നു . ഇതിനർത്ഥം വെബ് സേവനം ഒരു സേവനം നൽകുന്നു, അതിൻ്റെ പേര് "getEcho" ആ സേവനം നടപ്പിലാക്കുന്ന രീതിയുടെ പേരിന് തുല്യമാണ്. ഘടകം ഇൻപുട്ട് വ്യക്തമാക്കുന്നു അവധി ദിനവും സേവന പാരാമീറ്ററുകൾ. പിന്നെ, ഘടകം സന്ദേശങ്ങൾ കൈമാറുന്നതിനുള്ള ഒരു മാർഗ്ഗം ഞങ്ങൾ വ്യക്തമാക്കിയിട്ടുണ്ട് - എലമെൻ്റ് സൂചിപ്പിക്കുന്നത് പോലെ, HTTP പ്രോട്ടോക്കോളിലൂടെ അയയ്‌ക്കുന്ന നടപടിക്രമ ശൈലിയിലുള്ള SOAP സന്ദേശങ്ങൾ

txarspcrt^=^"ht:tp^://?chepas^.>plscap^.c^rc^/?cap^/ht:tp^" />

SOAP ഡോക്യുമെൻ്റ് ശൈലിയാണ് ഉപയോഗിക്കുന്നതെങ്കിൽ, സ്റ്റൈൽ ആട്രിബ്യൂട്ട് "ഡോക്യുമെൻ്റ്" ആയി സജ്ജീകരിച്ചിരിക്കുന്നു.

അവസാനമായി, മൂലകത്തിൽ നെസ്റ്റഡ് ഘടകം ഘടകം ലിങ്കുചെയ്യുന്നു ഘടകം കൊണ്ട്

, വെബ് സേവനം സ്ഥിതിചെയ്യുന്ന വിലാസം സൂചിപ്പിക്കുന്നു.

ലിസ്‌റ്റിംഗ് 4.2-ൽ, സോപ്പ് ഉപയോഗിച്ച് പ്രിഫിക്‌സ് ചെയ്‌ത പേരുകൾ സന്ദേശത്തിൻ്റെ വിവരണവും അത് എങ്ങനെ അയച്ചുവെന്നും വ്യക്തമാക്കുന്നു. WSDL 1.2 സ്പെസിഫിക്കേഷൻ വാഗ്ദാനം ചെയ്യുന്ന നിർദ്ദിഷ്ട പ്രോട്ടോക്കോളുകൾ എന്തൊക്കെയാണെന്ന് നോക്കാം.

സാഹിത്യം:

ജാവ ഉപയോഗിച്ചുള്ള വെബ് സേവനങ്ങളുടെ വികസനം ഖബീബുലിൻ I. Sh. - സെൻ്റ് പീറ്റേഴ്സ്ബർഗ്: BHV-പീറ്റേഴ്സ്ബർഗ്, 2003. - 400 പേ.: അസുഖം.