C# Windows服务如何从自定义命令返回信息

C# Windows服务如何从自定义命令返回信息,c#,winapi,windows-services,C#,Winapi,Windows Services,我有一个windows服务作为我的应用程序的一部分运行 如果我希望通过服务句柄与它通信,我可以发出自定义命令(例如,“启动工作者”)。最终,这将是对Win32函数的调用。从这样的命令返回数据块的最佳方式是什么 具体来说,我想返回一个“默认URL”(即字符串),我的服务将通过http等其他协议响应 最好是在C#(.NET2.0)服务中直接实现的解决方案。您研究过WCF吗?您必须访问.NET 3.0或更高版本,但您可以轻松地将服务配置为通过TCP/IP或HTTP等运行。如果您想继续使用.NET 2.

我有一个windows服务作为我的应用程序的一部分运行

如果我希望通过服务句柄与它通信,我可以发出自定义命令(例如,“启动工作者”)。最终,这将是对Win32函数的调用。从这样的命令返回数据块的最佳方式是什么

具体来说,我想返回一个“默认URL”(即字符串),我的服务将通过http等其他协议响应


最好是在C#(.NET2.0)服务中直接实现的解决方案。

您研究过WCF吗?您必须访问.NET 3.0或更高版本,但您可以轻松地将服务配置为通过TCP/IP或HTTP等运行。

如果您想继续使用.NET 2.0,请使用远程处理。让windows处理ControlService调用(用于启动/停止/暂停服务)。当您希望应用程序连接时,请与您的服务建立远程连接。效果很好

备选方案: 如果可以升级到.NET3.5,则可以使用WCF而不是远程处理


您可以使用低级通信(管道和套接字),但实际上,远程处理应该更容易并且工作得很好,.NET2.0支持远程处理

我对远程处理文档的简要扫描表明,它暴露在网络中,具有所有安全隐患。我只需要一个在本地计算机上运行的解决方案。@John McAleley我相信如果您想确保只有本地进程可以访问远程对象,您可以使用进程间通信通道:System.Runtime.Remoting.Channels.Ipc。啊,是的,这看起来很理想。在我第一次阅读文档时,我错过了它没有使用网络的事实。@johnmcaleley请勾选“单击此答案作为已接受”,这对每个关注此问题的人来说都更容易。此外,您还有55%的接受率。若你们接受这个答案,当你们提出要求时,人们会更加体贴。太多的人对你这样的个人资料不感兴趣