.NET इंटर-प्रोसेस संचार के लिए सबसे अच्छा विकल्प क्या है? [बन्द है]


83

क्या मुझे अपने मशीन पर चल रही प्रक्रिया के साथ संवाद करने के लिए नामांकित पाइप्स, या .NET रीमोटिंग का उपयोग करना चाहिए?


1
वाह मैं सिर्फ मूल रूप से एक ही सवाल पूछा ... stackoverflow.com/questions/84860/…
क्रिस Erickson

जवाबों:


58

WCF सबसे अच्छा विकल्प है। यह विभिन्न परिवहन तंत्रों ( नामांकित पाइप्स सहित ) का समर्थन करता है और इन्हें पूरी तरह से संचालित किया जा सकता है। मैं अत्यधिक अनुशंसा करूंगा कि आप WCF पर एक नज़र डालें।

यहाँ एक ब्लॉग है जो WCF बनाम रिमोटिंग प्रदर्शन की तुलना करता है

ब्लॉग से एक उद्धरण:

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

WCF के लिए MSDN अनुभाग


1
रीमोटिंग के पक्ष में और सबूत। Microsoft रीमोटिंग / WCF टीम के किसी व्यक्ति से: "रीमोटिंग में बहुत कम विकास निवेश हो रहा है। WCF रेमोटिंग का उत्तराधिकारी है।" यहाँ से stackoverflow.com/questions/1294494/…
MarkJ

15

यदि यह एक ही मशीन पर है, तो नामांकित पाइप आपको बेहतर प्रदर्शन देता है और इसे रीमोटिंग इन्फ्रास्ट्रक्चर के साथ-साथ डब्ल्यूसीएफ के साथ लागू किया जा सकता है । या आप सीधे System.IO.Pipes का उपयोग कर सकते हैं ।


5

यदि आपका मतलब अंतर-प्रक्रिया संचार से है, तो मैंने अब तक बिना किसी समस्या के .NET रीमोटिंग का उपयोग किया है। यदि दो प्रक्रियाएं एक ही मशीन पर होती हैं, तो संचार काफी तेज होता है।

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


3
नामित पाइपों पर WCF इसे भी अनुमति देता है। और आप दोनों प्रक्रियाओं में एक ही अनुबंध विधानसभा का उपयोग कर सकते हैं।
केंट बोगार्ट

3

.NET फ्रेमवर्क 2.0 में रिमोटिंग एक ही मशीन के भीतर अंतर-प्रक्रिया संचार के लिए आईपीसी चैनल प्रदान करता है ।


3

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

यदि प्रदर्शन महत्वपूर्ण नहीं है और आपको अन्य वेब सेवा तकनीकों के साथ इंटरोप की आवश्यकता है, तो आप WS-HTTP बाइंडिंग का उपयोग करना चाहेंगे। अपने मामले के लिए, आप या तो नेट-टीसीपी बाइंडिंग, या एक नामित-पाइप बाइंडिंग के साथ डब्ल्यूसीएफ का उपयोग कर सकते हैं। या तो काम करना चाहिए।

मेरा व्यक्तिगत रूप से यह है कि WCF दृष्टिकोण अधिक साफ है क्योंकि आप अनुबंधित सेवाओं को कर सकते हैं और संदेशों पर ध्यान केंद्रित कर सकते हैं, न कि वस्तुओं पर (मैं WCF / .NET रीमोटिंग के डिफ़ॉल्ट प्रोग्रामिंग मॉडल के आधार पर यहां एक सामान्यीकरण कर रहा हूं)। मुझे तार के पार वस्तुएं भेजना पसंद नहीं है क्योंकि बहुत सी शब्दार्थिक जानकारी खो जाती है या स्पष्ट नहीं होती है। जब आप कर रहे हैं, तो आप एक संदेश भेज रहे हैं जैसे कि आप WCF के साथ हैं, तो संचार और वर्गों / बुनियादी ढांचे के बीच अपनी चिंताओं को अलग करना आसान हो जाता है जो एक नोड से बना है।


2

WCF भी लचीलापन प्रदान करता है। केवल कुछ कॉन्फिगर (बाइंडिंग) को बदलकर आप उसी मशीन पर IPC के बजाय किसी अन्य मशीन पर समान सेवा कर सकते हैं। इसलिए आपका कोड लचीला रहता है।


.NET के लिए IPC API की एक सूची: weblogs.asp.net/ricardoperes/…
Ricardo Peres

1

.Net रीमोटिंग अपने आप में एक प्रोटोकॉल नहीं है। यह आपको लेने के लिए जो प्रोटोकोल का उपयोग करने देता है: SOAP, नाम-पाइप, आदि।


0

.net रीमोटिंग को आंतरिक प्रक्रिया संचार करने के लिए .net में बनाया गया है। यदि आप इसका उपयोग करते हैं, तो वे भविष्य के संस्करणों में समर्थन और संभवतः इसे जारी रखेंगे। नामित पाइप आपको .net के भविष्य के संस्करणों में एन्हांसमेंट का वादा नहीं करते हैं


2
अनसुना है कि वे रीमोटिंग को बढ़ाएंगे। रेमोटिंग / डब्ल्यूसीएफ टीम के किसी व्यक्ति से: "रीमोटिंग में बहुत कम विकास निवेश हो रहा है। डब्ल्यूसीएफ रेमोटिंग का उत्तराधिकारी है।" यहाँ से stackoverflow.com/questions/1294494/…
MarkJ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.