RWWinService - XYWinService 的简化 .NET 3.5 版本





0/5 (0投票)
刘翔阳的 XYNTService/XYWinService 的分支/派生版本
引言
此项目是我个人的 刘翔阳 的 XYWinService 分支。
在这个版本中,我利用我自己的 SimpleService 项目来添加功能并解决一些小问题。
新功能
- 将解决方案升级到 VS2008
- 使用app.config简化配置
- 改进的安装/卸载服务支持
- 控制台模式 - 用于简化调试
- 记录到应用程序事件日志
- 更多命令行选项
配置
我使用RWWinService
在后台运行我的 fossil 源代码存储库。以下配置说明了我的实现方法。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="Process"
type="System.Configuration.IgnoreSectionHandler" />
</configSections>
<appSettings>
<add key="CheckProcessSeconds" value="30"/>
<add key="PauseStartMs" value="1000"/>
<add key="PauseEndMs" value="1000"/>
</appSettings>
<Process>
<FilePath>c:\rev\bin\fossil.exe</FilePath>
<Arguments>server --port 8080 c:\rev\fossil\fossil.fossil</Arguments>
<WorkingDir>c:\rev\bin</WorkingDir>
<Restart>Yes</Restart>
</Process>
<Process>
<FilePath>c:\rev\bin\fossil.exe</FilePath>
<Arguments>server --port 8081 c:\rev\fossil\rwwinservice.fossil</Arguments>
<WorkingDir>c:\rev\bin</WorkingDir>
<Restart>Yes</Restart>
</Process>
</configuration>
此配置文件中有一些技巧。通常,ConfigurationManager
类期望在配置中只看到appSettings
元素,如果存在意外的元素,它将抛出异常。configSections
元素允许您告诉ConfigurationManager
类通过System.Configuration.IgnoreSectionHandler
忽略名为Process
及其子元素的元素。完成此操作后,您可以在代码中自行解析Process
元素。或者,您可以编写自己的SectionHandler
,但我将其留给您。这为我们提供了一个简单、单一的配置文件。
三个appSettings
密钥几乎不言自明,Process
元素与XYWinService
中的完全相同。我弃用了XYWinService
中提供的几个配置项,最值得注意的是RunAs
元素。此项目假定服务将作为ServiceAccount.LocalSystem
运行,并且没有公开此功能的配置选项。
清单文件
清单文件是将所有内容整合在一起的关键。其中一行配置服务以调用 Vista/Windows7 UAC。
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
管理服务
RWWinService
利用了 SimpleService 框架,因此可以使用以下命令行选项
PS C:\rev\bin> RWWinService -help
= usage:
= RWWinService -install == install service
= RWWinService -uninstall == uninstall service
= RWWinService -start == start service
= RWWinService -stop == stop service
= RWWinService -status == get the current status of the service
= RWWinService -console == run in console mode
= RWWinService -help == show this help message
使用这些命令行开关,您可以安装和卸载服务,而无需使用InstallUtil.exe。此外,安装服务后,您可以启动和停止服务。-status 开关将告诉您服务是否已安装、启动或停止。
结论
我已经使用此服务几个月了,没有任何问题。我认为您会发现命令行界面可以节省您的时间。我非常感谢 刘翔阳 的最初贡献;从功能上讲,此 XYWinService 分支提供了相同的基本功能集,只是经过简化和重构。如有任何错误或疏忽,请随时通知我。享受!
历史
- 2010年3月 - 初次提交