我们希望将应用程序中的数据与外部服务的数据同步。 (例如会计软件。这种同步应该在每晚和客户想要的时候执行。
我知道长时间运行的线程不属于Web应用程序,并且此同步应该在外部Windows服务中执行。但是这种方法的缺点是,部署/维护变得更加困难,因为应用程序也可以安装在客户的Web服务器上。
是否可以将此同步与仅使用我的解决方案的类库项目完全集成,该解决方案将在Application_Start事件中启动?
答案 0 :(得分:2)
由于您的应用程序托管在IIS上,因此它由应用程序池进程维护。如果为任务创建其他模块,它将在同一进程的上下文中运行。为了执行所需的同步,您必须确保此过程在半夜仍在使用应用程序时仍在工作。您可以使用Quartz.NET来安排同步任务。
但是,我认为更好的想法是从Windows服务执行同步。服务应该与应用程序通信,例如使用数据库,它记录当前活动。它使您可以通过连接到此类数据库来监视Web上的服务状态。我知道服务会增加一些额外的管理工作,但它会更加可靠和安全。您还可以从Web应用程序添加服务启动可能性(如果池进程用户具有对Windows服务的访问权限),以克服(或至少最小化)管理工作,并在发生故障后重新启动服务。
我已经编写了这样的功能,所以只是为了让您全面了解这种外部服务的Web监控的含义,请查看下面的屏幕。它可以使用ajax支持编写,以实现更高的响应能力(pooling mechanism),这对最终用户来说非常方便。