文本参考自:http://www.cnblogs.com/wangweimutou/p/4365260.html

简介:WCF作为分布式开发的基础框架,在定义服务以及消费服务的客户端时可以通过配置文件的方式,来进行设置,这充分的体现了WCF的伸缩性和自定义性。当然WCF也提供硬编程的方式,通过在代码中直接设置相关对象的属性来完成服务端与客户端的配置,然而这种方式并不利于后期程序的更改和扩展。

一、WCF配置文件结构如下图所示,包含三个部分,services(服务)、bindings(绑定)、behaviors(行为)

二、Services节点

每个服务发布都会包含一个Service节点,里面包含一个或者多个endpoint节点,Service元素具有以下属性:

1、name属性:设置提供实现服务契约接口的类型,它是完全限定名称(命名空间和类型)->命名空间.类名

2、behaviorConfiguration属性:为当前服务节点绑定服务行为元素,对应的behaviors里面的节点为serviceBehaviors节点。

3、host节点:配置服务主机,该节点的属性如下:

(1)、baseAddresses节点:通过该节点配置服务主机的基地址

4、endpoint节点:该节点指定用于公开服务的终结点的绑定、协定和地址属性,与WCF的所有通信是通过该服务的终结点进行的,利用终结点,WCF服务可以访问WCF提供的功能。该节点的属性如下:

(1)、address: 一个包含终结点地址的字符串,指定服务元素的统一标识符(URI)。 可以将地址指定为绝对地址或相对地址。 如果提供的是相对地址,则需要主机提供适合于绑定中所使用的传输方案的基址。 如果未配置地址,则假定基址为该终结点的地址。默认值为一个空字符串。

(2)、binding:设置与终结点的通信的通信方式,通信方式分为两种,一种是系统提供的绑定类型,另一种是用户自定义的绑定类型。指定的绑定确定传输协议的类型、安全和使用编码,以及是否支持或启用可靠会话、事务或流。

(3)、bindingConfiguration:一个字符串,指定实例化终结点时所使用的绑定的绑定名称。 定义终结点时,绑定名称必须在作用域内。如上图中采用的是wsHttpBinding,则bindingConfiguration的名称对应bindings下的wsHttpBinding里的名称为myBinding的绑定。

(4)、behaviorConfiguration:指定在behaviors元素中找到的终结点行为元素的名称,对应的behaviors里面的节点为endpointBehaviors节点.

(5)、Contract:设置此终结点公开了哪个接口协定。 程序集必须实现该协定类型。 如果服务实现所实现的是单个协定类型,则可以省略此属性。 默认值为一个空字符串。

(6)、元数据终结点:WCF服务通过发布一个的或者多个元数据终结点来发布元数据。发布元数据后可以通过标准协议(如WS-MetadataExchange(MEX)和Http/Get请求)来使用该元数据。元数据终结点类似于其他服务终结点,他们都需要第一个地址、一个协定、一个绑定。若要启用发布元数据终结点,必须将ServiceMetadataBehavior服务行为添加到该服务。默认情况下,WCF服务不发布元数据终结点,所以必须将他们显示的添加到服务配置中才能为服务启用元数据发布。

WCF服务元数据是WCF服务的核心部分的服务地址(adress)、绑定(通信协议bindings)、契约(服务、操作、数据Contract)的原始描述信息。服务所公开的元数据包括XSD(文档中出现的元素、文档中出现的属性、子元素、子元素的数量、子元素的顺序、元素是否为空、元素和属性的数据类型、元素或属性的默认和固定值)和 WSDL 文档(用于描述服务的方法、参数、参数个数、顺序、返回值、返回值的类型等方法的相关信息).Disco文档(描述服务的协议、地址、命名空间等信息).

这些关键的WCF服务元数据全都是基于XML语言描述,支持核心的行业标准协议.。XSD好处显而易见, 基于XML,没有专门的语法,XML Schema支持一系列的数据类型(int、float、Boolean、date等),可扩充的数据模型,支持综合命名空间,支持属性组等.而这些正式WCF分布式服务追求的跨语言、跨平台的关键部分所在。

暴露WCF元数据的原因:

描述了WCF服务元数据的作用后,就能推测出为什么暴露WCF服务元数据的原因.WCF服务元数据描述服务的核心信息,客户端需要了解这些特征以便与该服务进行通信。要想实现异构平台或者系统之间的通信,以前的技术是使用Web Service.因为其具有自描述、可扩展、与平台无关等优势。客户端只需要根据Web Service地址,便可获取服务的相关信息,反序列话本地的代码,通过服务代理进行服务的调用。WCF服务主要特性之一就是跨平台的服务交互。而暴露服务元数据的重要原因就是解决了异构客户端服务交互的关键问题。 元数据基于XML,自描述。客户端可以根据服务的元数据反序列换生成本地代码,无论是c#,vb还是java语。

5、bindings节点

配置绑定所需要的节点属性,绑定用于连接WCF服务终结点所需要的详细信息,所以每个终结点必须正确配置绑定信息,绑定最起码需要指定使用的传输机制(HTTP/TCP),还可以设置其他特征,如安全和事务支持。绑定信息可能很复杂,也可能很简单,一般来说绑定包含的如何连接到终结点的信息属于以下类别中的一种:

(1)、协议:确定使用的安全机制,可靠消息传递或事务上下文流设置

(2)、编码:确定消息编码(文本或者二进制)

(3)、传输:确定使用的基础传输协议(如TCP/HTTP)

6、behavios

包含serviceBehaviors(服务行为)、endpointBehaviors(终结点行为)的配置.

(1)、serviceBehaviors节点

(2)、endpointBehaviors节点

具体参照MSDN

https://msdn.microsoft.com/zh-cn/library/aa967282(v=vs.110).aspx

https://msdn.microsoft.com/zh-cn/library/vstudio/ms731403(v=vs.100).aspx

WCF系列教程之WCF服务配置的更多相关文章

  1. WCF系列教程之WCF服务宿主与WCF服务部署

    本文参考自http://www.cnblogs.com/wangweimutou/p/4377062.html,纯属读书笔记,加深记忆. 一.简介 任何一个程序的运行都需要依赖一个确定的进程中,WCF ...

  2. WCF系列教程之WCF服务协定

    本文参考自:http://www.cnblogs.com/wangweimutou/p/4422883.html,纯属读书笔记,加深记忆 一.服务协定简介: 1.WCF所有的服务协定层里面的服务接口, ...

  3. WCF系列教程之WCF服务配置工具

    本文参考自http://www.cnblogs.com/wangweimutou/p/4367905.html Visual studio 针对服务配置提供了一个可视化的配置界面(Microsoft ...

  4. WCF系列教程之WCF消息交换模式之单项模式

    1.使用WCF单项模式须知 (1).WCF服务端接受客户端的请求,但是不会对客户端进行回复 (2).使用单项模式的服务端接口,不能包含ref或者out类型的参数,至于为什么,请参考C# ref与out ...

  5. WCF系列教程之WCF实例化

    本文参考自http://www.cnblogs.com/wangweimutou/p/4517951.html,纯属读书笔记,加深记忆 一.理解WCF实例化机制 1.WCF实例化,是指对用户定义的服务 ...

  6. WCF系列教程之WCF客户端调用服务

    1.创建WCF客户端应用程序需要执行下列步骤 (1).获取服务终结点的服务协定.绑定以及地址信息 (2).使用该信息创建WCF客户端 (3).调用操作 (4).关闭WCF客户端对象 二.操作实例 1. ...

  7. WCF系列教程之WCF中的会话

    本文参考自http://www.cnblogs.com/wangweimutou/p/4516224.html,纯属读书笔记,加深记忆 一.WCF会话简介 1.在WCF应用程序中,回话将一组消息相互关 ...

  8. WCF系列教程之WCF客户端异常处理

    本文参考自:http://www.cnblogs.com/wangweimutou/p/4414393.html,纯属读书笔记,加深记忆 一.简介 当我们打开WCF基础客户通道,无论是显示打开还是通过 ...

  9. WCF系列教程之WCF操作协定

    一.简介 1.在定义服务协定时,在它的操作方法上都会加上OperationContract特性,此特性属于OperationContractAttribute 类,将OperationContract ...

随机推荐

  1. util:properties

    示例 <util:properties id="db" location="classpath:db.properties" /> 全部属性 功能概 ...

  2. ZSTU4270 同源数 2017-03-22 14:34 82人阅读 评论(0) 收藏

    4270: 同源数 Time Limit: 3 Sec  Memory Limit: 128 MB Submit: 1284  Solved: 224 Description 如果x和y的质因子集合完 ...

  3. eclipse中不能找到dubbo.xsd报错”cvc-complex-type.2.4.c“的 两种解决方法

    配置dubbo环境过程中的xml文件,安装官网的demo配置好后,出错: "Description Resource Path Location Type cvc-complex-type. ...

  4. [毕业设计][期末作业]二手闲置小程序 免费信息发布系统功能源码(小程序+php后台管理)

    最近做了一个小程序,主要是二手闲置免费信息发布系统的功能,里面包括了登录,发布商品,商品管理,违规投诉,canva商品海报生成,分享等一些基础的功能,可以说代码都是自己辛辛苦苦写出来的.可作为毕业设计 ...

  5. Hibernate 之单向多对一映射及其衍生问题

    由于在数据表之间可以通过外键进行关联,在使用Hibernate操作映射到存在关联关系的数据表的对象时,需要将对象的关联关系与数据表的外键关联进行映射. 首先建立hibernate.cfg.xml和会话 ...

  6. Nuget~打包时添加powershell初始化脚本

    对于进行nuget打包时,有时我们需要添加一个配置文件,就是一些文本文件,而这些文件我们在网站发布时需要同时复制到输出目录,否则会出现文件丢失的问题,我们在打包时通过添加powershell脚本来解决 ...

  7. javacript 实现瀑布流原理和效果, 滚动加载图片【图文解析 附源码】

    先科普下瀑布流吧 瀑布流,又称瀑布流式布局.是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部.最早采用此布局的网站是Pin ...

  8. Android App的破解技术有哪些?如何防止反编译?

     现在最流行的App破解技术大多是基于一定相关技术的基础:如一定阅读Java代码的能力.有一些Android基础.会使用eclipse的一些Android调试的相关工具以及了解一些smali的语法规范 ...

  9. C#上传文件处理

    public class FileHelp : System.Web.UI.Page { /// <summary> /// 保存文件 /// 返回:数组:status[0]:文件名称:s ...

  10. 个人常用的win7 快捷键

    1.Win + D – 显示桌面 2.Win+L    锁定系统 3.Win + R – 打开运行窗口 4.Win+M     最小化所有窗口      当按下后当前所有窗口全都最小化.再次按下这个组 ...