基于TCP协议绑定的WCF双工回调的一般使用方法

简介:

问题

今天同事想在TCP绑定的wcf服务的外层包一个webservice,一般的服务都可以进行包装,但遇到有双工回调的wcf服务时,稍微麻烦了点,需要在实例化服务时加上回调实例。

ServiceReference1.AuthenticationServiceClient proxy = new ServiceReference1.AuthenticationServiceClient(instanceContext);

反复测试了几种应用形式,发现只有Silverlight在引用这种双工服务时有无参的重载,其他的都需要一个实现了回调接口的类,那么怎么实现这个类呢?

示例

先定义一个简单的双工服务

[ServiceContract(CallbackContract=typeof(IDemoServiceCallBack))]
    public interface IDemoService
    
{
        [OperationContract]
        void Add(int a,int b);
    }
    public interface IDemoServiceCallBack
    
{
        void GetResult(int c);
    }
    public class DemoService
    
{
        [OperationContract(IsOneWay = true)]
        public void Add(int a,int b)
        {
            var client = OperationContext.Current.GetCallbackChannel<IDemoServiceCallBack>();
            client.GetResult(a + b);
        }
    }

说明:此服务提供了一个加的方法,客户端只需要传递两个整数,服务端计算后会回调客户端接收结果。

客户端调用方式

客户端引用服务后,会发现在实例化时需要自己实现一个回调接口,

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel""3.0.0.0")]
    public class MyCallBack : DemoService.IDemoServiceCallBack
    
{
        public void GetResult(int c)
        {            
             //得到结果c,并进行下一步处理。 

        }
     }
调用

AddService.IDemoServiceCallback callback = new MyCallBack();
System.ServiceModel.InstanceContext instanceContext = new System.ServiceModel.InstanceContext(callback);
AddService.DemoServiceClient proxy = new AddService.DemoServiceClient(instanceContext);
int c = proxy.Add(1,2);

callback.GetResult(c);

一点想法

 还是需要加上双工回调方法实现的。



     本文转自wengyuli 51CTO博客,原文链接:http://blog.51cto.com/wengyuli/586720,如需转载请自行联系原作者


相关文章
|
缓存 网络协议 Linux
手把手实现tcp/ip用户态协议栈,帮你实践网络知识(网络必备,面试项目)
手把手实现tcp/ip用户态协议栈,帮你实践网络知识(网络必备,面试项目)
|
XML 存储 JSON
【面试题精讲】序列化协议对应于 TCP/IP 4 层模型的哪一层?
【面试题精讲】序列化协议对应于 TCP/IP 4 层模型的哪一层?
|
2月前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
120 3
|
2月前
|
网络协议 安全 Go
Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
【10月更文挑战第28天】Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
70 13
|
2月前
|
网络协议 算法 网络性能优化
计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议
计算机网络常见面试题(一):TCP/IP五层模型、应用层常见的协议、TCP与UDP的区别,TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议、ARP协议
|
3月前
|
网络协议 算法 数据格式
【TCP/IP】UDP协议数据格式和报文格式
【TCP/IP】UDP协议数据格式和报文格式
210 3
|
3月前
|
XML JSON 网络协议
【TCP/IP】自定义应用层协议,常见端口号
【TCP/IP】自定义应用层协议,常见端口号
47 3
|
4月前
|
网络协议 网络架构 数据格式
TCP/IP基础:工作原理、协议栈与网络层
TCP/IP(传输控制协议/互联网协议)是互联网通信的基础协议,支持数据传输和网络连接。本文详细阐述了其工作原理、协议栈构成及网络层功能。TCP/IP采用客户端/服务器模型,通过四个层次——应用层、传输层、网络层和数据链路层,确保数据可靠传输。网络层负责IP寻址、路由选择、分片重组及数据包传输,是TCP/IP的核心部分。理解TCP/IP有助于深入掌握互联网底层机制。
626 2
|
8月前
|
网络协议 安全 网络安全
网络 (TCP/IP 四层协议中常见网络协议)
网络 (TCP/IP 四层协议中常见网络协议)
110 7
|
7月前
|
网络协议 网络架构
计算机网络——计算机网络体系结构(1/4)-常见的计算机网络体系结构(OSI体系、TCP/IP体系、原理体系五层协议)
计算机网络——计算机网络体系结构(1/4)-常见的计算机网络体系结构(OSI体系、TCP/IP体系、原理体系五层协议)
166 0