क्या मुझे WCF से NserviceBus पर स्वैप करना चाहिए


13

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

अब, हमारे पास इसके साथ कई मुद्दे हैं - मुख्य रूप से हमें "डिस्कनेक्टेड मोड" का समर्थन करने के लिए कहा जा रहा है (हमें गलती सहिष्णु होने की आवश्यकता है)। जो मुझे पता है, उससे WCF स्टैक का उपयोग करने का कोई सरल तरीका नहीं है - हमें कुछ को लागू करने और शायद msmq का उपयोग करने की आवश्यकता होगी। मैं हाल ही में NServiceBus को देख रहा हूं, और मैं देख सकता हूं कि यह बिल को अच्छी तरह से फिट करने के लिए लगता है - गलती सहिष्णुता, संदेश एक सरल http गेटवे, आदि के माध्यम से इंटरनेट पर भेजे जा सकते हैं, मुझे पता है कि यह समुदाय में अच्छी तरह से सम्मानित है, और मैं इसे देखने से क्यों देख सकता हूं।

तो, मेरा सवाल यह है ... क्या एनएसडब्ल्यूबस की आवाज़ एक समझदार विचार की तरह काम करती है, या किसी के पास कोई अन्य सुझाव / वास्तविक दुनिया का अनुभव है जो इससे संबंधित है? मुझे लगता है कि मैं एक नई तकनीक शुरू करने के बारे में चिंतित हूं, जिसके बारे में मैं अपेक्षाकृत कम जानता हूं, और इसे हासिल करने जैसी चीजों के साथ समस्याओं का सामना करना पड़ रहा है, एक विश्वसनीय तरीके से सब कुछ सेट करना, रास्ते में आने वाली चीजें .. मैं भी "सोने से सावधान हूं" "वास्तुकला को चढ़ाना, और कुछ चमकदार का चयन करना जो मुझे अंत में WCF के साथ चिपके रहने और बनाम मेरे लिए काम करने के लिए लागू करने के लिए उकसाएगा।"

धन्यवाद!


1
> "डिस्कनेक्टेड मोड" का समर्थन करें (हमें गलती सहिष्णु होने की आवश्यकता है) क्या आप अभी भी क्लाइंट साइड पर बहुत सारे दोष सहिष्णुता का निर्माण करने जा रहे हैं? सर्वर पर MSMQ की गलती सहिष्णुता एक समस्या के मामले में राज्य को बहाल करने के लिए महान है, लेकिन मैं अभी भी देखता हूं कि क्लाइंट पर एक विशाल सिर दर्द होने के बावजूद कोई फर्क नहीं पड़ता कि आपने क्या चुना।
ब्रायन

1
खैर मुझे जो समर्थन करने की आवश्यकता है वह "गारंटी" है कि ग्राहक सर्वर पर एक संदेश भेजेगा और सर्वर को अंततः मिल जाएगा - इसलिए यदि हम ऑफ़लाइन हैं तो हमें तब तक कोशिश करते रहना चाहिए जब तक हम वहां नहीं पहुंचते। यही एनएसबी "मुफ्त में" करता है, जबकि डब्ल्यूसीएफ समाधान के रूप में (मुझे लगता है) कोड की आवश्यकता होगी ..
मैट रॉबर्ट्स

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

WCF में MSMQ बाइंडिंग है ... मैं कई बड़े पैमाने पर सफल अनुप्रयोगों का जानकार हूं जो इसका उपयोग करते हैं। उस ने कहा, मुझे nServiceBus भी पसंद है, लेकिन यह एक अलग बात करता है।
काइल हॉजसन ने

जवाबों:


12

मेरा सुझाव, अगर आपको इस बारे में जल्दी करने की आवश्यकता है और केवल WCF के साथ टिकाऊ (डिस्कनेक्ट) ऑपरेशन की सुविधा के लिए कुछ सरल की आवश्यकता है, तो WCF - MSMQ बाइंडिंग में देखना है। यदि आपको बड़े वातावरण में कुछ चाहिए, तो nServiceBus को देखें।

मेरे दिमाग में, nServiceBus वास्तव में एक बड़े वितरित वातावरण में चमकना शुरू कर देगा। उदाहरण के लिए, निम्न उदाहरण (जो WCF के साथ पृथ्वी पर नरक होगा लेकिन nServiceBus के साथ सरल है):

  • इन्फ्रास्ट्रक्चर ऐप सर्वर टियर, कैश सर्वर टियर से बना है, केवल डेटाबेस टियर पढ़ें, डेटाबेस टियर पढ़ें / लिखें
  • किसी भी समय ग्राहक एक नई प्रविष्टि जमा करता है, आप वास्तव में इन सभी स्तरों को एक बार में अपडेट करना चाहेंगे
  • WCF में, आपको प्रत्येक स्तर पर अलग-अलग सेवाओं को उजागर करना होगा और क्लाइंट को उन सभी के लिए धकेलना होगा (या आपके लिए कुछ केंद्रीय ऑर्केस्ट्रेशन एक ही काम कर रहा है)
  • NServiceBus में आपके पास प्रत्येक टियर इस जानकारी का ग्राहक होगा, और ग्राहक इसे एक बार प्रकाशित करेगा, जिससे सर्विस बस को बाकी की देखभाल करने की अनुमति मिलेगी

WCF में MSMQ बाइंडिंग है

यदि आपको ज्यादातर WCF से चिपके रहने की जरूरत है, हालाँकि, (छोटी समयसीमा, अन्य WCF सुविधाओं की आवश्यकता है), मेरा सुझाव है कि आप MSDN पर इस लेख को देखें। यह आपको दिखाता है कि MSMQ के लिए WCF बाइंडिंग का उपयोग कैसे किया जाता है, और फिर आपको पता चलता है कि HTTP से MSMQ में एक सेवा को कैसे स्थानांतरित किया जाए। जिस तरह से यह आपको इस परिदृश्य के साथ कुछ समस्याएं दिखाता है (और इन समस्याओं के उपयोगी समाधान)।

ये दोनों सुझाव MSMQ का भारी उपयोग करते हैं, इसलिए इस बारे में ध्यान दें: Apache MQ, RabbitMQ, और अन्य लोकप्रिय कतार प्रणाली के विपरीत, MSMQ एक विशिष्ट ब्रोकर आधारित कतार वास्तुकला नहीं है, यह इसके बजाय एक वितरित कतार है। इसका मतलब यह है कि यदि आपका WCF क्लाइंट MSMQ ट्रांसपोर्ट पर एक संदेश भेजता है, जबकि यह कतार को होस्ट करने वाले दूरस्थ सर्वर से कनेक्ट नहीं हो सकता है, तो क्लाइंट मशीन संदेश को स्थानीय रूप से "आउटगोइंग क्यू" के रूप में संदर्भित करता है। यह संदेश उस समय तक सुरक्षित रूप से रहेगा, जब तक कि क्लाइंट की MSMQ सेवा यह पता नहीं लगा लेती है कि वह दूरस्थ MSMQ सेवा से दोबारा जुड़ सकता है। उस बिंदु पर संदेश क्लाइंट से अंतिम गंतव्य तक जाएगा।

उपरोक्त में कम से कम एक चेतावनी है - यदि दूरस्थ सर्वर बहुत लंबे समय तक ऑफ़लाइन है (MSMQ के लिए अपने दस्तावेज़ की जांच करें) तो ग्राहक को छोड़ देना होगा और संदेश को मृत पत्र कतार में जाने से रोकना होगा। मृत पत्र कतार में स्थानांतरित संदेशों को स्वचालित रूप से फिर से नहीं भेजा जा सकता है, उन्हें फिर से निर्माण किया जाना चाहिए।

यदि आपको एन्क्रिप्शन की आवश्यकता है और ActiveDirectory नहीं है, तो इस ब्लॉग प्रविष्टि पर , सेर्गेई सोरोकिन सक्रिय निर्देशिका के बिना WCF का उपयोग करके MSMQ के संचार को एन्क्रिप्ट करने के लिए आवश्यक चरणों का विवरण देता है।


7

वे 1 से 1 प्रतिस्थापन के लिए नहीं हैं - कई बार आप एनएससीबस का उपयोग संदेशों को फीड करने या डब्ल्यूसीएफ समापन बिंदु से संदेश लेने के लिए करेंगे।

किसी भी स्थिति में, डिस्कनेक्ट किए गए मोड परिदृश्यों को इस तरह से हैंडल करना जहां संदेश की कतारें वास्तव में हैं, वास्तव में चमकती हैं। NServiceBus शुरू करने के लिए एक अच्छी जगह है। वहाँ कई अन्य विकल्प हैं। मैं ध्यान दूंगा कि उनमें से कई वास्तव में दिन के अंत में MSMQ को लपेटते हैं - MSMQ एक बहुत ही ठोस बैक एंड है और संभवत: यह तब उपयोग करने योग्य है जब इसे सुलभ बनाया जाए।


धन्यवाद। पॉइंट लिया गया, हालाँकि मैं अपने केस में 1: 1 रिप्लेसमेंट के रूप में देख रहा हूँ क्योंकि मेरे ज्यादातर WCF कॉम्म्स इन पीसी और सर्वर के बीच कॉम्स को सपोर्ट करने के लिए हैं - nsb मेरे लिए यह सब ध्यान रखता है, इसलिए यह एक स्वैप है -मेरे लिए।
मैट रॉबर्ट्स

मिल गया, तो यह आपके लिए बहुत अच्छी तरह से काम करना चाहिए।
व्याट बार्नेट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.