使用命令行访问/ REPL的C#Windows服务?

时间:2013-11-26 22:46:16

标签: c# wcf service windows-services

这是我第一次涉足Windows服务。

我有一个我想管理的服务,我希望能够通过命令行/ REPL连接到这个服务,以避免在用户界面上工作的开发时间。我认为我们可以像连接到Asterisk守护程序那样进行通信,或者有点像连接到MySQL服务器,对我而言,这似乎只是一个简单的自定义shell来处理请求。但是,我始终关注我的代码的效率,并希望保持常见的做法。这将连接在同一台本地计算机上。

我建议的解决方案: 我相信我可以制作简单的网络流,创建一个简单的Read - Eval - Print - Loop。

另一种选择是使用WCF,但我的问题是,这与数据包处理相比效率如何?

我的问题: 在本地计算机上与服务进行通信或管理服务有哪些标准做法?

我正在尝试更多地了解面向服务的设计,任何有助于解释常见练习模型的资源都会受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

当然有很多方法可以做到这一点。我建议的方法是确保使用log4net(或其他一些日志框架)并记录重要信息。创建具有3个项目的解决方案,第一个将是“服务逻辑”或业务服务,第二个是启动该服务的Windows服务包装器,第三个是与Windows服务大致相同的控制台应用程序只为您提供按照自己的意愿进行互动的能力。控制台日志记录appender的优点是你仍然可以获得控制台输出,而无需实际写入控制台...它可以很好地分离。

我会给出我过去使用的另一种选择,但会谨慎行事。您可以在Windows服务中selfhost a WCF service。它提供了一个很好的接口,可以从凌乱的自动TCP服务器方法中消失。需要注意的是,如果做错了会占用大量内存和CPU周期。