2009-05-12 16 views

उत्तर

27

एरिक्सन से सुधार के बाद संपादित:

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

"सेवा" एक द्रव शब्द है। मैं एक ऐसे घटक के रूप में सोचता हूं जो एक नेटवर्क पर रहता है और एक अनुबंध का विज्ञापन करता है: "यदि आप मुझे एक्स भेजते हैं तो मैं आपके लिए यह कार्य करूँगा और वाई वापस कर दूंगा।"

वितरित घटकों एक लंबे समय के लिए चारों ओर गया है। प्रत्येक ने एक अलग प्रोटोकॉल (उदा।, कॉम, कॉर्बा, आरएमआई, आदि) का उपयोग करके संवाद किया और विभिन्न तरीकों से अपने अनुबंध का खुलासा किया।

वेब सेवाएं वितरित सेवाओं में नवीनतम प्रवृत्ति हैं। वे HTTP को उनके प्रोटोकॉल के रूप में उपयोग करते हैं और किसी भी क्लाइंट के साथ इंटरऑपरेट कर सकते हैं जो टीसीपी/आईपी के माध्यम से कनेक्ट हो सकता है और HTTP अनुरोध कर सकता है।

आप साबुन या RPC-एक्सएमएल या बाकी या "अनुबंध पहले" शैलियों, लेकिन HTTP का उपयोग कर के रूप में अपनी प्रोटोकॉल बनी हुई है एक वितरित घटक की अंतर्निहित विचार का उपयोग कर सकते हैं।

आप यह सब स्वीकार करते हैं, वेब सेवाओं को आम तौर पर तुल्यकालिक कॉल कर रहे हैं। उन्हें फूला नहीं जाना चाहिए, लेकिन आप किसी भी शैली या भाषा में खराब घटकों को लिख सकते हैं।

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

+1

जेएमएस केवल जावा नहीं है। जेएमएस को सावधानी से डिजाइन किया गया ताकि विक्रेताओं को जावा इंटरफेस को अपनी मालिकाना संदेश सेवाओं में प्रदान करने की अनुमति दी जा सके। ईबीएक्सएमएल जैसे खुले मैसेजिंग प्रोटोकॉल के लिए जेएमएस प्रदाता भी हैं। दोनों दृष्टिकोण एक जेएमएस आधारित जावा एप्लिकेशन को अन्य प्लेटफार्मों पर मैसेजिंग अनुप्रयोगों के साथ इंटरऑपरेट करने की अनुमति देते हैं। – erickson

+0

सुधार के लिए धन्यवाद, एरिक्सन। – duffymo

+0

तो डब्ल्यूएस- * और जेएमएस वितरित संचार के लिए अनुबंधों का विज्ञापन करने के दोनों तरीके हैं। मुझे डब्ल्यूएस- * का उपयोग कब करना चाहिए और मुझे जेएमएस का उपयोग कब करना चाहिए? मैंने पढ़ा http://www.unf.edu/~ree/1024IC.pdf। जेएमएस छोटे डेटा सेट के लिए डब्ल्यूएस- * से बेहतर प्रदर्शन करता है और "ऑफ़लाइन लक्ष्य" के लिए समर्थन प्रदान करता है और डब्ल्यूएस- * डेटा की बड़ी मात्रा को बेहतर तरीके से संभाल सकता है। क्या यह एकमात्र लाभ/नुकसान है? क्या डब्ल्यूएस- * एंडपॉइंट्स के बराबर जेएमएस एंडपॉइंट्स लिखने का खर्चा है? उनमें से एक के बीच निर्णय कैसे लें? ऐसा लगता है कि जेएमएस अधिक हल्का है ना? –

0

लोगों मैं यहाँ किया है से मतभेद मैंने पाया है: JMS - मैं JMS प्रदाता से बंधा रहा हूँ - लेकिन मैं कार्यान्वयन प्रकार के विकल्प (पब/उप, बिंदु इंगित करने के लिए) है वेब सेवा - संभाल/वास्तुकार को आसान बनाना - हालांकि यह बक्से के बीच प्रत्यक्ष संचार का अधिक है। विकास करने के लिए उपयोग करने के लिए बहुत से टूल्स - और एक स्वच्छ इंटरफेस (डब्लूएसडीएल) तो कार्यान्वयनकर्ता और कॉलर स्वतंत्र हो सकते हैं।

किस का उपयोग करना है? इस समस्या पर निर्भर करता है कि समस्या क्या है।

+1

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

4

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

कई अनुप्रयोगों जहां इन क्षमताओं अनावश्यक हैं कर रहे हैं। लेकिन जहां उनकी आवश्यकता है, उन्हें स्वयं को आरपीसी तंत्र के शीर्ष पर बनाना जटिल, महंगा और त्रुटि-प्रवण है।

+0

HTTP और XML और SOAP को RPC मॉडल की आवश्यकता नहीं है। वास्तव में .NET के भीतर डब्ल्यूसीएफ में इनकमिंग और आउटगोइंग संदेशों के रूप में संचार से निपटने के विकल्प हैं। यह बहुत संदेश-उन्मुख है। मुझे लगता है कि जावा-आधारित "वेब सेवाओं" ढेर में समान रूपक उपलब्ध हैं। – Cheeso

+0

निश्चित रूप से, आप आरपीसी पर "संदेश" पास कर सकते हैं, और जावा उस क्षमता को भी प्रदान करता है। "संदेश-उन्मुख" द्वारा, मेरा मतलब असीमित, भरोसेमंद और लेनदेनपूर्ण था, जो चीजें आपको आरईएसटी या डब्ल्यूएस- * आधारित वेब सेवा से नहीं मिलती हैं ... हालांकि, आप निश्चित उच्च स्तर को परिभाषित कर सकते हैं प्रोटोकॉल व्यक्तिगत अविश्वसनीय, तुल्यकालिक संचालन का उपयोग कर। – erickson

6

जेएमएस समेत संदेश आधारित सिस्टम, दूसरे छोर से "कालक्रम से decoupled" होने की क्षमता प्रदान करते हैं। एक संदेश दूसरे छोर के बिना भेजा जा सकता है।

अन्य सभी आम ए 2 ए दृष्टिकोणों के लिए साथी को तत्काल प्रतिक्रिया देने में सक्षम होने की आवश्यकता होती है, जिससे उन्हें प्रोसेस फैलाने की कम क्षमता के साथ चरम भार को संभालने में सक्षम होना आवश्यक होता है।

1

इसे डाइफिमो की पोस्ट पर टिप्पणी के रूप में जोड़ देगा, लेकिन अभी तक प्रतिनिधि नहीं है।

अपने जवाब से हवाला देते हुए:।।

"वेब सेवाओं वितरित सेवाओं के क्षेत्र में नवीनतम प्रवृत्ति है वे अपने प्रोटोकॉल के रूप में HTTP का उपयोग करें और किसी भी ग्राहक टीसीपी/आईपी के माध्यम से कनेक्ट और एक HTTP अनुरोध कर सकते हैं कि साथ interoperate कर सकते

आप SOAP या RPC-XML या REST या "अनुबंध पहले" शैलियों का उपयोग कर सकते हैं, लेकिन इसके प्रोटोकॉल के रूप में HTTP का उपयोग करके वितरित घटक का अंतर्निहित विचार बना रहता है। "


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

इसलिए "वेब सेवाओं" के जेएमएस बनाम उपयोग के प्रत्यक्ष उपयोग के मामले में मुझे लगता है कि यह ज्यादातर टूलींग, आराम स्तर, और क्या आपको वास्तव में कुछ जेएमएस विशिष्ट सुविधा (जो डब्ल्यूएस- * आप से छिपा होगा)। इस बिंदु पर मुझे लगता है कि केवल काफी specilized अनुप्रयोगों को कच्चे जेएमएस पहुंच की आवश्यकता होगी।

2

मुझे वेब सेवाओं के SO.r.t SOAP प्रोटोकॉल कार्यान्वयन की बात करने दें ... जो बेहतर जेएमएस बनाम वेबसाइसेस है .... जेएमएस परिवहन प्रोटोकॉल प्रदान करता है और यह अंतर्निहित संदेश प्रदाता प्रदान करता है जो दर्शाता है कि आपके जेएमएस प्रदाता के लिए कितना अच्छा या बुरा है एमक्यू एक शक्तिशाली विश्वसनीय जेएमएस प्रदाता है जहां एसओएपी प्रोटोकॉल को एप्लिकेशन स्तरीय प्रोटोकॉल दोनों माना जा सकता है और इसे ट्रांसपोर्ट प्रोटोकॉल (एसओएपी/एचटीटीपी के अर्थ में) के रूप में भी माना जा सकता है ... एसओएपी का संगठन एक्सएमएल आधारित मानक के समर्थन में है। .. एक आवेदन स्तर प्रोटोकॉल, हम किसी भी परिवहन प्रोटोकॉल पर एक सिस्टम से दूसरे सिस्टम में एक संदेश के रूप में एसओएपी पर विचार करते हैं, जहां एक परिवहन प्रोटोकॉल के रूप में, एसओएपी को पेलोड (संदेश डेटा) के परिवहन के लिए एक कंटेनर के रूप में माना जा सकता है ... एसओएपी/एचटीटीपी को जेएमएस मेसेजिंग प्रदाता के रूप में भी देखा जा सकता है .... लेकिन बाद के रूप में, HTTP में reliablity का मुद्दा है, क्योंकि यह नेटवर्किंग, सॉकेट कनेक्शन, बैंडविड्थ इत्यादि से संबंधित त्रुटियों को लागू करता है ... इसलिए लंबी कहानी को छोटा रखना, जेएमएस भरोसेमंद संदेश प्रदाता अच्छा परिवहन प्रोटोकॉल के साथ बातचीत के लिए अच्छा मानक बनाता है जहां एक अनुप्रयोग स्तर प्रोटोकॉल के रूप में webservice एक्सएमएल-जैसे-एसओएपी प्रोटोकॉल का उपयोग करके संवाद करने के लिए असमान अनुप्रयोग बनाता है ... उम्मीद है कि यह स्पष्ट करता है ...

0

यह सब आपकी आवश्यकताओं पर निर्भर करता है, आप किस ढांचे का उपयोग करेंगे और आपके अनुप्रयोग पर्यावरण और व्यवहार। यदि आप इसके बारे में एक सिंहावलोकन दे सकते हैं तो आप एक कठोर जवाब प्राप्त कर सकते हैं।

अब यह एक सेडान कार के साथ एक ट्रक की तुलना करने की तरह है, आपको पता होना चाहिए कि आप इसका क्या उपयोग करेंगे और किस सड़क पर यह तय करने में सक्षम होना चाहिए कि कौन सा बेहतर है।

1

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

वेब सेवाओं को एक अनुरोधकर्ता और प्रदाता के बीच आवश्यक व्यावसायिक इंटरफेस के रूप में परिभाषित किया जाता है, न कि सभी व्यावसायिक अनुरोधों के लिए एक सामान्य पाइप के रूप में।ऐसे कई चर हैं जो वेब सेवाओं को चित्रित कर सकते हैं, जिनमें शामिल हैं:

  • उन्हें कसकर जोड़ा जा सकता है, और उनकी तैनाती इनवोकेशन फ्रेमवर्क के उपयोग पर आधारित हो सकती है।
  • वे या तो एक तुल्यकालिक अनुरोध/उत्तर मोड या एक असीमित मोड में प्रदर्शन कर सकते हैं।
  • उन्हें जे 2 ईई या गैर-जे 2 ईई प्रदाताओं द्वारा उजागर किया जा सकता है।
  • वे लेन-देन और सुरक्षा के लिए समर्थन प्रदान कर सकते हैं या नहीं।

JMS एक अतुल्यकालिक संदेश आधारित इंटरफेस है। आप विषम प्रणालियों के बीच वितरित व्यापार तर्क तक पहुंचने के लिए जेएमएस का भी उपयोग कर सकते हैं। एक संदेश-आधारित इंटरफेस होने से निम्नलिखित कार्य सक्षम होते हैं:

पॉइंट टू पॉइंट और प्रकाशित/सब्सक्राइब मैकेनिज्म। संदेश-आधारित ढांचे अन्य अनुप्रयोगों को जानकारी को स्पष्ट रूप से अनुरोध किए बिना धक्का दे सकते हैं। समान जानकारी समानांतर में कई ग्राहकों को वितरित की जा सकती है।

ताल स्वतंत्रता। जेएमएस फ्रेमवर्क एसिंक्रोनस मोड में काम करते हैं लेकिन सिंक्रोनस अनुरोध/प्रतिक्रिया मोड को अनुकरण करने की क्षमता भी प्रदान करते हैं। यह स्रोत और लक्ष्य प्रणालियों को एक-दूसरे के इंतजार किए बिना एक साथ काम करने की अनुमति देता है।

गारंटीकृत सूचना वितरण। जेएमएस ढांचे लेनदेन मोड में संदेशों का प्रबंधन कर सकते हैं और संदेश वितरण सुनिश्चित कर सकते हैं (लेकिन डिलीवरी की समयबद्धता की गारंटी के बिना)।

विषम ढांचे के बीच इंटरऑपरेबिलिटी। स्रोत और लक्ष्य अनुप्रयोग संचार की समस्याओं को संभालने और उनके संबंधित ढांचे से संबंधित निष्पादन के बिना विषम वातावरण में काम कर सकते हैं।

एक्सचेंजों को अधिक तरल पदार्थ बनाना। संदेश मोड में स्विच बेहतर अनाज वाले सूचना विनिमय की अनुमति देता है।

enter image description here

Source

1

इन्फोर्मेशन WS दोनों सक्षम अनुप्रयोगों को वितरित। अंतर सिंक्रोनस (वेब ​​सेवा) बनाम एसिंक्रोनस (जेएमएस) है। एसओएपी या आरईएसटी शैलियों में वेब सेवाएं लागू की जा सकती हैं। जेएमएस एक एपीआई है जो दो मोड में संचार का समर्थन करता है - पॉइंट-टू-पॉइंट और प्रकाशित-सबस्क्राइब। अपाचे ActiveMQ, RabitMQ कई जेएमएस कार्यान्वयनकर्ता हैं।

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