日期:2014-05-20  浏览次数:20785 次

求一个方案(.Net)
后台有一个操作,通过前台界面设置这个操作的执行:可以设置一个具体的时间点,时间到了以后执行这个操作;可以设置时间间隔,达到时间间隔的时候就执行这个操作。

我是这么想的:通过一张表来保存执行这个操作的的一些配置信息。如时间点、时间间隔,后台跑一个Windows服务。在Windows服务中通过Timmer根据配置信息来执行这个操作。问题是:假设现在配置信息已经保存到表中了,这个时候启动Windows服务的话,能按照想要的来运行;但现在如果更改了配置,如何通知Windows服务去重新读取新的配置呢?

知道的给的思路哈,或者说说自己的想法一起探讨下。

------解决方案--------------------
可以每隔一段事件读取一次数据库
不要做成Windows服务,不就知道什么时间做了改变吗?
------解决方案--------------------
那时间设置成多少才合适呢?如果你设置的时间间隔比配置中的间隔大怎么办?
探讨

可以每隔一段事件读取一次数据库
不要做成Windows服务,不就知道什么时间做了改变吗?

------解决方案--------------------
探讨
那时间设置成多少才合适呢?如果你设置的时间间隔比配置中的间隔大怎么办?

引用:

可以每隔一段事件读取一次数据库
不要做成Windows服务,不就知道什么时间做了改变吗?

------解决方案--------------------
3楼方式不错
------解决方案--------------------
我不光要把变化的数据记录下来,还得在数据变化的时候执行我自己的操作,能做到吗?
探讨

引用:
那时间设置成多少才合适呢?如果你设置的时间间隔比配置中的间隔大怎么办?

引用:

可以每隔一段事件读取一次数据库
不要做成Windows服务,不就知道什么时间做了改变吗?


。Net类库中缓存类,当sql表改变的时候,自动刷新缓存表。
C# code

//启用更改通知
……

------解决方案--------------------
探讨
我不光要把变化的数据记录下来,还得在数据变化的时候执行我自己的操作,能做到吗?

引用:

引用:
那时间设置成多少才合适呢?如果你设置的时间间隔比配置中的间隔大怎么办?

引用:

可以每隔一段事件读取一次数据库
不要做成Windows服务,不就知道什么时间做了改变……

------解决方案--------------------
前台应该一种通知的机制,告诉后台,我更新了。你自己去获取数据。然后按照新数据来执行。
------解决方案--------------------
后台跑一个windows服务,隔一小时查下数据库,执行你自己要的操作,我觉得这是最简单的方法了。SqlDependency也能用,但有局限性,就是要执行SqlCommand才能得到通知
------解决方案--------------------
提供一个思路:
服务器上开一个进程,其实可以在你iis中也行,前台每一次操作,iis中一般都会做相关处理,此时如果需要,计算下一次触发的时间,将时间通知该进程。进程判断是否更改触发时间,以最早为准,同时记录到数据库。
进程触发时,再去查数据库,处理该处理的内容,处理完,启动下一个最早触发时间。
这是负载较小的方式,实时也能做到,健壮性也好一些。

另一种就是内存中间触发序列,用多线程去处理。
我们系统用的是前一种,在系统意外挂了之后,重起,能不破坏整个逻辑。
------解决方案--------------------
高有高招