基于微软并行计算的工作流解决方案 (2) Tasked based Parallel Activity
摘要: 上一节我们做了个简单的测试证明了Parallel并不是真正意义上的并行工作流,并且分析了它的缺陷。在.net framework 4里面有很多关于并行计算的组件,现在我们就要利用System.Threading.Tasks.Task类型来实现并行的分支。在此我们不对此类型做解释,有问题的朋友可以参考MSDN或者发邮件给我。我们重写一下PartDBReplicationActivity,public class PartDBReplicationAsyncActivity : AsyncCodeActivity{ public InOutArgument<Order> OrderIn
阅读全文
基于微软并行计算的工作流解决方案 (1) Parallel Activity
摘要: 在微软WF4中有一个Parallel活动,它可以模拟并行执行,但可惜的是Parallel活动并不是一个真正意义上的并行计算方案,实际上Parallel利用了一个线程去分时间段执行下面的各个分支。今天,我们要做的就是基于Parallel活动和微软.net framework 4中的并行任务Task,构造一个实际的并行工作流。并将它扩展为通用的并行工作流解决方案。我们首先构造一个虚拟的订单处理流程,它包含主要三个活动 (1) 订单初始化(2) 将订单有关信息拷贝到零件数据库(Part DB)(3) 将订单有关信息拷贝到车辆数据库(Vehicle DB)(4) 结束订单传统的做法是构造一个服务,顺序
阅读全文
微软objectBuilder解读:构造一个轻量级的Dependency Injection容器(3) Locator
摘要: 在上一节我们做了一个简单的容器,基本实现了类型/对象的注册和查询,main里面的代码现在比较稳定,无需再与各种工厂实例打交道,也无需了解各种接口和工厂的对应关系,但是我们实现的容器存在一些问题:1) 每种接口类型只能注册一个对应组件实例(接口的类型就是Dictionary里面的key, key不能重复,微软ObjectBuilder的Locator利用了键/组件Id来注册key)2) Container只有一个层次,微软ObjectBuilder的Locator实现了多层次的链表结构的Container,后面我们再来分析这样的层次结构的Container的优缺点 3) Container里面引
阅读全文
微软objectBuilder解读:构造一个轻量级的Dependency Injection容器(2) 工厂和容器
摘要: 微软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
阅读全文
微软objectBuilder解读:构造一个轻量级的Dependency Injection容器(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
阅读全文