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

本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作。

阅读目录

  • 介绍
  • 绑定
  • 行为
  • 普通应用和SilverLight应用区别

本文版权归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应用一些对比

时间: 2024-10-07 17:28:42

WCF绑定和行为在普通应用和SilverLight应用一些对比的相关文章

WCF绑定netTcpBinding寄宿到IIS

继续沿用上一篇随笔中WCF服务类库 Wettery.WcfContract.Services WCF绑定netTcpBinding寄宿到控制台应用程序 服务端 添加WCF服务应用程序 Wettery.WcfIISHost.Services,其中添加两个WCF服务,GameService.svc  PlayerService.svc,删掉契约接口和 .cs内嵌文件,只留下.svc文件 我们通过Autofac注入契约/服务的依赖关系,Nuget引用 Install-Package Autofac.W

WCF绑定类型选择

WCF绑定类型选择   发布日期:2010年12月10日星期五 作者:EricHu   在开发WCF程序时,如何选择一个适合的绑定对于消息传输的可靠性,传输模式是否跨进程.主机.网络,传输模式的支持.安全性.性能等方面有着重要的影响.而从本质上来看,绑定具有的这些特性源于其使用的网络协议和编码器.绑定是一个定制好的通道栈,包含了协议通道.传输通道和编码器.我们在开发WCF程序时,选择合适定是一个复杂的过程,没有万能的挑选公式可以套用.但是通常地,可以从是否需要交互特性.是否跨主机.是否需要脱机交

WCF 绑定(Binding)

作者:jiankunking 出处:http://blog.csdn.net/jiankunking 绑定包括多个绑定元素 ,它 们描写叙述了全部绑定要求 .能够创建自己定义绑定 ,也能够使用下表中的当中一个提前定义绑定 : 不同的绑定支持不同的功能.以Ws开头的绑定独立于平台 ,支持 Web服务规范. 以 Net开 头的绑定使用二进制格式,使Net应用程序之间的通信有非常高的性能. 其它功能支持会话.可靠的会话.事务和双工通信. 下表列出了支持这些功能的绑定 . Binding 绑定可指定在与

WCF 绑定

绑定包含多个绑定元素 ,它 们描述了所有绑定要求 .可以创建自定义绑定 ,也可以使用下表中的其中一个预定义绑定 : 不同的绑定支持不同的功能.以Ws开头的绑定独立于平台 ,支持 Web服务规范.以 Net开 头的绑定使用二进制格式,使Net应用程序之间的通信有很高的性能.其他功能支持会话.可靠的会话.事务和双工通信.下表列出了支持这些功能的绑定 . 整理自:C#高级编程 版权声明:作者:jiankunking 出处:http://blog.csdn.net/jiankunking 本文版权归作者

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

契约 新建一个WCF服务类库项目,在其中添加两个WCF服务:GameService,PlayerService 代码如下: [ServiceContract] public interface IGameService { [OperationContract] Task<string> DoWork(string arg); } public class GameService : IGameService { public async Task<string> DoWork(s

日积(Running)月累(ZSSURE):WCF学习之“通过事件绑定控制WinForm宿主程序主界面控件”

背景: WCF服务需要寄宿到相应的可运行进程中执行,常见的有四种寄宿,分别是控制台程序.WinForm程序.IIS和Windows服务.之前学习老A博客和<WCF全面解析>时最常用到的是控制台寄宿,近期由于项目需求,需要在WinForm程序中调用WCF服务,本博文通过一个简单的实例来演示WCF在WinForm中的寄宿.并着重介绍如何利用事件绑定控制宿主主UI界面控件. 题记: 之前一直坚守在C++阵地,对于新语言.新技术(诸如Python.J2EE.Bigdata.AI)不甚感冒.自以为&qu

WCF基础:绑定(三)

在WCF绑定体系中,绑定创建绑定元素,绑定元素创建绑定监听器/绑定工厂,绑定监听器/绑定工厂创建信道. WCF中绑定是有多个信道相连组成的信道栈,在这个信道栈中必须包含传输信道和编码信道,而且传输信道必须在栈底,在信道栈里面可以添加自定义的信道或是一些协议信道(WS-*标准),在这些协议信道中可以一些消息的处理,比如事务的流转,保证消息的安全传输等.在WCF的信道栈中每一个信道都对信道有这单一的处理功能,多个信道组成的信道栈就可以处理多种功能的消息; Binding public abstrac

WCF基础:绑定(一)

WCF中的终结点(ServiceEndpoint)包含有三要素:地址(EndpointAddress),绑定(Binding),契约描述(ContractDescription)三要素:其中绑定的在整个WCF体系架构中具有重要的作用,绑定决定了服务之间通信的模式以及消息中特殊处理: WCF体系中分为服务模型层和信道层,信道层就是通过绑定来进行创建的: 绑定(Binding) 在WCF中默认定义了许多种的绑定: 类型名 配置文件使用名 描述 BasicHttpBinding basicHttpBi

WCF、WPF、Silverlight和区别(转)

SilverLight可以看作是WPF的一个简化版本,或者一个轻量版本. SilverLight是基于浏览器插件的,在浏览器中运行,服务器端不需要部署任何环境,客户端只需要安装Runtime浏览器插件,无须安装.net Framework 3.0.所以,SilverLight的运行环境不受操作系统和浏览器的种类限制(更准确的说,是受到较少的限制). WPF可以编写Web程序或者桌面应用程序,可以直接编译为独立运行的.Exe文件.WPF运行时必须安装.net Framework 3.0.这就要求W