关于这四个属性,在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(...)。

转载于:https://www.cnblogs.com/frankh/archive/2009/05/11/1454162.html

关于 WCF Binding 中 OpenTimeout, CloseTimeout, SendTimeout, ReceiveTimeout 的解释相关推荐

  1. 【转】WCF OpenTimeout, CloseTimeout, SendTimeout, ReceiveTimeout

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

  2. [WCF]配置文件中Certificate 的encodeValue怎么设置?

    在WCF配置文件中经常会出现这样的属性: <identity> <certificate encodedValue="large string!!!!!!!" / ...

  3. WCF项目中出现常见错误的解决方法:基础连接已经关闭: 连接被意外关闭

    原文:WCF项目中出现常见错误的解决方法:基础连接已经关闭: 连接被意外关闭 在我们开发WCF项目的时候,常常会碰到一些莫名其妙的错误,有时候如果根据它的错误提示信息,一般很难定位到具体的问题所在,而 ...

  4. Entity Framework 6 Recipes 2nd Edition(9-7)译-在WCF服务中序列化代理

    9-7. 在WCF服务中序列化代理 问题 从一个查询里返回一个动态代理对象,想要把它序列为一个POCO(Plain-Old CLR Objects)对象. 实现基于POCO实体对象, 在运行时,EF会 ...

  5. 嵌入式中的 *(volatile unsigned int *)0x500 解释

    C语言中*(volatile unsigned int *)0x500的解释: 如下: (unsigned int *)0x500:将地址0x500强制转化为int型指针 *(unsigned int ...

  6. pythonsys用法_Python中 sys.argv[]的用法简明解释

    Python中 sys.argv[]的用法简明解释 因为是看书自学的python,开始后不久就遇到了这个引入的模块函数,且一直在IDLE上编辑了后运行,试图从结果发现它的用途,然而结果一直都是没结果, ...

  7. python的objectproperty,python中property(lambda self: object())简单解释,,最后4行lambda

    python中property(lambda self: object())简单解释,,最后4行lambda 最后4行lambda.问题是:如何运作?它们的含义和结果是什么?您能否以简单的方式显示该声 ...

  8. Spring中IOC和AOP的详细解释(转)

    原文链接:Spring中IOC和AOP的详细解释 我们是在使用Spring框架的过程中,其实就是为了使用IOC,依赖注入,和AOP,面向切面编程,这两个是Spring的灵魂. 主要用到的设计模式有工厂 ...

  9. 语音识别中的CTC算法的基本原理解释

    原标题:语音识别中的CTC算法的基本原理解释 目前主流的语音识别都大致分为特征提取,声学模型,语音模型几个部分.目前结合神经网络的端到端的声学模型训练方法主要CTC和基于Attention两种. 本文 ...

最新文章

  1. 区区几行Python代码,一分钟搞定一天工作量
  2. Redis 的 8 大数据类型,写得非常好!
  3. C++ BigInt模板手打
  4. 专栏 | 基于 Jupyter 的特征工程手册:特征选择(二)
  5. 成功,要“借力”,不要“尽力”(深刻!)
  6. Teradata Expression 12 在Windows 2003上Connection Reset 问题的解决方法
  7. Java笔记-Java中备忘录模式
  8. Windows平台上的Domino服务器挂起的数据收集步骤
  9. Python的Django框架中的URL配置与松耦合
  10. .NET基础知识(一)
  11. python日志模块logging
  12. 如果secureCRT安装时位置改变,EVE-NG如何关联secureCRT
  13. AB PLC软件如何授权或者破解
  14. 打印机显示服务器脱机是什么原因,脱机使用打印机是什么意思?脱机打印机状态显示错误怎么办...
  15. 一些理论算法的学习资源推荐
  16. 两例司法实践撕开了一个口子,区块链应用落地会加速吗?
  17. web 前端签名插件_signature_pad插件实现电子签名功能
  18. JavaWeb Ajax二级联动Bootstrap的基本使用
  19. SQL 追踪(SQL Trace)
  20. 2022年江西省中职组“网络空间安全”赛项模块B解析

热门文章

  1. linux 开机加载的文档,Linux 修改文档“打开方式”
  2. android 计算圆周率方法,android Math的使用
  3. linux 6查看防火墙指令,centos67 常用系统防火墙命令
  4. opencv python教程简书_OpenCV-Python教程:28.模板匹配
  5. php wordpress乱码,PHP問題:基于WordPress的CMS网站在文章摘要末尾出现乱码
  6. pythondjango搭建数据管理平台_python+django 搭建整个平台流程
  7. mysql -e -f_twitter-不正确的字符串值:'\ xF0 \ x9F \ x8E \ xB6 \ xF0 \ x9F ...'MySQL
  8. fastdfs上传文件_Java 实现 FastDFS 实现文件的上传、下载、删除
  9. 处理字典值是把字典放内存还是用sql处理_python基础~元祖与字典原理
  10. 为什么rstudio打开是空白的_既然大家都说装了win10,就不用鲁大师监测显卡温度,为什么呢?...