2012-09-08 8 views
5

मैंने एक विंडोज़ सेवा प्रोजेक्ट बनाया है। और अगर आप एक नया प्रोजेक्ट बना अगर तुम कुछ इस तरह मिलती है:क्या मुझे केवल एक नई सेवा() या अधिक का उपयोग करना चाहिए?

ServiceBase[] ServicesToRun; 
ServicesToRun = new ServiceBase[] 
{ 
    new Service1() 
}; 
ServiceBase.Run(ServicesToRun); 

और अब मैं अपने वर्ग Service1() करने के लिए कुछ कार्य करता है और टाइमर जोड़ने के लिए और फिर सब कुछ ठीक है। , कुछ फाइलों को पढ़ने के लिए कुछ फ़ोल्डरों को हटाने, कनेक्शन की जाँच ...

और उन सभी को async चलाना चाहिए:

अब कहते हैं, मेरी सेवा जैसे कुछ सामान करना चाहिए करते हैं। अब बेहतर क्या है? Service1() में functiont के सभी कॉपी और कुछ और नहीं बदल रहा है या हर "सामान" एक नया वर्ग के लिए बनाने के लिए (Service1(), Service2(), ...) और उनकी तरह

ServicesToRun = new ServiceBase[] 
{ 
    new Service1(), 
    new Service2() //not sure this will compile 
}; 

बस जोड़ने पूछ। हो सकता है कि मुझे 100% समझ में नहीं आ रहा है कि सेवाएं कैसे काम कर रही हैं ...

+0

दिलचस्प सवाल। मैंने सोचा है कि कभी कोशिश नहीं की। ओह, यह निश्चित रूप से * संकलित * होगा - सवाल वास्तव में है: क्या यह * काम * करता है। एपीआई को एक सरणी स्वीकार करता है, मेरी डिफ़ॉल्ट धारणा "हां, यह ठीक काम करेगी"। लेकिन ... कोशिश नहीं की है। बेशक, चूंकि सेवा को किसी भी नए धागे को शुरू करने की ज़रूरत है, इसलिए आप संचालन के 3 सेट शुरू करने के लिए केवल एक सेवा उदाहरण का उपयोग कर सकते हैं, –

+0

क्या आपको यह देखा गया? http://stackoverflow.com/questions/1688275/can-i-have-multiple-services-hosted-in-a-single-windows-executable - जो चर्चा करता है कि क्यों नहीं बल्कि क्यों। यह वास्तव में एक डिजाइन सवाल है और आप जो कर रहे हैं उस पर निर्भर करता है। – ongle

उत्तर

0

यह प्रश्न के लिए थोड़ा सामान्य हो सकता है लेकिन एक विंडोज सेवा को एकल या संबंधित कार्यों का समूह करना चाहिए। आम तौर पर, कम सेवाएं बेहतर होती हैं, लेकिन सेवा एक बार कई चीजें करने लगती है, तो उन्हें अलग करने पर विचार करें:

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