आपके पास जो भ्रम है, वह यह मानने में है कि नौकरी का निष्पादन और डब्ल्यूसीएफ एंडपॉइंट एक ही बात है। नौकरी प्रबंधन के लिए UI तत्व है कि
- ग्राहक आवेदन: मैं तीन मुख्य आइटम में इस विभाजित होगा।
- डब्ल्यूसीएफ सेवा एंडपॉइंट नौकरी की जानकारी पुनर्प्राप्त करने और नौकरी के अनुरोधों को बनाने/हटाने के लिए।
- आवेदन जो नौकरियां चलाता है।
ग्राहक आवेदन
क्लाइंट अनुप्रयोग 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 इस प्रकार के संचार के उदाहरण हैं।
संभावित डुप्लिकेट: http://stackoverflow.com/questions/11170457/discussion-client-server-plication-architecture –
@MikeMcCaughan आपके द्वारा उल्लिखित लिंक जैसा दिखता है, लेकिन ऐसा नहीं है, मेरे मामले में, मेरा सर्वर ग्राहकों की सेवा के अलावा करने के लिए एक लंबा चल रहा काम है। – Aron
इसे आज़माएं: http://dasunhegoda.com/architecture-products/1180/ – Techie