如果我创建Windows服务,有没有办法从asp.net调用该服务?
答案 0 :(得分:9)
通过
你是说,管理服务吗?如,开始,停止,重启等? 如果是这样,那么答案是肯定的。 在www.csharp-examples.net上有一篇很好的文章将向您展示如何使用ServiceController类。“致电该服务”
但是,如果您的意思是向其发送消息,就好像它是一个Web服务,那么,答案是,这取决于您如何公开您的服务。 Windows服务可以托管WCF服务,因此如果您希望将Windows服务公开给Internet客户端,这将是一个不错的选择。
答案 1 :(得分:3)
一些清晰度会有所帮助 - 您也可以将“调用该服务”解释为从ASP.NET到您的服务的某种远程方法调用 - 例如在Windows服务中存储某些状态。
在Windows服务中托管服务端点,例如使用Remoting,WCF或普通ol'TCP套接字服务器。所有这些都可以由ASP.NET中托管的客户端调用。
有很多远程处理和WCF示例可以做到这一点 - 搜索托管和其中一种技术。
要读取的某些MSDN链接:
您还应该阅读Windows Process Activation - 您可以在不编写单独服务的情况下离开。
答案 2 :(得分:1)
另外,对于发送(真正)简单消息,也是如此
ServiceController.ExecuteCommand(int command)
可用于。使用executecommand
可以很容易地发送integer
/ enum
作为消息。
var myService = new ServiceController("SimpleService");
myService.ExecuteCommand(128);
myService.ExecuteCommand((int)SimpleServiceCustomCommands.ScanFiles);
和myService
看起来像:
public class myService : ServiceBase
{
...
protected override void OnCustomCommand(int command)
{
//executes logic