2012-10-12 13 views
5

हमारे पास एक विरासत तृतीय पक्ष उपकरण है (सी/सी ++ में विकसित)। टूल में एक सर्वर घटक है जो एक विंडोज सर्वर चलाता है जो नौकरियां चलाता है (जटिल जंजीर लंबे डेटाबेस प्रश्न)। इसमें एक क्लाइंट मॉड्यूल भी है जो सभी उपयोगकर्ताओं के डेस्कटॉप पर स्थापित है और उपयोगकर्ता नौकरियां जोड़ सकते हैं, चल रहे नौकरियों और उनकी प्रगति देख सकते हैं, नौकरियां हटा सकते हैं यानी मूल रूप से नौकरियों का प्रबंधन करते हैं। हम .NET प्रौद्योगिकियों का उपयोग कर घर में ऐसे उपकरण को विकसित करना चाहते हैं।.NET में इस क्लाइंट/सर्वर एप्लिकेशन को कैसे आर्किटेक्ट करें?

वर्तमान में हम सोच रहे हैं कि इस तरह के टूल को कैसे आर्किटेक्ट करना है और ऐसा लगता है कि हम पहेली के कुछ महत्वपूर्ण टुकड़े खो रहे हैं।

ग्राहक: हम WPF

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

मुख्य सवाल हम

कैसे एक सर्वर कंसोल आवेदन (कि WPF ग्राहकों कार्यों की स्थिति प्राप्त इतना) ASMX या WCF वेब सेवाओं को बेनकाब कर सकते हैं जबकि काम चलाने के लिए जारी रखे हुए हैं है?

परिवर्तन होने पर सर्वर से प्रगति अद्यतन को WPF क्लाइंट में कैसे धक्का देना है?

हम शोध करने की कोशिश कर रहे हैं कि यह कैसे करें लेकिन विषय के लिए प्रासंगिक चीज़ों को न ढूंढें। लेख/मार्गदर्शन के लिए कोई संकेतक बहुत मददगार होंगे।

+0

संभावित डुप्लिकेट: http://stackoverflow.com/questions/11170457/discussion-client-server-plication-architecture –

+0

@MikeMcCaughan आपके द्वारा उल्लिखित लिंक जैसा दिखता है, लेकिन ऐसा नहीं है, मेरे मामले में, मेरा सर्वर ग्राहकों की सेवा के अलावा करने के लिए एक लंबा चल रहा काम है। – Aron

+0

इसे आज़माएं: http://dasunhegoda.com/architecture-products/1180/ – Techie

उत्तर

3

आपके पास जो भ्रम है, वह यह मानने में है कि नौकरी का निष्पादन और डब्ल्यूसीएफ एंडपॉइंट एक ही बात है। नौकरी प्रबंधन के लिए UI तत्व है कि

  1. ग्राहक आवेदन: मैं तीन मुख्य आइटम में इस विभाजित होगा।
  2. डब्ल्यूसीएफ सेवा एंडपॉइंट नौकरी की जानकारी पुनर्प्राप्त करने और नौकरी के अनुरोधों को बनाने/हटाने के लिए।
  3. आवेदन जो नौकरियां चलाता है।

ग्राहक आवेदन

क्लाइंट अनुप्रयोग WCF सेवा के माध्यम से काम डेटा पुनः प्राप्त करना चाहिए।आप को क्रियान्वित नौकरियों/देखने के लिए स्क्रीन की आपूर्ति करेगा रोजगार के अवसर पैदा करने/हटाने नौकरियों/आदि

WCF सेवा

WCF सेवा क्लाइंट अनुप्रयोग के लिए आवश्यक अंतिम बिंदुओं को बेनकाब करेंगे। इसमें आइटम शामिल हो सकते हैं: CreateJob, ViewJobs, DeleteJob, आदि। सेवा को आपके डेटाबेस बैकएंड में पढ़ना/लिखना चाहिए।

नौकरी के लिए आवेदन

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

प्रश्न

How can a server console application expose ASMX or WCF web services(so that WPF clients get the status of the jobs) WHILE CONTINUING TO RUN THE JOBS?

नौकरियों इस नकार दिया गया चल आवेदन से WCF सेवा बाहर अलग करके। नोट: आपके पास एक कंसोल एप्लिकेशन हो सकते हैं जो डब्ल्यूसीएफ और नौकरी निष्पादक होस्ट करता है, लेकिन अवधारणात्मक रूप से उन्हें अलग-अलग चीजों के रूप में सोचते हैं (उसी कंसोल ऐप में होस्टिंग केवल एक कार्यान्वयन विवरण है)।

How to push progress updates from server to the WPF clients when there is a change?

मैं यह कर नहीं होगा। मेरे पास यूआई या तो समय-समय पर मतदान होगा या डब्लूसीएफ एंडपॉइंट के माध्यम से स्थिति को पुनः प्राप्त करने के लिए रीफ्रेश बटन प्रदान करेगा।

यदि आपको पूरी तरह से ऐसा करने की ज़रूरत है तो आपको जॉब निष्पादक को संदेशों को प्रकाशित करने की आवश्यकता है क्योंकि यह नौकरियां चलाता है और क्लाइंट ऐप को इन संदेशों को प्राप्त करने की आवश्यकता होगी (शायद एमएसएमक्यू, सर्विस बस कार्यान्वयन, बिज़टॉक इत्यादि)।

मैं क्यों सर्वर धक्का

को मतदान पसंद करते हैं अब मुझे लगता है कि इसके बारे में वहाँ शायद ऐसे मामलों में जहां मैं धक्का शैली करना होगा, और कुछ जहाँ मैं चुनाव कर रहे हैं।

यदि मेरे पास ऑफसाइट (वीपीएन के माध्यम से या सामान्य रूप से इंटरनेट पर कनेक्ट करने वाले कई ग्राहक हैं) तो मेरे पास क्लाइंट बैंडविड्थ के रूप में मतदान होगा और नेटवर्क विलंबता लागत निषिद्ध होगी। यदि ग्राहकों की संख्या अधिक है तो प्रत्येक अद्यतन संदेश को प्रत्येक सदस्यता लेने वाले क्लाइंट को भेजा जाना आवश्यक है। इस मामले में मैं एक सवाल पूछने के लिए मॉडल नहीं बताऊंगा।

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

यदि यह ऐसी स्थिति है जहां आप संदेश के रूप में संदेश चाहते हैं, लेकिन ग्राहक कई अलग-अलग स्थानों में स्थित हैं, तो एक पब/उप मॉडल सबसे अच्छा हो सकता है। पब/उप में एप्लिकेशन अपडेट संदेशों को धक्का देगा जैसे वे होते हैं। मैसेजिंग सिस्टम यह देखने के लिए जांच करेगा कि क्या कोई क्लाइंट संदेश की सदस्यता ले रहा है, और मैसेजिंग सिस्टम की सदस्यता लेने वाले सभी क्लाइंट्स के लिए उन्हें संदेश की एक प्रति आगे भेजना है। आपके उदाहरण में क्लाइंट subscribe जॉब संदेशों के लिए होगा और मैसेजिंग सिस्टम क्लाइंट द्वारा निर्दिष्ट स्थान पर अपडेट भेजेगा (क्लाइंट को संदेशों को स्वीकार करने का एक तरीका चाहिए)।NServiceBus, BizTalk इस प्रकार के संचार के उदाहरण हैं।

+0

विस्तृत स्पष्टीकरण के लिए धन्यवाद। जो मैं ढूंढ रहा हूं उसके बहुत करीब है। क्या आप कृपया बता सकते हैं कि आप सर्वर पुश से मतदान क्यों पसंद करते हैं? – Aron

+0

अधिक विचारों के साथ मेरा जवाब विस्तृत किया। एक उच्च स्तर से मैं आराम और परिचितता के कारण मतदान कर रहा हूं। मैं ज्यादातर वेब ऐप्स पर काम करता हूं जो खुद को अनुरोध प्रतिक्रिया मॉडल में उधार देते हैं। –

1

लगता है जैसे आप डब्ल्यूसीएफ सेवाओं के लिए होस्टिंग विकल्पों के बारे में पूछ रहे हैं। ऐसे चार विकल्प हैं:

  1. स्व होस्टिंग प्रबंधित आवेदन में - जो कि एक कंसोल अनुप्रयोग बनाने के लिए, आदि एक और WPF अनुप्रयोग है कि तब एक सेवा बनाता है और यह जीवित रहता है, जबकि यह (कंसोल एप्लिकेशन) जीवित है।
  2. प्रबंधित Windows सेवाएँ - Windows सेवा है जो Windows द्वारा स्वचालित रूप से शुरू किया जा सकता है जब यह शुरू होता है
  3. इंटरनेट सूचना सेवा (आईआईएस) बनाता है - यह इसी तरह एक ASP.NET सेवा करने के लिए
  4. Windows प्रक्रिया सक्रियण सेवा की मेजबानी (था) - नई सक्रियण सेवा, मैंने व्यक्तिगत रूप से इसका उपयोग नहीं किया है।

पूर्ण विवरण here

अपने प्रश्न का पूरी तरह उत्तर देने के लिए, मैं एएसएमएक्स सेवाओं का उपयोग नहीं करता। कारणों की एक अच्छी सूची के लिए, this question देखें।

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