2011年5月25日
摘要: 上一节我们做了个简单的测试证明了Parallel并不是真正意义上的并行工作流,并且分析了它的缺陷。在.net framework 4里面有很多关于并行计算的组件,现在我们就要利用微软TPL(The Task Parallel Library)中的System.Threading.Tasks.Task类型来实现并行的分支。要定制异步工作流活动,我们的新类必须继承于.net WF中的基类AsyncCodeActivity我们重写一下PartDBReplicationActivity,public class PartDBReplicationAsyncActivity : AsyncCodeAct 阅读全文
posted @ 2011-05-25 14:38 胡以谦 阅读(1475) 评论(11) 推荐(2) 编辑
摘要: 在微软WF4中有一个Parallel活动,它可以模拟并行执行,但可惜的是Parallel活动并不是一个真正意义上的并行计算方案,实际上Parallel利用了一个线程去分时间段执行下面的各个分支。今天,我们要做的就是基于Parallel活动和微软.net framework 4中的并行任务Task,构造一个实际的并行工作流。并将它扩展为通用的并行工作流解决方案。我们首先构造一个虚拟的订单处理流程,它包含主要三个活动 (1) 订单初始化(2) 将订单有关信息拷贝到零件数据库(Part DB)(3) 将订单有关信息拷贝到车辆数据库(Vehicle DB)(4) 结束订单传统的做法是构造一个服务,顺序 阅读全文
posted @ 2011-05-25 14:11 胡以谦 阅读(2084) 评论(0) 推荐(1) 编辑
  2011年5月23日
摘要: 在上一节我们做了一个简单的容器,基本实现了类型/对象的注册和查询,main里面的代码现在比较稳定,无需再与各种工厂实例打交道,也无需了解各种接口和工厂的对应关系,但是我们实现的容器存在一些问题:1) 每种接口类型只能注册一个对应组件实例(接口的类型就是Dictionary里面的key, key不能重复,微软ObjectBuilder的Locator利用了键/组件Id来注册key)2) Container只有一个层次,微软ObjectBuilder的Locator实现了多层次的链表结构的Container,后面我们再来分析这样的层次结构的Container的优缺点 3) Container里面引 阅读全文
posted @ 2011-05-23 11:44 胡以谦 阅读(520) 评论(2) 推荐(1) 编辑
  2011年5月20日
摘要: 微软objectBuilder解读:构造一个轻量级的Dependency Injection容器(2) 工厂和容器我们利用简单工厂继续对示例进行修改为public class CreatorFactory{ public static IMessageCreator GetCreator() { return new ConsoleMessageCreator(); }}public class ProcessorFactory{ public static IMessageProcessor GetProcessor(string message) { if (message == &quo 阅读全文
posted @ 2011-05-20 14:17 胡以谦 阅读(681) 评论(9) 推荐(1) 编辑
摘要: Dependency Injection或Inverse of Control(控制反转)设计模式来源于架构设计的一个基本原则: 1. Dependency Inverse Policy (依赖倒置/依赖反转)什么是依赖倒置/依赖反转,看一个简单的例子:一个控制台程序读入用户从键盘输入的字符串输出到屏幕。static void Main(string[] args){ Console.WriteLine("Demo DIP "); string s = Console.ReadLine(); Console.WriteLine("your input is&quo 阅读全文
posted @ 2011-05-20 10:54 胡以谦 阅读(873) 评论(2) 推荐(1) 编辑