19

我是 WCF 的新手。我有一个场景,我需要创建一个运行 24x7 的应用程序从邮箱中提取邮件并创建一些报告。我使用 winform 完成了它并且它有效。但是我遇到了一个问题,即服务器所在的服务器托管的应用程序有一个自动注销策略,当服务器在一段时间内不活动时关闭我的应用程序。我想我可以将它实现为窗口服务。是否推荐用于此场景的 WCF 服务,使用它的任何优势。我想到了 WCF 服务,因为它对我来说是学习曲线。请指教。

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

使用的 DLLS:OpenPOP 和 Itextsharp。

4

3 回答 3

25

Windows 服务是您所需要的。

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

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

It's not difficult, this will help you get started.

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

于 2012-10-18T18:57:24.983 回答
3

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

于 2012-10-18T18:55:28.143 回答
0

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

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

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

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

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