我在这里创建了一个消息队列,它基本上在一个线程上,并从数据库中一个接一个地发送电子邮件。首先我认为,因为它是一个连续的过程,它必须在 Windows 服务上,这听起来像是一个理想的解决方案,但我没有和我的经理谈过,他说如果它与整个项目,如果我放入一个 while(true) 语句。这样在部署到生产环境时,我们不需要担心安装任何 Windows 服务或任何东西。但我认为,如果我们那样做,那么 Web 服务器上会有很多不必要的压力。
我不确定该走哪条路。有什么建议么?
我在这里创建了一个消息队列,它基本上在一个线程上,并从数据库中一个接一个地发送电子邮件。首先我认为,因为它是一个连续的过程,它必须在 Windows 服务上,这听起来像是一个理想的解决方案,但我没有和我的经理谈过,他说如果它与整个项目,如果我放入一个 while(true) 语句。这样在部署到生产环境时,我们不需要担心安装任何 Windows 服务或任何东西。但我认为,如果我们那样做,那么 Web 服务器上会有很多不必要的压力。
我不确定该走哪条路。有什么建议么?
我会选择一个单独的 Windows 服务。
由于此服务是您的应用程序的一部分,它的生命周期取决于应用程序池进程的生命周期(当然取决于您使用的 IIS 版本),并且无论何时您选择更改应用程序池设置,您必须记住您的消息作业也依赖于它,如果您为应用程序池设置任何回收设置,您可能很难理解为什么您的作业突然停止工作或类似的事情。
我肯定会建议在后台处理电子邮件队列的 Windows 服务。您可以向您的经理提出以下几点建议:
installutil
批处理文件并将其添加到您的项目中以进行安装/卸载。升级就是停止服务,更新服务.exe
,然后重新启动服务。你也可以简单地编写一个命令行应用程序,然后用 Service+ 之类的东西包装它,使其表现得像一个服务。您还可以获得其他功能,例如如果您愿意(只要您想运行它)就可以像命令行应用程序一样运行它,或者根据需要从其他应用程序启动/执行它。您也可以构建各种行为...连续模式,可能一次处理 1 个(或 100 个或其他)然后退出(并让 Service+ 重新启动它),或者您可能需要的任何其他行为。