2008-09-17 12 views
77

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

+1

वाह मैंने मूल रूप से वही प्रश्न पूछा है ... http://stackoverflow.com/questions/84860/how-to-communicate-with-a-windows-service-from-an-plication- यह -इंटरटेक्ट्स-वाई –

उत्तर

58

डब्ल्यूसीएफ सबसे अच्छा विकल्प है। यह a number of different transport mechanisms (includingNamedPipes) का समर्थन करता है और पूरी तरह कॉन्फ़िगरेशन संचालित हो सकता है। मैं अत्यधिक अनुशंसा करता हूं कि आप डब्ल्यूसीएफ पर नज़र डालें।

यहां एक ब्लॉग है जो WCF vs Remoting performance comparison करता है।

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

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

MSDN Section for WCF

+1

रिमोटिंग के पक्ष में और सबूत। माइक्रोसॉफ्ट रीमोटिंग/डब्ल्यूसीएफ टीम के किसी से: "रिमोटिंग में बहुत कम विकास निवेश चल रहा है। डब्ल्यूसीएफ रिमोटिंग का उत्तराधिकारी है।" यहां से http://stackoverflow.com/questions/1294494/is-net-remoting-really-deprecated – MarkJ

0

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

+2

असंभव है कि वे रिमोटिंग में वृद्धि करेंगे। रिमोटिंग/डब्ल्यूसीएफ टीम के किसी से: "रिमोटिंग में बहुत कम विकास निवेश चल रहा है। डब्ल्यूसीएफ रिमोटिंग का उत्तराधिकारी है।" यहां से http://stackoverflow.com/questions/1294494/is-net-remoting-really- deeprecated – MarkJ

5

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

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

+3

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

14

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

1

नेट रीमोटिंग एक प्रोटोकॉल नहीं है। यह आपको चुनने के लिए प्रोटोकॉल चुनने देता है: SOAP, नामित पाइप, आदि

3

दूरस्थ एक ही मशीन के भीतर अंतर संचार प्रक्रिया के लिए आईपीसी चैनल प्रदान करता है।

3

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

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

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

1

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

+0

.NET के लिए आईपीसी एपीआई की एक सूची: http://weblogs.asp.net/ricardoperes/local-machine-interprocess -communication-साथ शुद्ध –