关于这四个属性,在MSDN中的解释有点敷衍了事。
Open/Close/Receive/Send本是HTTP/TCP/SOCKET的概念,Read/Write Operation则是Web Service的概念。

1.OpenTimeout
客户端与服务端建立连接时,如果超过指定时间都还没完成,就引发TimeoutException。
在TCP通讯中,服务器必须首先准备好侦听端口并在该端口上侦听(Listen),而客户端则必须首先向服务器发出连接(Connect)指令,服务器端收到后作出接受响应(Accept)后连接成功,此后两者就可以互发消息了。
在WCF领域中,类似地,Open()表示建立一个Binding。
测试:拨网线。

2.CloseTimeout
与OpenTimeout类似, CloseTimeout用于关闭一个连接时。
一般情况下,客户端比较随意,不会在意这个超时异常。“Close()是我发出的,我自己决定何时清理资源。”
在服务器就不同了,她必须对客户端负责,不能乱来,在收到Close()成功的响应之前,或收到超时异常之前,不能随意清理与客户端相关的资源。

3.SendTimeout
客户端调用的超时,默认1分钟。每次调用都必须在指定时间内完成,否则将引发TimeoutException。
在TCP通讯中,双方建立连接后,客户端如果需要发送消息给服务端,就发送一个数据包给服务器,服务器收到后必须给出一个响应,客户端收到这个响应后才能宣告发送成功。类似地,服务器也可能主动发送消息给客户端。这两个动作,分别对于客户端和服务器来说,都是发送(Send),而对于另一方来说都是接收(Receive)。
但是,在WCF领域中的SendTimeout中的Send与TCP的Send理念上类似,但是实质上完全不是一回事。SendTimeout中的Send是指客户端发起调用。
在WCF客户端,用proxy.InnerChannel.OperationTimeout可以取到SendTimeout的值。(此处,proxy 是自动生成的服务代理类XxxClient的一个实例)
测试:在服务器的调用处理代码中插入MessageBox.Show(...)或Thread.Sleep(...)。

4.ReceiveTimeout
与SendTimeout同理, ReceiveTimeout中的Receive是指服务器端发起回调(Callback)。只有在双向通讯绑定时适用,如WSDualHttpBinding, NetTcpBinding, NetNamedPipeBinding, ...
ReceiveTimeout是服务器回调(Callback)的超时,默认10分钟。每次回调都必须在指定时间内完成,否则将在服务器端引发TimeoutException。
测试:在客户端的回调处理代码中插入MessageBox.Show(...)或Thread.Sleep(...)。

个人理解:SendTimeout是指客户端发送数据(请求)wcf服务,wcf服务响应(wcf发送回来数据),这两个加起来的总时间。

ReceiveTimeout跟回调有关,并不是指wcf服务响应(wcf发送回来数据)的时间。

WCF三种操作模式请看【转】WCF请求应答(Request-Reply)、单向操作(One-Way)、回调操作(Call Back)

【转】WCF OpenTimeout, CloseTimeout, SendTimeout, ReceiveTimeout的更多相关文章

  1. WCF OpenTimeout, CloseTimeout, SendTimeout, ReceiveTimeout

    1.OpenTimeout 客户端与服务端建立连接时,如果超过指定时间都还没完成,就引发TimeoutException. 在TCP通讯中,服务器必须首先准备好侦听端口并在该端口上侦听(Listen) ...

  2. WCF帮助类

    using BJSW.ZTFX.Client.Silverlight.MapBusinessService; using System.ServiceModel; using System.SL.Ap ...

  3. 什么是WCF(转)

    什么是WCF(Windows Communication Foundation(WCF)) 大家可以百度一下了解什么是WCF.当然有些人看到密密麻麻的黑框白字就懒的读.即使读了 可能也没明白确切的含义 ...

  4. WCF 4.0 如何编程修改wcf配置,不使用web.config静态配置

    How to programmatically modify WCF without web.config setting WCF 4.0 如何编程修改wcf配置,不使用web.config静态配置 ...

  5. WCF绑定和行为在普通应用和SilverLight应用一些对比

    本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 阅读目录 介绍 绑定 普通应用和SilverLight应用区别 本文版权归mephisto和博客园共有, ...

  6. WCF-简单 配置文件

    一.服务端配置文件 主要包括 1.services 配置服务节点 <!--name 指的是契约实现类--> <service name="WcfLib.User2" ...

  7. Mono的简单例子

    一直对移动端开发有些兴趣,但苦于不会Java,好在终于找到了个好玩的. 安装方法略了,先建立一个玩玩 不多说,贴代码了,需要注意的只有些JAVA和C#写法不太一样的地方,不细介绍了,因为没什么经验,乱 ...

  8. WinHttp

    using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System. ...

  9. C#调用winhttp组件 POST登录迅雷

    下面是封装好的winhttp类 using System; using System.Collections.Generic; using System.Linq; using System.Text ...

随机推荐

  1. 【进阶修炼】——改善C#程序质量(10)

    158,不要写冗余注释. 注释应该写代码没有表达的东西. 代码能够自我描述就不要加注释. 159,废弃的注释应该尽早删除. 废弃的注释由于年代太久远,已经和现在的代码逻辑不匹配了,这样的注释只会误导人 ...

  2. Python基础知识小结

    1. 关于函数传参 def func(n, *args, **kwargs): print n print args print kwargs if __name__ == '__main__': # ...

  3. Android开发,在Fragment中,隐藏或关闭软键盘(虚拟键盘)的方法

    网上可以搜到各种方法,实际测试中,我的开发用机中,仅仅下面这个方法有效,记录一下. //隐藏虚拟键盘      public static void HideKeyboard(View v)      ...

  4. android开发(29) 自定义曲线,可拖动,无限加载

    项目需要 做一个曲线,该曲线的数据时不断加载的.如下图,当不断向左拖动时,图形曲线要随着拖动移动,并在拖动到边界时需要加载更多数据. 先看步骤: 1.在Activity里放一个surfaceView ...

  5. ggplot2 subscript in x-axis labels(ticks, legend)

    #==============================# ggplot2: subscript in x-axis labels(ticks) rm(list=ls(all=TRUE))lib ...

  6. 安卓程序代写 网上程序代写[原]ViewGroup(容器组件)详解(API解析)

    一. ViewGroup简介 1.View和ViewGroup关系 UI组件在Android中的位置 : Android中的UI组件大部分都放在android.widget 或者 android.vi ...

  7. 【转】MYSQL数据库四种索引类型的简单使用--MYSQL组合索引“最左前缀”原则

    MYSQL数据库索引类型包括普通索引,唯一索引,主键索引与组合索引,这里对这些索引的做一些简单描述: (1)普通索引 这是最基本的MySQL数据库索引,它没有任何限制.它有以下几种创建方式: 创建索引 ...

  8. 自然语言交流系统 phxnet团队 创新实训 项目博客 (十四)

    项目技术借鉴报告: 一.服务器端(Server) 1.分词 分词使用的是庖丁分词.使用盘古分词词库和词素作为辅助.其中包括下载Jar包并且使用. 2.人工神经网络 以网上已有的初级网络为蓝图,结合机器 ...

  9. hashMap 临界值初步理解

    import java.util.*; public class Bs { //Integer.highestOneBit((number - 1) << 1)分解 public stat ...

  10. 使用OAuth Server PHP实现OAuth2服务

    在现在的网络服务中,OAuth2.0服务已经很普遍了,无论是facebook或者微博的第三方登录,还是手机APP登录,都有很广泛的应用.它主要的目的如下:如果用户的照片在A网站,他想要在B网站使用A网 ...