• 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)

  • 相关阅读:
    使用SOCKET实现TCP/IP协议的通讯
    多线程和高并发的区别
    linq学习之join
    Winform 创建桌面快捷方式并开机启动
    引领5G行业化,广和通荣获“IoT创新大奖”
    全方面的了解超宽带信号高速采集记录回放系统
    浅谈智慧灯杆的通信网建设要求
    逆向工程,调试Hello World !程序(更新中)
    融合智能将成时代方舟?中科创达技术大会向未来答疑
    第十一届蓝桥杯赛后体会和经验分享
  • 原文地址:https://www.cnblogs.com/foundation/p/1205430.html
Copyright © 2020-2023  润新知