Windows सेवाओं में GUI क्यों नहीं हो सकता?


22

मैं पहले XP और NT की तरह विंडोज रिलीज में इस सुविधा का उपयोग कर रहा था। मैं एक Windows सेवा से एक GUI चलाने में सक्षम था। लेकिन बाद के संस्करणों में यह संभव नहीं है।

इस सुविधा को हटाने के पीछे क्या कारण है? Windows सेवाओं में GUI क्यों नहीं हो सकता?

जवाबों:


47

मुख्य रूप से सुरक्षा कारण।

मैं इसे समझते हैं, जब एक खिड़कियों सेवा में इस तरह के एक संदेशबॉक्स के रूप में जीयूआई नियंत्रण बनाता है के रूप में, वे आम तौर पर केवल सत्र में देखा गया था कि सत्र 0 यानी में सेवाएं रन जो भी इस्तेमाल किया जा करने के लिए पहले उपयोगकर्ता लॉग ऑन स्थानीय रूप से या प्रयोग पर कोई प्रवेश द्वारा mstsc / admin इसलिए यह उपयोगकर्ता इन नियंत्रणों को देखेगा और सेवा के साथ बातचीत कर सकता है।

लेकिन सुरक्षा कारणों से, सेशन 0 अब आरक्षित है और लॉग ऑन करने वाले पहले उपयोगकर्ता को एक नया सत्र दिया जाएगा और इसलिए GUI कंट्रोल नहीं देखा जाएगा।

चूंकि यह काफी सेवाओं को तोड़ता है, संगतता के लिए, एक प्रक्रिया है ( इस MSDN ब्लॉग को देखें ) जो यह पता लगाने का प्रयास करता है कि क्या कोई संदेश प्रदर्शित किया जा रहा है और चेतावनी के साथ पॉपअप 'इस कंप्यूटर पर चलने वाला एक प्रोग्राम एक संदेश प्रदर्शित करने की कोशिश कर रहा है। 'और आपको संदेश को देखने या अनदेखा करने की अनुमति देता है।

Microsoft के पास इस विषय पर एक व्हाइटपेपर है जिसे आप यहाँ से डाउनलोड कर सकते हैं

मुझे यह भी संदेह होगा कि एक और मामूली कारण यह है कि सुविधा का दुरुपयोग / गलत समझा गया था और खराब डिजाइन का कारण बना। उदाहरण के लिए, मेरे पास थर्ड-पार्टी सर्विस वाला एक पुराना सर्वर था जो इवेंट लॉग में लिखने के बजाय संदेश बॉक्स का उपयोग करके कुछ सूचनाएं / त्रुटियां प्रदर्शित करता था। लेकिन मैंने कभी भी स्थानीय रूप से लॉग ऑन नहीं किया और शायद ही कभी व्यवस्थापक मोड में लॉग इन किया और इसलिए मैं संदेश नहीं देखूंगा।


1
मुझे लगता है कि यूएसी के साथ इसका कुछ लेना देना था - यह सुनिश्चित करने का मतलब है कि यूएसी प्रॉम्प्ट इंटरएक्टिव उपयोगकर्ता के साथ वर्कस्टेशन सत्र साझा नहीं कर सकता है, या एक हैकर यूएसी प्रॉम्प्ट होने का दिखावा कर सकता है।
gbjbaanb

23

इंटरएक्टिव सेवाएं संभव हुआ करती थीं , लेकिन सेवा मॉडल एक ऐसी प्रक्रिया है जो किसी भी उपयोगकर्ता के स्वतंत्र रूप से चलती है। वे अप्राप्य चलाने के लिए डिज़ाइन किए गए हैं और इसलिए उन्हें GUI की आवश्यकता नहीं होनी चाहिए।

Windows Vista के बाद से इंटरएक्टिव सेवाएं उपलब्ध नहीं हैं, इसलिए अब इसका उपयोग नहीं किया जाना चाहिए।

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


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

10

क्योंकि सेवाओं को उपयोगकर्ता के साथ बातचीत किए बिना पृष्ठभूमि में चलना चाहिए; वे वास्तव में चला सकते हैं जबकि कोई उपयोगकर्ता लॉग इन नहीं है।


फिर यह सुविधा पहले के संस्करणों में क्यों थी? उर के उत्तर को ध्यान में रखते हुए, विंडोज़ सेवा और डेस्कटॉप एप्लिकेशन के बीच कोई संवाद नहीं होगा। इसलिए यह उत्तर उचित नहीं हो सकता था।
अरुण

3
@ अरुण - उस तर्क पर आधारित है, तो जो चीजें टूट जाती हैं, उन्हें कभी भी तय नहीं किया जाएगा। माइकल का जवाब सही है - सेवाओं में ग्विस नहीं होना चाहिए। सिर्फ इसलिए कि खिड़कियों के पहले के संस्करणों में उन्हें (गुईस के साथ सेवाएं) का मतलब यह नहीं था कि उन्हें होना चाहिए था।

8
@ यदि यह सच नहीं है कि डेस्कटॉप ऐप और सेवाओं के बीच कोई संवाद नहीं है, केवल यह कि सेवा में GUI नहीं है। बल्कि, एक डेस्कटॉप ऐप में जीयूआई है और सर्वर के साथ संचार करता है।
पॉल हेमस्ट्रा

तो, विंडोज़ सेवाओं में जीयूआई हो सकता है लेकिन उन्हें होना चाहिए?
अरुण

1
@ अरुण, सेवाओं के पास स्वयं GUI नहीं हैं, लेकिन अक्सर अलग-अलग फ्रंट एंड एप्लिकेशन द्वारा नियंत्रित होते हैं जो किसी तरह से इसके साथ संचार करके सेवा को नियंत्रित कर सकते हैं (नामित पाइप, सॉकेट्स के माध्यम से ...)
ग्रैंडमास्टरबी

0

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

अब हर कोई मूल सेवाओं को विकसित करता है और सेवा को प्रबंधित करने के लिए एक एप्लिकेशन या लॉग जोड़ता है। यह एक अच्छा डिज़ाइन पैटर्न है और अब इसका ज्यादातर समय उपयोग किया जा रहा है।

तो इसे विरासत के रूप में अधिक देखें कि यह संभव था।


-1

ये सेवाएँ मुख्य रूप से पृष्ठभूमि में संयुक्त रूप से भाग लेने के लिए होती हैं। नाम सेवा का अर्थ है कुछ क्लाइंट अनुप्रयोगों या अन्य सेवाओं के लिए एक सर्वर के रूप में कार्य करना जो इस सेवा का उपभोग करते हैं। तो एमएस अब मूल बातें करने के लिए और सेवाओं के बीच कुछ स्पष्ट अंतर आकर्षित करना चाहते हो सकता है और Apps.So क्षुधा उपयोग व्यस्त रहता है और सेवाओं चुपचाप अपने उद्देश्य की सेवा करते हैं। जबकि नेल कटर है तो किलों को काटने के लिए किचन नाइफ पर क्यों जाएं?

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.