本节小讲通讯方式,上两节的我们讲的BasicHttpBinding,是其中的一种基础的通讯方式,
还有一种双向通讯的,专业词汇叫“双工通讯”,不过双工通讯一听起来太以理解,
就好像那个特性“契约”,一听就感觉像卖身契一样让人觉得匪夷所思。
下面全用双向代替双工说话了。
说双向通讯好理解了吧,再简单说就是:客户端可以调用服务端的方法;服务端也可以调用客户端的方法。
对于通讯方式,上两节,我们都是用:BasicHttpBinding,除了这个,还说过还有N种的。
为了说明有多少种,我们这里顺便提一个工具,在以下路径:
开始->所有程序->Microsoft Visual Studio 2010->Microsoft Windows SDK Tools->服务配置编辑器
我们可以通过它来打开WCF相关的config文件。不过呢,每次指定路径打开,都是很烦的,
我们希望通过右键点击xxx.config之类的,再用这工具打开它。
OK,我们先Copy一下服务配置编辑器的路径,这个待会要粘贴,看以下图:

我们点击属性,并从弹出的快捷方式中复制Exe的路径:

复制好路径后,我们回到项目中,这里就以上个示例World为例了,对着ServiceReferences.ClientConfig右键,
当然你也可以选择web.config,然后选择打开方式:

出现弹出窗口后,选择添加,把路径粘贴进去,并起一个好名称,如下图:

点确定之后,打开方式就多了一项了,当然,你也可以把它设置为默认打开方式。

OK,现在我们通过刚添加的那项打开配置文件:

看到终结点那项没,用的就是BasicHttpBinding通讯,我们点击下拉,看看一共有多少个通讯方式:

数了一下,竟然有19个之多。根据不同的场合,使用不同通讯方式进行通讯,
简单的说就是:WCF不仅可以放在我们的web中通过IIS来访问,也可以寄放在winform程序中通过tcp方式进行通讯了。
当然还有N(19)种这么多,应用场合是五花八门了。
通过上面的工具,你可以轻松点的配置webconfig相关文件,不用看那xml还得一字一字的敲打了。
关于双向通讯,BasicHttpBinding能做到么?
我尝试弄了一下,编绎是通过了,不过在更新服务引用的时候,出现以下错误:
按照上面的提示,是究竟不支持,还是配置的不正确,这个暂时不得而知。
那我们是通过什么来进行双向通讯的呢?
wsDualHttpBinding这个,需要配置两个通讯端口,一个是服务端到客户端的,一个是客户端到服务端的。
关于这个,在WCF揭密这本书中,其中的那个发布/订阅示例,用的就这个:
CSDN里有一个免积分下点的[搜索名称后,鄱到第4页,过些时间又跑第5第6页也说不定了]:下载列表
关于双向通讯,官方提供了N种可以双向的,不过今天要用到的,
是pollingDuplexHttpBinding,一个扩展的轮询机制的双向通讯,当你也可以尝试用上面的通讯方式去试一试。
既然是扩展,就说明默认没有,那我们首先就要添加扩展了,用的是默认官方是提供的DLL,就在我们安装的Silverlight4的目录里:
正常路径为:C:\Program Files\Microsoft SDKs\Silverlight\v4.0\Libraries\Server\System.ServiceModel.PollingDuplex.dll
OK,下一节,我们同样新建一个项目来实现双向通讯。
版权声明:本文原创发表于 博客园,作者为 路过秋天 本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。 |
个人微信公众号![]() |
Donation(扫码支持作者):支付宝:![]() |
Donation(扫码支持作者):微信:![]() |
![]() |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)