WF3.5 的SendActivity、ReceiveActivity与WorkflowServiceHost(1)

SendActivity

  1. 调用WCF服务
  2. SendActivity不需要WorkflowServiceHost
  3. SendActivity 支持的消息交换模式包括:

单向发送消息

发送消息,但不需要服务的响应

发送请求 - 接收答复

发送消息,并等待从服务接收响应

发送请求 - 接收错误

发送消息,并等待从服务接收响应或错误

属性

ServiceOperationInfo

WCF服务接口

CustomAddress

WCF服务通信的地址。

Context

返回一个字典,该字典包含用于客户端与服务(将与客户端通信)之间的通信的上下文,包括关联标识之类的内容。

ParameterBindings

获取WCF服务的形参表中可绑定参数的集合

ChannelToken

用于建立与客户端通道之间的关联

Name :此关联的名称

OwnerActivityName :要关关联的 Activity 的名称

EndpointName : 用于与服务通信的Endpoint

事件

BeforeSend

将消息发送到服务之前发生。

AfterResponse

在接收到来自服务的响应后发生

调用普通WCF服务

WCF服务

namespace WCFServer

{

class Program

{

static void Main(string[] args)

{

a();

}

static void a()

{

Uri WCFUrl = new Uri("http://localhost:567/wxwinter/");

ServiceHost host = new ServiceHost(typeof(wcfService), WCFUrl);

ServiceMetadataBehavior behavior = new ServiceMetadataBehavior();

behavior.HttpGetEnabled = true;

host.Description.Behaviors.Add(behavior);

string EndpointUrl = "EndpointUrl";

host.AddServiceEndpoint(typeof(IwcfService), new BasicHttpBinding(), EndpointUrl);

System.Console.WriteLine(host.BaseAddresses[0].ToString());

host.Open();

Console.ReadKey();

host.Close();

}

}

[System.ServiceModel.ServiceContract]

public interface IwcfService

{

[System.ServiceModel.OperationContract]

string test1(int value);

[System.ServiceModel.OperationContract]

userData test2(userData value);

}

public class wcfService : IwcfService

{

public wcfService()

{

System.Console.WriteLine("new {0}", System.DateTime.Now);

}

public string test1(int value)

{

System.Console.WriteLine("test1:{0}", value);

return "转入的是:" + value.ToString();

}

public userData test2(userData value)

{

System.Console.WriteLine("test2:{0}", value.userDataValue);

value.userDataValue = value.userDataValue + ":Service已收到";

return value;

}

}

[System.Runtime.Serialization.DataContract]

public class userData

{

[System.Runtime.Serialization.DataMember]

public string userDataValue

{

get;

set;

}

}

}

工作流

1.引用WCF服务

2.在工作流中添加SendActivity

3.设置WCF服务接口

4.建立与客户端通道之间的关联

5.

运行结果

例子:https://files.cnblogs.com/wxwinter/TestSendActivity.rar


 

WF3.5 SendActivityReceiveActivityWorkflowServiceHost (2)

WF3.5 SendActivityReceiveActivityWorkflowServiceHost (3)

WF3.5 SendActivityReceiveActivityWorkflowServiceHost (4)

原文地址:https://www.cnblogs.com/foundation/p/1205430.html