WF4并非是在原有WF3.x上的改进,而是全新的开发有新的命名空间,程序集,原WF3的部分会继续保留这主要是为了兼容,下面的表格告诉你具体的变化:

  1.程序集的变化

WF3.x程序集 WF4程序集
System.Workflow.Activities.dll System.Activities.dll
System.Workflow.ComponentModel.dll System.Activities.dll
System.WorkflowServices.dll System.ServiceModel.Activities.dll

  2.名空间的变化

WF3.x命名空间 WF4命名空间
System.Workflow.Activities System.Activities.Statements
System.Workflow.ComponentModel System.Activities
System.WorkflowServices System.ServiceModel.Activities

  3.活动的变化

WF3.x活动 WF4活动
CallExternalMethodActivity Send
CancellationHandlerActivity CancellationScope
CodeActivity

  CodeActivity/NativeActivity

CompensateActivity Compensate
CompensatableSequenceActivity CompensableActivity
ConditionedActivityGroup 可通过其他方式实现
DelayActivity Delay
EventHandlingScopeActivity 暂无
FaultHandlersActivity TryCatch
HandleExternalEventActivity Receive
IfElseActivity If
InvokeWebServiceActivity Send
InvokeWorkflowActivity 暂无
ListenActivity Pick
ParallelActivity Parallel
PolicyActivity 暂无
ReplicatorActivity ForEach, ParallelForEach
SendActivity Send
ReceiveActivity Receive
SequenceActivity, SequentialWorkflowActivity Sequence
StateMachineWorkflowActivity 暂无
SuspendActivity
SynchronizationScopeActivity
TerminateActivity
ThrowActivity Throw
TransactionScopeActivity TransactionScope
CompensatableTransactionScopeActivity TransactionScope + CompensableActivity
WebServiceFaultActivity 整合为工作流服务
WebServiceInputActivity 整合为工作流服务
WebServiceOutputActivity 整合为工作流服务
WhileActivity While

  二:自定义活动

  1.活动基类继承关系:

    图片看不清楚?请点击这里查看原图(大图)。

  2.WorkflowElement 是所有活动的基类,Activity,CodeActivity,DynamicActivity,NativeActivity活动均继承于该类,DynamicActivity是Sealed不能用于

  自定义活动。

  3.可以使用设计器方式来可视化的设计自定义活动,如下图:

  4.使用代码的方式创建自定义活动,我们需要继承自CodeActivity和NativeActivity活动,这两个活动的区别是他们的Execute方法所带的上下文环境不同,

  CodeActivity为CodeActivityContext,它只是一个简化版的上下文环境,对Runtime没有完全的访问权限,而NativeActivity的上下文环境

  ActivityExecutionContext,ActivityExecutionContext支持scheduling,取消子活动的执行,持久化的支持,书签的支持等等对runtime有完全的访问权限。

  5.CodeActivity和NativeActivity都有泛型版的,一般我们在创建需要返回值的活动时使用泛型版本,泛型版本的已经有一个OutArgument<TResult>的变量,

  这个我们可以通过反编译WorkflowElement<TResult>看出,如下:

[TypeConverter(typeof(ValueExpressionConverter)), ValueSerializer(typeof(ValueExpressionValueSerializer))] 
public abstract class WorkflowElement<TResult> : WorkflowElement, IActivityWithResult 
{   
  // Fields 
  private OutArgument<TResult> result; 
   
  // Methods 
  internal WorkflowElement(); 
  internal void ExecuteWithTryGetValue(ActivityContext context); 
  public static WorkflowElement<TResult> FromValue(TResult constValue); 
  public static WorkflowElement<TResult> FromVariable(Variable variable); 
  public static WorkflowElement<TResult> FromVariable(Variable<TResult> variable); 
  internal IList<RuntimeArgument> GetValueExpressionArguments(); 
  public static implicit operator WorkflowElement<TResult>(Variable<TResult> variable); 
  public static implicit operator WorkflowElement<TResult>(TResult constValue); 
  public static implicit operator WorkflowElement<TResult>(Variable variable); 
  internal virtual bool TryGetValue(LocationEnvironment environment, out TResult value); 
   
  // Properties 
  [DefaultValue((string) null)] 
  public OutArgument<TResult> Result { get; set; } 
  Type IActivityWithResult.ExpressionType { get; } 
  OutArgument IActivityWithResult.Result { get; set; } 
}

  6.与WF3.x中开发自定义活动不同的是在WF3中我们使用依赖属性来绑定数据,在WF4中我们使用In参数或Out参数及变量代替。另外在WF3.x中我们重写

  Execute方法时需要返回ActivityExecutionState,WF4中不需要返回值,因为WF4的Runtime会自动判断,透明了。

转帖地址:http://tech.ddvip.com/2009-07/1248354896126157.html

WF4.0与WF3.X区别相关推荐

  1. WF4.0 基础篇 (三) 流程实例WorkflowApplication与设计WF程序的基本原则

    通过本节,可以初步了解WF程序的特性,为以后的WF类应用开发提供一个初步的感性认识 目录 1    流程实例WorkflowApplication与设计WF程序的基本原则    1 1.1    流程 ...

  2. WF4.0 基础篇 (二十六) Interop调用WF3.X的Activity

    本节主要介绍Interop调用WF3.X的Activity 本文例子下载: http://files.cnblogs.com/foundation/InteropSample.rar 本文例子说明 I ...

  3. WF4.0 基础篇 (十四) Delay 与WF4中的线程

    本节主要介绍WF的实例是单线程运行的,Delay并不是Thread.Sleep,Parallel是单线程运行的,WorkflowApplication与WorkflowInvoker在调用流程上的区别 ...

  4. WF4.0实战(六):控制WPF动画

    这个例子改造了王晓冬老师的:用WF流程控制WPF动画. 本文用一个小例子演示了在WF中定义两个操作步骤,用来控制WPF页面元素的动画.王冬老师当时使用的是WF3.0,现在我改成WF4.0. 先看效果: ...

  5. WF4.0实战(七):请假流程(带驳回操作)

    我使用WF4.0有很长一段时间了,但是对WF3.0和WF3.5自知甚少,对状态机也不甚了解.今天生鱼片前辈的博文:WF4实现工作流驳回流转模型的几种设计方案 中提出的四中实现驳回的方式中.第一种大家都 ...

  6. [转]WF4.0 基础篇 (一)开始使用WF

    本文转自:http://www.cnblogs.com/foundation/archive/2009/10/26/1589993.html 来博客园写WF主题博客已经3年了, 在园子里认识了很多朋友 ...

  7. WF4.0 基础篇 (二十九) WorkflowInspectionServices

    本文例子下载: http://files.cnblogs.com/foundation/WorkflowInspectionServicesSample.rar WorkflowInspectionS ...

  8. 适用于WF4.0的流程设计器 (Wxd.WF,BPM.Foundation,Wxwinter.WF 升级用)

    适用于WF4.0的流程设计器 (Wxd.WF,BPM.Foundation,Wxwinter.WF 升级用) 提供调试,图形化状态跟踪,自动生成数据页面,格式转换,Silverlight支持等功能 后 ...

  9. WF4.0实战(十五):伤心聊天室

    大家都知道,一般能使用WCF的Callback Contract能实现聊天室.这篇文章我将使用WF4.0是实现我的伤心聊天室.先看效果,再讲如何实现和使用WF4.0的优势,最后总结.界面很简洁,请见谅 ...

最新文章

  1. sizeof 和strlen的区别
  2. leetcode 463. 岛屿的周长(Java版)
  3. 人工智能数学基础知识
  4. Android找工作系列之自定义View
  5. Oracle闪回技术
  6. 我的成长日记20210406(日常测试工作安排)
  7. VS“当前上下文中不存在名称“ViewBag”,当前上下文不存在名称“model””-已解决...
  8. paypal接口文档android,PAYPAL --集成API接口教程
  9. JavaScript笔记 03:数组
  10. 快乐去学习「快乐机器学习」
  11. 如何批量删除word文档中表格_word长文档排版:如何快速批量设置样式
  12. 我发现一个地方能免费领取价值198元的手环,具有能量并且有高人加持过的,只要关注微信就可以免费领取
  13. asc码即ascii,没有asc这一说,ascii后是ii而不是罗马数字
  14. JavaScript中的对象的属性名和属性值
  15. M2VoC比赛论文——台湾大学
  16. jsp中定义日期格式
  17. soi cmos技术及其应用_投屏技术及其教学应用
  18. Tello无人机开发
  19. 近段时间的学习碎片整理(10)
  20. MacOS下ZeroNet如何切换Data目录

热门文章

  1. arduino低功耗模式_ESP8266+DeepSleep+BMP280+ThingSpeak温度压力高度电量无线低功耗测量...
  2. 马原(2023版)第一章第一节笔记
  3. 羽球入门之接发球技术动作要领解读
  4. 使用node搭建服务器(wifi连接查看vue项目)
  5. 洛谷P1518 [USACO2.4]两只塔姆沃斯牛 The Tamworth Two
  6. 水星路由器设置的详细方法介绍(图文教程)
  7. 计算机有符号数为什么采用补码表示
  8. Python实现连续图片、多图片多维组合既数据增维和调整维度的案例一则
  9. 微信小程序--证件照换底色项目前端修改+头像框项目前端页面实现修改
  10. 直接反投影 matlab,濾波反投影重建算法(FBP)實現及應用(matlab)