WCF绑定和行为在普通应用和SilverLight应用一些对比
本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作。
阅读目录
本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作。
介绍
WCF是构建和运行互联系统的一系列技术的总称,它是建立在Web Service架构上的一个全新的通信平台。我们可以把它看成是.NET平台上的新一代的Web Service。WCF的绑定和行为可以对提供的服务提供不同的通信方式支持和其他方面的约束。
绑定
一:信道与信道栈
信道栈里可以定义很多信道,如: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。
如图:

二:行为:
本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作。
行为分为ServiceBehaviors,EndpointBehaviors。服务行为可以定义服务的一些行为模式,比如元数据是否公开,是否开始服务调试,数据序列化对象个数限制等。
在普通的调用下,客户端也有EndpointBehaviors配置项,但是在SilverLight中却没有,那么很多行为在SilverLight该怎么进行配置列?等下在表。
ServiceBehaviors很重要的两个配置项就是serviceMetadata和dataContractSerializer。serviceMetadata的httpGetEnabled项可以控制元数据是否被公开。dataContractSerializer的maxItemsInObjectGraph项可以控制服务反馈的结果数据的可序列化对象个数(这里不是多少个实例,而是所有属性的加合),maxItemsInObjectGraph不仅可以放宽对某些大数据服务调用的限制,也可以对DDos攻击的限制。
如图:

普通应用和SilverLight应用区别
一:信道限制
普通应用和SilverLight应用都可以在客户端进行对应的信道限制,只不过SliverLight的transferMode只有Buffered,StreamedResponse两种,readerQuotas配置项也是没有的。
二:行为限制
很多普通应用和SilverLight应用需要获取比较大的数据,数据中的对象多了,很可能会触发maxItemsInObjectGraph超出的异常,这里两者的配置区别也很大。
首先:服务宿主端的maxItemsInObjectGraph配置肯定是得有。
其次:普通应用客户端是要配置对应的endpointBehaviors 中的maxItemsInObjectGraph。
然而:SilverLight应用客户端则没有endpointBehaviors这个配置项,那么我们应该怎么通过配置来处理列,找了很多资料,自己也试验了很多次,其实不用管这个行为配置。只要服务端配置了就可以了。
如图:
服务端:
本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作。

普通客户端:

本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作。
WCF绑定和行为在普通应用和SilverLight应用一些对比的更多相关文章
- WCF绑定类型选择
WCF绑定类型选择 发布日期:2010年12月10日星期五 作者:EricHu 在开发WCF程序时,如何选择一个适合的绑定对于消息传输的可靠性,传输模式是否跨进程.主机.网络,传输模式的支持. ...
- WCF绑定netTcpBinding寄宿到IIS
继续沿用上一篇随笔中WCF服务类库 Wettery.WcfContract.Services WCF绑定netTcpBinding寄宿到控制台应用程序 服务端 添加WCF服务应用程序 Wettery. ...
- WCF 绑定的选择
选自<WCF服务编程中文版> 第一章 WCF基础 绑定服务之间的通信方式是多种多样的,有多种可能的通信模式.包括:同步的请求/ 应答(Request/Reply)消息,或者异步的“即发即弃 ...
- WCF 绑定(Binding)
绑定包含多个绑定元素 ,它 们描述了所有绑定要求 .可以创建自定义绑定 ,也可以使用下表中的其中一个预定义绑定 : 不同的绑定支持不同的功能.以Ws开头的绑定独立于平台 ,支持 Web服务规范. 以 ...
- WCF - 绑定
从整个基础架构来看 WCF可分为服务模型层和信道层 模型层提供了一个统一的可扩展的编程模型 而信道层提供了对请求信息的接收和处理 而作为WCF通信的三要素之一的绑定 是它实现了组成整个信道层的信道栈 ...
- WCF - 绑定后续之自定义绑定
自定义信道基类 WCF是一个极具扩展性的通信框架 无论在服务模型层还是信道层 都具有很多扩展点 而信道层的扩展点主要体现在实现自定义信道以增强信道栈处理信息的能力 比如我们可以扩展信道层 实现一个自定 ...
- WCF绑定netTcpBinding寄宿到控制台应用程序
契约 新建一个WCF服务类库项目,在其中添加两个WCF服务:GameService,PlayerService 代码如下: [ServiceContract] public interface IGa ...
- WCF绑定(Binding)
一个Binding由一个有序的binding元素栈所组成,其中的每一个元素都指定了连接到ServiceEndpoint的一个方面.在这个栈中的最底两层都是必须要有的.最底下的一层是传输binding元 ...
- WCF基础:绑定(三)
在WCF绑定体系中,绑定创建绑定元素,绑定元素创建绑定监听器/绑定工厂,绑定监听器/绑定工厂创建信道. WCF中绑定是有多个信道相连组成的信道栈,在这个信道栈中必须包含传输信道和编码信道,而且传输信道 ...
随机推荐
- XMPP客户端开发(1)--连接和登录
Smack可用于XMPP客户端的开发,下载Smack,将相关jar文件导入后,即可以开始XMPP客户端的开发. 以下代码实现了客户端连接Tigase服务器,并根据用户名和密码登录. package X ...
- git Submodule
http://www.kafeitu.me/git/2012/03/27/git-submodule.html https://git-scm.com/book/zh/v2/Git-%E5%B7%A5 ...
- EL表达式错误attribute items does not accept any expressions
解决方法是将 <%@taglib prefix="c" uri="http://java.sun.com/jstl/core"%> 改成 <% ...
- uums
http://blog.csdn.net/hudon/article/details/1506042 http://www.cnblogs.com/biakia/p/4779655.html http ...
- Guava学习笔记:复写的Object常用方法
在Java中Object类是所有类的父类,其中有几个需要override的方法比如equals,hashCode和toString等方法.每次写这几个方法都要做很多重复性的判断, 很多类库提供了覆写这 ...
- loadrunner用javavuser进行接口测试
在日常工作中会遇到被测试系统通讯都是通过加密的数据包,加密算法是公司自己开发的,并且发送的数据包还要经过系统的压缩,以保证系统的性能.利用loadrunner就无法解决这里的加密的技术问题,利用jav ...
- [LeetCode]String to Integer (atoi)
题意:字符串转正数 原题来自:https://leetcode.com/problems/string-to-integer-atoi/ 分析: <程序员面试宝典>上出现的面试题,主要是考 ...
- 今天做项目时,用到了好多关于js的知识点,有的忘记了,然后晚上回来自己整理一番,明天继续整理。哈哈,分享给大家。
javascript 数据类型 typeof (直接量/变量)-------判断数据类型 简单数据类型(栈,空间小,速度快) string字符串 用引号引起来的文本 number数字 所有数字 NaN ...
- 玩转Docker之常用命令篇(三)
首先我们来解决一个小问题,使用docker每次都要用sudo,为了让非root用户使用docker,可将当前用户添加到docker用户组: sudo groupadd docker sudo gpas ...
- Devrama Slider - 支持任意 HTML 的内容滑块
Devrama Slider 是一个图片滑块,支持很多特色功能.除了支持图片滑动,其它的 HTML 内容也支持.主要特色:响应式.图片预加载.图片延迟加载.进度条.自定义导航栏和控制按钮等等. 在线演 ...