WF3.5 的SendActivity、ReceiveActivity与WorkflowServiceHost(1)
SendActivity
- 调用WCF服务
- SendActivity不需要WorkflowServiceHost
- 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 的SendActivity、ReceiveActivity与WorkflowServiceHost (2)