日期:2014-05-17  浏览次数:20483 次

怎么做日常自动统计?求思路……
一个web项目,mvc开发的,前台报表模块已经做好了,现在就差每天凌晨往数据库里插入一条统计信息。以前都是直接在数据库里直接写个作业做统计,现在不允许这样做了。。。现在情况就是:web项目中的一个service组件已经把每天如何统计信息写好了,问题就是:我该如何在固定时间触发这个方法呢?(ps:想用个timer,Application_Start启动那个timer,到点就调用一下service中的方法,可感觉像是打酱油的,求思路……)
Web 日常自动统计 求思路

------解决方案--------------------
像这类计算统计的工作,最好就应该交给数据库层做(job),但是你又不允许。而且你都已经限制死了,web项目里面有service组件,那你说呢?
------解决方案--------------------
直接放到操作系统的任务计划里面,简单又省事
------解决方案--------------------
windows service托管wf工作流。
------解决方案--------------------
用IIS数据包 和 Sql 代理  每天定时执行
------解决方案--------------------
为何不能放在web层^_^。思维上有误区。
1. 首先放在web层可以与web同一生命周期,其次可以共享web的配置信息。
2. 如果放在中间层或数据库,那更多的是为了功能上的隔离。所以,为了有效保证信息的封装,应该将JOB的调用简单化。

如果放在web层,可以application_start上启动timer,完全正确。但timer不如启动thread。使用线程更容易控制周期。其次,IIS的AppPool有生命周期,定期会回收,网站无人请求会回收,所以,要有一个机制保证forever运行网站。只要网站是长期运行,在website上定时JOB完全work,且是非常好的选择。
------解决方案--------------------
用 Quartz.net 可以实现。
------解决方案--------------------
我现在项目里面使用的调度系统就是基于:Quartz.net 
我推荐你使用这个。
------解决方案--------------------
或者你写成一个一次的exe程序

然后用dos 的 at 命令来执行。