本文版权归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应用一些对比的更多相关文章

  1. WCF绑定类型选择

    WCF绑定类型选择   发布日期:2010年12月10日星期五 作者:EricHu   在开发WCF程序时,如何选择一个适合的绑定对于消息传输的可靠性,传输模式是否跨进程.主机.网络,传输模式的支持. ...

  2. WCF绑定netTcpBinding寄宿到IIS

    继续沿用上一篇随笔中WCF服务类库 Wettery.WcfContract.Services WCF绑定netTcpBinding寄宿到控制台应用程序 服务端 添加WCF服务应用程序 Wettery. ...

  3. WCF 绑定的选择

    选自<WCF服务编程中文版> 第一章 WCF基础 绑定服务之间的通信方式是多种多样的,有多种可能的通信模式.包括:同步的请求/ 应答(Request/Reply)消息,或者异步的“即发即弃 ...

  4. WCF 绑定(Binding)

    绑定包含多个绑定元素 ,它 们描述了所有绑定要求 .可以创建自定义绑定 ,也可以使用下表中的其中一个预定义绑定 : 不同的绑定支持不同的功能.以Ws开头的绑定独立于平台 ,支持 Web服务规范. 以 ...

  5. WCF - 绑定

    从整个基础架构来看 WCF可分为服务模型层和信道层 模型层提供了一个统一的可扩展的编程模型 而信道层提供了对请求信息的接收和处理 而作为WCF通信的三要素之一的绑定 是它实现了组成整个信道层的信道栈 ...

  6. WCF - 绑定后续之自定义绑定

    自定义信道基类 WCF是一个极具扩展性的通信框架 无论在服务模型层还是信道层 都具有很多扩展点 而信道层的扩展点主要体现在实现自定义信道以增强信道栈处理信息的能力 比如我们可以扩展信道层 实现一个自定 ...

  7. WCF绑定netTcpBinding寄宿到控制台应用程序

    契约 新建一个WCF服务类库项目,在其中添加两个WCF服务:GameService,PlayerService 代码如下: [ServiceContract] public interface IGa ...

  8. WCF绑定(Binding)

    一个Binding由一个有序的binding元素栈所组成,其中的每一个元素都指定了连接到ServiceEndpoint的一个方面.在这个栈中的最底两层都是必须要有的.最底下的一层是传输binding元 ...

  9. WCF基础:绑定(三)

    在WCF绑定体系中,绑定创建绑定元素,绑定元素创建绑定监听器/绑定工厂,绑定监听器/绑定工厂创建信道. WCF中绑定是有多个信道相连组成的信道栈,在这个信道栈中必须包含传输信道和编码信道,而且传输信道 ...

随机推荐

  1. Windows Git中文文件名乱码

    在Windows下使用git,安装包如下: https://git-for-windows.github.io/ 在使用git bash时git 默认中文文件名是 xx% 是因为 对0x80以上的字符 ...

  2. android 设置textview跑马灯效果

    head_tv1.setEllipsize(TextUtils.TruncateAt.MARQUEE);head_tv1.setSingleLine(true);head_tv1.setSelecte ...

  3. Java程序运行时,数据都保存到什么地方?

    程序运行时,我们最好对数据保存到什么地方做到心中有数.特别要注意的是内存的分配.有六个地方都可以保存数据: 寄存器 这是最快的保存区域,因为它位于和其他所有保存方式不同的地方:处理器内部.然而,寄存器 ...

  4. GJM : 数据结构 - 轻松看懂机器学习十大常用算法 [转载]

     转载请联系原文作者 需要获得授权,非法转载 原文作者将享受侵权诉讼 文/不会停的蜗牛(简书作者)原文链接:http://www.jianshu.com/p/55a67c12d3e9 通过本篇文章可以 ...

  5. Lisp学习--Windows下面的开发环境搭建

    很久以前,就准备学习Lisp,但是遇到不少困难,社区太凌乱,也一直很犹豫,直到看了<Common Lisp - 想说爱你不容易>,想看看Common Lisp怎么样,之前都是拿Lisp的方 ...

  6. emberjs学习一(环境和第一个例子)

    code { margin: 0; padding: 0; white-space: pre; border: none; background: transparent; } code, pre t ...

  7. 当jquery ajax遇上401请求

    jquery ajax是个很常用接口,而在请求时候,可能存在响应401的情况(身份认证过期或未登录),比较容易出现在混合应用上,如何进行身份认证,重发失败请求,还是值得注意的. ajax请求有两种方式 ...

  8. HTML基础知识总结

    经过这段时间的学习,对于html的一些基础知识有了一定的了解.所谓好记性不如烂笔头,唯有一点点累积,才能汇聚成知识的海洋.现在,我对这段时间的学习做一个总结. 一.HTML的定义 HTML,超文本标记 ...

  9. SAP 使用较频繁的日期时间处理函数总结

    在ABAP实际开发中,经常需要用到一些日期时间处理函数,个人感觉经常使用到的函数进行一下汇总 1.  根据工厂日历 计划交货日期 和 收货处理时间 来计算 销售计划中计划完工日期,其他类似日期计算等 ...

  10. Large-file-chunk-size 设置最大文件上传值

    Large-file-chunk-size: Stsadm property (Office SharePoint Server) SharePoint 2007   0 out of 1 rated ...