2011-01-24 101 views
4

我有一个需要始终运行的C#应用​​程序。我原本计划将此作为Windows服务,但我现在有要求让应用程序托管一个Web管理控制台。IIS与Windows服务?

我没有好几年与IIS起到所以我的问题是这样的:

什么,你会建议我使用?

我想过如何制作Windows服务和嵌入Web服务器,如卡西尼,但到目前为止,我对我看过的开源Web服务器并不满意。

IIS可以处理这个吗?人们是否将它用于这种情况,如果是这样的话?

+0

服务在做什么? –

回答

7

这听起来像是两个独立项目的工作。

一个是原始的Windows服务。 Windows服务非常适合您正在做的事情。

第二个是将用于管理Windows服务的Web项目。这是在IIS中运行的部分。

+0

是的,我也这么认为。那么你会建议如何远程控制服务? – Kelly

+0

我知道这是一个老问题,但我有一个用例,它更容易为Windows服务实现一个HTTP API来控制它。该服务听取了指示并据此采取了行动。如果需要,它也可以输出HTML。 – Edgar

1

Windows和Web服务是两种截然不同的生物。 Web服务将公开可以针对应用程序实现的外部方法,而Windows服务本身就是一个实体。如果您打算按定时间隔使用此服务来执行操作,则Windows服务将是正确的选择。如果您使用Web服务,则需要调用您希望从辅助应用程序运行的方法。

如果您需要对Windows服务排队命令,则始终可以创建可供您的网站和Windows服务访问的数据库。这样你就可以在两者之间发送命令和查询数据。放置一个Web服务作为两者之间的中介可能是过度的。

2

这取决于你的意思是总是运行。如果没有任何请求在一段时间内杀死所有后台线程,那么部署在IIS中的ASP.NET Web应用程序很可能会被W​​eb服务器卸载。所以如果你想要一个永远在运行的后台线程,它会更适合使用Windows服务。就网络管理员而言,好吧,在这里你没有太多的选择:IIS中的ASP.NET。为了做一些有用的事情,这两个应用程序应该能够找到一种通用的语言来交谈。因此,您可以使用数据库来存储两个应用程序可以使用的结果。

2

IIS将在第一次请求时运行您的应用程序,而不是在服务器启动时运行。因此,您仍然需要运行服务以确保您的应用始终在运行。

您可以使用IIS作为您的Web管理器部件的Web服务器,并通过配置数据库(简单)或Web服务(稍微棘手)将您的ASP.net应用程序与您的服务相关联。