2010-09-27 16 views

उत्तर

6

मुझे लगता है कि "बाहरी एप्लिकेशन" से आपका मतलब कुछ ऐसा है जो सी # कोड की प्रक्रिया स्थान से बाहर है। साथ ही, मुझे लगता है कि आप सी # घटनाओं का जिक्र नहीं कर रहे हैं - जो एक अवधारणा नहीं है जो .NET के कार्यान्वयन डोमेन के बाहर मौजूद है - वे कुछ ऐसा नहीं हैं जो कोड के बाहर से पहुंच योग्य हो।

तो इस सवाल का सामान्य उत्तर यह है कि "हाँ यह संभव है" - लेकिन चूंकि आप अनिवार्य रूप से अंतर-प्रक्रिया अधिसूचनाएं भेजने की कोशिश कर रहे हैं, आपको किसी प्रकार का IPC mechanism उपयोग करने की आवश्यकता होगी।

.NET के पास आईपीसी करने के लिए एक समृद्ध एपीआई है, नामित पाइप से लेकर डीसीओएम तक, टीसीपी/आईपी जैसे निम्न स्तर के नेटवर्किंग प्रोटोकॉल तक। आप जिस दृष्टिकोण का उपयोग करते हैं उस पर्यावरण पर निर्भर करता है जिसमें इन प्रक्रियाओं को संवाद करने की आवश्यकता होती है (एक मशीन पर, इंट्रानेट पर मशीनों पर, इंटरनेट पर, आदि)। यह उस प्रकार की जानकारी पर भी निर्भर करेगा जिस पर आप आदान-प्रदान कर रहे हैं और आप कितना प्रयास करने के इच्छुक हैं। .NET 3.5 अनुप्रयोगों के लिए आप आमतौर पर WCF as the unifying framework का उपयोग कर एक समर्थित कार्यान्वयन पा सकते हैं।

जाहिर है, यह सब उस .NET एप्लिकेशन के कार्यान्वयन (स्रोत कोड पढ़ें) को संशोधित करने की आपकी क्षमता पर निर्भर करता है, जिसमें आप किसी ईवेंट को बढ़ाने की कोशिश कर रहे हैं। यदि आप ऐसा नहीं कर सकते हैं, और उस कोड में कोई मौजूदा आईपीसी तंत्र नहीं है, तो आप शायद अटक गए हैं।

अद्यतन:

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

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

पर:

रूबी पक्ष (जो मैं के साथ कम परिचित हूँ) पर, यहाँ कुछ लिंक है कि आप उपयोगी लग सकती हैं।नेट की ओर, अधिक जानकारी के लिए पता लगाने के लिए कुछ प्रासंगिक लिंक कर रहे हैं:

+0

आपकी धारणाएं सही हैं। आप आसानी और समय की प्राथमिकता के साथ क्या सलाह देंगे। दोनों ऐप्स एक ही मशीन पर चल रहे हैं, और मैं उन्हें दोनों लिख रहा हूं। – tybro0103

+0

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

1

एक स्पष्ट समाधान प्रकार के नेटवर्क संदेश का उपयोग करना होगा। या तो एक अल्पकालिक टीसीपी/आईपी कनेक्शन, या - विशेष रूप से यदि दोनों ऐप्स एक ही होस्ट पर हैं - एक सरल यूडीपी पैकेट।

सी # एप्लिकेशन कनेक्शन स्वीकार करेगा (यदि टीसीपी), सॉकेट से ईवेंट (ओं) को पढ़ें और आखिरकार उन्हें संसाधित करें।

0

मार्टिन जवाब पर विस्तार करने के लिए, आप उपलब्ध पुस्तकालयों के साथ एक संदेश प्रोटोकॉल पर विचार हो सकता दोनों लक्षित भाषाओं में। Stomp जैसे कुछ दिमाग में आता है।

0

आप शायद संदेश कतारों के साथ कुछ कर सकते हैं, विशेष रूप से एक जो कई प्लेटफॉर्म और लैंगुग का समर्थन करता है, जैसे ActiveMQ। मुझे लगता है कि इसमें एक संदेश प्राप्त घटना के लिए एक हैंडलर जोड़ने की क्षमता होगी ताकि आप एसिंक्रोनस डिलीवरी प्राप्त कर सकें।

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