基于TCP协议绑定的WCF双工回调的一般使用方法
2010-10-28 14:11
239 查看
问题
今天同事想在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);
一点想法
至于为什么只有Silverlight中进行无参的实例化,猜想是由于Silverlight的服务调用都是异步的方式原因,当然这里正常的调用方式
还是需要加上双工回调方法实现的。
相关文章推荐
- 基于TCP协议绑定的WCF双工回调的一般使用方法
- WCF 使用 Https 绑定数据(包括分布式WCF事务配置方法)
- WCF----双工模式服务端回调客户端方法时无响应,“发送到 http://***/User.svc 的请求操作在配置的超时内未收到回复”
- “回发或回调参数无效。在配置中使用 或在页面中使用 启用了事件验证。”的替代解决方法
- UDP 服务端与客户端均可以bind()绑定端口, 并且可以使用connect()链接后,使用send()与recv()方法!
- 使用wcf的双工模式做的一个控制台聊天app
- Tomcat 在基于 Unix 系统上无法绑定80端口的解决方法
- WCF开发中将net.tcp协议寄宿到IIS的方法
- 在使用windows调用Hadoop 错误 /bin/bash: line 0: fg: no job control一般解决方法
- 在数据绑定控件中使用LinkButton传递参数方法
- oracle 使用udev绑定磁盘方法
- 数据绑定技术—如何使用DataBinder.Eval()方法进行数据绑定
- Python基于scrapy采集数据时使用代理服务器的方法
- Android随心笔记一:Android自定义View的3个构造方法一般何时使用
- WCF服务在JavaScript中使用ASP.NET的AJAX方法
- WCF服务控制台托管方法(不使用配置文件)
- [WCF]NetTcpBinding在IIS中使用的详细配置方法
- 分别使用一般递归的方法和模板元编程实现台阶问题。
- asp.net 在使用repeater控件时截取绑定字符方法
- C# 异步调用中使用回调方法