क्या मुझे अपने मशीन पर चल रही प्रक्रिया के साथ संवाद करने के लिए नामांकित पाइप्स, या .NET रीमोटिंग का उपयोग करना चाहिए?
क्या मुझे अपने मशीन पर चल रही प्रक्रिया के साथ संवाद करने के लिए नामांकित पाइप्स, या .NET रीमोटिंग का उपयोग करना चाहिए?
जवाबों:
WCF सबसे अच्छा विकल्प है। यह विभिन्न परिवहन तंत्रों ( नामांकित पाइप्स सहित ) का समर्थन करता है और इन्हें पूरी तरह से संचालित किया जा सकता है। मैं अत्यधिक अनुशंसा करूंगा कि आप WCF पर एक नज़र डालें।
यहाँ एक ब्लॉग है जो WCF बनाम रिमोटिंग प्रदर्शन की तुलना करता है ।
ब्लॉग से एक उद्धरण:
WCF और .NET रीमोटिंग वास्तव में प्रदर्शन में तुलनीय हैं। अंतर इतने छोटे होते हैं (क्लाइंट विलंबता को मापना) कि यह कोई फर्क नहीं पड़ता कि कौन सा थोड़ा तेज है। WCF हालांकि .NET रेमोटिंग की तुलना में बेहतर सर्वर थ्रूपुट है। अगर मैं पूरी तरह से नई परियोजना शुरू करूंगा तो मैं डब्ल्यूसीएफ चुनूंगा। वैसे भी WCF रीमोटिंग की तुलना में बहुत अधिक है और उन सभी विशेषताओं के लिए जो मुझे पसंद हैं।
यदि यह एक ही मशीन पर है, तो नामांकित पाइप आपको बेहतर प्रदर्शन देता है और इसे रीमोटिंग इन्फ्रास्ट्रक्चर के साथ-साथ डब्ल्यूसीएफ के साथ लागू किया जा सकता है । या आप सीधे System.IO.Pipes का उपयोग कर सकते हैं ।
यदि आपका मतलब अंतर-प्रक्रिया संचार से है, तो मैंने अब तक बिना किसी समस्या के .NET रीमोटिंग का उपयोग किया है। यदि दो प्रक्रियाएं एक ही मशीन पर होती हैं, तो संचार काफी तेज होता है।
नामित पाइप निश्चित रूप से अधिक कुशल हैं, लेकिन उन्हें कम से कम एक मूल एप्लिकेशन प्रोटोकॉल के डिजाइन की आवश्यकता होती है, जो संभव नहीं है। रिमोटिंग से आप आसानी से दूरस्थ तरीकों को लागू कर सकते हैं।
यदि आप .NET फ्रेमवर्क 3.0 या इसके बाद के संस्करण का उपयोग कर रहे हैं, तो मैं डब्ल्यूसीएफ का उपयोग करूंगा। WCF का उपयोग करके, आप प्रदर्शन / इंटरॉप / आदि के बीच व्यापार-बंद पर निर्भर विभिन्न बाइंडिंग का उपयोग कर सकते हैं। आपको इसकी ज़रूरत है।
यदि प्रदर्शन महत्वपूर्ण नहीं है और आपको अन्य वेब सेवा तकनीकों के साथ इंटरोप की आवश्यकता है, तो आप WS-HTTP बाइंडिंग का उपयोग करना चाहेंगे। अपने मामले के लिए, आप या तो नेट-टीसीपी बाइंडिंग, या एक नामित-पाइप बाइंडिंग के साथ डब्ल्यूसीएफ का उपयोग कर सकते हैं। या तो काम करना चाहिए।
मेरा व्यक्तिगत रूप से यह है कि WCF दृष्टिकोण अधिक साफ है क्योंकि आप अनुबंधित सेवाओं को कर सकते हैं और संदेशों पर ध्यान केंद्रित कर सकते हैं, न कि वस्तुओं पर (मैं WCF / .NET रीमोटिंग के डिफ़ॉल्ट प्रोग्रामिंग मॉडल के आधार पर यहां एक सामान्यीकरण कर रहा हूं)। मुझे तार के पार वस्तुएं भेजना पसंद नहीं है क्योंकि बहुत सी शब्दार्थिक जानकारी खो जाती है या स्पष्ट नहीं होती है। जब आप कर रहे हैं, तो आप एक संदेश भेज रहे हैं जैसे कि आप WCF के साथ हैं, तो संचार और वर्गों / बुनियादी ढांचे के बीच अपनी चिंताओं को अलग करना आसान हो जाता है जो एक नोड से बना है।
WCF भी लचीलापन प्रदान करता है। केवल कुछ कॉन्फिगर (बाइंडिंग) को बदलकर आप उसी मशीन पर IPC के बजाय किसी अन्य मशीन पर समान सेवा कर सकते हैं। इसलिए आपका कोड लचीला रहता है।
.Net रीमोटिंग अपने आप में एक प्रोटोकॉल नहीं है। यह आपको लेने के लिए जो प्रोटोकोल का उपयोग करने देता है: SOAP, नाम-पाइप, आदि।
.net रीमोटिंग को आंतरिक प्रक्रिया संचार करने के लिए .net में बनाया गया है। यदि आप इसका उपयोग करते हैं, तो वे भविष्य के संस्करणों में समर्थन और संभवतः इसे जारी रखेंगे। नामित पाइप आपको .net के भविष्य के संस्करणों में एन्हांसमेंट का वादा नहीं करते हैं