
最 低 价:¥74.30
| 《WF高级程序设计》是一场高级程序设计的丰盛大宴;深入WF精髓,满足你无限的求知欲;分析透彻的丰富示例,手把手教你设计绝活。WF作为.NET的一部分.是微软为开发人员提供的强大工作流开发框架.它更代表了一种开发应用程序的全新模式。它可以清晰地将工作内容和工作时间分隔开来,使你改变工作流模型而不会影响到工作内容。《WF高级程序设计》被誉为不可多得的经典之作,内容全面,结构合理,各章彼此连贯又可独立阅读,极具灵活性。书中丰富的代码实例,深入浅出地阐明了使用WF技术所需要理解和掌握的技术细节。 |
| Bruce Bukovics,Radiant系统公司核心开发团队的首席开发人员和架构师,拥有近30年网络开发经验,精通C、C++、Delphi、VB、C#和Java等多种编程语言,亲身经历了从COM和COM+,以及从Web服务到.NET远程处理等技术的改革浪潮。 译者简介: 柴晓伟,微软最有价值专家(MVP),擅长WF开发和Web前端开发,熟悉Web标准和H丁ML、CSS~JavaScript等相关技术,技术博客地:http://coding.windstyle.cn。 |
| 第1章 WF快速入门 11.1 为什么需要工作流 11.1.1 工作流各不相同 11.1.2 为什么选择WF 21.2 开发环境 31.3 Hello Workflow 31.3.1 创建工作流项目 41.3.2 工作流设计器 61.3.3 使用工作流活动 61.3.4 输入代码 71.3.5 承载工作流运行时 81.3.6 运行应用程序 101.4 传递参数 101.4.1 声明属性 111.4.2 在运行时中传递值 111.5 作出决策 131.5.1 创建工作流库 131.5.2 添加工作流属性 131.5.3 添加IfElse活动 141.5.4 添加计算逻辑 171.5.5 创建计算器客户端 191.5.6 测试和调试计算器 231.6 小结 25第2章 基础结构概述 262.1 工作流类型 262.1.1 顺序工作流 262.1.2 状态机工作流 262.1.3 选择工作流类型 272.2 基础结构交付项 282.2.1 类库和基础结构 282.2.2 运行时引擎 292.2.3 运行时服务 302.2.4 设计时工具 302.2.5 .NET 2.0运行时 302.3 运行时环境 302.3.1 应用程序宿主进程 312.3.2 运行时引擎 322.3.3 已注册的核心服务 332.3.4 已注册的本地服务 362.3.5 工作流实例 372.4 设计时环境 392.4.1 工作流创作模式 392.4.2 项目模板 402.4.3 工作流设计器 412.4.4 活动设计器 452.4.5 规则条件编辑器 462.4.6 Ruleset编辑器 482.4.7 工作流调试器 512.4.8 命令行工作流编译器 512.4.9 命令行通信活动生成器 522.5 小结 52第3章 活动 533.1 理解活动 533.1.1 活动的两个访问者 533.1.2 类层次结构 543.2 探讨标准活动 553.2.1 自定义工作流逻辑 553.2.2 流控制 553.2.3 状态管理 573.2.4 事件处理 583.2.5 本地服务通信 593.2.6 规则 593.2.7 Web服务 593.2.8 工作流服务 603.2.9 事务、补偿和同步 613.2.10 异常和错误处理 623.3 标准活动摘要 623.4 添加工作流逻辑 643.5 使用CodeActivity 643.5.1 创建项目 653.5.2 定义工作流参数 653.5.3 验证账户 693.5.4 验证产品 703.5.5 录入订单 703.5.6 运行工作流 743.5.7 总结此方法 773.6 开发自定义活动 773.6.1 为什么使用自定义活动 773.6.2 两种访问者的设计 783.6.3 创建项目 783.6.4 实现账户验证活动 783.6.5 实现产品验证活动 823.6.6 实现订单录入活动 843.6.7 定义工作流参数 873.6.8 定义工作流 883.6.9 运行工作流 923.6.10 总结此方法 953.7 增强设计体验 963.7.1 验证活动 963.7.2 自定义工具箱行为 1003.7.3 自定义设计器 1043.8 小结 108第4章 承载工作流运行时 1094.1 承载概述 1094.2 简单的工作流承载 1104.2.1 实现测试工作流 1104.2.2 实现简单宿主应用程序 1124.3 改进的工作流承载 1174.3.1 实现工作流实例包装 1174.3.2 实现工作流管理器类 1194.3.3 承载工作流管理器 1274.3.4 通过App.config配置运行时 1334.4 控制工作流实例 1364.5 同步的工作流执行 1394.6 小结 142第5章 流控制 1435.1 条件类型 1435.2 使用IfElseActivity 1445.2.1 使用代码条件的IfElseActivity 1445.2.2 使用规则条件的IfElseActivity 1505.3 使用WhileActivity 1535.3.1 实现工作流 1535.3.2 测试工作流 1565.4 使用ParallelActivity 1585.4.1 实现工作流 1595.4.2 测试工作流 1625.4.3 添加DelayActivity 1645.5 使用ReplicatorActivity 1655.5.1 实现顺序工作流 1665.5.2 测试顺序工作流 1695.5.3 实现并行工作流 1705.5.4 测试并行工作流 1745.5.5 使用ReplicatorActivity事件 1765.5.6 中断执行 1765.6 使用ConditionedActivityGroup 1765.6.1 实现工作流 1775.6.2 测试工作流 1805.7 使用InvokeWorkflowActivity 1825.8 使用TerminateActivity 1835.9 使用SuspendActivity 1835.10 小结 183第6章 本地服务 1846.1 了解本地服务 1846.1.1 实现本地服务 1856.1.2 使用本地服务 1856.2 实现并使用本地服务 1866.2.1 实现账户类 1866.2.2 声明服务约定 1866.2.3 实现本地服务类 1876.2.4 实现工作流 1886.2.5 测试工作流 1916.3 从App.config加载 1936.4 使用自定义活动 1956.4.1 实现自定义活动 1956.4.2 修改工作流 1986.4.3 测试工作流 1996.5 使用CallExternalMethodActivity 1996.5.1 实现工作流 1996.5.2 测试工作流 2016.6 小结 201第7章 事件驱动活动 2027.1 使用事件驱动活动 2027.2 使用HandleExternalEventActivity 2037.2.1 创建项目 2047.2.2 实现事件参数类 2047.2.3 定义服务接口 2057.2.4 实现本地服务 2067.2.5 实现工作流 2097.2.6 实现宿主应用程序 2137.2.7 测试工作流 2177.3 生成通信活动 2187.3.1 生成活动 2187.3.2 修改工作流 2197.4 手动控制关联 2207.4.1 实现事件参数类 2217.4.2 定义服务接口 2217.4.3 实现本地服务 2227.4.4 实现工作流 2237.4.5 测试工作流 2257.5 使用EventHandlingScopeActivity 2277.5.1 定义服务接口 2287.5.2 实现本地服务 2287.5.3 实现工作流 2307.5.4 测试工作流 2347.6 开发自定义事件驱动活动 2367.6.1 了解工作流队列 2377.6.2 事件驱动活动的需求 2387.6.3 实现ProcessGuessActivity 2397.6.4 实现SendHintActivity 2467.6.5 修改工作流 2487.6.6 修改宿主应用程序 2497.6.7 测试工作流 2527.7 小结 253第8章 工作流持久性 2548.1 了解持久性 2548.1.1 持久化工作流的原因 2548.1.2 持久性概述 2558.2 使用SqlWorkflowPersistenceService 2568.2.1 为持久性准备数据库 2578.2.2 实现本地服务 2578.2.3 实现工作流 2598.2.4 实现宿主应用程序 2618.2.5 测试应用程序 2718.3 实现自定义持久性服务 2738.3.1 了解抽象方法 2748.3.2 实现服务 2768.3.3 测试自定义服务 2828.4 小结 284第9章 状态机工作流 2859.1 了解状态机 2859.1.1 为什么需要状态机工作流 2859.1.2 状态机概述 2869.2 实现状态机工作流 2909.2.1 设计CarStateMachine 2909.2.2 定义本地服务接口 2919.2.3 实现本地服务 2929.2.4 实现工作流 2959.2.5 实现宿主应用程序 3029.2.6 测试应用程序 3089.3 消除重复的事件处理程序 3099.3.1 重构CarWorkflow 3099.3.2 测试修改后的工作流 3109.4 标识现有事件 3119.4.1 询问工作流队列 3119.4.2 修改CarStateMachine 3119.4.3 测试应用程序 3139.5 访问工作流运行时信息 3149.5.1 修改CarStateMachine 3149.5.2 测试应用程序 3169.6 小结 316第10章 事务和补偿 31710.1 事务 31710.1.1 事务的方式 31710.1.2 WF对事务的支持 31810.2 使用TransactionScopeActivity 31910.2.1 实现AccountAdjustment-Activity 32210.2.2 实现AccountTransfer-Workflow 32610.2.3 测试工作流 32910.3 了解补偿 33410.4 使用可补偿活动 33510.4.1 实现InventoryUpdate-Activity 33510.4.2 实现OrderDetailActivity 33910.4.3 实现OrderEntryWorkflow 34410.4.4 测试工作流 35010.5 参与工作批次 35310.6 使用IPendingWork接口 35310.6.1 实现本地服务 35410.6.2 实现BatchedWorkWorkflow 35610.6.3 测试工作流 35710.7 小结 359第11章 工作流规则 36111.1 了解工作流规则 36111.1.1 规则的组成 36211.1.2 使用规则的原因 36211.2 在WF中使用规则 36311.2.1 定义规则 36311.2.2 定义规则集 36611.2.3 使用特性来标识依赖项 36811.3 使用PolicyActivity来定义规则 36911.3.1 实现SalesItem类 36911.3.2 声明规则 37011.3.3 测试工作流 37511.4 跟踪规则 37911.5 调整规则顺序 38111.5.1 设置规则优先级 38111.5.2 测试工作流 38111.6 在规则中使用方法 38311.6.1 添加操作方法 38311.6.2 在规则集中使用方法 38411.6.3 标识间接关系 38511.7 在代码中执行规则集 38611.7.1 实现SellItemSerialized-Workflow 38611.7.2 测试工作流 38911.8 在代码中构造规则集 38911.8.1 实现SellItemInCode-Workflow 38911.8.2 测试工作流 39211.9 小结 393第12章 异常和错误处理 39412.1 理解工作流异常处理 39412.2 探讨默认行为 39612.2.1 实现ExceptionWorkflow 39612.2.2 测试工作流 39812.3 使用FaultHandlerActivity 40012.3.1 处理ArithmeticException 40012.3.2 处理DivideByZeroException 40312.4 抑制异常 40512.5 重新抛出异常 40712.6 补偿和异常 40812.6.1 实现CompensateWorkflow 40812.6.2 测试工作流 41012.7 使用CancellationHandlerActivity 41212.7.1 实现CancelHandler-Workflow 41212.7.2 测试工作流 41412.8 小结 414第13章 高级自定义活动 41513.1 开发专用的复合活动 41513.1.1 开发自定义活动 41613.1.2 开发工作流 41713.1.3 测试活动 41813.2 开发通用的复合活动 42013.2.1 了解活动执行计划 42013.2.2 复合活动的执行模式 42113.2.3 实现顺序活动 42213.2.4 实现测试工作流 42613.2.5 测试顺序活动 42813.3 开发优先级顺序活动 42913.3.1 实现优先级顺序活动 42913.3.2 实现扩展提供程序 43213.3.3 实现自定义设计器 43413.3.4 实现测试工作流 43513.3.5 测试优先级顺序活动 43613.4 开发长时间运行的活动 43613.4.1 实现本地服务 43713.4.2 实现自定义活动 44013.4.3 实现测试工作流 44313.4.4 测试长时间运行的活动流 44313.5 小结 445第14章 动态工作流更新 44614.1 了解动态更新 44614.1.1 使用动态更新的原因 44714.1.2 应用动态更新 44714.1.3 防止动态更新 44814.2 从宿主应用程序中应用更新 44914.2.1 实现DynamicWorkflow 44914.2.2 实现自定义活动 45014.2.3 实现宿主应用程序 45214.2.4 测试工作流 45614.3 限制动态更新 45614.4 从工作流中应用更新 45814.4.1 实现SelfUpdatingWorkflow 45814.4.2 实现宿主应用程序 46114.4.3 测试工作流 46214.5 更新规则条件 46314.5.1 实现DynamicCondition-Workflow 46314.5.2 实现宿主应用程序 46414.5.3 测试工作流 46814.6 替换规则条件 46814.6.1 修改RuleDefinitions 46814.6.2 修改宿主应用程序 47014.6.3 测试修改后的应用程序 47214.7 小结 472第15章 工作流跟踪 47315.1 了解工作流跟踪 47315.1.1 跟踪服务 47315.1.2 跟踪事件类型 47415.1.3 自定义跟踪配置 47515.1.4 使用跟踪数据 47515.1.5 受益于工作流跟踪 47615.2 使用SqlTrackingService 47615.2.1 准备跟踪SQL数据库 47715.2.2 开发测试工作流 47715.2.3 开发宿主应用程序 47915.2.4 执行宿主应用程序 48115.2.5 获取跟踪数据 48215.3 创建用户跟踪点 48915.3.1 增强TrackingExample-Workflow 49015.3.2 测试修改后的工作流 49015.4 跟踪规则计算 49115.4.1 实现TrackingRules-Workflow 49115.4.2 测试工作流 49215.5 使用自定义跟踪配置提取数据 49315.5.1 使用跟踪配置 49415.5.2 实现TrackingProfile-Helper 49515.5.3 创建跟踪配置 49915.5.4 测试跟踪配置 50115.6 维护SQL跟踪数据库 50215.6.1 分区 50215.6.2 设置分区间隔时间 50215.6.3 自动或手动分区 50215.6.4 访问分区数据 50315.6.5 分离或删除分区 50315.7 开发跟踪服务 50315.7.1 实现跟踪通道 50415.7.2 实现跟踪服务 50615.7.3 测试自定义跟踪服务 51015.8 小结 512第16章 Web服务和ASP.NET 51316.1 将工作流发布为Web服务 51316.1.1 了解Web服务活动 51316.1.2 发布和配置 51416.2 开发Web服务工作流 51516.2.1 定义Web服务接口 51516.2.2 定义MathServiceWorkflow 51616.2.3 发布工作流 51816.2.4 测试工作流 51916.3 返回Web服务错误 52116.3.1 修改MathServiceWorkflow 52216.3.2 测试修改后的Web服务 52316.4 开发状态化的Web服务 52316.4.1 定义Web服务接口 52416.4.2 实现MathServiceState-fulWorkflow 52516.4.3 发布新工作流 52816.4.4 测试Web服务 52816.5 在工作流中调用Web服务 52816.5.1 实现InvokeWebService-Workflow 52916.5.2 测试工作流 53216.6 在ASP.NET中使用工作流 53316.6.1 实现DivideNumberWorkflow 53416.6.2 实现UseWorkflowWebsite 53416.6.3 测试工作流 53816.7 小结 539第17章 工作流服务和WCF集成 54017.1 了解WCF 54017.1.1 定义服务约定 54117.1.2 配置终结点和绑定 54217.1.3 承载和配置 54317.2 了解工作流服务 54317.2.1 使用ReceiveActivity 54317.2.2 使用SendActivity 54417.2.3 承载和配置 54517.2.4 实例化和上下文管理 54717.3 开发无状态的工作流服务 54817.3.1 定义服务约定 54817.3.2 实现工作流 54917.3.3 配置工作流服务 55017.3.4 测试工作流服务 55117.4 IIS承载和客户端开发 55217.4.1 创建IIS虚拟目录 55317.4.2 创建.svc文件 55317.4.3 配置Web.config文件 55317.4.4 部署服务 55417.4.5 开发客户端应用程序 55517.5 自承载的工作流服务 55717.5.1 开发服务宿主 55817.5.2 配置服务宿主 55917.5.3 更改客户端应用程序 56017.5.4 测试服务宿主 56117.6 定义工作流优先的服务 56117.7 开发状态化的工作流服务 56217.7.1 定义服务约定 56317.7.2 实现工作流 56417.7.3 在IIS中承载工作流服务 56617.7.4 开发客户端应用程序 56717.7.5 测试工作流服务 56917.8 使用SendActivity 57017.8.1 实现工作流 57017.8.2 开发客户端应用程序 57317.8.3 测试工作流 57517.9 上下文和对话 57517.9.1 定义服务约定 57717.9.2 实现库存工作流 57917.9.3 实现库存宿主 58317.9.4 实现客户端工作流 58617.9.5 实现客户端宿主 59217.9.6 测试应用程序 59517.10 小结 596第18章 工作流序列化和标记 59818.1 了解工作流创作模式 59818.1.1 仅限代码创作模式 59818.1.2 代码分离创作模式 59918.1.3 无代码创作模式 60118.2 开发仅限代码工作流 60218.2.1 实现工作流 60318.2.2 测试工作流 60418.2.3 查看生成的代码 60518.3 开发代码分离工作流 60718.3.1 实现工作流 60718.3.2 测试工作流 60818.3.3 查看标记 60818.4 开发无代码工作流 60918.4.1 实现工作流基类 60918.4.2 实现自定义活动 61018.4.3 定义工作流标记 61118.4.4 增强WorkflowRuntime-Manager 61218.4.5 测试工作流 61418.5 在无代码工作流中使用规则 61518.5.1 定义规则条件 61618.5.2 修改工作流标记 61718.5.3 测试工作流 61818.6 序列化到标记 61818.7 编译工作流 62218.8 编译包含规则的工作流 62518.9 在命令行中编译 62818.10 反序列化标记 62818.11 小结 632第19章 承载工作流设计器 63319.1 工作流设计器 63319.1.1 设计器命名空间 63419.1.2 设计器类 63419.1.3 设计器服务 63519.2 构建设计器应用程序 63519.2.1 创建设计器项目 63619.2.2 实现WorkflowLoader 63719.2.3 实现WorkflowMenuService 64519.2.4 实现WorkflowEvent-BindingService 64919.2.5 实现EventProperty-Descriptor 65319.2.6 实现WorkflowProperty-ValueService 65719.2.7 实现WorkflowToolbox-Service 65919.2.8 实现WorkflowDesigner 66819.2.9 实现MainForm 67419.2.10 实现AssemblyReference-Form 67919.2.11 实现NewWorkflowForm 68119.3 使用设计器 68319.4 小结 687 |
商品评论(0条)