WF 4.0 beta2相对于beta1的变化
2009-10-22 09:01 Windie Chai 阅读(3083) 评论(14) 编辑 收藏 举报本文的作者是微软WF Team的PM,Matt Winkler,本文主要介绍了WF 4.0 beta2中的一些有趣的新变化,如果想了解beta2的更多信息,请移步至此页(译者注:本文只是一篇简单的新变化介绍,如果需要更加详细的内容,请移步至WXWinter的日志《WF4 Beta 2》)。
beta2这个里程碑的目标主要有两个:
- 响应之前收到的用户反馈
- 稳定化并定型产品,为正式版的发布做准备
第一个目标是最容易看出来成果的,WF Team下了很大功夫去让这个产品更加稳定,所以beta2应该是一个不错的版本。
那么beta2到底有哪些重要的变化呢?一起来往下看。
活动层次结构的变化
(译者注:beta1对活动层次结构进行了较大的改动,所有活动最终都从WorkflowElement派生而来。)有人对此感到奇怪或不适应,不过现在编写自定义活动再也无需直接或间接继承WorkflowElement了。下图展示了beta1时的活动层次结构:
WF Team根据反馈进行了一些改进,现在的活动层次结构是这样的:
关键的变化如下:
- 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还重构了与错误处理活动相关的语义,使之更加类似于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