C# 主项目和服务

本文关键字:服务 项目 | 更新日期: 2023-09-27 17:56:44

尽管我在谷歌上进行了彻底的搜索,但我仍然对这件事感到困惑。

让我解释一下我的情况。我创建了一个 c# 项目,它使用户能够手动备份数据库(通过单击按钮)。现在,用户必须能够安排数据库备份自动运行的时间。为了实现这一点,我计划创建一个服务,该服务在达到设置的备份时间时通过 windows 调度程序启动。

我将需要将服务与主项目一起部署(在我的脑海中,该服务将是一个不同的项目。也许我在这里错了。

我的问题是,当用户安装主项目时,如何部署服务?

PS:我正在使用c#快递和sql 2008 R2快递。

C# 主项目和服务

你用什么来安装主应用程序。您可能所说的打包工具也会有允许您安装服务的钩子。例如,如果您使用 Wix 创建 msi 包以安装主应用程序,则可以配置 Wix 以同时安装该服务。

此谷歌搜索将指向相同的相关文章。

相反,如果您没有使用任何安装程序工具,例如您只是为用户提供一个包含所有可执行文件的zip,那么您将需要手动安装该服务。本文非常适合创建可自行安装的服务。您可以使用 Process.Start 执行 installutil exe 以直接安装/卸载服务。

编辑1:基于Rup对您的问题的评论,您已经拥有备份数据库所需的代码。您所需要的只是能够安排这个。用户在 UI 中输入计划后,您可以在任务计划程序中创建相应的任务。让该任务执行您的主应用程序,传入参数-backup "dbName"或运行前面提到的备份代码所需的任何信息。

您可以使用以下模板 [适用于控制台应用,但也适用于您的 gui 应用。您只需要检查是否有任何开关传入,然后不要启动 gui,而是简单地执行备份函数代码。...关于 StackOverflow 在哪个命令行解析工具上使用上也有很多现有问题......

我将采取的方法是为 UI 创建项目,为服务创建项目。该服务将是一个始终运行的 Windows 服务,并负责创建计划任务。(而不是让计划任务启动服务。创建计划任务的方式是相当开放的,你可以掏出AT,或者你可以用任务调度程序类型的库做一些COM互操作。我希望这有所帮助。