专栏首页黄腾霄的博客2019-1-24-wcf入门(3)

2019-1-24-wcf入门(3)

本文demo已上传至github:xinyuehtx/WCFdemo

这个博客会介绍如何设置服务操作的调用模式


WCF的服务调用有3种模式:请求答复模式(Request-Repley),单向模式(One-Way),双工模式(Duplex)

请求答复模式

请求答复模式的服务调用方式如如所示,这也是服务的默认行为。

如图所示我们创建了服务协定IRequestResponse,并且定义了方法SayHello和,他们使用OperationContractAttribute的默认构造指定,表明这个方法是请求答复模式。

接着我们完成其余部分。

这个例子和上一篇的HelloWorld并无差别。

但是细心的同学已经发现,请求答复模式的答复去哪儿了?

因为我们的方法是void方法,没有返回值。

现在我们添加另一个方法SayHello2并且返回一个字符串

我们现在尝试将返回值进行输出

结果如图所示

这个时候又有一些细心的小伙伴发现问题了,我们在客户端调用服务的方式是一个同步方法。

那么服务端的计算和通信延迟势必会造成客户端卡顿

默认的WCF通信超时是1min,我们尝试在服务实现中添加延时

好糟心~~那么上面的void方法总没事了吧。我们继续做实验

这次在SayHello这个void方法中添加延时

失败++

小结

我们研究了WCF服务的请求答复模式,其特点有

  • 简单
  • 可以获得返回值
  • 是同步方法,有超时风险

问题解决方案

那么对于那些耗时服务,出现的超时问题该怎么解决呢?

  1. 采用尽量简短的服务计算功能,大量计算任务建议移动至客户端
  2. 对于没有同步执行要求的void方法,可以尝试单向模式
  3. 对于没有同步执行要求的非void方法,可以尝试异步服务

单向模式异步服务可以在之后的博客中进行介绍

参考链接:


本文会经常更新,请阅读原文: https://xinyuehtx.github.io/post/wcf%E5%85%A5%E9%97%A8-3.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名黄腾霄(包含链接: https://xinyuehtx.github.io ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Moq基础(六)

    什么意思呢?如下图所示,你要验证公共方法A,A中做了T.B()和T.C()两件事。

    黄腾霄
  • 2019-1-30-wcf入门(10)

    在上一篇博客中介绍了2019-1-29-wcf入门(9) - huangtengxiao如何使用错误协定回馈指定异常,但是往往会存在部分异常是非预期的。这一篇会...

    黄腾霄
  • 为什么同样的WPF控件在不同的电脑上呈现外观不一致

    今天有同事跑过来说遇到了一个奇怪的bug,同样的程序在win7和win10上界面相差了2个像素

    黄腾霄
  • Spring 事务传播特性

    PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。 PROPAGATION_SUPPORTS--支...

    用户2909867
  • 微服务入门视频教程

    聪明的老外总是能先于我们发现新的高效的开发模式,近几年前一个老头就提出了我们将要学习的“微服务”:微服务架构风格是一种将单个应用程序作为一套小型服务开发的方法,...

    Java猫说
  • 【产品动态】智能钛 TI-ONE 重庆地域服务将于3月31日正式下线

            您好!为了给您提供更好的服务,腾讯云智能钛机器学习平台 TI-ONE 上海地域服务和广州地域服务已正式上线。由于运营策略调整,如之前通知:智能钛...

    腾讯智能钛AI开发者
  • JSP的生命周期研究

    浏览器打开该jsp,每F5刷新一次页面,发现复写的jspInit始终只被调用了一次,而serviceVar计数器每次刷新会加一。

    Jerry Wang
  • 微服务架构27连问面试题配答案

    根据 Gartner 的说法,微服务是云开发的新应用平台。微服务是独立部署和管理的,一旦应用实现在容器内,它们与底层操作系统的交互很少。因此,如果你希望把微服务...

    孙玄@奈学教育
  • 谷歌百度脸书IBM,人工智能四巨头2014盘点

    用户1756920

扫码关注云+社区

领取腾讯云代金券