2010-03-18 4 views
7

मैं सॉफ़्टवेयर का एक टुकड़ा तैयार कर रहा हूं जिसे मुख्य रूप से शेड्यूल पर आधारित हार्डवेयर के विभिन्न टुकड़ों को संचालित करने की आवश्यकता होती है, लेकिन इसे सेटिंग कॉन्फ़िगर करने, शेड्यूल को कॉन्फ़िगर करने और संभवतः मैन्युअल रूप से हार्डवेयर को नियंत्रित करने के लिए वेब इंटरफ़ेस भी होना चाहिए। मुझे यकीन नहीं है कि इस तरह के सॉफ्टवेयर के आर्किटेक्चर को कैसे डिजाइन किया जाए।मैं एक प्रोग्राम के लिए .NET (C#) कैसे डिज़ाइन करूं जिसे Windows सेवा के रूप में चलाने की आवश्यकता है लेकिन एक वेब इंटरफ़ेस भी है?

एक विचार यह है कि मेरे पास एक विंडोज सेवा बनाना है जो हार्डवेयर के साथ संचार के साथ-साथ "प्रकाशन" वेब सेवाओं को डब्ल्यूसीएफ के माध्यम से करता है और उसके बाद एक एएसपी.NET एप्लिकेशन होता है जो डब्ल्यूसीएफ के माध्यम से विंडोज सेवा को नियंत्रित करता है। यह दृष्टिकोण जो मैं पूरा करने की कोशिश कर रहा हूं उसके लिए बहुत काम करता प्रतीत होता है।

क्या कोई मुझे कृपया कुछ दिशा दे सकता है कि यह एक अच्छा दृष्टिकोण है या नहीं, और अगर कोई मौजूद है तो मुझे ऐसा करने का बेहतर तरीका भी दें?

धन्यवाद! जोएल

+0

सुरक्षा कारणों से सबसे अच्छा समाधान आपके हार्डवेयर कॉन्फ़िगरेशन पर बहुत निर्भर करेगा। मशीनरी अनुरोध स्वीकार कैसे करती है? आपकी वेबसाइट आपकी विंडोज सेवा के संबंध में कहां रहती है? क्या फ़ायरवॉल शामिल हैं? क्या आप इसके बजाय एक विंडोज सेवा चला सकते हैं जो एक वेब सेवा का चुनाव करता है और यूआई भी है? – pdr

+0

मशीनरी मुख्य रूप से एक या अधिक धारावाहिक बंदरगाहों (आरएस 485 नेटवर्क) के माध्यम से अनुरोध स्वीकार करती है। वेबसाइट सेवा के समान मशीन पर हो सकती है, लेकिन यदि आवश्यक हो तो मुझे उन्हें विभाजित करने की क्षमता पसंद है। फ़ायरवॉल शायद इस मामले में कोई मुद्दा नहीं होगा क्योंकि यह सब एक ही नेटवर्क पर होंगे। क्या आप समझ सकते हैं कि आपका क्या मतलब है "विंडोज सेवा जो एक वेब सेवा का चुनाव करती है और यूआई भी है?" मुझे यकीन नहीं है कि विंडोज सेवा में यूआई कैसे हो सकता है। – hjoelr

+0

यदि आप किसी भिन्न मशीन पर वेब इंटरफ़ेस होस्ट करना चाहते हैं, तो आपके विचार के लिए कोई विकल्प नहीं है। – SLaks

उत्तर

1

एमएसडीएन: How to: Host WCF in a Windows Service Using TCP पर बताए गए अनुसार, आप विंडोज सेवा के भीतर से एक टीसीपी सेवा के रूप में डब्लूसीएफ एंडपॉइंट को तत्काल कर सकते हैं।

वहां से, यह एएसपी.NET अनुप्रयोग (उस अन्य डब्ल्यूसीएफ एंडपॉइंट का उपभोग करने के समान) में उस अंतराल का उपभोग करने के लिए अपेक्षाकृत सरल है।

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

+0

यह वह समाधान है जिसका मैं आ रहा था। हालांकि, अब मैं एक सेवा में एएसपी.Net वेब सर्वर एम्बेड करने के बारे में नहीं था। अगर मुझे संचार के लिए अभी भी डब्ल्यूसीएफ का उपयोग करने की आवश्यकता है, तो यह अभी भी जाने का रास्ता हो सकता है। – hjoelr

+0

डब्ल्यूसीएफ के संबंध में मेरा अनुवर्ती प्रश्न यह है: क्या यह वेब यूआई और हार्डवेयर के बीच मध्यस्थ होने के लिए पर्याप्त तेज़ होगा?मुझे नहीं लगता कि मैं डब्ल्यूसीएफ प्रतिक्रियाओं के लिए कई सेकंड इंतजार कर सकता हूं। – hjoelr

+1

@ हॉजेलर: डब्ल्यूसीएफ बहुत तेज है, भले ही आपके पास एन्क्रिप्शन और अन्य एक्सटेंशन चालू हों। मैं दूरस्थ सर्वर से एक सेकंड के 1/4 के क्रम पर प्रतिक्रिया समय के आदी हूं; आम तौर पर केवल विलंब नेटवर्क विलंबता के कारण होता है, और यदि आपके पास एक ही मशीन या कम से कम एक ही नेटवर्क पर चल रही सभी सेवाएं हैं तो विलंबता लगभग शून्य होनी चाहिए। – Aaronaught

0

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

+0

अच्छा विचार। हालांकि, दो तरह के संचार की जरूरत है। सेवा से वेबसाइट सर्वेक्षण जानकारी लेकिन वेबसाइट भी सेटिंग में और इस तरह की सेवा को अद्यतन करने में सक्षम होना चाहिए। – hjoelr

0

आप एएसपी.Net होस्टिंग एपीआई का उपयोग कर सेवा में एएसपी.Net वेब सर्वर एम्बेड कर सकते हैं, फिर इसे सीधे एएसपी.Net वेबसाइट चलाने के लिए उपयोग करें।

ध्यान दें कि एएसपी.Net साइट एक अलग ऐपडोमेन में चली जाएगी।

+0

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

+0

@Aaronaught: आप बस 'मार्शलबीरफॉब्जेक्ट' पास कर सकते हैं जो 'ApplicationHost.CreateAplicationHost' पर सेवा का खुलासा करता है और एएसपी.Net में इसके साथ बातचीत करता है। (एएसपी.Net परियोजना को सेवा असेंबली का संदर्भ देना चाहिए) – SLaks

+0

यह एक दिलचस्प अवधारणा है। मुझे नहीं पता था कि यह भी संभव था। मैं देखूंगा कि क्या मैं यह देखने के लिए देख सकता हूं कि यह मेरी स्थिति के लिए काम करेगा या नहीं। – hjoelr

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

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