Windows服务最佳实践

时间:2013-09-02 12:33:09

标签: c# .net windows-services

出于某种原因(例如,我希望它在系统启动时自动运行并永远持续),我决定将我的程序开发为Windows服务应用程序。目前,我的实施如下:

  1. 将主要业务逻辑实现为类库。
  2. 将Windows控制台应用程序实现为客户端程序,该程序将构造业务对象并定期调用业务逻辑组件。
  3. 开发Windows服务应用程序以启动和停止控制台应用程序。

    3.1在OnStart方法中启动该过程。

  4.  
        djsProcessStartInfo = new ProcessStartInfo()
            {
                    UseShellExecute = false,
                    WorkingDirectory = rootDir + depolyDate,
                    Arguments = args,
                    FileName = rootDir + depolyDate + @"\" + appName                
            };
            try
            {
                djsProcessToRun = Process.Start(djsProcessStartInfo);
            }
            catch(Exception ex)
            {
                 ///
            }
    

    3.2在OnStop方法中停止该过程。

            if (djsProcessToRun != null)
            {
                try
                {
                    djsProcessToRun.Kill();
                }
                catch (Exception ex)
                {
                    ///...
                }
            }
            else
            {
                ///...
            }
    

    这是开发Windows服务应用程序的正确方法吗? 当进程djsProcessToRun无法运行或有时我无法阻止时,我碰巧遇到了问题。 我应该遵循哪些最佳实践?(例如,如何处理异常,如何分离Windows服务和目标Windows应用程序之间的功能)

1 个答案:

答案 0 :(得分:3)

更好的方法是使用共享程序集(即类库),然后您可以创建两个使用共享程序集的客户端 - 您的测试控制台应用程序和Windows服务。