2012年9月25日
摘要: 1.引言Scheduled Timer将定时器Timer进行封装成ScheduledTimer,很多Timer暴露的成员,都以私有化,并将上一节中的定时器作业(TimerJob)进行了集成。2.ScheduledTimer代码很简单,直接上代码 public class ScheduleTimer { public IEventStorage EventStorage = new LocalEventStorage(); public event ExceptionEventHandler Error; private static Tim... 阅读全文
posted @ 2012-09-25 17:28 Qlin 阅读(1977) 评论(0) 推荐(1) 编辑
摘要: 1.引言实际应用中,我们是定义一个作业,定时器然后定时去调用。前面章节都介绍的时间调度、事件过滤(EventFilter)、任务方法(MethodCall) 这些都是这个作业零部件,这就是这节要介绍的Job。2.JobScheduled Timer的Job是由时间调度器、任务方法,事件过滤器等组成,共同来达到预期的目的,单个不行,好像一个团队,主要代码如下 /// <summary> /// 定时器作业 /// </summary> public class TimerJob { public IScheduledItem Schedule; ... 阅读全文
posted @ 2012-09-25 09:13 Qlin 阅读(2177) 评论(9) 推荐(1) 编辑
  2012年9月24日
摘要: 1.引言Scheduled Timer的由Timer定时器触发执行任务,Timer每隔一段时间(短时间)触发Elapsed事件,大多数做法是给定时器Timer的Elapsed事件赋值,Scheduled Timer的做法差不多,但又有不同。Scheduled Timer做法是把定时器的Elapsed私有化了,给了它一个固定私有的方法Timer_Elapsed,在Timer_Elapsed里有多个Job,每个Job才是对应我们的任务方法。里我们并不是在调用时给Elapsed赋值,Elapsed事件只是一个入口,在Elapsed事件里进行执行我们的任务方法,这个任务方法可以是一个,也可以是集合,这 阅读全文
posted @ 2012-09-24 17:02 Qlin 阅读(2414) 评论(0) 推荐(0) 编辑
摘要: 1.引言上节介绍了事件持久化,就是事件恢复执行,有时候Timer启动时,时间已经过了很久了,这样的话,事件恢复执行,可能会出现很多,但并不希望它们都出执行,而是有选择性的执行,这就是这节介绍的过滤器EventFilter。2.EventFilterScheduled Timer提供了一个过滤器接口,先来看看接口声明 public interface IResultFilter { void FilterResultsInInterval(DateTime start, DateTime end, List<DateTime> list); }很简单,一个方法,提... 阅读全文
posted @ 2012-09-24 10:40 Qlin 阅读(1717) 评论(2) 推荐(0) 编辑
  2012年9月22日
摘要: 1.引言上一节介绍了调度时间,不清楚的可以参考[Scheduled Timer]第二回,里面谈到了一个,定时器Timer阻塞,而导致定时器延时;或者是网站关停了几个小时,导致本该定时执行的活动没有执行,这都引出一个问题,就是上次执行的时间要记录下来,保存到数据库或者文件里,否则恢复不了,这就引出了EventStorage。2.EventStorageEventStorage是事件持久化,就是把Timer上次执行的时间保存下来,以便能够恢复执行,也就是可以用上节中讲到的IScheduledItem的AddEventsInInterval方法进行恢复。Scheduled Timer提供了一个IEv 阅读全文
posted @ 2012-09-22 08:35 Qlin 阅读(1977) 评论(0) 推荐(0) 编辑
  2012年9月21日
摘要: 1.引言上一节里简单介绍了Scheduled Timer,也有园友推荐quartz.net,非常感谢他们,这个星期一直在看Scheduled Timer,就继续做笔记记录下来。将System.Timers.Timer运行间隔Interval设置时间越短,越精确。这也就是说,Timer计时器将会以间隔很短的时间一直在运行,每次运行都将触发Elapsed事件,但是每次Elapsed事件触发,并不是要触发我们的作业工作。ScheduledTime是时间调度,它将引领事件里添加的任务按需执行,接下来介绍Scheduled Timer的时间调度。2.IScheduledItem触发Elapsed事件时, 阅读全文
posted @ 2012-09-21 10:28 Qlin 阅读(3083) 评论(0) 推荐(3) 编辑
  2012年9月20日
摘要: 1.引言进行软件开发时,有没有这样的需求,每周都要发短信给客户;每天晚上12:00准时生成报表;每天 8:00到10:00 之间进行http请求抓数据包;每隔2分钟调用接口API进行同步数据等等。这些需求有一个共同的点,就是在正确的时间去做一件正确的事,这就是Scheduled Timer要干的。Scheduled Timer 是一个定时器调度,是一个对.net的Timer包装块。2.定时器介绍之前看到我的上级写了个定时作业,利用Thread睡眠1秒钟来循环来计时,感觉挺麻烦的。Scheduled Timer则是使用System.Timers.Timer。Scheduled Timer是一个朋 阅读全文
posted @ 2012-09-20 17:11 Qlin 阅读(3474) 评论(13) 推荐(0) 编辑
  2012年9月14日
摘要: Web架构师究竟都要学些什么?具备哪些能力呢?先网上查查架构师的大概的定义,参见架构师修炼之道这篇文章,写的还不错,再查查公司招聘Web架构师的要求。 总结起来大概有下面几点技能要求:一、 架构师有优秀的编码能力,解决开发人员无法解决的难题。二、 架构师对系统的大数据容量高性能高并发高容错的网站有架构设计和开发经验。三、 架构师对操作系统、数据库、服务器各种软件使用的配置比较了解,比如Linux、Web负载均衡、反向代理、数据库集群、容灾等比较了解。四、 架构师对软件开发过程有清晰明确的认识,也就是对软件工程有有明确的认识,并能把需求进行分析、建模。五、 架构师学习能力很强、接触知识面要很宽广 阅读全文
posted @ 2012-09-14 15:39 Qlin 阅读(719) 评论(1) 推荐(0) 编辑
摘要: 要成为WEB架构师,首先要找到通往成功的正确方向,详见第一篇,WEB架构师成长之路, 接下来我们就要往这个方向努力。然而如唐僧去西天取经一样,要历经种种磨难,一路上打败各种妖魔鬼怪才能继续前行,所以唐僧取经,第一件事,就是招徒弟, 遇见妖魔鬼怪就让技术高超的徒弟打败它,徒弟不听话就念紧箍咒,徒弟也搞不定的妖怪,就请观音菩萨搞定,这就是唐僧成功的法宝,没法宝上路,看来我们会死 的比较惨啊,哈哈。我们在通往架构师的路上,同样会遇到各种各样的问题,但不幸的是,没有菩萨在暗中相助,要是有牛人相助你,那老兄你太幸运了,成功几率 大大增加。但我们没 有牛人帮助,更没有技术高超的徒弟一路保驾护航,关键招徒弟 阅读全文
posted @ 2012-09-14 15:29 Qlin 阅读(498) 评论(1) 推荐(1) 编辑
摘要: 本人也是coding很多年,虽然很失败,但也总算有点失败的心得,不过我在中国,大多数程序员都是像我一样,在一直走着弯路,如果想成为一个架构师,就必须走正确的路,否则离目标越来越远,正在辛苦工作的程序员们,你们有没有下面几种感觉?一、 我的工作就是按时完成领导交给我的任务,至于代码写的怎样,知道有改进空间,但没时间去改进,关键是领导也不给时间啊。二、 我发现我的水平总是跟不上技术的进步,有太多想学的东西要学,Jquery用的人最近比较多啊,听说最近MVC比较火,还有LINQ,听说微软又有Silverlight了……三、 我发现虽然我工作几年了,除了不停的coding,Ctrl+c和Ctrl+V更 阅读全文
posted @ 2012-09-14 14:55 Qlin 阅读(699) 评论(2) 推荐(1) 编辑