SOAP संदेश और WSDL के बीच अंतर?


102

मैं इस बारे में उलझन में हूं कि SOAP संदेश और WSDL एक साथ कैसे फिट होते हैं? मैंने SOAP संदेशों को देखना शुरू कर दिया है जैसे:

    POST /InStock HTTP/1.1
Host: www.example.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn

<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

<soap:Body xmlns:m="http://www.example.org/stock">
  <m:GetStockPrice>
    <m:StockName>IBM</m:StockName>
  </m:GetStockPrice>
</soap:Body>

</soap:Envelope>

क्या सभी SOAP संदेश WSDL के हैं? क्या SOAP एक प्रोटोकॉल है जो अपने स्वयं के 'SOAP संदेशों' या 'WSDL' को स्वीकार करता है? यदि वे भिन्न हैं, तो मुझे SOAP संदेशों का उपयोग कब करना चाहिए और मुझे WSDL का उपयोग कब करना चाहिए?

इस के आसपास कुछ स्पष्टीकरण भयानक होगा।


1
एक wsdl एक विनिर्देश है जिसमें संदेश भेजे जा सकते हैं और प्रतिक्रिया के रूप में क्या उम्मीद की जा सकती है। एक भावना, wsdl दस्तावेज़ साबुन संचार के लिए आवश्यक नहीं है, लेकिन यह प्रोटोकॉल के अनुसार एक आवश्यक तत्व है।
ट्रोकेनको

जवाबों:


121

एक SOAP दस्तावेज़ प्रति अनुरोध भेजा जाता है। कहते हैं कि हम एक बुक स्टोर थे, और हमारे पास एक दूरस्थ सर्वर था जो हमने किसी विशेष पुस्तक की वर्तमान कीमत जानने के लिए समझा। मान लें कि हमें पुस्तक का शीर्षक, पृष्ठों की संख्या और आईएसबीएन सर्वर को पास करने की आवश्यकता है।

जब भी हम कीमत जानना चाहते थे, हम एक अद्वितीय SOAP संदेश भेजते थे। यह कुछ इस तरह दिखेगा;

<SOAP-ENV:Envelope
  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
  SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
  <SOAP-ENV:Body>
    <m:GetBookPrice xmlns:m="http://namespaces.my-example-book-info.com">
      <ISBN>978-0451524935</ISBN>
      <Title>1984</Title>
      <NumPages>328</NumPages>
    </m:GetBookPrice>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope> 

और हमें SOAP प्रतिक्रिया संदेश वापस मिलने की उम्मीद है;

<SOAP-ENV:Envelope
  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
  SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
  <SOAP-ENV:Body>
    <m:GetBookPriceResponse xmlns:m="http://namespaces.my-example-book-info.com">
      <CurrentPrice>8.99</CurrentPrice>
      <Currency>USD</Currency>
    </m:GetBookPriceResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

डब्लूएसडीएल तब बताता है कि जब सर्वर इसे प्राप्त करता है तो इस संदेश को कैसे संभालना / संसाधित करना है। हमारे मामले में, यह वर्णन करता है कि शीर्षक, न्यूमपेज और आईएसबीएन किस प्रकार के होंगे, क्या हमें गेटबुकप्रिस संदेश से प्रतिक्रिया की उम्मीद करनी चाहिए और वह प्रतिक्रिया कैसी दिखनी चाहिए।

प्रकार इस तरह दिखेंगे;

<wsdl:types>

  <!-- all type declarations are in a chunk of xsd -->
  <xsd:schema targetNamespace="http://namespaces.my-example-book-info.com"
    xmlns:xsd="http://www.w3.org/1999/XMLSchema">

    <xsd:element name="GetBookPrice">
      <xsd:complexType>
        <xsd:sequence>
          <xsd:element name="ISBN" type="string"/>
          <xsd:element name="Title" type="string"/>
          <xsd:element name="NumPages" type="integer"/>
        </xsd:sequence>
      </xsd:complexType>
    </xsd:element>

    <xsd:element name="GetBookPriceResponse">
      <xsd:complexType>
        <xsd:sequence>
          <xsd:element name="CurrentPrice" type="decimal" />
          <xsd:element name="Currency" type="string" />
        </xsd:sequence>
      </xsd:complexType>
    </xsd:element>

  </xsd:schema>
</wsdl:types>

लेकिन डब्लूएसडीएल में अधिक जानकारी होती है, जिसके बारे में फ़ंक्शंस ऑपरेशन बनाने के लिए एक साथ लिंक करते हैं, और कौन से ऑपरेशन सेवा में उपलब्ध हैं, और एक नेटवर्क पर आप सेवा / संचालन तक पहुंच सकते हैं।

डब्ल्यू 3 एनोटेटेड डब्ल्यूएसडीएल उदाहरण भी देखें


4
जब आप इस पंक्ति को कहते हैं "WSDL तब बताता है कि जब सर्वर प्राप्त करता है तो इस संदेश को कैसे संभालना / संसाधित करना है।" क्या आपको नहीं लगता कि यहां कुछ गड़बड़ है। मुझे लगता है कि क्लाइंट के लिए डब्ल्यूएसडीएल यह जानने के लिए अधिक है कि ग्राहक के लिए क्या सेवाएं उपलब्ध हैं। मुझे नहीं लगता कि यह सर्वर से संदेशों को संभालने या संसाधित करने में मार्गदर्शन करता है। क्या मैं समझ रहा हूं?
अटूट

76

SOAP संदेश एक XML दस्तावेज़ है जिसका उपयोग आपके डेटा को प्रसारित करने के लिए किया जाता है। WSDL एक XML दस्तावेज़ है जो बताता है कि आपकी वेब सेवा से कैसे जुड़ना और अनुरोध करना है।

मूल रूप से SOAP संदेश आपके द्वारा प्रसारित डेटा हैं, WSDL आपको बताता है कि आप क्या कर सकते हैं और कॉल कैसे कर सकते हैं।

Google में एक त्वरित खोज अतिरिक्त पढ़ने के लिए कई स्रोतों का उत्पादन करेगी (पिछली पुस्तक लिंक अब मृत है, इससे निपटने के लिए टिप्पणियों में कोई नई सिफारिशें दी जाएंगी)

बस अपने विशिष्ट प्रश्न नोट कर रहे हैं:

क्या सभी SOAP संदेश WSDL के हैं? नहीं, वे एक ही चीज नहीं हैं।

क्या SOAP एक प्रोटोकॉल है जो अपने स्वयं के 'SOAP संदेशों' या 'WSDL' को स्वीकार करता है? नहीं - पढ़ना आवश्यक है क्योंकि यह बहुत दूर है।

यदि वे अलग हैं, तो मुझे SOAP संदेशों का उपयोग कब करना चाहिए और मुझे WSDL का उपयोग कब करना चाहिए? साबुन वह संरचना है जो आप अपने संदेश / डेटा पर स्थानांतरण के लिए लागू करते हैं। डब्ल्यूएसडीएल का उपयोग केवल यह निर्धारित करने के लिए किया जाता है कि पहली बार में सेवा में कॉल कैसे करें। अक्सर यह एक बार की बात है जब आप पहली बार किसी विशेष वेबबेस पर कॉल करने के लिए कोड जोड़ते हैं।


मैं उलझन में हूँ कि आप "एक समय की बात" से क्या मतलब है यदि आप कुछ नमूना संदेशों से भयभीत हो सकते हैं। इसके अलावा, इसलिए आप कह रहे हैं कि WSDL और SOAP संदेशों का एक साथ उपयोग किया जाता है?
जेम्स

6
डब्ल्यूएसडीएल आपको बताता है कि वेब सेवा को कैसे कॉल किया जाए। अक्सर आप वेब सेवा को कॉल करने के लिए कोड उत्पन्न करने के लिए डब्ल्यूएसडीएल का उपयोग ऑटो से करेंगे और फिर कभी उसका उपयोग नहीं करेंगे। मेरे द्वारा लिंक की गई पुस्तक में अध्यायों को संक्षिप्त करना मदद चाहिए।
मैथ्यू

27

एक WSDL (वेब ​​सेवा परिभाषा भाषा) एक मेटा-डेटा फ़ाइल है जो वेब सेवा का वर्णन करती है।

ऑपरेशन नाम, पैरामीटर आदि जैसी चीजें।

साबुन संदेश वास्तविक पेलोड हैं


25

हमें यह बताने की आवश्यकता है कि SOAP और WSDL के बीच अंतर क्या है, यह बताने से पहले एक वेब सेवा है जहां दो (SOAP और WSDL) एक वेब सेवा के घटक हैं

अधिकांश अनुप्रयोगों को उपयोगकर्ताओं के साथ बातचीत करने के लिए विकसित किया जाता है, उपयोगकर्ता एक इंटरफ़ेस के माध्यम से डेटा में प्रवेश करता है या खोजता है और एप्लिकेशन तब उपयोगकर्ता के इनपुट पर प्रतिक्रिया करता है।

एक वेब सेवा कमोबेश यही काम करती है सिवाय इसके कि एक वेब सेवा एप्लिकेशन केवल मशीन से मशीन या एप्लिकेशन से एप्लिकेशन तक संचार करती है। अक्सर कोई प्रत्यक्ष उपयोगकर्ता सहभागिता नहीं होती है।

एक वेब सेवा मूल रूप से खुले प्रोटोकॉल का एक संग्रह है जो अनुप्रयोगों के बीच डेटा का आदान-प्रदान करने के लिए उपयोग किया जाता है। खुले प्रोटोकॉल का उपयोग वेब सेवाओं को प्लेटफॉर्म के स्वतंत्र होने में सक्षम बनाता है। सॉफ्टवेयर जो विभिन्न प्रोग्रामिंग भाषाओं में लिखे गए हैं और जो विभिन्न प्लेटफार्मों पर चलते हैं, इंटरनेट जैसे कंप्यूटर नेटवर्क पर डेटा का आदान-प्रदान करने के लिए वेब सेवाओं का उपयोग कर सकते हैं। दूसरे शब्दों में, विंडोज़ अनुप्रयोग PHP, जावा और पर्ल एप्लिकेशन और कई अन्य लोगों से बात कर सकते हैं, जो सामान्य परिस्थितियों में संभव नहीं होगा।

वेब सेवाएँ कैसे काम करती हैं?

विभिन्न प्रोग्रामिंग भाषाओं में अलग-अलग एप्लिकेशन लिखे जाने के कारण, वे अक्सर एक दूसरे के साथ संवाद नहीं कर पाते हैं। एक वेब सेवा मुख्य रूप से XML, SOAP और WSDL के खुले प्रोटोकॉल और मानकों के संयोजन का उपयोग करके इस संचार को सक्षम करती है। एक वेब सेवा डेटा को टैग करने के लिए एक्सएमएल का उपयोग करती है, एक संदेश को स्थानांतरित करने के लिए एसओएपी और अंत में डब्ल्यूएसडीएल को सेवाओं की उपलब्धता का वर्णन करने के लिए। आइए एक वेब सेवा एप्लिकेशन के इन तीन मुख्य घटकों पर एक नज़र डालें।

सरल ऑब्जेक्ट एक्सेस प्रोटोकॉल (SOAP)

सिम्पल ऑब्जेक्ट एक्सेस प्रोटोकॉल या SOAP इंटरऑपरेबिलिटी मुद्दों (इंटरप्रेन्योरिटी का अर्थ है कि जिस प्लेटफॉर्म पर वेब सेवा चल रही है, वह अप्रासंगिक हो जाती है) के बिना संदेश भेजने और प्राप्त करने के लिए एक प्रोटोकॉल है। एक अन्य प्रोटोकॉल जिसमें समान फ़ंक्शन है HTTP है। इसका उपयोग वेब पेज तक पहुँचने या नेट सर्फ करने के लिए किया जाता है। HTTP यह सुनिश्चित करता है कि आपको इस बात की चिंता करने की ज़रूरत नहीं है कि आप किस तरह का वेब सर्वर - चाहे अपाचे या आईआईएस या कोई अन्य - आपके द्वारा देखे जा रहे पृष्ठों की सेवा करता है या आपके द्वारा देखे गए पृष्ठ ASP.NET या HTML में बनाए गए हैं।

क्योंकि SOAP का उपयोग अनुरोध और प्रतिक्रिया दोनों के लिए किया जाता है, इसकी सामग्री इसके उद्देश्य के आधार पर थोड़ी भिन्न होती है।

नीचे SOAP अनुरोध और प्रतिक्रिया संदेश का एक उदाहरण है

SOAP अनुरोध:

POST /InStock HTTP/1.1 
Host: www.bookshop.org 
Content-Type: application/soap+xml; charset=utf-8 
Content-Length: nnn 
<?xml version="1.0"?> 
<soap:Envelope 
xmlns:soap="http://www.w3.org/2001/12/soap-envelope" 
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> 
<soap:Body xmlns:m="http://www.bookshop.org/prices"> 
    <m:GetBookPrice> 
    <m:BookName>The Fleamarket</m:BookName> 
    </m:GetBookPrice> 
</soap:Body> 
</soap:Envelope>

SOAP प्रतिक्रिया:

POST /InStock HTTP/1.1 
Host: www.bookshop.org 
Content-Type: application/soap+xml; charset=utf-8 
Content-Length: nnn 
<?xml version="1.0"?> 
<soap:Envelope 
xmlns:soap="http://www.w3.org/2001/12/soap-envelope" 
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> 
<soap:Body xmlns:m="http://www.bookshop.org/prices"> 
    <m:GetBookPriceResponse> 
    <m: Price>10.95</m: Price> 
    </m:GetBookPriceResponse> 
</soap:Body> 
</soap:Envelope> 

हालाँकि दोनों संदेश समान दिखते हैं, फिर भी वे अलग-अलग तरीके अपनाते हैं। उदाहरण के लिए उपरोक्त उदाहरणों को देखकर आप देख सकते हैं कि अनुरोध करने वाला संदेश GetBookPriceपुस्तक की कीमत प्राप्त करने के लिए विधि का उपयोग करता है। द्वारा किया जाता हैGetBookPriceResponse विधि है, जो संदेश है कि आप "अनुरोधकर्ता" के रूप में देखेंगे। आप यह भी देख सकते हैं कि संदेश XML का उपयोग करके बनाए गए हैं।

वेब सेवाएँ विवरण भाषा या WSDL

डब्ल्यूएसडीएल एक दस्तावेज है जो एक वेब सेवा का वर्णन करता है और आपको यह भी बताता है कि इसके तरीकों का उपयोग और उपयोग कैसे करें।

डब्लूएसडीएल इस बात का ध्यान रखता है कि आप कैसे जानते हैं कि वेब सेवा में कौन सी विधियाँ उपलब्ध हैं जिन्हें आप इंटरनेट पर ठोकर खाते हैं।

नमूना WSDL फ़ाइल पर एक नज़र डालें:

<?xml version="1.0" encoding="UTF-8"?> 
<definitions  name ="DayOfWeek"  
  targetNamespace="http://www.roguewave.com/soapworx/examples/DayOfWeek.wsdl" 
  xmlns:tns="http://www.roguewave.com/soapworx/examples/DayOfWeek.wsdl" 
  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"  
  xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
  xmlns="http://schemas.xmlsoap.org/wsdl/">  
  <message name="DayOfWeekInput"> 
    <part name="date" type="xsd:date"/> 
  </message> 
  <message name="DayOfWeekResponse"> 
    <part name="dayOfWeek" type="xsd:string"/> 
  </message> 
  <portType name="DayOfWeekPortType"> 
    <operation name="GetDayOfWeek"> 
      <input message="tns:DayOfWeekInput"/> 
      <output message="tns:DayOfWeekResponse"/> 
    </operation> 
  </portType> 
  <binding name="DayOfWeekBinding" type="tns:DayOfWeekPortType"> 
    <soap:binding style="document"  
      transport="http://schemas.xmlsoap.org/soap/http"/> 
    <operation name="GetDayOfWeek"> 
      <soap:operation soapAction="getdayofweek"/> 
      <input> 
        <soap:body use="encoded"  
          namespace="http://www.roguewave.com/soapworx/examples"  
          encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> 
      </input> 
      <output> 
        <soap:body use="encoded"  
          namespace="http://www.roguewave.com/soapworx/examples"   
            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> 
      </output> 
    </operation> 
  </binding> 
  <service name="DayOfWeekService" > 
    <documentation> 
      Returns the day-of-week name for a given date 
    </documentation> 
    <port name="DayOfWeekPort" binding="tns:DayOfWeekBinding"> 
      <soap:address location="http://localhost:8090/dayofweek/DayOfWeek"/> 
    </port> 
  </service> 
</definitions> 

डब्लूएसडीएल फ़ाइल के बारे में याद रखने वाली मुख्य बातें यह हैं कि यह आपको प्रदान करता है:

  • एक वेब सेवा का विवरण

  • वेब सेवा जिन विधियों का उपयोग करती है और जो पैरामीटर लेती हैं

  • वेब सेवाओं का पता लगाने का एक तरीका


  • ठोस विवरण
    तपनहप

    7

    टेलीफोन कॉल से बेहतर सादृश्य: डाक-ऑर्डर सेवा से डाक के माध्यम से उत्पादों का ऑर्डर करना। डब्लूएसडीएल दस्तावेज उन निर्देशों की तरह है जो बताते हैं कि सेवा प्रदाता को किस तरह के ऑर्डर फॉर्म बनाने हैं। एक SOAP संदेश एक मानक डिजाइन (आकार, आकार, निर्माण) के साथ एक लिफाफे की तरह होता है जिसे दुनिया भर में हर डाकघर संभालना जानता है। आप अपना ऑर्डर फॉर्म ऐसे लिफाफे में डाल दें। नेटवर्क (जैसे इंटरनेट) डाक सेवा है। आप अपना लिफाफा मेल में डाल दें। डाक सेवा के कर्मचारी लिफाफे के अंदर नहीं दिखते हैं। पेलोड XML एक ऑर्डर फॉर्म है जिसे आपने लिफाफे में संलग्न किया है। डाकघर लिफाफा वितरित करने के बाद, वेब सेवा प्रदाता लिफाफा खोलता है और ऑर्डर फॉर्म को संसाधित करता है। यदि आपने फॉर्म सही तरीके से बनाया और भरा है,


    4

    एक सरल शब्दों में यदि आपके पास कैलकुलेटर की एक वेब सेवा है। डब्ल्यूएसडीएल उन कार्यों के बारे में बताता है जिन्हें आप ग्राहक को लागू या उजागर कर सकते हैं। उदाहरण के लिए: जोड़ना, हटाना, घटाना और इसी तरह। जहाँ SOAP का उपयोग करते हुए आप वास्तव में doDelete (), doSubtract (), doAdd () जैसे कार्य करते हैं। तो SOAP और WSDL सेब और संतरे हैं। हमें उनकी तुलना नहीं करनी चाहिए। इन दोनों की अपनी अलग कार्यक्षमता है।


    1

    SOAP: यह एक खुला मानक XML आधारित संचार प्रोटोकॉल है जिसका उपयोग उपयोगकर्ता से वेब सेवा या इसके विपरीत सूचना का आदान-प्रदान करने के लिए किया जाता है। साबुन सिर्फ एक दस्तावेज है जिसमें डेटा को कुछ मैनर में व्यवस्थित किया जाता है। हर अनुरोध और प्रतिक्रिया के लिए अलग साबुन मौजूद हो सकता है।

    डब्ल्यूएसडीएल: साबुन में डेटा को किसी तरह से व्यवस्थित किया जाता है और यह संगठन डब्ल्यूएसडीएल में निर्दिष्ट किया जाता है, जिस डेटा प्रकार का उपयोग किया जाना है वह भी यहां निर्दिष्ट है। अनुरोध और प्रतिक्रिया के लिए एकल WSDL मौजूद होगा


    0

    डब्ल्यूएसडीएल एपीआई प्रदाता और ग्राहक के बीच एक तरह का अनुबंध है जो वेब सेवा का वर्णन करता है: सार्वजनिक कार्य, वैकल्पिक / आवश्यक क्षेत्र ...

    लेकिन साबुन संदेश ग्राहक और प्रदाता (पेलोड) के बीच स्थानांतरित किया गया डेटा है


    0

    WSDL प्रेषक और रिसीवर के बीच एक इंटरफेस के रूप में कार्य करता है।
    SOAP संदेश xml प्रारूप में अनुरोध और प्रतिक्रिया है।

    जावा RMI के साथ तुलना

    WSDL इंटरफ़ेस क्लास
    SOAP संदेश है मार्शल्ड अनुरोध और प्रतिक्रिया संदेश।


    -1

    हम एक टेलीफोन कॉल पर विचार कर सकते हैं। उस नंबर पर wsdl है और सूचना का आदान-प्रदान साबुन है।

    WSDL यह वर्णन करता है कि संचार सर्वर के साथ कैसे कनेक्ट किया जाए। SAP में संचार संदेश हैं।


    1
    नहीं, फोन नंबर डब्ल्यूएसडीएल में परिभाषित एंडपॉइंट में से एक की तरह अधिक होगा। फोन कॉल के क्षेत्र में WSDL के बराबर कोई वास्तविक नहीं है। निकटतम एक टेलीफोन निर्देशिका हो सकती है, खासकर यदि आप "पीले पन्नों" की अवधारणा को शामिल करते हैं जो व्यवसायों को वर्गीकृत करता है और व्यवसाय के बारे में कुछ विवरण प्रदान करता है (न केवल फोन नंबर)।
    जॉन सॉन्डर्स
    हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
    Licensed under cc by-sa 3.0 with attribution required.