CON331构建具有工作流功能的WCF服务讲座内容假设你对工作流基础架构层(WF)和通讯基础架构层(WCF)有基本的了解讲座目标学习如何现在一起应用它们学习如何将来更好的一起应用它们学习如何用WF/WCF写更少的代码不会涉及的范围演示程序的内部技术细节WF简介透明可扩展灵活工作流是用软件实现的商业流程AWorkflowHostProcessActivityLibraryWorkflowRuntimeEngineRuntimeServicesActivityVisualStudioDesigner什么是工作流?工作流解决的软件面临的挑战即将随.NET3.0和Office2007一起发布ServiceWSDLCBACBAWCF简介A地址在哪里?C契约做什么?B绑定怎么做?ClientABC为什么需要WF?支持长流程灵活控制透明可跟踪工作流设计器基于声明的开发流程规则为什么需要WCF?通讯协议不可知(今天TCP,明天HTTP,后天MSMQ)基于消息的通讯一路发消息,一路收消息通过配置文件指定地址和绑定通过WS-*实现互操作通过配置文件定义安全模型。开发者的精力放在实现流程;安全和其他行为通过配置实现宿主,端点的灵活性(服务可以同时在多个端点提供)同时使用WF和WCFWF适合于声明长流程工作流可以调用WCF服务工作流可以暴露成WCF服务WCF适合实现消息通讯服务可以用代码或工作流实现服务可以从代码或工作流中调用WF是开发WCF服务的好的方式通过声明的方式定义商业流程强大的服务(休眠非活动流程,事务,等)方便使用的工具WF(C+1)–第一部分ServiceClientWF客户端(声明定义)通过ASMX调用WCF服务(代码定义)SOAP/HTTPDeclarativeImperativeASMXWCFASMXWCF客户端(代码定义)调用通过ASMX暴露的WF服务(声明定义)ServiceClientSOAP/HTTPASMXImperativeDeclarativeASMXWCFWF(C+1)–第一部分演示第一部分好的,坏的和意外的好的它能用坏的只支持WS-IBPWebservices意外的代码真的很少!WF(C+1)–第二部分服务通过WCF适配器和WF通讯机制调用工作流工作流客户端通过WCF代理调用服务WS-*CustomWCFAdapterServiceClientGeneratedWCFProxyCodeWF(C+1)–第二部分演示第二部分好的,坏的和意外的好的支持WS-*和.NET-*协议坏的它并不是那么“能用”意外的哇,有这么多代码WF(C+1)–第三部分客户端和服务端使用WC客户定制活动服务端使用客户定制WCF宿主WS-*CustomServiceHostClientSend/ReceiveServiceReceive/SendWF(C+1)–第三部分演示第三部分好的,坏的和意外的好的支持WS-*和.NET-*协议自然的基于活动的编程模型坏的为什么我还要写它?!?意外的哇,代码更多了在VisualStudio下一个版本中…WorkflowServiceHost支持所有WCF宿主场景6种WF通讯活动发送和接收发送请求,接收应答/错误接收请求,发送应答/错误支持所有WCF绑定和行为基于契约的活动生成器客户化绑定小结(现在)调用服务通过WS-I暴露的服务在客户化活动中调用服务代理把WF暴露成服务发布成WebService(WS-I)运行在WCF服务中(WF接受消息的界面)可以使用WAS配置持久化以支持长流程和持久的服务这些现在都支持!小结(将来)调用服务消息活动把WF暴露成服务WorkflowServiceHost将处理宿主的需要一致的宿主实现方式将解决今天碰到的大部分基础平台问题(宿主,实例化等)今天开发并暴露成服务的工作流可以移植到新的宿主环境消息活动将为工作流提供一致的通讯接口相关资源社区博客其他相关TechEd讲座CON331,332,333提问,反馈