事务队列范围

本主题适用于 Windows Workflow Foundation 4。

此示例演示如何创建“并行保护”消息传递活动模式与 TransactedReceiveScope,以便构建一个协议,允许很多操作在同一事务下按任意顺序执行。此示例还演示 TransactedReceiveScope 如何在某个事务无法流向服务器时自动创建新的事务,以便客户端不使用任何事务。

该示例由两个表示客户端和服务器的工作流项目组成。客户端项目运行一个工作流,此工作流在开始时会发送一条消息来启动服务器工作流,服务器工作流将初始化一个关联并为其余的消息传递活动启动一个事务范围。客户端 Sequence 活动包含一个初始 SendReceiveReply 对,之后是一个带三个分支的 Parallel 活动。每个分支都向服务器发送单向消息。Parallel 活动的 CompletionCondition 属性设置为 false,以便完成所有三个分支。

服务器工作流与客户端工作流类似,只不过消息传递活动面向的是通信的服务器端且包含在 TransactedReceiveScope 活动中,以便在同一个事务下执行所有工作。当服务器上收到第一条消息时,将创建一个事务,然后使该事务成为 TransactedReceiveScope 正文范围的环境事务,以便此范围中的任何活动都可以访问该事务。之后,将并行执行所有接收。所有接收必须刚好执行一次,如并行活动的完成条件所述。TransactedReceiveScope 正文的末尾有一个隐式持久性点,并且还将在同一事务下执行持久性操作。

使用此示例

  1. 使用 Visual Studio 2010 打开 ParallelConvoySample.sln 解决方案文件。

  2. 若要生成解决方案,请按 F6。

  3. 确保两个项目都设置为启动。

    1. 在**“解决方案资源管理器”中右击解决方案,并选择“设置启动项目”**。

    2. 选择**“多启动项目”,并确保两个项目的操作都设置为“启动”**。

  4. 若要运行解决方案,请按 Ctrl+F5。

    服务器将输出 Server is running,它指示服务器已准备就绪。

    在客户端控制台窗口中按任意键以启动示例。

Dd744846.Important(zh-cn,VS.100).gif 注意:
您的计算机上可能已安装这些示例。在继续操作之前,请先检查以下(默认)目录:

<安装驱动器>:\WF_WCF_Samples

如果此目录不存在,请转到 .NET Framework 4 的 Windows Communication Foundation (WCF) 和 Windows Workflow Foundation (WF) 示例(可能为英文网页),下载所有 Windows Communication Foundation (WCF) 和 WF 示例。此示例位于以下目录:

<安装驱动器>:\WF_WCF_Samples\WF\Scenario\Transactions\TransactedConvoyScope