2011-11-14 15 views
5

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

वर्तमान में यह एक वीसीएल फॉर्म एप्लिकेशन है, लेकिन कुछ मामलों में यह सेवा होना अच्छा होगा (इस तरह सर्वर पर चलने पर एप्लिकेशन चलाने के लिए उपयोगकर्ता सत्र खोलने की आवश्यकता नहीं है)।

दुनिया दोनों रखने के लिए आप क्या सुझाव देते हैं? कुछ साधारण परिदृश्य में (केवल 3 पीसी और आईटी मैनेजर के साथ स्माल संगठन) एक "गैर सेवा" अच्छी है क्योंकि इसे समझना और उपयोग करना आसान है, लेकिन बड़े संगठन में सेवा की कमी एक समस्या है।

क्या एक ही समय में सेवा और गैर सेवा हो सकती है? इसे कैसे प्राप्त करें? मैं तैनाती को और अधिक जटिल बनाना नहीं चाहता हूं, जो मेरे मन में है, कुछ कमांड लाइन स्विच है: कमांड लाइन पैरामेंटर्स के साथ चलने पर यह एक सेवा हो सकती है, यदि सामान्य ऐप नहीं है ... यह कैसे करें?)।

+5

एक अलग प्रश्न के अपने जवाब में से एक है कि आप क्या चाहते हैं कोड देता है: http://stackoverflow.com/questions/6594152 [एक स्टैंडअलोन डेल्फी आवेदन की –

+3

संभव डुप्लिकेट कि के रूप में भी स्थापित किया जा सकता विंडोज़ सेवा] (http://stackoverflow.com/questions/2387383/a-standalone-delphi- appplication-that-can-also-be-installed-as-windows- सेवा) – gabr

उत्तर

5

ठीक है ... एक ही प्रोजेक्ट में 'सेवा' और 'गैर सेवा' एप्लिकेशन विकसित करने का सबसे अच्छा तरीका है। जैसा समझाया गया है: A standalone Delphi application that can also be installed as windows service। तो आप उसी एप्लिकेशन को सेवा के रूप में या अकेले स्टैंड के रूप में उपयोग कर सकते हैं।

आप एक ही पीसी पर दोनों चाहते हैं, यह अधिक जटिल है: तुम अकेले खड़े आवेदन में, जोड़ने के लिए, कार्य होते हैं:

  • सत्यापित नहीं करता है, तो सेवा चल रही है और सक्रिय है।
  • यदि सेवा चल रही है और सक्रिय है, तो आपको स्टैंड अकेले प्रक्रिया को चलाने के बजाय इसके साथ संवाद करना होगा।
0

मेरे पास क्या एक अलग परियोजना है जो केवल विकास के उपयोग के लिए है। मैं सिर्फ एक फॉर्म बनाता हूं, फिर वह सेवा बनाता है और कॉल की उम्मीद करता है।

unit fTestHarness; 

    interface 

    uses 
    uMyServiceModule, 
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms; 

    type 
    TfrmCentralTest = class(TForm) 
     Label1: TLabel; 
     Label2: TLabel; 
     procedure FormCreate(Sender: TObject); 
     procedure FormClose(Sender: TObject; var Action: TCloseAction); 
    private 
     { Private declarations } 
    public 
     { Public declarations } 
    end; 

    var 
    frmTest: TfrmTest; 

    implementation 

    {$R *.dfm} 

    procedure TfrmCentralTest.FormCreate(Sender: TObject); 
    var 
    bStarted : boolean; 
    begin 
    bStarted := False; 
    MyService := TMyService.Create(self); 
    MyService.ServiceStart(nil, bStarted); 
    end; 

    procedure TfrmCentralTest.FormClose(Sender: TObject; var Action: TCloseAction); 
    var 
    bStopped : boolean; 
    begin 
    MyService.ServiceStop(nil, bStopped); 
    end; 

    end. 
1

मैं एक नियंत्रण कक्ष एप्लेट कि UF config आपके आवेदन के लिए आवश्यक सेट बना कर किसी सेवा में अपने एप्लिकेशन में बदल सकते हैं। आपका कंट्रोल पैनल एपलेट भी सेवा शुरू कर सकता है, रोक सकता है और फिर से शुरू कर सकता है, आदि

अब आपके पास दोनों दुनिया के सर्वश्रेष्ठ हैं।

जॉन

+0

नियंत्रण कक्ष एप्लेट अभी भी मौजूद हैं? मैंने सोचा कि विस्टा के बाद वे मर गए थे। मैं यह देखने के लिए भी संघर्ष करता हूं कि एक नियंत्रण कक्ष एप्लेट कुछ हल कैसे करता है। शायद मैं आज धीमा हो रहा हूँ। –

+0

यदि आपको नियंत्रण कक्ष एप्लेट बनाना है, तो आपको डेल्फी XE2 की आवश्यकता होगी, और 32 और 64 बिट कंट्रोल पैनल एप्लेट बनाने के लिए। –

+0

@WarrenP ... 32 बिट सीपी एप्लेट 64 बिट सिस्टम/ओएस पर चलेंगे, एक 32 बिट सेवा 64 बिट सिस्टम/ओएस पर भी चलती है। – John

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