在WCF中引入了一种专门针对数据流进行优化编码的MTOM模型。下面我们使用编码模型和调用模型三种方式来改写文件流的传输,以提高WCF应用程序的性能。...1、 MTOM模型: 这模型在于将SOAP消息编码成SOAP MT OM(消息传输优化机制)编码。这种编码是为那些包含大量的二进制数据的SOAP消息而做的,它是把数据流作为SOAP消息的附件而添加的。...在WCF中MTOM模型的操作契约中只能使用单个Stream对象作为参数或者返回类型。 ?...file.LastIndexOf ("\\")+1), filePath); proxy.SendStream(inStream); 1.4服务器和客户端的配置信息 配置信息定义了双方通信的终结点、绑定、契约行为及其他的配置如安全..." name="WSHttpBinding_ISendStreamService"> wsHttpBinding> <binding
此绑定使用HTTP作为传输协议,并使用文本/XML作为默认的消息编码 HTTP/HTTPS Text,MTOM WSHttpBinding wsHttpBinding> 一个安全且可互操作的绑定,适合于非双工服务约定...SOAP媒介进行的通信 HTTP Text,MTOM WSFederationHttpBinding 一个安全且可互操作的绑定,支持WS联合协议并使联合中的组织可以高效地对用户进行身份验证和授权...并支持联合安全性 HTTP/HTTPS Text,MTOM NetTcpBinding 一个安全且经过优化的绑定,适用于WCF应用程序之间跨计算机的通信 TCP Binary...NetNamedPipeBinding 一个安全,可靠且经过优化的绑定,适用于WCF应用程序之间跨计算机的通信 IPC Binary MsmqIntegrationBinding...WCF各系统绑定所支持的功能 绑定名称 传输性安全 消息级安全 WS*兼容性 WS*事务支持 持久可靠消息传送 可靠会话 性能 请求/响应 单向 双工 basicHttpBing √ √ √
传输安全性相关的定义。 通信双方的沟通方式,由合约来订定。通信双方所遵循的通信方法,由协议绑定来订定。通信期间的安全性,由双方约定的安全性层次来订定。 3:WCF有什么优势 1:互操作性。...WCF服务的提供增强的可靠性和安全性,WS-Security,WS-Trust和WS-SecureConversation均被添加到SOAP消息中,以用于用户认证,数据完整性验证,数据隐私等多种安全因素...即使对于WCF和ASMX而言,虽然两者都使用了SOAP,但基于WCF开发的应用程序,仍然可以直接与ASMX进行交互。 4:可扩展性。 WCF提供可扩展性,可以支持出新的web服务标准。...支持 (WsHttpBinding),而 TCP 亦支持 NetTcpBinding,NetPeerTcpBinding 等通信方式。...绑定:WCF支持多种类型,如 basicHttpBinding,WSDualHttpBinding,WSHttpBinding等绑定,而Web服务仅支持SOAP或XML。
无论对于Web Service还是WCF,Client和Service之间交互的唯一形式是通过发送和接收Soap Message。...在我们对Web Service和WCF进行深入学习的时候,借助一些Soap Trace 工具对Soap Message进行深入剖析是非常有必要的。...在这些工具之中,我觉得最好用的就是Microsoft Soap Toolkit中的Soap Trace Utility和tcpTrace。我们今天就来讲讲如何在WCF中使用tcpTrace这个工具。...对于WCF来说,如果Client要访问Service,一般情况下交互的只有Client和Service,Soap Message直接从Client到Service。...在WCF中通过ClientViaBehavior实现这样的功能,我将在 后面讲到。
第16集 WCF中的Soap错误 Soap faults in WCF 首先简单介绍一下什么是Soap。...因为异常是不允许通过WCf的service channel 发送给客户端的,所以,服务端把Exception序列化为Soap格式的信息,然后发送给客户端。...在WCF中,如果bingding是BasicHttpBinding,就用1.1, 其他的WCF内置bingding用1.2....然后来试验一下其他bingding,比如wsHttpBinding(这个以后会着重讲)。 首先是服务端的修改:把basicHttpBinding改成wsHttpBingding ?...结束之后会发现,客户端的配置文件里面的binding也变成了wsHttpBinding ? 再次调用,然后打开svclog,看到如下结果: ? 这样,就什么都有了。
通过这段配置,三个基于WSHttpBinding的终结点被添加。...endpoint address = "http://127.0.0.1:7777/CalculatorService" 6: binding = "wsHttpBinding...当基于上面配置创建的ServiceHost在正常开启后,WCF会创建如下图所示的架构体系。...的To报头值一致;SOAP消息具一致的报头信息 XPathMessageFilter:SOAP消息也是一个XML,所以可以根据一个具体的XPath表达式和SOAP的内容进行匹配 PrefixEndpointAddressMessageFilter...服务端运行时架构体系详解[上篇] WCF服务端运行时架构体系详解[中篇] WCF服务端运行时架构体系详解[下篇] WCF服务端运行时架构体系详解[续篇]
BasicHttpBinding是WS-BP 1.1 Spec (Basic Profile) 标准的,ASP.NET ASMX Web Service的很多标准存在于WS-BP 1.1 Spec中,比如SOAP...二、 WsHttpBinding 我们通过与BasicHttpBinding的方式来分析WsHttpBinding,先通过下面的方式列出在默认条件下(通过默认的构造函数创建WsHttpBinding对象...WsHttpBinding在默认的情况下就提供了对基于消息安全的支持,此外WsHttpBinding仍然提供基于HTTPS的传输安全。...在下面我们对代码稍加改动,通过构造函数将WsHttpBinding设置为基于传输的安全模式: 1: class Program 2: { 3: static void Main...WCF中的绑定模型: [WCF中的Binding模型]之一: Binding模型简介 [WCF中的Binding模型]之二: 信道与信道栈(Channel and Channel Stack) [WCF
在采用TLS/SSL实现Transport安全的情况下,客户端对服务证书实施认证。...WCF中的SPN和UPN的格式如下。...对于Transport安全模式,服务凭证协商过程总是会发生,但是对于Message安全模式,你可以通过编程或者配置避免服务凭证协商。...抑制服务凭证协商会因避免证书的传递而对安全性有所增强,但是也会因为需要额外的证书递交机制而带来额外的负担。如果你只需要拥有相应证书的客户端才能调用你的服务,不妨采用这种方式。...对于所有支持Message模式的绑定来说,只有基于WS的绑定(WSHttpBinding、WS2007HttpBinding和WSDualHttpBinding)支持服务凭证协商。
看上去有了一些WCF的使用经验,实则不然,比如对安全、分布式事务、可靠会话等主题仍然接触甚少,因而决定重新回顾学习一下相关知识,尤其是对WCF框架的理解(已于2015年开源,可下载源码,https://...1 wsHttpBinding" contract="Sory.Entertainment.WCF.IAddService...WCF提供6种典型的消息筛选器,包括:ActionMessageFilter,判断请求消息(SOAP)的报头是否和终结点契约中任意操作的Action属性相匹配(Match);EndpointAddressMessageFilter...一般来说,企业内部的服务推荐使用RPC类型的服务,如NetTcpBinding,而对外服务推荐使用WSHttpBinding,当然实际项目中,对外服务一般不会使用WCF框架,而是使用Restful风格的...由于整个WCF都是基于SOAP以及WS-*的,因此其XML是数据格式标准,通过XSD控制XML的数据结构,用WSDL(web服务描述语言)来提供跨平台的描述服务。
service name="Artech.WcfServices.Services.CalculateService"> 5: wsHttpBinding...127.0.0.1:9999/calculateservice" behaviorConfiguration="clientViaBehavior" 13: binding="wsHttpBinding...6: 7: ServiceEndpoint endpoint = serviceHost.AddServiceEndpoint(typeof(ICalculate), new WSHttpBinding...(12): 线程关联性(Thread Affinity)对WCF并发访问的影响 WCF后续之旅(13): 创建一个简单的WCF SOAP Message拦截、转发工具[上篇] WCF后续之旅(13)...:创建一个简单的SOAP Message拦截、转发工具[下篇] WCF后续之旅(14):TCP端口共享 WCF后续之旅(15): 逻辑地址和物理地址 WCF后续之旅(16): 消息是如何分发到Endpoint
使用WCF,就可以实现其所有应用程序间的通信。 WCF可使用Web服务进行通信,还可以对WCF进行配置和扩展,以便与使用并非基于SOAP的消息的Web服务进行通信。...WCF是提供统一的,可用于建立安全、可靠的面向服务的应用的高效开发平台。...数据契约:服务中的参数; 消息契约:使用SOAP协议特定的消息部分; 服务契约:服务中的方法; 策略与绑定:策略设置安全或其他条件,绑定指定传输方式与编码。...WCF和Webservice的区别 微软的Web服务实现称为ASP.NET Web Service.它使用Soap简单对象访问协议来实现分布式环境里应用程序之间的数据交互。...后来微软做了ASP.NET Web Service的安全,性能,数据加密、解密,托管宿主等多方面的扩展,称为WSE系列,这个是过度产品,最高到WSE3.0.后来就是WCF时代。
前面一篇文章《WCF 学习总结1 -- 简单实例》一股脑儿展示了几种WCF部署方式,其中配置文件(App.config/Web.config)都是IDE自动生成,省去了我们不少功夫。...在默认的App.config中,使用的是WCF Framework定义好的wsHttpBinding默认配置,所以看不到binding配置节。 ? 配置节展开如下图: ?...关于WCF中的地址和绑定,需要补充一下。...WSHttpBinding: 比 BasicHttpBinding 更加安全,通常用于 non-duplex 服务通讯。...WSFederationHttpBinding: 支持 WS-Federation 安全通讯协议。 NetTcpBinding: 效率最高,安全的跨机器通讯方式。
在上一篇"x.509证书在WCF中的应用(CS篇)"里,我们知道了如何在应用程序中,利用x.509证书来验证WCF的消息安全(没看过的朋友建议先看下,地址https://cloud.tencent.com.../developer/article/1028346),这一篇我们将尝试把x.509证书放到IIS里来验证WCF。...项目配置为一个站点(本例为http://localhost/),同时正确安装第一步颁发的服务端证书,同时把"要求安全通道(SSL)"选中,这样站点就必须用https://来访问了 这些都弄好以后...="WebServer.CustomX509CertificateValidator,WebServer"/>在测试中发现总是不起作用,所以只能转而用下面的方式从客户端来验证特定的证书,理论上讲这样有安全隐患...,建议实际操作时,可将本节加密后,再连同客户端证书一起分发给客户端,若用于安全性较高的环境,建议还是用UserName方式,到数据库里验证用户名和密码--> <clientCertificate findValue
上面一部分我们站在信道层的角度剖析了WCF为了实现可靠会话在信道层进行的一系列消息交换,或者说客户端和服务端的RS信道为了实现可靠消息传输所进行一轮又一轮的握手。...而WCF通过WSDualHttpBinding实现的双工通信机制和NetTcpBinding支持的双工通信具有本质的区别。...一、WSHttpBinding V.S. WSDualHttpBinding 如果采用WSHttpBinding,最终创建的是一条从客户端到服务端的HTTP通道。...在进行服务调用的时候,即使采用的单向消息交换模式,发送应用消息的请求依然会接收到一个包含SOAP消息的HTTP回复。服务端通过将确认消息方法每一个HTTP回复之中。...如果终结点服务契约中的所有操作中具有一个以上的非单向操作,WCF可靠会话不仅仅需要保障消息从客户端到服务端的可靠性,也需要对服务端到客户端的消息传输提供保障,所以WCF可靠会话需要建立两个方向相反的RM
第18集 WCF服务应该抛出fault 异常 Throwing fault exceptions from a WCF service 这集的中心意思是WCF服务如果有异常,应该throw出来fault...配置文件不变,是启用reliableSession的wsHttpBinding,Divide做如下改动: public class CalculatorService : ICalculatorService...FaultException用来表示一个基于xml的和平台无关的SOAP,这样就确保了客户端的平台无关性。 ? 下面来试验一下效果: 1. host起这个service ? 2.
> WCF_Find_Error_Lib.Service" behaviorConfiguration...="WCF_Find_Error_Lib.IService" bindingConfiguration="WsHttpBinding_IService">...wsHttpBinding的Message安全模式,客户端凭据默认为Windows 运行客户端,抛出异常: ?...2 Message安全模式(本机调试) wsHttpBinding的Message安全模式,客户端凭据默认为Windows。...抛出异常的原因是,wsHttpBinding的Message安全模式不支持https协议,改为http协议则正常。 但是,当服务端的客户端凭据配置与客户端不一致时,也可以正常执行,并获得正常的结果。
basichttpbinding和wshttpbinding是两个基于SOAP的绑定,与REST有很大的不同。...SOAP的优势在于拥有WSDL和XSD来详细描述服务、其方法以及传递的数据(REST风格并不具备这种功能)。...错误),您必须使用SOAP客户端,例如wcftestclient或您自己的应用程序。 ...basichttpbinding和wshttpbinding的区别如下: basichttpbinding是非常基本的绑定-soap 1.1,在安全性方面不多,在功能方面不多,但与现有的任何SOAP...客户机都兼容——>互操作性好,功能和安全性差 wshttpbinding是一个全面的绑定,它支持大量的ws-*功能和标准-它有更多的安全功能,您可以使用会话连接,您可以使用可靠的消息传递,您可以使用事务控制
在其中可以定义和自定义如何向客户端公开服务,包括指定可以找到服务的地址、服务用于发送和接收消息的传输和消息编码,以及服务需要的安全类型。 ...--binding.通常,指定一个类似WsHttpBinding的系统提供的绑定,但也可以指定一个用户定义的绑定,指定的绑定确定传输协议类型、安全和使用的编码,以及是否支持或启用可靠会话、事务或流。 ...还可以通过绑定来设置其他特征,如安全和事务支持。 绑定中的信息可能非常基本,也可能非常复杂。...--WSHttpBinding:一个可互操作的绑定,适用于连接到复合WS_*协议的终结点。 ...-- 用户定义的xml元素集合,一般用作SOAP的header内容--> <!
动手了,WCF 开发WCF服务的终结点需要涉及下面几个任务: 开发服务契约:指定终结点可用的WCF服务的操作。 开发绑定:绑定指点终结点与外界通信的协议。...服务和客户交换SOAP信息。...(详细看上面的代码) 实现WCF服务契约 就是实现一个类,也就是业务逻辑,其本质是和WCF没有直接联系的,供WCF服务调用而已。...-- Service Endpoints --> 5 wsHttpBinding" contract="WCFStudent.IStuServiceContract...这样,一个WCF服务就完成了。
这种情况的出现源于WCF对并发会话数量的控制。说得具体点,WCF对一个ServiceHost所能处理的并发会话作了限制,在默认的情况下,允许的最大并发会话数量为10。...以上面例子使用的WsHttpBinding为例,只有WsHttpBinding的安全(Security)或可靠会话(Reliable Session)开启的情况下,创建的信道才具有会话的特性,否则创建出来的信道是不能支持信道的...在默认的情况下,WsHttpBinding的安全模式(SecurityMode)为基于消息的安全,所以创建出来的信道自动被赋予了会话的特性。...为了验证在非会话信道的情况下,WCF最大并发会话限制是否存在,我们对上面的代码稍加修改,在创建WsHttpBinding的时候,将安全模式设为SecurityMode.None(当然,在进行服务寄宿的时候...,WsHttpBinding也须要进行相同的设置)。
领取专属 10元无门槛券
手把手带您无忧上云