adidas 信道栈里可以定义很多信道

来源:互联网 发布:sql数据清洗 编辑:程序博客网 时间:2024/03/29 17:48

来源:adidas 信道栈里可以定义很多信道

adidas 信道栈里可以定义很多信道,如:BasicHttpBinding,WSHttpBinding,NetTcpBinding 等。我们就从最常用到的BasicHttpBinding来进行分析。

BasicHttpBinding类继承于Binding。我们对主要用到的限定做下描述:

Binding类中有OpenTimeout,SendTimeout,ReceiveTimeout,CloseTimeout4个时间的限定。服务宿主端和客户端配置都起作用。

举个场景,客户端调用服务这个过程:首先是打开服务通讯连接,这个过程可能会涉及到认证等过程,假如超过OpenTimeout的时间还没打开,就会触发对应的异常;其次是发送服务调用请求,然后服务宿主端收到请求,处理完,然后将结果反馈到客户端,这整个过程都输入客户端的发送过程,也就是这整个过程超过SendTimeout了,就会触发对应的异常,最后是关闭服务通讯连接,同打开服务通讯连接。

BasicHttpBinding类中有MaxBufferPoolSize(524288),MaxBufferSize(65536),MaxReceivedMessageSize(65536),TransferMode,ReaderQuotas等这些扩展限制。

其中MaxBufferSize和MaxBufferPoolSize是一对属性,当TransferMode为Buffered的时候,MaxBufferSize必须和MaxBufferPoolSize一致。

客户端这些属性的配置也应该和服务宿主的配置一致,当然也可以不一致,比如服务宿主这边采用TransferMode为Buffered,客户端采用TransferMode为Streamed。

当我们定义的Binding的Name为空,则这个Binding为默认的Binding。


0 0
原创粉丝点击