如何:创建使用现有服务协定的工作流服务

.NET Framework 4.5 以协定优先工作流开发的形式实现了 Web 服务与工作流之间的更佳集成。 通过协定优先的工作流开发工具,可以在代码中优先设计协定。 然后该工具在工具箱中为协定中的操作自动生成活动模板。

注意

本主题提供了有关创建协定优先工作流服务的分步指南。 有关协定优先工作流服务开发的详细信息,请参阅协定优先工作流服务开发

创建工作流项目

  1. 在 Visual Studio 中,依次选择“文件”和“新建项目”。 在“模板”树中的“C#”节点下选择“WCF”节点,然后选择“WCF 工作流服务应用程序”模板。

  2. 将新项目命名为 ContractFirst,然后单击“确定”。

创建服务协定

  1. 在“解决方案资源管理器”中右键单击该项目,然后选择“添加”、“新建项”。 选择左侧的“代码”节点和右侧的“类”模板。 将新类命名为 IBookService,然后单击“确定”。

  2. 在显示的代码窗口的顶部,向 System.ServiceModel 添加一个 using 指令。

    using System.ServiceModel;
    
  3. 将示例类定义更改为以下接口定义。

    [ServiceContract]
        public interface IBookService
        {
            [OperationContract]
            void Buy(string bookName);
    
            [OperationContract(IsOneWay=true)]
            void Checkout();
        }
    
  4. 按 Ctrl+Shift+B 生成项目。

导入服务协定

  1. 在解决方案资源管理器中右键单击该项目,然后选择“导入服务协定”。 在“<当前项目>”下面,打开所有子节点,然后选择“IBookService”。 单击“确定”。

  2. 将会打开一个对话框,提示您该操作已成功完成,并且在生成该项目后,所生成的活动将出现在工具箱中。 单击“确定”。

  3. 通过按“Ctrl+Shift+B”生成项目,这样,导入的活动将出现在工具箱中。

  4. 在解决方案资源管理器中,打开 Service1.xamlx。 该工作流服务将出现在设计器中。

  5. 选择“Sequence”活动。 在“属性”窗口中,单击“ImplementedContract”属性中的“...”按钮。 在显示的“类型集合编辑器”窗口中,单击“类型”下拉列表,然后选择“浏览类型...”条目。 在“浏览并选择 .Net 类型”对话框中的“<当前项目>”下面,打开所有子节点,然后选择“IBookService”。 单击“确定”。 在“类型集合编辑器”对话框中,单击“确定”。

  6. 选择并删除“ReceiveRequest”和“SendResponse”活动。

  7. 将“Buy_ReceiveAndSendReply”和“Checkout_Receive”活动从工具箱拖动到“Sequential Service”活动上。