代码改变世界

WF 4.0 beta2相对于beta1的变化

2009-10-22 09:01  Windie Chai  阅读(3081)  评论(14编辑  收藏  举报

本文的作者是微软WF Team的PM,Matt Winkler,本文主要介绍了WF 4.0 beta2中的一些有趣的新变化,如果想了解beta2的更多信息,请移步至此页(译者注:本文只是一篇简单的新变化介绍,如果需要更加详细的内容,请移步至WXWinter的日志《WF4 Beta 2》)。

beta2这个里程碑的目标主要有两个:

  1. 响应之前收到的用户反馈
  2. 稳定化并定型产品,为正式版的发布做准备

第一个目标是最容易看出来成果的,WF Team下了很大功夫去让这个产品更加稳定,所以beta2应该是一个不错的版本。

那么beta2到底有哪些重要的变化呢?一起来往下看。

活动层次结构的变化

(译者注:beta1对活动层次结构进行了较大的改动,所有活动最终都从WorkflowElement派生而来。)有人对此感到奇怪或不适应,不过现在编写自定义活动再也无需直接或间接继承WorkflowElement了。下图展示了beta1时的活动层次结构:

 beta1_hierarchy

WF Team根据反馈进行了一些改进,现在的活动层次结构是这样的:

 beta2_hierarchy

关键的变化如下:

  • WorkflowElement不见了,取而代之的是我们熟悉的Activity。Activity又重新成为了WF内部世界种所有执行单元的根类型。
  • 增加了ActivityWithResult类,它是表达式活动的基类。
  • 增加了AsyncCodeActivity。根据反馈来看,在活动中集成异步编程很受欢迎,但这一块还需要大量的工作。AsyncCodeActvity是一块很美味的“糖”,在编写自定义活动时,使用异步编程模型提供高级API(比如Begin、End函数对)会让工作更加轻松。

运行时和承载

为活动创建者而改进的验证机制可以通过在CacheMetadata()中编写代码来验证活动树。在CacheMetadata()方法中还可以方便地定制之前通过OnGetArguments()、 GetConstraints()和GetActivities()方法扩展而来的行为。

通过引进DelegateArguments来向ActivityAction传入和传出数据,使得ActivityAction变得更加易用。而在beta1中,我们必须将Variable<T>类型的对象赋值给名为Argument的属性。

WF Team还改进了持久性、持久计时器(Durable timer)和跟踪机制,这会为WF4.0开发人员提供更加优秀的体验。

在运行时方面,动态更新作为一个功能在beta1中首次亮相,但在beta2中它又被删掉了,而且在RTM版中也不会提供(译者注:有些可惜,不是么?)。

在承载方面,根据beta1用户的反馈,WorkflowInstance被改名为WorkflowApplication

活动

消息活动是将WF和WCF集成在一起的关键组件。WF Team根据反馈做出了以下改进:

  • 关联
    • 现在可以从ParametersContent生成XPath了
    • CorrelationQuery和AdditionalCorrelations被合并到一个名为CorrelationInitializers的集合里。此外,我们还通过改进CorrelationScope和增加一个隐式的关联句柄(Correlation handle)来减少了对CorrelationHandles的需求。
  • 对参数(Parameters)的支持
    • WF Team删除了*Parameters活动,并将其合并到SendReceive活动中。现在你可以使用Content属性来支持MessageContent(主要针对无类型的Messenger或MessageContract)和ParametersContent(针对更具RPC风格的名值对列表)。

WF Team还重构了与错误处理活动相关的语义,使之更加类似于c# catch块中的“Throw”。这一变化最为明显的特征就是添加了Rethrow活动。

最后,InvokePowershell活动也不再将作为.NET Framework的一部分提供。别担心,它并没有消失,只是和其他有用的活动一样被安排到了SDK示例中。

互操作性活动(Interop Activity)

Interop活动时WF4.0工作流的一个关键组件,它允许你继续使用基于WF3构建的活动。WF Team对在互操作性活动内部进行处理的验证和事务进行了改进,使其更加全面支持WF3活动。

设计器

WF Team针对反馈在设计器方面进行了大量的工作,比如:

  • 对“展开”的支持
    • 这会让展开一个包含画布的活动更加容易,而不必再深入到这个活动内部。当然,在你不想要看到所有细节的时候,也允许你将活动折叠起来。
  • 导入设计器
    • 表达式中不再需要输入完整的类名。
  • Flowchart连线的文字(针对FlowDecision和FlowSwitch)
    • 这修复了Flowchart连线的可用性和可读性问题,从而可以更加方便地看出决策形状与其连线的关系。

WF Team收到了许多很棒的beta1反馈,并且在Redmond进行的可用性研究也提供了一些反馈,这些反馈帮助塑造了最终的设计器。此外,WF Team完成了清理对象模型的工作,使得重新承载和定制设计体验更加轻松。最后,还对beta1中有些粗糙的表达式编辑体验进行了一些重要的稳定性改进和bug修复。

关于设计器的更多内容,请移步至Matt Winkler的日志《WF4 Designer Enhancements in VS 2010 Beta 2》

本文翻译自:http://blogs.msdn.com/endpoint/archive/2009/10/20/wf4-changes-between-beta-1-and-beta-2.aspx