WCF服务与窗口服务

时间:2012-10-18 18:37:14

标签: c# wcf windows-services

我是WCF的新手。我有一个场景,我需要创建一个24x7全天候运行的应用程序从邮箱中获取邮件并创建一些报告。我使用winform做了它并且它工作了。但我遇到了一个问题,即托管应用程序的服务器有一个自动注销策略,当服务器处于非活动状态一段时间后关闭我的应用程序。我想我可以将它作为一个窗口服务实现。是这个场景推荐的WCF服务,任何优点都是使用它。我想到了WCF服务,因为它对我来说是学习曲线。请咨询。

更新: 它的应用程序基于计时器工作。它每5分钟ping一个特定的邮箱以查看新邮件。如果发现新邮件,它会下载一个excel创建PDF报告并将其邮寄回一些电子邮件ID。

使用DLLS:OpenPOP和Itextsharp。

3 个答案:

答案 0 :(得分:20)

Windows服务就是您所需要的。

WCF是一个通信库,除非您打算通过客户端与您的应用程序通信,否则您不需要它。

您的问题与激活有关,并且在后台保持代码处于活动状态是Windows服务的作用。

这并不难,这将有助于你开始。

http://www.codeproject.com/Articles/14353/Creating-a-Basic-Windows-Service-in-C

答案 1 :(得分:2)

WCF仅在您运行Web服务时才有用。只是一个普通的Windows服务应该满足您的需求。只要机器启动,服务就应该继续运行。

答案 2 :(得分:0)

如果您的应用程序执行了您想要的操作并在服务器处于活动状态之前正常工作,那么您应该考虑通过将服务器设置为不进入非活动状态来解决问题。

换句话说,由于服务器本身不应该进入待机(非活动)模式,我猜测你所说的策略只针对非活动的人类用户实施 - 该策略可能(而且不应该)影响系统级用户。

因此,如果您以系统用户(或网络用户)的身份运行应用程序,问题就会消失。

根据您的解释,WCF不是解决您问题的正确方法,原因有两个:

  1. 当您有另一个使用WCF服务的应用程序(客户端)时,WCF很有用 - 听起来您的应用程序中不需要客户端/服务器服务
  2. 如果您以与当前应用程序运行相同的用户身份运行WCF服务,则您的问题仍然存在(即,由于策略,WCF服务最终将处于非活动状态。)