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)

posted @   WXWinter(冬)  阅读(3712)  评论(8编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示