我很好奇C#gui访问Windows服务功能的最佳方式,无论是WCF还是ServiceController或其他一些选项。
我将解释我在做什么:在规定的时间间隔内,服务将从位置A压缩一小时的数据文件并将压缩文件发送到位置B,这将在后台完成24/7或者直到服务被用户停止并且甚至在没有人登录时运行(因此需要服务)我希望用户能够启动一个GUI程序,这将允许他们有几个选项:
1)将位置改为zip
2)将位置更改为zip到
3)手动启动指定日期时间范围的压缩过程
现在,用于压缩和计时器的大多数功能都存储在服务中。我想知道GUI程序中的ServiceController是否允许我向/从服务发送变量(即文件夹路径名称作为字符串,各种其他数据),或者我是否需要花时间制作WCF并将GUI视为客户端和Windows服务作为源。
应该注意的是,GUI可能会从服务中接收数据,但仅表示它是否正在忙于压缩。
答案 0 :(得分:4)
一种选择是在Windows服务上嵌入WCF服务。使用此WCF,您可以在不重新启动服务的情况下控制行为。
但IMO的最佳选择是在配置文件中使用它。您可以添加一些密钥,但在更新配置时必须重新启动服务。 在这种情况下,您可以尝试解决方法,如this thread中所述。 配置是这种细节的好地方,因为它可以很容易地修改,并且与数据库不同,它总是可用的。
答案 1 :(得分:0)
我并不完全明白你想说的是什么,但你定义了服务的界面是什么。如果您定义的操作包含变量,则可以将数据从应用程序传递到服务。
根据您的描述,只需在服务中进行操作即可完成您列出的3件事,然后通过点击UI代码中的按钮来调用这些内容。
WCF对此很好,这是对http://msdn.microsoft.com/en-us/library/bb332338.aspx的基本介绍。