2010-12-27 15 views
15

नीचे एक डेमो सोप अनुरोध संदेश है:HTTP पर एक SOAP संदेश क्यों भेजा जाना चाहिए?

HTTP/1.1 200 OK 
Content-Type: text/xml; charset="utf-8" 
Content-Length: nnnn 

    <SOAP-ENV:Envelope 
    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
    SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> 
    <SOAP-ENV:Header> 
     <t:SessionOrder 
     xmlns:t="http://example.com" 
     xsi:type="xsd:int" mustUnderstand="1"> 
      5 
     </t:SessionOrder> 
    </SOAP-ENV:Header> 
    <SOAP-ENV:Body> 
     <GetStockQuote 
     xmlns="http://someexample.com"> 
      <Price>MSFT</Price> 
     </GetStockQuote> 
    </SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

और हम देख सकते हैं, इस सोप संदेश के रूप में अगर यह एक वेब पेज है एन्कोड किया गया है। हमें HTTP प्रोटोकॉल का उपयोग क्यों करना है? एसओएपी संदेश सिर्फ कुछ एक्सएमएल है, हम क्यों एक्सएमएल का उपयोग सूचना विनिमय प्रोटोकॉल के रूप में नहीं करते हैं और HTTP हेडर से छुटकारा पा सकते हैं (इस प्रकार अकेले HTTP छोड़ दें)।

बहुत धन्यवाद।

अद्यतन - 1

HTTP एक परिवहन स्तर प्रोटोकॉल नहीं है। यह सिर्फ एक आवेदन-स्तर प्रोटोकॉल है। परिवहन के साथ इसका कोई लेना-देना नहीं है। असल में, मेरा सवाल है कि एक एसओएपी संदेश में HTTP सामान जोड़ने का मकसद क्या है?

+6

एक्सएमएल एक नेटवर्किंग प्रोटोकॉल, यह डेटा एन्कोडिंग नियमों का समूह होता है नहीं है सिर्फ एक आम बात है। – jball

+0

कौन कहता है SOAP केवल HTTP पर काम करता है ?? –

+4

ऐसा लगता है कि आपके वास्तविक प्रश्न हैं कि HTTP क्या है, यह किस उद्देश्य से कार्य करता है, और यह कैसे कार्य करता है। एक बार जब आप इसकी समझ प्राप्त कर लेंगे, तो एसओएपी कार्यान्वयन में HTTP के उपयोग के कारण आपको स्पष्ट होना चाहिए। – jball

उत्तर

19

सोप अलग परिवहन पर भेजा जा सकता। HTTP उनमें से एक है।

+0

HTTP एक परिवहन स्तर प्रोटोकॉल नहीं है। यह सिर्फ एक आवेदन-स्तर प्रोटोकॉल है। परिवहन के साथ इसका कोई लेना-देना नहीं है। असल में, मेरा सवाल है * एसओएपी संदेश में HTTP सामान जोड़ने का क्या उद्देश्य है? * – smwikipedia

+2

एसओएपी शर्तों में यह एक परिवहन है। डब्ल्यूएसडीएल में आप वेब सेवा को परिवहन में बांधते हैं। मुझे लगता है कि मैंने पढ़ा है कि कई ट्रांसपोर्टों में से एक के रूप में HTTP को अनुमति देने के फैसले के पीछे प्रेरणा यह है कि अधिकांश फ़ायरवॉल पहले ही HTTP को अनुमति देने के लिए कॉन्फ़िगर किए गए हैं (मुझे पता है कि यह एक मूर्खतापूर्ण स्पष्टीकरण है लेकिन मैंने कोई अन्य स्पष्टीकरण नहीं देखा है)। –

+0

धन्यवाद, मैंने फ़ायरवॉल से संबंधित समान स्पष्टीकरण पढ़े हैं। लेकिन फ़ायरवॉल * क्या विश्वास कर सकता है के आधार पर * यह एक HTTP पैकेट है जो गुज़र रहा है? HTTP हेडर का अस्तित्व? तो हम एसओएपी संदेशों में HTTP हेडर जोड़ते हैं? इतना प्रेरक नहीं है। – smwikipedia

2

आप टीसीपी भी उपयोग कर सकते हैं और उस से पहले और अब WCF का अपनी ओर से नेट दूरस्थ नामित किया गया था ...

+0

क्या कोई औपचारिक (मानकीकृत) प्रोटोकॉल है, या हर किसी को माइक्रोसॉफ्ट में जाना है? –

0

यह सरल ऑब्जेक्ट एक्सेस प्रोटोकॉल के लिए स्थानांतरण परत चुनने के लिए डेवलपर पर निर्भर है। एक्सएमएल नेटवर्क प्रोटोकॉल नहीं है, इसलिए डेटा को एक्सएमएल का उपयोग करके स्थानांतरित नहीं किया जा सकता है। इसे कुछ में पैक किया जाना है।

5

HTTP का उपयोग करने का उद्देश्य फ़ायरवॉल से गुज़रना था। आप अधिकांश नेटवर्क देखते हैं आईटी लोग किसी भी बंदरगाह को खोलने की इजाजत नहीं देते हैं, लेकिन किसी कारण से वे हमेशा वेब पेजों के लिए पोर्ट 80 को खोलने की अनुमति देते हैं। चूंकि वेब सर्वरों का परीक्षण वर्षों से किया गया है, इसलिए उन्हें सुरक्षित करना "आसान" है। HTTP का उपयोग करके आपके पास संचार प्रोटोकॉल से निपटने के लिए टूल का एक मौजूदा सेट है।

+0

आपके उत्तर के लिए धन्यवाद।यदि हां, तो हमें क्या करना चाहिए HTTP हेडर जोड़ने के लिए नहीं, लेकिन एसओएपी संदेश पोर्ट 80 के माध्यम से जाने के लिए है। है ना? – smwikipedia

+0

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

+0

धन्यवाद। हम लक्ष्य बंद कर रहे हैं। तो, बस HTTP शीर्षलेख जोड़ना फ़ायरवॉल को मूर्ख बना देगा। यदि ऐसा है, तो मैं अपने SOAP संदेश में एक डमी HTTP शीर्षलेख जोड़ सकता हूं जब तक कि यह एक अच्छी तरह से बना HTTP अनुरोध/प्रतिक्रिया हो। – smwikipedia

31

अवलोकन

सोप एक मैसेजिंग प्रोटोकॉल है और संक्षेप में सिर्फ एक और एक्सएमएल भाषा है।
इसका उद्देश्य नेटवर्क पर डेटा एक्सचेंज है। इसकी चिंता इन आंकड़ों के समावेशन और उन्हें प्रेषण और प्राप्त करने के नियम हैं।

HTTP एक आवेदन प्रोटोकॉल है और SOAP संदेश HTTP पेलोड के रूप में रखा जाता है।
हालांकि HTTP का ओवरहेड है, लेकिन इसका लाभ यह है कि यह एक प्रोटोकॉल है जो फ़ायरवॉल, अच्छी तरह से समझने और व्यापक रूप से समर्थित है। इस प्रकार, पहले से ही तकनीक के माध्यम से वेब सेवाओं तक पहुंचा जा सकता है और इसका खुलासा किया जा सकता है।

SOAP संदेशों को आमतौर पर HTTP के माध्यम से आदान-प्रदान किया जाता है। हालांकि अन्य (एप्लिकेशन) प्रोटोकॉल का उपयोग करना संभव है, उदा। एसएमटीपी या एफ़टीपी, गैर-HTTP बाइंडिंग SOAP चश्मा द्वारा निर्दिष्ट नहीं हैं और WS-BP (interoperability spec) द्वारा समर्थित नहीं हैं।
आप कच्चे टीसीपी पर एसओएपी संदेशों का आदान-प्रदान कर सकते हैं लेकिन फिर आपके पास ऐसी वेब सेवाएं होंगी जो इंटरऑपरेबल नहीं हैं (डब्ल्यूएस-बीपी के अनुरूप नहीं)।

आजकल बहस है कि एसओएपी ओवरहेड क्यों है और HTTP (रीस्टफुल डब्ल्यूएस) पर डेटा नहीं भेजता है।

HTTPSOAP का उपयोग क्यों करें?

मैं और अधिक विस्तार में क्यों सोप के लिए HTTP का उपयोग करें, ओपी में प्रश्नों के उत्तरों पूछ की कोशिश करेंगे:

सभी सोप सबसे पहले एक डेटा कैप्सूलीकरण प्रारूप निर्धारित करता है और कहा कि कि है।
अब वेब में अधिकांश ट्रैफ़िक HTTP के माध्यम से है। HTTP हर जगह साहित्यिक है और सर्वर और ग्राहकों (अर्थात् ब्राउज़र) के एक अच्छी तरह से स्थापित बुनियादी ढांचे द्वारा समर्थित है। इसके अतिरिक्त यह एक बहुत अच्छी तरह से समझा प्रोटोकॉल है।

लोग हैं, जो साबुन बनाया है ताकि वे HTTP पर टनल किया जा सकता है

  • चश्मा वे किसी अन्य गैर- HTTP का उल्लेख नहीं है में यह तैयार बुनियादी ढांचे और

    1. SOAP संदेश डिजाइन किए गए थे उपयोग करना चाहता था बाध्यकारी लेकिन विशेष रूप से स्थानांतरण के लिए HTTP के रूप में HTTP का संदर्भ लें।

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

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

    चूंकि HTTP ट्रैफ़िक आमतौर पर अनुमति दी जाती है, इसलिए क्लाइंट/सर्वर का संचार बहुत आसान होता है और वेब सेवाएं HTTP सुरंग के परिणामस्वरूप नेटवर्क सुरक्षा अवरोधकों के मुद्दों के बिना काम कर सकती हैं।

    SOAP XML = सादा पाठ है इसलिए फ़ायरवॉल HTTP निकाय की सामग्री का निरीक्षण कर सकते हैं और तदनुसार ब्लॉक कर सकते हैं। लेकिन इस मामले में उन्हें सामग्री के आधार पर एसओएपी को अस्वीकार करने या स्वीकार करने के लिए भी बढ़ाया जा सकता है। यह हिस्सा जो आपको परेशान करता है, वह वेब सेवाओं या एसओएपी से संबंधित नहीं है, और शायद आपको फ़ायरवॉल कैसे काम करता है इसके बारे में एक नया धागा शुरू करना चाहिए।

    कहा करने के बाद कि, तथ्य यह है कि HTTP ट्रैफ़िक अक्सर अप्रतिबंधित है सुरक्षा के मुद्दों का कारण बनता है के बाद से फायरवॉल द्वारा-पारित कर दिया अनिवार्य रूप से कर रहे हैं, और यही वजह है आवेदन-द्वार में आते हैं।
    लेकिन यह इस पोस्ट के लिए संबंधित नहीं है।

    सारांश

    तो HTTP का उपयोग कर के लिए कारणों योग करने के लिए:

    1. HTTP लोकप्रिय और सफल है।
    2. HTTP आधारभूत संरचना जगह है इसलिए वेब सेवाओं को तैनात करने के लिए कोई अतिरिक्त लागत नहीं है।
    3. फ़ायरवॉल के लिए HTTP यातायात खुला है, इसलिए नेटवर्क सुरक्षा के परिणामस्वरूप वेब सेवा कार्य करने में कोई समस्या नहीं है।
  • +0

    आपके उत्तर के लिए धन्यवाद। लेकिन एक HTTP पेलोड के रूप में भरने के बाद क्या एक जादू एक एसओएपी संदेश फ़ायरवॉल पास कर सकता है? – smwikipedia

    +1

    @smwikipedia: यह SOAP नहीं है जो करता है। फ़िरवाल्स निजी निगमों में भी पोर्ट 80 में HTTP ट्रैफ़िक को प्रतिबंधित नहीं करते हैं, इसलिए HTTP नेटवर्क के बीच क्लाइंट/सर्वर के बीच संचार के लिए HTTP बहुत सुविधाजनक है। फायरवॉल वितरित कंप्यूटिंग में एक प्रमुख मुद्दा है और इसके ट्रैफिक की अनुमति होने के बाद HTTP इस पर सहायता करता है। नतीजतन वेब सेवाओं (एक वितरित तंत्र के रूप में) सुरक्षा अवरोधों के कारण ऐसे सिरदर्द के साथ काम कर सकते हैं – Cratylus

    +0

    फ़ायरवॉल किस मानदंड पर HTTP ट्रैफिक तय करता है? बंदरगाह संख्या आसानी से बदला जा सकता है। क्या फ़ायरवॉल यातायात प्रारूप के आधार पर निर्णय लेता है? यदि हां, तो फ़ायरवॉल को मूर्ख बनाने के लिए हम कुछ डमी http शीर्षलेखों को कैसे जोड़ते हैं? – smwikipedia

    -1

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

    0

    एक अन्य कारण यह हो सकता है कि (यदि मुझे सही याद है) HTTP को "सोशल स्टैंडर्ड" के रूप में भी नामित किया जाता है कि इंटरनेट प्रोटोकॉल को कैसे देखना/काम करना है, तो यदि आप अपना प्रोटोकॉल विकसित करना चाहते हैं, तो आप मूल रूप से (कम से कम एक आदर्श दुनिया में) यदि आप सभी आरएफसी का पालन करते हैं तो कुछ बहुत समान होता है। इसलिए, क्यों दुनिया का सबसे आम और अच्छी तरह से समझा प्रोटोकॉल HTTP का उपयोग नहीं करते हैं।

    0

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

    0

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

    यह उपयोग करने के लिए HTTP

    संबंधित मुद्दे