WCF系列教程之WCF服务配置

文本参考自: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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏玩转JavaEE

elasticsearch修改数据

上篇文档向读者介绍了Elasticsearch提供的强大的REST API的基本用法,不过这些API的用法都很基础,本文将和读者继续分享更多的API。

3422
来自专栏安恒网络空间安全讲武堂

python使用pexpect实现ftp的操作

1666
来自专栏xingoo, 一个梦想做发明家的程序员

《linux c编程指南》学习手记5

8.1 流简介 打开:fopen()   标准输入、标准输出、标准错误   关闭:fclose(); 8.2.1 流的打开与关闭 fopen  打开特定的文件 ...

1808
来自专栏Java帮帮-微信公众号-技术文章全总结

高级框架-Struts2-day01【悟空教程】

Struts2是一种基于MVC模式的轻量级Web框架,它自问世以来,就受到了广大Web开发者的关注,并广泛应用于各种企业系统的开发中。目前掌握Struts2框架...

993
来自专栏PHP在线

你真的了解php吗?

一、特性 1. 命名空间 命名空间用的比较多,不详细写了,记录几个值得注意的实践和细节。 多重导入 别这么做,这样写容易让人困惑。 <?php use Symf...

3715
来自专栏Java后端技术

一段奇妙的vim编辑器之旅

  对于Linux服务器上的操作,我们往往少不了使用vim,而有时候我对vim的使用并没有那么的熟练和深入,这周就深入的学习了vim的使用,包括入门和进阶,先分...

833
来自专栏java思维导图

【读书笔记】1.1-基于TCP协议的RPC

1.1.1RPC名词解释 概念 全称Remote Process Call,即远程过程调用 rpc的实现包括服务的调用方和服务的提供方 过程 服务调用方发送RP...

2773
来自专栏闻道于事

Linux-看完这篇Linux基本的操作就会了

2633
来自专栏Java 技术分享

IDEA 下新建 Hibernate 项目

3569
来自专栏章鱼的慢慢技术路

Linux编程_Shell脚本练习题

1732

扫码关注云+社区

领取腾讯云代金券