与外部服务ASP.NET MVC同步

时间:2012-12-12 12:09:46

标签: c# asp.net multithreading asp.net-mvc-3 service

我们希望将应用程序中的数据与外部服务的数据同步。 (例如会计软件。这种同步应该在每晚和客户想要的时候执行。

我知道长时间运行的线程不属于Web应用程序,并且此同步应该在外部Windows服务中执行。但是这种方法的缺点是,部署/维护变得更加困难,因为应用程序也可以安装在客户的Web服务器上。

是否可以将此同步与仅使用我的解决方案的类库项目完全集成,该解决方案将在Application_Start事件中启动?

1 个答案:

答案 0 :(得分:2)

由于您的应用程序托管在IIS上,因此它由应用程序池进程维护。如果为任务创建其他模块,它将在同一进程的上下文中运行。为了执行所需的同步,您必须确保此过程在半夜仍在使用应用程序时仍在工作。您可以使用Quartz.NET来安排同步任务。

但是,我认为更好的想法是从Windows服务执行同步。服务应该与应用程序通信,例如使用数据库,它记录当前活动。它使您可以通过连接到此类数据库来监视Web上的服务状态。我知道服务会增加一些额外的管理工作,但它会更加可靠和安全。您还可以从Web应用程序添加服务启动可能性(如果池进程用户具有对Windows服务的访问权限),以克服(或至少最小化)管理工作,并在发生故障后重新启动服务。

我已经编写了这样的功能,所以只是为了让您全面了解这种外部服务的Web监控的含义,请查看下面的屏幕。它可以使用ajax支持编写,以实现更高的响应能力(pooling mechanism),这对最终用户来说非常方便。

enter image description here

相关问题