WCF实现全双工例子(1)

WCF实现全双工通信笔记 WCF的双工通信是指客户端和服务端都可以主动呼叫对方。在这种通信模式中,WCF利用双向绑定实现服务端和客户端相互公开终结点的信息。 在VS2015,.NET环境下进行测试 本章最大感悟是代理类必须是一个纯的代理类,即不应该有任何属性。 (1)打开WebConfig修改服务端的配置,应选择一个支持双工通信即会话的绑定(一般为wsDualHttpbinding和netTCPbin 阅读详情

  1. 全双工的一些细节

  • 基于Http协议(wsDualHttpBinding)的全双工回调接口的几个注意点:

  1. 下面的binding="wsDualHttpBinding"一定要是支持全双工的协议;

      <service name="dualService.Dog" >

        <host>

          <baseAddresses>

            <add baseAddress="http://localhost:1709/Design_Time_Addresses/dualService.Dog/" />

          </baseAddresses>

        </host>

        <endpoint address="" binding="wsDualHttpBinding"  contract="dualService.IDog"/>

        <endpoint address="mex" binding="mexHttpBinding"  contract="IMetadataExchange"/>

 </service>

  1. 服务契约一定要加上标注[ServiceContract(SessionMode=SessionMode.Required,CallbackContract=typeof(IResult))],这个SessionMode=SessionMode.Required是一直开启会话验证,为此服务设置回调接口(注意:类是不能作为回调的),即CallbackContract=typeof(IResult))。最后一定要为操作契约设置为单项模式,即[OperationContract(IsOneWay=true)]。

[ServiceContract(SessionMode=SessionMode.Required,CallbackContract=typeof(IResult))]

    public interface IDog

    {

        [OperationContract(IsOneWay=true)]

        void Fly(FlyTarget conposite);

    }

    [ServiceContract]

    public interface IResult

    {

        [OperationContract(IsOneWay = true)]

        void Result(string result);

}

  1. 在.svc文件中获取当前操作上下文的回调接口的回调管道,即Irslt=OperationContext.Current.GetCallbackChannel<IResult>();,并且使用该接口对象调用该接口中声明的方法,即Irslt.Result("取经失败!")。这里调用接口IResult中的Result方法,实质上是为客户端回调接口的时候,出发这个方法而准备的。

IResult Irslt = null;

        public Dog()

        {

            Irslt = OperationContext.Current.GetCallbackChannel<IResult>();

        }

        public void Fly(FlyTarget conposite)

        {

            if(conposite.Magheight>500)

            {

                Irslt.Result("取经失败!");

            }

            else

            {

                Irslt.Result("取经成功!");

            }

        }

  1. 最后,在客户端调用服务,并且使用服务调用Fly()方法,这样就可以触发回调接口的方法,然后再客户端在实现服务生成的回调接口IDogCallback即可可完成整个接口回调。

       static void Main(string[] args)

        {

            //using (DogClient dc = new DogClient(new System.ServiceModel.InstanceContext(new Result1())))

            //{

                DogClient dc = new DogClient(new System.ServiceModel.InstanceContext(new Result1()));

                FlyTarget fly = new ServiceReference1.FlyTarget()

                {

                    Magheight = 400

                };

                dc.Fly(fly);

            //}

            Console.ReadKey();

        }

    }

    public class Result1:IDogCallback

    {

        public void Result(string result1)

        {

            Console.Write(result1);

            Console.ReadKey();

        }

}

总结,在这个例子中,除开标志服务契约和方法契约为单向模式、服务接口设置为SessionMode=Required以及标志回调接口以外,还要注意要在服务(.svc文件)获取当前操作上下文中的回调接口,然后使用该回调接口的对象调用接口中所需的方法(这里是Result()方法)。最后要在客户端实现服务生成的回调接口即可。

C#实现双工通信(附完整源码) 阅读详情

相关推荐

WCF全双工模式及Web服务调用实践教程.zip

在WCF中,服务契约是定义服务功能的接口。这相当于面向对象编程中的接口或抽象类,它定义了服务可以执行的操作,而不会涉及到如何实现这些操作。定义服务契约使用属性标记接口,而每个服务操作使用属性进行标记。// 其他操作...以上代码定义了一个接口,它包含两个操作:Add和Subtract。每个操作都用标记,表明这些方法可以在服务中被远程调用。服务合同(Service Contract)是WCF中用于定义服务操作(也就是服务方法)的接口。

weixin_32098457的博客 792

wcf 双工通讯

介绍wcf 单工通讯 但在双向操作模式中,不但客户端可以向服务器发送请求,服务器也可以主动向客户端广播消息(也就是回调客户端中的方法)。在WCF中,不是所有的绑定都可 以实现双向操作模式的,比如http协议,它本身就是基于请求-回复的传输模式,所以本质上是实现不了双向操作的。但WCF提供了 WSDualHttpBinding协议让我们在http上实现了双向操作。其实WSDualHttp...

weixin_30740295的博客 240

WCF双工模式即时聊天系统实现指南

本文还有配套的精品资源,点击获取 简介:本文详细介绍了如何利用微软的WCF技术,特别是双工通信模式,来构建一个支持群聊和点对点聊天的即时聊天系统。文章从WCF双工模式的原理讲起,逐步深入到服务端和客户端的设计,以及实现安全性和可靠性的方式。最后,通过一个名为"WCFWPFChatters"的项目案例,展示WCF与WPF结合实现的即时聊天应用,为开发者提供分布式系统开发的实战...

weixin_35973118的博客 1318

Winfrom 使用WCF 实现双工通讯

WCF实现的双工通信

隔壁王叔叔 5831

WCF双工通信案例

WCF 双工通信简单案例 1、服务器端定义接口 2、服务器申明 3、客户端实现接口 4、客户端传递实现对象 5、服务器调用客户端方法

Wcf双工实例

实现客户端订阅,WCF服务端回调应答,双工通信。net.tcp模式

WCF全双工数据传输

项目结构: 客户端: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ServiceModel; using System.Runtime.Serialization.Formatters.Binary; using System

chuxue1342的专栏 1565

WCF双工通讯聊天示例

这是一个WCF的Demo,里面的WCF是自己手动写的,可是实现双工通讯,实现一个简单聊天功能。希望能给正在学WCF的朋友一点帮助。

Wcf 双工通信的应用

概述 双工(Duplex)模式的消息交换方式体现在消息交换过程中,参与的双方均可以向对方发送消息。基于双工MEP消息交换可以看成是多个基本模式下(比如请求-回复模式和单项模式)消息交换的组合。双工MEP又具有一些变体,比如典型的订阅-发布模式就可以看成是双工模式的一种表现形式。双工消息交换模式使服务端回调(Callback)客户端操作成为可能。 在Wcf中不是所有的绑定协议都支持回调操作,Ba...

weixin_33967071的博客 216

WCF实现双工通讯

WCF实现双工通讯,入门级案例,本人也是刚入门,可以下载看看,很好的小例子。简单的告诉你如何实现的

wcf双工通信Demo

按照双工模式(Duplex)进行消息交换,则已意味着参与消息交换的双方都能勾向对方发送消息,双工通信不仅仅使服务回调客户端成为可能,还可以帮助我们实现基于发布-订阅的方式进行通信。

wcf中使用netTcpBinding通过全双工实现订阅者-发布者模式

1.消息分发中心用wcf的全双工实现,订阅者和发布者通过调用消息分发中心的操作实现。   消息分发中心源码       // Define a duplex service contract.     // A duplex contract consists of two interfaces.     // The primary interface is used to send...

muzizongheng的专栏 1347

Deep Reinforcement Learning - 1. DDPG原理和算法

Deep Reinforcement Learning - 1. DDPG原理和算法 背景描述 DDPG的定义和应用场景 DDPG算法相关基本概念定义 DDPG实现框架和算法 DDPG对于DPG的关键改进 下一篇 以下用RL作为Reinforcement Learning 的简称。背景描述概括来说,RL要解决的问

kenneth_yu的博客 14万+

WCF全双工通信实例分享(wsDualHttpBinding、netTcpBinding两种实现方式)

  最近在研究WCF通信,如果没有接触过的可以看我的前一篇文章:https://www.cnblogs.com/xiaomengshan/p/11159266.html 主要讲的最基础的basicHttpBinding方式的单工WCF通信,步骤比较详细,所以本文就只说明关键的细节,详细的步骤操作可以参考前一篇文章,还望理解。本文使用的环境是VS2015,使用的项目都是WPF,如使用Winform、...

weixin_30907523的博客 1072

AutoSAR实战:手把手教你配置PNC(Partial Network Cluster)实现精准休眠与唤醒

本文详细介绍了如何在AutoSAR中配置PNC(Partial Network Cluster)实现精准休眠与唤醒,通过DaVinci Configurator工具逐步指导,结合ComM模块的协同调试,优化车载电子系统的能耗管理。文章包含实战步骤、常见错误排查及功耗优化数据,适合汽车电子开发工程师参考。

weixin_33725239的博客 466

Python实战:3步搞定DICOM转JPG/PNG(附批量处理脚本)

本文详细介绍了如何使用Python在3步内将DICOM医学影像转换为JPG/PNG格式,并提供了批量处理脚本。通过Pydicom、Pillow和NumPy库的组合,解决了像素值处理、批量转换效率和医学图像特性保留等关键问题,适合医疗AI开发者和放射科医生快速集成到工作流中。

numpy6sculptor的博客 592

wcf中的使用全双工通信

wcf中的契约通信默认是请求恢复的方式,当客户端发出请求后,一直到服务端回复时,才可以继续执行下面的代码。 除了使用请求应答方式的通信外,还可以使用全双工。下面给出例子: 1.添加一个wcf类库 2.在服务契约添加如下一个片段 [ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples", SessionMod...

weixin_34293902的博客 241

24届-Python面经(华为OD)

【摘要】24届非科班生通过栗栗姐指导成功转行华为OD。从4月4日零基础准备,经历机考(4/18)、测评(4/19)、资格面(5/7)、技术面(5/9-11)到5月17日获offer。全程栗栗姐提供题库、面经指导和实时跟进。虽遇压力面和技术短板,但在专业辅导下10天走完全流程。案例证明转行需自身努力+优质HR支持,栗栗姐团队提供多岗位(Java/Python等)、多地域(北上深等)OD机会,含笔试资料和全流程攻略。

2401_86909848的博客 1188

wcf中的使用全双工通信(转)

wcf中的使用全双工通信 wcf中的契约通信默认是请求恢复的方式,当客户端发出请求后,一直到服务端回复时,才可以继续执行下面的代码。 除了使用请求应答方式的通信外,还可以使用全双工。下面给出例子: 1.添加一个wcf类库 2.在服务契约添加如下一个片段 [ServiceContract(Namespace = "http://Microsoft.ServiceModel...

weixin_30512089的博客 127

特别章节-0.1 SolidWorks导出机械臂的URDF模型各个关节坐标系设置

通过Solidworks导出机械臂的URDF模型文件,建立机械臂的各个关节坐标系的规则以及注意点,详细步骤

六眼飞鱼的博客 1万+

数据服务:数据服务框架Magic-API 介绍及实践

接口快速开发框架 基于Java的接口快速开发框架,编写接口将通过magic-api提供的UI界面完成,自动映射为HTTP接口,无需定义Controller、Service、Dao、Mapper、XML、VO等Java对象即可完成常见的HTTP API接口开发 。在线页面快速开发平台 基于 vue 的在线页面快速开发平台,主要把所有的 vue 代码都改为在线配置,最终获得一个 json 格式的页面新一代爬虫平台 基于Java实现的新一代爬虫平台,以图形化方式定义爬虫流程,不写代码即可完成爬虫。今天给大家安利一

GIS摆渡人 2063

WindowsMobile调用WCF服务

WindowsMobile调用WCF服务  Compact WCF允许移动设备上的应用程序通过WCF服务与桌面PC机(服务端)进行交互。目前暂不支持在移动设备上发布WCF服务,设备端的应用程序通常扮演的是发出服务请求的客户端的角色。在信道的绑定行为上,目前.NET CF3.5预定义的仅支持BasicHttpBinding和WindowsMobileMailBinding两种方式:  1

王以山的专栏 4764

YOLOv5改进有效涨点目录 | 包含卷积、主干、检测头、注意力机制、Neck上百种创新机制

Hello,各位读者们好本专栏自开设两个月以来已经更新改进教程60余篇其中包含C2f、主干、检测头、注意力机制、Neck多种结构上创新,也有损失函数和一些细节点上的创新。同时本人一些讲解视频和包含我所有创新的YOLOv8文档并不能在优快云上传(所有的创新点都经过我的测试是可用的,得到该文件之后大家可以随意组合使用),所以会建立群的形式在内上传我的文件和视频我也会在群内不定期和大家交流回答大家问题,同时定期会更新一些文章的创新点(经过我融合测试后的,先到先得)。本专栏持续更新网络上的所有前沿文章。

Snu77的博客 3万+
上一篇: 关于大型ASP.NET应用系统的架构—如何做到高性能高可伸缩性
下一篇: WCF:使用net.tcp寄宿IIS的报错
wingahi
博客等级 码龄15年 15粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值