松耦合是SOA的一个基本的特征,WCF应用中客户端和服务端的松耦合体现在客户端只须要了解WCF服务基本的描述,而无须知道具体的实现细节,就可以实现正常的服务调用。...在这种情况下,可以直接使用VS提供的配置工具。...图5 如何获得WCF服务配置编辑器 步骤五:创建客户端调用服务 服务被成功寄宿后,服务端便开始了服务调用请求的监听工作。...,现在我们来演示如何将WCF服务寄宿到IIS中。...基于IIS的服务寄宿要求相应的WCF服务具有相应的.svc文件,.svc文件部署于IIS站点中,对WCF服务的调用体现在对.svc文件的访问上。
当然WCF也提供硬编程的方式,通过在代码中直接设置相关对象的属性来完成服务端与客户端的配置,然而这种方式并不利于后期程序的更改和扩展。...(6)、元数据终结点:WCF服务通过发布一个的或者多个元数据终结点来发布元数据。发布元数据后可以通过标准协议(如WS-MetadataExchange(MEX)和Http/Get请求)来使用该元数据。...暴露WCF元数据的原因: 描述了WCF服务元数据的作用后,就能推测出为什么暴露WCF服务元数据的原因.WCF服务元数据描述服务的核心信息,客户端需要了解这些特征以便与该服务进行通信。...5、bindings节点 配置绑定所需要的节点属性,绑定用于连接WCF服务终结点所需要的详细信息,所以每个终结点必须正确配置绑定信息,绑定最起码需要指定使用的传输机制(HTTP/TCP),还可以设置其他特征...绑定信息可能很复杂,也可能很简单,一般来说绑定包含的如何连接到终结点的信息属于以下类别中的一种: (1)、协议:确定使用的安全机制,可靠消息传递或事务上下文流设置 (2)、编码:确定消息编码(文本或者二进制
配置绑定 绑定是用于指定连接到Windows Communication Foundation(WCF)服务终结点所必需的通信详细信息的对象。WCF服务中的每个终结点都要求正确指定绑定。 ...最基本的绑定仅指定必须用于连接到终结点的传输协议(如Http).一般来说,绑定包括的有关如何连接到终结点的信息属于以下类别中的一种。 ...--NetNamePipeBinding:使用.NET.FrameWork连接到同一计算机上的其他WCF终结点。 ...--NetMsmqBinding:使用.NET Framework创建与其他WCF终结点的排队消息连接。 ...-- 包含客户端跟服务端连接使用到的Endpoint的配置 --> <!
服务是被动的。它们等待传入消息之后才开始工作。客户端是发起者,客户端将消息发送给服务来请求工作。 使用WCF,就可以实现其所有应用程序间的通信。...WCF可使用Web服务进行通信,还可以对WCF进行配置和扩展,以便与使用并非基于SOAP的消息的Web服务进行通信。 WCF是提供统一的,可用于建立安全、可靠的面向服务的应用的高效开发平台。...终结点包括一个定义消息可以发送到的目的地的位置(地址); 一个描述消息应如何发送的通信机制规范(绑定); 以及对于可以在该位置发送或接收(或两者皆可)的一组消息的定义(服务协定)—该定义还描述了可以发送何种消息...当客户端添加WCF服务引用的时候,会首先通过元数据取得服务器端的契约信息、终结点信息,然后根据这些信息在客户端创建了代理类,我们在客户端调用WCF服务的过程实际上就是通过代理类调用WCF服务的过程。...WSDL来实现服务接口相关的描述。此外Webservices可以注册到UDDI中心.供其客户查找使用。
介绍 Hugo是一个静态站点生成器,允许您通过使用简单的标记语言轻松创建和发布Web内容。Hugo可以根据提供的要求解析您的内容并应用主题,以生成可以轻松托管在任何Web服务器或主机上的一致网页。...在本指南中,我们将向您展示如何设置一个系统git,您可以使用该系统将新内容自动部署到生产Web服务器。 准备 对于本指南,我们假设您已经启动并运行了Ubuntu 14.04计算机作为您的开发计算机。...SSH,则会要求您键入“是”来确认连接。...在您的开发计算机上,进入Hugo项目目录并使用以下git ls-remote命令: cd ~/my-website git ls-remote prod 如果git可以在开发和生产机器上的存储库之间建立连接...我们将把它克隆到WORKING_DIRECTORY变量指定的临时存储库,以便Hugo可以访问其中的内容来构建实际的站点。
问题: 线上正式环境调用WCF服务正常,但是每次使用本地测试环境调用WCF服务时长就是出现:套接字连接已中止。这可能是由于处理消息时出错或远程主机超过接收超时或者潜在的网络资源问题导致的。...解决方案: 在调用wcf的服务端的web.config中配置netTcpBinding这个配置,将receiveTimeout完成接收操作提供的时间间隔设置为:00:05:30即可解决(或者使用默认配置...connectionTimeout 属性限制客户端在引发连接异常之前将等待连接的时间。 默认值为 10。 maxBufferPoolSize 一个整数,指定此绑定的最大缓冲池大小。...Windows Communication Foundation (WCF) 的许多部件使用缓冲区。 每次使用缓冲区时,创建和销毁它们都将占用大量资源,而缓冲区的垃圾回收过程也是如此。...portSharingEnabled 一个布尔值,指定是否为此连接启用 TCP 端口共享。 如果此值为 false,则每个绑定都使用自己的独占端口。 此设置只与服务相关,因为客户端不受影响。
在使用的时候,如果你需要的终结点要素和标准终结点完全一致,就无需进行重复的设置;如果不一致,则只需要单独对此进行重新设置以覆盖定义在标准终结点的默认设置。...如果某个终结点需要使用到自定义的标准终结点,标准终结点的名称需要设置到终结点配置节的另一个额外的配置属性endpointConfiguration上。...在《通过自定义ServiceHost实现对WCF的扩展[实例篇]》中,我们介绍了如何通过自定义ServiceHost的方式实现WCF与Unity这个IoC框架进行集成。...,客户端对IIS/WAS寄宿下服务的调用本质上体现在对.svc这个真实存在的物理文件的访问。...和Factory属性,而relativeAddress则表示服务相对服务寄宿的IIS站点的地址,该地址必须以.svc为后缀。
讲解的十分基本,十分详细,详细到每一个细节,然我彻底了解入门的每一个细节,整个教程结构清晰,代码简洁,讲解细致,值得推荐。 做这分5部来讲解创建一个最基本的基于B/S构架的WCF应用。... 描述如何使用用户定义的接口创建 WCF 协定。...如何:创建 Windows Communication Foundation 客户端 描述如何从 WCF 服务检索用于创建 WCF 客户端的元数据。...配置客户端需要指定客户端用于访问服务的终结点。...) 生成的 WCF 客户端代理来调用服务所提供的功能。
终结点 终结点是用来发送或接收消息(或执行这两种操作)的构造,终结点包括一个定义消息可以发送到的目的地的位置(地址)、一个描述消息应该如何发送的通信机制规范(绑定)以及对于可以在该位置发送或者接收(...WCF服务作为一个终结点集合向外界公开。 ...老客户端连接到原始版本,而信客户端则可以连接到较新的版本。... --每个操作都有一个返回值和一个参数,即使他们为void,可以使用局部方法将对对象的引用从一个对象传递到另一个对象,但与局部方法不同的是,服务操作不会传递对对象的引用。... WCF处理用启用操作功能的基础SOAP消息的定义,并处理数据类型到消息正文的序列化和从消息正文进行反序列化,数据类型一旦序列化,您就无需在设计操作时考虑基础消息交换基础结构 可以使用其他序列化机制
记得从自己最开始做MFC时,就使用过Named Pipe命名管道,之后做Winform时,使用过Remoting,再之后做B/S架构时,就会经常使用.NET平台下的Web Service,直到使用上WCF...其特点是有状态、支持全双工、支持可靠通信,其是基于连接的协议,在数据传输前通过3次"握手"创建连接,在传输结束后,通过4次"握手"终止连接。...请求监听和消息分发 这部分内容涉及到整个WCF服务端的架构,下图展示了一个最简单的请求分发过程。 ?...那么binding是如何创建信道层的呢?...一般来说,企业内部的服务推荐使用RPC类型的服务,如NetTcpBinding,而对外服务推荐使用WSHttpBinding,当然实际项目中,对外服务一般不会使用WCF框架,而是使用Restful风格的
,谈谈对于新的EnterLib和Unity,如何将 PIAB和Unity集成到WCF之中。...[第10篇] 调用WCF服务的客户端应该如何进行异常处理 在前面一片文章(服务代理不能得到及时关闭会有什么后果?)...如同WCF的插件一样,这些自定义的WCF扩展以即插即用的方式参与到WCF整个消息处理流程之中。了解 WCF整个消息处理流程是灵活进行WCF扩展的前提。...服务的提供者通过一个或者多个终结点将服务发布出来;服务的消费者则通过创建于之匹配的终结点进行服务的调用。站在服务消费者的角度,这样一个“匹配”的终结点该如何创建呢?...或者说客户端基于何种信息创建能够有效调用目标服务的终结点呢?这就是元数据需要解决的问题。
WCF的服务端和客户端均需要一个FaultFormatter对象,分别用于对FaultException异常对象的序列化和反序列化,现在我们分别介绍FaultFormatter对象在服务端和客户端是如何被创建的...具体来讲,在ServiceHost被初始化过程中,WCF会为服务的每个终结点创建相应的终结点分发器(EndpointDispatcher)。...在默认的情况下,WCF采用懒惰加载(Lazy Loading)的方式创建FaultFormatter,也就是说WCF在真正使用到FaultFormatter的时候,才动态地创建该对象。...这么一个操作行为到该操作的行为列表中。...二、异常的抛出、序列化、反序列化与捕获 现在系统的介绍WCF异常处理的整个流程,由于前面已经作了足够的铺垫,具体涉及到WCF对整个异常处理流程的控制,反而没有太多内容可讲。
当客户端和这个HTTPS站点所在的Web服务器进行正式的访问请求之前,在它们之间必须建立了安全的HTTP连接。...而这样一个安全的连接的创建通过客户端和Web站点之间的多次握手或者协商(Negotiation)来完成。如下图示,整个协商过程主要包括三个步骤。 ?...,从中选择一个“最佳”的加密算法),连同绑定到该站点的数字证书(所有HTTPS站点在部署的时候都会绑定一个X.509证书)一并发送给客户端; 步骤三:客户端接收到服务端发回的数字证书之后,通过验证证书进而确定服务身份...,即客户端之间连接服务的场景。...如果在客户端的服务端之间的网络需要一些用于消息路由的中间结点,Transport安全模式则没有了用武之地。
【实例篇】 为了让读者对可靠会话的作用现有一个直观的认识,我们先来做一个很有意思的实例演示。这也是早年微软推广WCF技术频繁使用的案例:图片传输。...也就是说,可靠消息传输提供的是一种端到端的消息传输确保机制,而不管两个终端之间是否具有相应的中间结点(Intermediary),比如路由器、防火墙和代理之类… 阅读全文 【协议篇-上】 在WS-*大家庭中...下篇将关注点聚焦到单个消息上,看看在整个基于序列的上下文中进行的,不同类型的消息具有怎样的结构… 阅读全文 【编程篇-上】 在《实例篇》给出的例子中,我们实际上是通过对终结点的绑定进行相应的配置让整个消息的交换过程在一个可靠会话中进行...《上篇》对实现可靠会话的绑定元素已经如何使用系统绑定实现可靠会话进行了介绍,下篇将和你探讨WCF可靠会话编程模型余下两个主题:自定义绑定和对消息传递的强制约束… 阅读全文 【原理篇-上】 可靠会话的编程仅仅围绕着一个对象...绑定在整个WCF架构模型具有重要的地位。WCF整个架构模型由两部分构成,即服务模型(Service Model)层和信道(Channel)层,而绑定是信道层的缔造者,同时也是连接两个层次的纽带。
而对于客户端通常对所使用的端口并不关心,只需要保证端口在本机是唯一的就可以了,这样的端口又成为临时端口,临时端口一般在1024到5000之间。...一般来讲,在某一个时刻,一个端口只能供一个应用程序使用。对于WCF来说,当我们通过一个托管的应用程序对某个服务进行寄宿的时候,一个端口被该应用程序独占使用。...如何多个寄宿进行使用相同的端口 在下面的例子中,我通过两个不同的控制台应用程序对两个服务,Service1和Service2进行寄宿,两个服务的终结点地址共享相同的端口:9999。...请确保未在应用程序中多次尝试使用该终结点,并确保没有其他应用程序在侦听该终结点。 在本节中,我们将介绍如何解决这种端口被某一个应用程序独占使用的问题,让不同的监听程序能够共享同一个端口。...对于WCF来讲,当我们将某个服务寄宿于一个进程中,实际上就是通过该进程监听和处理来自客户端的Socket请求。
WCF采用基于终结点(Endpoint)服务消费方式:WCF服务通过一个或者多个终结点暴露给潜在的服务消费者,服务的消费中通过与之匹配的终结点与之交互。...在客户端,我们具有两种典型的服务代理创建方式,其一是通过诸如SvcUtil.exe这样的工具导入服务的元数据生成相应的服务代理(一个继承自ClientBase的类型)代码和相关配置;其二是直接通过相应的终结点信息...这得益于在.NET 3.5中新加入的ChannelFactory的缓存机制。那么,在WCF客户端框架内部对ChannelFactory的缓存是如何实现的呢?...方法调用之前,调用了只读属性ChannelFactory,并将其赋值到一个临时变量中,中间根本没有对ChannelFactory作任何修改,仅仅一次我们认为微不足道的对只读属性的访问就破坏了WCF...WCF技术剖析之十:调用WCF服务的客户端应该如何进行异常处理 WCF技术剖析之十一:异步操作在WCF中的应用(上篇) WCF技术剖析之十一:异步操作在WCF中的应用(下篇) WCF技术剖析之十二:数据契约
该架构的顶层称为服务模型层(Service Model Layer),使用户用最少的时间和经历建立自己的软件产品和外界通信的模型。...与其他普通的类唯一的区别就是标记了一些WCF特有的特性[Attribute]。 2、Host【宿主】:可以是应用程序,进程如Windows Service等,他是WCF服务的运行环境。...3、Endpoints:可以是一个,也可以是一组,他是WCF实现通信的核心要素,称之为终结点。...下面分而介绍: 1、终结点:一个WCF服务能为不同的通信场景提供不同的访问点,这些访问点成为WCF端点,也就是本文提到的终结点Endpoint,每个终结点Endpoint=绑定+地址+契约。...(1)绑定:指定该终结点如何与外界通信,也就是指定通信协议,具体包括: 传输协议:终结点和客户端之间的,常用的HTTP、TCP 编码协议:进入通信链路之前,终结点和客户端通过编码协议对数据进行编码
如果我有好几个客户端A,B,C同时连接一台服务器,服务器如何区分客户端?...第14行客户端连接服务器后,返回的对象client里包含的localPort 57400就可以用来唯一标识这个发起连接的客户端。 ?...同样,服务器端接收连接后,在回调函数的输入参数socket里有个字段remotePort, ? 包含的就是发起连接的客户端。 ? ?
其实配置文件中的值,最终还是要体现到代码中的,只不过这部分工作由底层帮你做了。我们今天来尝试去掉配置文件,用纯代码实现发布过程,同时加深一下对层次关系的理解。...基地址,对应config中的 └ ServiceEndpoint[] 服务终结点,对应config中的多个 ...对应config中的binding属性 └ EndpointAddress 终结点地址,对应config中的address... 客户端终结点,对应config中的 ├ ServiceContract 服务契约,对应config中的contract...但如果只能在程序运行时动态获取发布的相关参数,那App.config就不行了。 OK,又前进了一点,下一篇会看看如何传递复杂对象。
领取专属 10元无门槛券
手把手带您无忧上云