随笔分类 - WCF基础
摘要:使用自定义绑定和WCF自带的绑定协议配置上没有太大区别,主要有两点不通;1、需要在配置中指定传输绑定元素2、如果只有在众多服务中只有一个服务使用自定义绑定,则需要将自定义绑定应用到服务上。配置如下; 注意以上配置中httpTransport是必须要求配置的,因为他是必须的绑定元素(编码绑定元素与传输绑定元素)之一
阅读全文
摘要:大家都知道WCF会话模式有几个要求:1、会话契约;2、绑定支持;3、实例模式为PerSession。这几个要素是WCF支持的必要条件。会话契约:由服务端提供实现,客户端调用时只持有契约定义,所以需要通过契约定义告知客户端,服务端是支持会话的。绑定:会话没有绑定的支持也就无从谈起了。InstanceContextMode为PerSession。通过它可以保证在会话期间,服务实例不会被销毁。 较为复杂的问题在于ServiceContract中SessionMode的设置。SessionMode定义如下://摘要://指定可用于指示支持协定需要或支持的可靠会话的值。publicenumSessio.
阅读全文
摘要:在使用WCF实例模型时,你是否思考过这几个的问题:”WCF中的实例模式如何正确应用”?”使用WCF中的实例模式有何原则可以遵循吗”? 众所周知:客户端调用服务时,最终会将调用服务端的某个实例来完成。在WCF服务中,可以通过ServiceBehavior的InstanceContextMode设置服务实例。InstanceContextMode定义如下://摘要://指定可用来处理包含在传入消息中的调用的服务实例数。publicenumInstanceContextMode{//摘要://为每个会话创建一个新的System.ServiceModel.InstanceContext对象。PerSe
阅读全文
摘要:WCF作为一项通讯技术,必须保证传输的可靠性与消息的可靠性传输可靠性:指的是点对点可靠性,确保数据包按顺序到达。它不受网络等因素的影响消息可靠性:指提供了消息端对端的保证,确保消息的顺序无误。如果传输失败,它还能提供重试功能自动处理网络阻塞、消息缓存、流控制,根据具体情况适时调整发送消息数。它还能通过对连接的验证管理连接自身,并在不需要的时候清除连接理论上,WCF服务的实现与服务契约的定义与它使用的绑定以及属性无关。实际上,服务处理消息以及契约定义都可能与消息的有序传递有关。在WCF中使用DeliveryRequirementsAttribute来对服务或者契约应用这种约束。[Attribut
阅读全文
摘要:WCF中,并发是一个很影响服务性能的重要方面。通过ServiceBehaviorAttribute中的ConcurrencyMode可以设置服务的并发性。 对于双工通讯来说,服务对客户端的回调也是通过代理完成的。那么这又涉及到另外一个问题:回调客户端时,能否让回调服务也并发执行呢?WCF中定义了CallbackBehaviorAttribute ,可以通过它来设置回调服务的行为。它同样定义了ConcurrencyMode,可指定回调的并发模式,但它没有定义回调的实例模式,即InstanceContextMode。本文主要探讨服务的并发与回调服务的并发。目录:测试重入与回调并发会话对重入与回调.
阅读全文
摘要:WCF中的并发针对服务而言。而服务实例封装在InstanceContext,所以WCF中的并发最终体现在了InstanceContext中。WCF服务实例上下文模式InstanceContextMode又决定服务以何种方法为客户端提供服务。实例模式 :publicenumInstanceContextMode{PerSession,PerCall,Single}PerSession:每次会话都是使用同一个服务实例PerCall:每次调用都创建新的服务实例对象Single:所有服务都是用同一个服务实例对象,相当于所有客户端代理都使用服务端同一个静态服务实例对象为其服务默认情况下,Instanc.
阅读全文
摘要:整理了几个WCF里几个基本知识点:1、WCF中的Message WCF中的消息对象Message,是有状态的。它的状态是MessageState枚举。共有以下几种类型:publicenumMessageState{Created,Read,Written,Copied,Closed} 对Message对象,只有在Create状态下,才能读,否则读取会有异常。Message同样定义了许多Write之类的方法,这些Write方法同样也只能用于处于Created的消息。 在WCF中,有可能需要对消息进行一些读取、等操作。但是读取操作会改变Message的 状态,导致再次读取会有异常。这时,可以使..
阅读全文
摘要:近来看WCF相关资料 发现之前一些没太关注或者有些错误认识的知识点,有些也貌似不怎么常用。于是整理了这一则笔记。1、 WCF中的绑定。 可以通过绑定无参数构造函数实例化绑定,然后调用CreateBindingElements获取到此种绑定的绑定元素。 WSHttpBindinghttpBinding=newWSHttpBinding();BindingElementCollectioncollection=httpBinding.CreateBindingElements();foreach(varelementincollection){ Console.WriteLine(eleme...
阅读全文
摘要:对于WCF中通讯的双方来说,客户端可以异步的调用服务;服务端对服务也能以异步的方式实现。这就涉及到两个方面:WCF客户端异步调用服务;服务端的异步实现本节是Artech《WCF技术剖析(卷1)》一篇读书笔记。在文章中老A介绍了客户端如何以异步的方式消费WCF服务,以及服务的异步实现,个人对这几种方式做个总结。目录: WCF客户端异步调用服务 服务端的异步实现 WCF客户端异步调用服务主要通过生成异步的代理类,然后调用其中的异步方法来实现异步调用。异步代理类的生成:通过SvcUtil /async 直接生产异步代理;通过添加应用的方式,点击”添加引用“的“高级”按钮,在弹出来的对话框中选择“..
阅读全文
摘要:在WCF中有几种涉及到地址的概念:基地址与相对地址、逻辑地址与物理地址。本文就从WebService寻址开始,总结一下WCF中的几种地址。目录:WebService寻址逻辑地址与物理地址基地址、相对地址、绝对地址1、WebService寻址 与以协议无关的SOAP作为消息的载体在被客户端发往服务端以后就不再由客户端所控制了。如果以HTTP将SOAP从客户端发往服务端,通过HTTP协议的标准动作如Get、Post进行操作,服务处理完毕以后再通过HTTP响应发往客户端这样一次交互就完成了。可事实上,SOAP没有标准方法来指定消息的目的地址、如何返回响应以及错误在哪等。如果消息交互变得复杂一点,这.
阅读全文
摘要:WCF中经常会使用HTTP协议与Tcp协议来实现双工通讯,对应使用的协议分别为WsDualHttpBinding、NetTcpBinding。HTTP是基于应用层的协议,而Tcp是基于传输层的协议。Tcp经过三次握手建立起客户端到服务端的可靠连接,发起请求的客户端与回调客户端的服务端都使用一个连接就能完成。使用HTTP协议时,从客户端到服务端发起请求到服务端返回给客户端回复完成后,连接就关闭。 由于HTTP的这种无连接性,基于WsDualHttpBinding的双工在进行通讯时实际上服务端在回调客户端时,会与NetTcpBinding在使用上有些差异。1、NetTcpBinding实现双工1.
阅读全文
摘要:SOAP(Simple Object Access Protocol,简单对象访问协议)作为一种信息交互协议在分布式应用中非常广泛,如WebService。在使用.Net开发WebService时候,只需要在对应的方法上加上WebMethod特性然后就可以通过网络进行SOAP消息的发送。这样在平时使用Webservice时,可能不太关心SOAP消息的结构到底是怎样的。下面大致说说SOAP消息的结构,以及使用工具监听SOAP消息报文。本节目录:1、XSD是什么2、基于SOAP的数据交互系统是XSD的3、SOAPSOAP消息结构4、支持SOAP的协议5、通过SOAPHeader扩展SOAP6、..
阅读全文
摘要:.Net Remoting是微软早前推出的一项分布式通讯技术框架,在.Net架构的程序中有着比较广泛的应用。在WCF中,已经集成了Remoting的技术。不过,他们有着很多相同的概念,如:信道(Channel)、代理(Proxy)、寄宿(host)等。在如今仍有一些分布式系统应用中运行着由Remoting技术构建的系统。本文将描述在服务端与客户端的交互中,他们各自的实现方式。 1、Remoting的实现。 在Remoting中,远程对象是一个重要的概念。服务端通过将它注册到制定的信道中,客户端服务...
阅读全文