2009-08-01 21 views
5

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

उत्तर

9

कुछ ऐसी चीजें हैं जो तुरंत मेरे पास कूदती हैं।

  • वे एक बिल्कुल अलग कंसोल में चलाने विस्टा
  • के साथ शुरू एक अलग कंसोल में चल रहा है का एक परिणाम के रूप में, सेवाओं डेस्कटॉप के साथ बातचीत नहीं कर सकते हैं। इसलिए अनिवार्य रूप से कोई प्रत्यक्ष यूआई समर्थन नहीं है। आपको आमतौर पर एक भाई यूआई एप्लिकेशन को कोड करना होता है जो सामान्य प्रोग्राम के रूप में चलता है और सेवा के साथ संवाद करने के लिए कुछ तंत्र (उदाहरण के लिए नामित पाइप) का उपयोग करता है।
  • आमतौर पर आपकी सेवा का केवल एक उदाहरण किसी भी समय चल रहा है।
  • प्रति उपयोगकर्ता प्रक्रियाएं हैं, सेवाएं प्रति कार्य स्टेशन हैं और इसलिए अक्सर कई उपयोगकर्ताओं के लिए सेवाएं प्रदान करती हैं।
0

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

एक और लाभ आप सेवाओं स्वचालित रूप से प्रारंभ जब में

उपयोगकर्ता के लॉग वहाँ भी तरीकों आप ओवरराइड कर सकते हैं जब सेवा प्रारंभ कर रहा है कहा जाता है कि कर रहे हैं हो सकता है है (यानी नियंत्रण कक्ष से |।। व्यवस्थापकीय उपकरण | सेवा)।

विजुअल स्टूडियो के भीतर एक विशेष परियोजना प्रकार है जिसे आप इसे बनाने के लिए उपयोग कर सकते हैं। उदाहरण के लिए नीचे दी गई साइट देखें: http://www.dotheweb.net/articles/dotnet/services.aspx

+0

मैं कहूंगा कि मशीन पर किसी भी इंटरैक्टिव सत्र के बिना आप सेवाएं चला सकते हैं। जब उपयोगकर्ता विभिन्न तरीकों से लॉग ऑन करता है तो आप बहुत सारे प्रोग्राम शुरू कर सकते हैं। एक सेवा का उपयोग वास्तव में एक लाभ नहीं है। – Joey

6

This MSDN page एक छड़ी को हिलाकर आप उन्हें बनाने पर अधिक दस्तावेज़ीकरण की ओर जाता है। This page शायद सामान्य रूप से उनके लिए एक बेहतर परिचय है।

एक सेवा के रूप में एक ऐप बनाम एक प्रक्रिया के बीच महत्वपूर्ण अंतर यह है कि सेवा उपयोगकर्ता और सत्र के साथ सामान्य सहयोग के बाहर पूरी तरह से संचालित हो सकती है। इस प्रकार सेवाएं इस तरह से चल सकती हैं कि वे किसी भी उपयोगकर्ता लॉग इन से पहले शुरू होते हैं और उपयोगकर्ता लॉग ऑफ करने के बाद चलना जारी रख सकते हैं। इस प्रकार सेवाओं को ऑपरेटिंग सिस्टम की वास्तविक कार्यक्षमता का एक बड़ा सौदा लागू करने के लिए उपयोग किया जाता है।

सेवाएं भी प्रक्रिया के साथ 1: 1 मैपिंग के रूप में चलाने के लिए बंधी नहीं हैं। कई प्रक्रियाएं एक प्रक्रिया के भीतर मौजूद हो सकती हैं, आमतौर पर svchost के उपयोग के माध्यम से (इस प्रक्रिया के लिए प्रक्रिया एक्सप्लोरर के साथ इन्हें देखें कि यह अक्सर कैसे काम करता है)। इससे स्टार्टअप पर प्रयास कम हो जाता है क्योंकि अपेक्षाकृत हल्के सेवाओं के लिए कई प्रक्रियाओं की आवश्यकता नहीं होती है।

सी # में एक सेवा लागू करना बहुत आसान है, यह page इंगित करता है कि नियमों का पालन करना कितना आसान है।

ध्यान दें कि वास्तव में विंडोज़ में एक सेवा कुछ और है जो HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Services के अंतर्गत रजिस्ट्री में मचान है जो उन 'छवि पथ' को परिभाषित करता है (ज्यादातर मामलों में केवल निष्पादन योग्य और उपयोग करने वाले पैरामीटर) जो हैं सेवाओं के साथ विचार किया जाता है जिसके साथ उपयोगकर्ता आगे चलते हैं, वे कौन सी अन्य सेवाएं निर्भर करते हैं और क्या वे स्टार्ट अप/पोस्ट शुरू होने या आवश्यकतानुसार शुरू होते हैं।

2

यदि आप यूनिक्स से परिचित हैं, तो Windows सेवा यूनिक्स डिमन की तरह है। यह किसी विशेष उपयोगकर्ता से जुड़ा नहीं है, और हमेशा पृष्ठभूमि में चल रहा है।

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