2009-05-25 8 views
6

मेरे पास क्लाइंट-सर्वर एप्लिकेशन है - जिसमें सर्वर अनिवार्य रूप से एक एएसपी .NET वेब एप्लिकेशन है और वितरित ग्राहक हैं डेस्कटॉप अनुप्रयोगों।क्लाइंट (डेस्कटॉप ऐप) डेटा खींचता है ... लेकिन मैं सर्वर (वेब ​​ऐप) डेटा को धक्का देना चाहता हूं

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

आदर्श रूप से, जिस तरह से इसे काम करना चाहिए वह यह है कि डेस्कटॉप ऐप को अपडेट होने पर अपडेट प्राप्त करना चाहिए, इसे सर्वर से खींचने की आवश्यकता नहीं है; इसके बजाय सर्वर क्लाइंट को धक्का देने में सक्षम होना चाहिए।

मैं ऐसा करने के बारे में कैसे जा सकता हूं - समाधान के आर्किटेक्चर को देखते हुए - एक वेब एप्लिकेशन को उसी नेटवर्क (डेस्कटॉप) में डेस्कटॉप एप्लिकेशन (क्लाइंट) में डेटा धक्का देने की आवश्यकता होती है?

उत्तर

7

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

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

+1

बस एक नोट छोड़ना चाहता था कि आप IHttpAsyncHandler (http://msdn.microsoft.com/en-us/magazine/cc164128.aspx) और सिस्टम का उपयोग कर सकते हैं। थ्रेडिंग। मॉनिटर आसानी से एक (सॉर्ट) ईवेंट संचालित करने के लिए .NET 2 में "सर्वर पुश"।0 यदि कोई इसके लिए पूर्ण उड़ा उपयोगिता वर्ग के बारे में जानता है, तो कृपया कुछ लिंक पोस्ट करें – Radu094

+0

प्रत्येक क्लाइंट के लिए सर्वर को एक सॉकेट कनेक्शन जिंदा रखना होगा। तो जब यह नंबर पर काम नहीं करेगा। ग्राहकों की अग्रिम में भविष्यवाणी नहीं की जा सकती है। –

0

यदि आप एक सॉकेट खोल सकते हैं, तो क्लाइंट सर्वर से कनेक्ट हो सकता है और सर्वर उपयुक्त होने पर डेटा को सॉकेट के नीचे धक्का दे सकता है। ऐसा कोई कारण नहीं है कि कनेक्शन शुरू करने वाली पक्ष हमेशा डाटा ट्रांसफर शुरू करने के लिए एक होनी चाहिए।

+0

यह ऐप उद्योगों में सामान्य इंट्रानेट के लिए है। सॉकेट कनेक्शन का उपयोग करना - यानी सॉकेट का उपयोग करने के लिए एक पोर्ट को एक्सेस के लिए खोला जाना चाहिए - फ़ायरवॉल इत्यादि का पुनर्गठन आदि। क्या यह एक उचित स्थापना पूर्व-आवश्यकता है या क्या औद्योगिक क्लाइंट आम तौर पर इसका विरोध करेंगे? – Sameet

+0

एक HTTP कनेक्शन _is_ एक सॉकेट। जवाब क्या है (सही ढंग से) अनुशंसा करता है कि क्लाइंट एक GET भेजता है, लेकिन जब तक डेटा भेजने के लिए तैयार नहीं होता है तब तक सर्वर प्रतिक्रिया वापस भेज देता है। –

+0

हां, लेकिन HTTP कनेक्शन पोर्ट 80 पर है, जो फ़ायरवॉल द्वारा अवरुद्ध नहीं है? जो आपने वर्णित किया है वह सही लगता है - जब तक डेटा नहीं होता है तब तक सर्वर का जवाब देना - यह करने के बारे में कैसे जाना है? – Sameet

2

आप डब्ल्यूसीएफ कॉलबैक का उपयोग कर सकते हैं - यह एक वेब सेवा है जहां आप किसी ग्राहक से अधिसूचनाओं की सदस्यता ले सकते हैं और सर्वर सब्सक्राइब किए गए ग्राहकों को संदेश भेजेगा। मेरे पास मेरे ब्लॉग पर beginners guide है।

+0

डब्ल्यूसीएफ? बस .NET 2.0 से अधिक? अफसोस की बात है, .NET 2.0 एक सीमा है जिसके तहत मुझे काम करने की ज़रूरत है? डब्ल्यूसीएफ कॉलबैक उस मामले में मदद करेगा? – Sameet

+0

नहीं, डर नहीं, यह केवल डब्ल्यूसीएफ है मुझे डर है। – blowdart

1

आपको SO question में रुचि हो सकती है। आप एक धूमकेतु अनुप्रयोग की तरह लगता है - सर्वर के लिए सर्वर धक्का।

1

WebSync देखें; यह ASP.NET/IIS के लिए एक धूमकेतु समाधान है, लेकिन एक पूर्ण .NET क्लाइंट भी उपलब्ध है, जो मोटी क्लाइंट, विंडोज़ सेवाओं आदि के साथ एकीकरण को सक्षम बनाता है, इसलिए ऐसा लगता है कि यह बिल को अच्छी तरह से फिट करना चाहिए।

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