快捷搜索:

WF工作流技术内幕 —— WF与WCF互相调用(利用R

前几篇文章已经为大年夜家先容过Web办事与Workflow事情流之间的互相调用的措施,在这两篇文章里面开始为大年夜家先容一下WCF与Workflow事情流之间的关系。微软在WCF和WF之间扩展了强大年夜的功能,应用两者能够和谐事情,在.NET Framework3.5中既可以把Workflow宣布为WCF实现事情流办事,也可以在WCF中调用Workflow事情流,增强其应用的机动性。

下面先为大年夜家先容若何把Workflow事情流宣布为WCF办事,这里照样以最简单的Hello World为例子。

首先设定一个办事左券接口

namespace Microsoft.IService

{

[ServiceContract(SessionMode=SessionMode.NotAllowed)]//这里先应用最简单的无状态办事为例子

public interface IWorkflowService

{

[OperationContract]

string Hello(string name);

}

}

现在新建一个Workflow,加入ReceiveActivity活动receiveActivity1,ReceiveActivity实现了 IEventActivity,可以作为EventDrivenActivity的第一个子活动,然后在receiveActivity1中加入codeActivity1来履行操作。

现在先把receiveActivity1属性ServiceOperationInfo绑定为刚设定的办事接口Microsoft.ISercive.IWorkflowService,在后台添加两个变量_returnValue和name分手用来绑定返回值和输入参数。

然后把receiveActivity1的属性CanCreateInstance设置为True,这代表着每次被客户端调用的时刻都创建一个新的工具实例。

现在应该为codeActivity1添加ExecuteCode事故的措施codeActivity1_ExecuteCode,下面为这个Workflow的完备代码。

namespace Microsoft.Workflow

{

public sealed partial class Workflow4 : SequentialWorkflowActivity

{

public string _name;

public string returnValue;

public Workflow4()

{

InitializeComponent();

}

private void codeActivity1_ExecuteCode(object sender, EventArgs e)

{

returnValue = "Hello " + _name;

}

}

}

现在可以为这个办事建立一个*.svc文件了,留意Service用于绑定此Workflow类文件的全名称

Microsoft.Workflow.Workflow4 " Factory="System.ServiceModel.Activation.WorkflowServiceHostFactory" %>

然后实现*.config设置设置设备摆设摆设

Microsoft.Workflow.Workflow4 ">

Microsoft.IService.IWorkflowService ">//留意service Name是此Workflow事情流的全名称,而contract是该办事左券的全名称

现在办事器真个开拓已经完成,可以开拓一个客户端进行测试。我们在客户端引用此Web办事,然后设置设置设备摆设摆设好.config文件。

//添加办事绑定设置设置设备摆设摆设,设置其接管光阴,事务,最大年夜接管量等等属性

realm="" />

//绑定其地址,办事左券等等属性

static void Main(string[] args)

{

try

{

WorkflowService.WorkflowServiceClient workflowService1= new WorkflowService.WorkflowServiceClient();

workflowService1.Hello("Leslie");

}

catch(Exception ex)

{...}

Console.ReadKey();

}

结果显示:

Hello Leslie

颠末简单的测试,证实此事情流办事已经能正常运行。应用此要领,可以轻松地Workflow宣布为WCF办事而不必要编写任何干预探测代码,但值得留意的是WCF支持哀求/相应,单向,双向多个事情模式,但Workflow事情流则只支持哀求/相应这种模式。

微软一开始就留意把WCF与WF结合开拓实现简单的互相调用,鄙人一篇文章将为你先容一下若何应用SendActivity在Workflow事情流里面直接调用WCF办事。

您可能还会对下面的文章感兴趣: