文章分类 -  ESBasic

摘要:转自:http://www.cnblogs.com/zhuweisky/archive/2009/09/26/1574338.html1.缘起:假设我们的报表系统需要在每天的00:05:00统计前一天的报表数据,需要在每周一的00:30:00统计上周的报表数据,又需要在每月1日的00:30:00统计上月的报表数据。这些报表统计任务是很常见的系统需求,对于类似这样的在指定时刻执行的定时任务,我使用ESBasic.Threading.Timers.TimingTaskManager(定时任务管理器)来处理它。TimingTaskManager与前面讲的回调定时器CallbackTimer的区别在于 阅读全文
posted @ 2013-04-04 22:15 ADTL 阅读(241) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/zhuweisky/archive/2009/09/21/1570807.html1.缘起:举个例子也许就能够说清楚回调定时器的用途。假设我的订单系统接收各种不同类型的订单,当订单A进来时,系统根据订单的类型和其它特征进行综合判断后,决定A订单要在2秒之后被方法M1处理;接下来收到的B订单经过同样的判断后,决定要在10秒后被方法M2处理,……。这时候就可以用回调定时器来管理这些将要被延迟一定时间再执行的任务。当然,我们可以使用定时器或前面介绍的循环引擎来实现这样的功能,只不过我们自己需要手动管理注册的定时回调任务,并且定时检查每一个未处理订单 阅读全文
posted @ 2013-04-04 22:14 ADTL 阅读(135) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/zhuweisky/archive/2009/09/12/1565316.html1.缘起:假设我的订单处理系统有这样的需求:将一天24小时分为4个时段,凌晨2:15到8:30采用A类型的处理器处理接收到的订单,8:30到14:00采用B类型的处理器,14:00到20:00采用C类型的处理器,20:00到第二天凌晨2:15采用D类型的处理器。即我们的订单处理器需要在任一天的2:15、8:30、14:00、20:00这四个时刻发生切换,这就是一个循环切换器所要做的工作。我设计了ESBasic.Threading.Application.ICir 阅读全文
posted @ 2013-04-04 22:13 ADTL 阅读(181) 评论(1) 推荐(1)
摘要:转自:http://www.cnblogs.com/zhuweisky/archive/2009/09/07/1561981.html1.缘起:假设我们的系统在运行的过程中,源源不断的有新的任务需要处理(比如订单处理),而且这些任务的处理是相互独立的,没有前后顺序依赖性(顺序依赖性是指,必须在任务A处理结束后才可开始B任务),那么我们就可以使用多个线程来同时处理多个任务。每个处理任务的线程称为“工作者(线程)”。我设计了ESBasic.Threading.Engines.IWorkerEngine工作者引擎,其目的就是使用多个线程来并行处理任务,提高系统的吞吐能力。工作者引擎的形象示意图如下: 阅读全文
posted @ 2013-04-04 22:12 ADTL 阅读(158) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/zhuweisky/archive/2009/08/29/1556348.html1.缘起:假设我们要开发一个多人跳棋游戏。在跳棋游戏中,当一个人走一步棋之后,控制权就轮到下一家,如此轮询,一圈之后控制权又回到自己,然后再继续轮圈下去。我们可以使用数组或列表等数据结构来解决这种转圈圈的问题,但是始终都不够直观。我设计了Circle来对“圈”这种数据结构进行抽象,我们在类似跳棋这样的游戏中可以非常方便地直接使用它。Circle的形象示意图如下:2.适用场合:需要类似“圈”这样的数据结构支持的场合。3.设计思想与实现Circle也是一个非常简单的 阅读全文
posted @ 2013-04-04 22:11 ADTL 阅读(142) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/zhuweisky/archive/2009/09/01/1557792.html1.缘起:有些系统需要每隔一段时间就执行一下某个动作,比如,一个监控系统每隔10秒钟就要检测一下被监控对象的状态是否正常,那这时我们就可以用到循环引擎了。有人说可以使用.NET框架自带定时器如System.Threading.Timer,嗯,没错。但是若这个类使用不当可能会引发后台池线程耗尽的后果。因为Timer的定时事件触发实在后台线程池中的某个线程中处理的。也就是说Timer的每次定时事件触发都会用到一个线程,如果定时的时间间隔小于事件处理的时间,则后台线程 阅读全文
posted @ 2013-04-04 22:11 ADTL 阅读(141) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/zhuweisky/archive/2009/08/27/1554827.html1.缘起:同我们从DateTime中将时刻部分作为ShortTime抽离出来一样,我们将DateTime中的日期部分也抽离出来,以ESBasic.Date类来表示。比如,我们的报表系统是以“天”为单位来进行统计的,为了提高效率,我们会在每天凌晨将前一天的报表数据统计完毕,并存储到数据库中,一天的报表数据就对应数据库数据库中的一条记录,该记录以一个表示日期的整数而不是DateTime作为主键。比如主键值为20090501的表示这条记录对应的是2009年5月1日的报 阅读全文
posted @ 2013-04-04 22:10 ADTL 阅读(152) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/zhuweisky/archive/2009/08/25/1553459.html(如果您能对照着源码来阅读本文,效果会更好。)1.缘起:假设我们的员工打卡系统,需要设定公司规定的上班时间、下班时间、以及还要对员工是否迟到早退等这些情况进行判断。我们以什么方式来记录类似上下班时间这样只有时分秒没有年月日的时间了?你说可以使用DateTime,但是合适吗?总是觉得用DateTime来表示上下班的时间很别扭,因为我们的上下班时间并需要指定到具体的哪一天啊。我设计了ESBasic.ShortTime来对类似上下班时间的概念进行抽象。ShortTim 阅读全文
posted @ 2013-04-04 22:09 ADTL 阅读(185) 评论(0) 推荐(0)
摘要:转自:http://zhuweisky.cnblogs.com/archive/2006/05/12/397928.html自从03年正式使用.NET开发以来,已经走过了6个年头,这期间我积累了几套类库和框架,ESBasic便是其中最基础的一个类库。ESBasic是Enterprise Service Basic的缩写,虽然也简写为ESB,但是它和Enterprise Service Bus(企业服务总线)没有任何关系。ESBasic是我能够快速和高效开发应用程序的利器之一,开这个专门的blog是想将它介绍给大家,希望能对大家有所启发。ESBasic覆盖的内容包括:对象管理、插件、网络(Soc 阅读全文
posted @ 2013-04-04 22:08 ADTL 阅读(144) 评论(0) 推荐(0)