WCF学习心得------(三)配置服务
配置服务
配置服务概述
在设计和实现服务协定后,便可以进行服务的配置。在其中可以定义和自定义如何向客户段公开服务,包括指定可以找到服务的地址,服务用于发送和接受消息的传输和消息编码,以及服务需要的安全类型。
配置服务类型
使用配置文件配置
1) 使用配置文件配置WCF服务,可提供在部署时而非设计时提供终结点和服务行为数据的灵活性
2) 可以使用.NET Framework配置技术对WCF服务进行配置。通常向承载WCF服务的Internet信息服务网站的Web.Config文件添加Xml元素。通过这些元素可以逐台计算机更改详细信息。此外WCF包括几个系统提供的元素,用于快速选择服务的最基本功能
3) WCF使用.NET Framework的System.Configuration配置系统
a) 使用IIs来承载服务--使用Web.Config文件
b) 使用其他宿主环境--或App.Config文件指定设置
服务节点配置图
Service元素
每个服务都有以下属性:
name:
制定提供服务协定的实现的类型,这是完全限定名称(命名空间.类型名称)
behaviorConfiguration:
指定一个在behaviors元素中找到的behavior元素的名称,制定的行为控制操作,例如服务是否允许模拟。
endpoint元素
每个终结点都需要以下属性表示的地址,绑定和协定:
Address
地址唯一标识终结点并告知潜在客户服务的所在位置。
指定服务的统一资源标识符(URI),它可以是一个绝对地址,或者是一个相对于服务基址给定的地址,如果设置为空字符串,则指示在创建服务的ServiceHost时,终结点在指定的基址上可用。
终结点地址的定义
终结点地址由EndpointAddress类表示,该类包含一个表示服务地址的统一资源定位符(URI)。
大多数传输的地址URI包含四个部分,如下:
Http://www.wiki.com:116/Hello.svc/HelloEndPoint
这个URI具有以下四个部分:
方案:http:
计算机:www.wiki.com
端口(可选):116
路径:/Hello.svc/HelloEndPoint
配置文件中配置终结点地址
代码中配置终结点地址
元数据终结点地址
WCF服务通过发布一个或多个元数据终结点来发布元数据。发布元数据之后,可以通过标准协议(例如:WS-MetadataExchage(MEX)、HTTP/GET请求)来使用该元数据。
元数据的终结点类似于其他服务终结点:它们都有一个地址、一个绑定、一个协定,并且它们都可以通过配置或使用代码添加到服务主机。
若要启用发布元数据终结点,必须将ServiceMetadataBehavior服务行为添加到该服务,默认情况下WCF服务不发布元数据终结点,所以必须将它们显示添加到服务才能为服务启用元数据发布。
元数据终结点示意图
Binding
绑定指定如何与终结点进行通信。
通常指定一个类似WsHttpBinding的系统提供的绑定,但是也可以指定一个用户自定义的绑定。指定的绑定确定传输协议类型,安全和使用的编码,以及是否支持或启用可靠会话、事务或流
bindingConfiguration
如果必须修改绑定的默认值,则可通过在bindings元素中配置相应的binding元素来执行此操作。此属性应赋予与用于更改默认值的binding元素的name属性相同的值。
contract
概述了终结点向客户端公开的功能。
指定定义协定的接口。这是在由service元素的name属性指定的公共语言运行库类型中实现的接口
Endpoint节点示意图
WCF基库中预定义的所有绑定说明图
Behavior元素示意图
绑定
绑定是用于指定连接到WCF服务终结点所必须的通信详细信息的对象,在WCF中每个终结点都要求正确指定绑定。
绑定必须指定要使用的传输(TCP、HTTP),还可通过绑定设置如安全、事务支持等其他特征。
绑定中的信息可简单也可复杂。最基本的绑定仅指定必须用于连接到终结点的传输协议(如THHP),一般来说,绑定包含的有关如何连接到终结点的信息属于以下类别中的一种。
协议
确定要使用的安全机制:可靠消息传递功能或事物上下文交流设置
编码
确定消息编码(例如:二进制或文本)
传输
确定要使用基础传输协议(例如:TCP、HTTP)
系统提供的绑定
上边已经提到了绑定的信息业可能很复杂,而且某些设置可能与其他设置不兼容,因此,WCF包含了一组系统提供的绑定,这些内置绑定基本可以满足大多数应用程序要求。一些绑定示例:
BasicHttpBinding
一个HTTP协议绑定,适用于连接到符合WS-I基本配置文件规范的Web服务(例如:基于ASP.NET Web服务的服务)。
WSHttpBinding
一个可互操作的绑定,适用于连接到符合WS-*协议的终结点。
NetNamedPipeBinding
使用.NET Framework 连接到同一计算机上的其他WCF终结点。
NetMsmqBinding
使用.NET Framework 创建与其他WCF终结点的排队消息连接。
使用自己的绑定
使用自己的绑定
如果系统提供的绑定都不具有服务应用程序所需的正确功能组合,则可以创建自己的绑定。方法如下:
1) 可以使用CustomBinding对象从预先存在的绑定元素创建新的绑定。
2) 也可以通过从Binding绑定派生来创建完全由用户定义的绑定。
使用绑定
使用绑定需要执行两个基本的步骤:
1) 选择或定义绑定,最简单方法是选择WCF包含的系统提供绑定中的一个,通过该绑定的默认设置来使用它。
2) 创建一个使用所选择或者定义的绑定的终结点。
定义绑定
可以通过代码或通过配置两种方式定义绑定,且这两种方法与您使用的是系统提供的绑定还是自定义绑定无关。
使用代码可以使在设计时对绑定的定义拥有完全的控制。使用配置则使系统管理员或WCF服务或客户端的用户可以更改绑定的参数,而不必重新编译服务应用程序,由于无法预测用于部署WCF应用程序的特定计算机要求,因为通常需要这种灵活性,通过将绑定(寻址)信息保存在代码外部,人们可以更改这些信息,而不必重新编译或重新部署应用程序。
在这里需要注意的是代码中定义的绑定是在配置中指定的绑定之后创建的,这使得代码定义的绑定可以覆盖配置中定义的任何绑定。
好了,这一节就到这里了,希望可以给大家带来一些帮助。因为这一节需要编码的东西不是很多,所以就没有具体的代码示例,只是截了图,关键在于理解。
WCF学习心得------(三)配置服务的更多相关文章
- WCF学习心得--客户端获取服务端自定义类数据
因项目需求,需要一个WCF服务,赶鸭子上架吧!下面直接切入正题! 首先创建WCF应用程序,具体如何创建就不赘述了,网上一大篇,我主要说说自己遇到的问题 问题一:超时问题,在最后获取数据的时候突然提示服 ...
- WCF学习心得----(三)服务承载
WCF学习心得----(三)服务承载 这一章节花费了好长的时间才整理个大概,主要原因是初次接触这个东西,在做练习实践的过程中,遇到了很多的问题,有些问题到目前还没有得以解决.所以在这一章节中,有一个承 ...
- WCF学习心得----(四)服务承载
WCF学习心得----(四)服务承载 这一章节花费了好长的时间才整理个大概,主要原因是初次接触这个东西,在做练习实践的过程中,遇到了很多的问题,有些问题到目前还没有得以解决.所以在这一章节中,有一个承 ...
- WCF学习心得----(五)生成客户端
WCF学习心得----(五)生成客户端 1. 通过Svcutil.exe工具直接生成客户端 1.1 将服务承载于IIS上 1.1.1 在IIS中新建网站,所示效果如下图: 1.1.2 ...
- WCF学习心得------(六)数据协定
--前言 最近各种事忙的把之前的WCF学习给耽误了一些,今天抽时间把之前的学习内容给总结了一下,因为知识点比较细碎没有做太多的练习示例,只是对其中关键的知识点做了总结,希望可以对大家有所帮助. 第六章 ...
- WCF 学习总结2 -- 配置WCF
前面一篇文章<WCF 学习总结1 -- 简单实例>一股脑儿展示了几种WCF部署方式,其中配置文件(App.config/Web.config)都是IDE自动生成,省去了我们不少功夫.现在回 ...
- 【WCF】WCF 附录 高级主题 配置服务配额设置
微软产品自带一个“默认安全”方案.这也包括了WCF,意味着WCF中的多种配置可以设置来阻止诸如DOS(拒绝服务访问)攻击.微软为很多基于一个单一计算机的开发环境选择这样的设置.这也意味着默认设置中的一 ...
- WCF学习心得------(二)设计和实现服务协定
设计和实现服务协定 创建服务协定—WCF术语 消息 消息是一个独立的数据单元,它可能由几个部分组成,包括消息正文和消息头. 服务 服务是一个构造,它公开一个或多个终结点,其中每个终结点都公开一个或多个 ...
- WCF学习系列三--【WCF Interview Questions – Part 3 翻译系列】
http://www.topwcftutorials.net/2012/10/wcf-faqs-part3.html WCF Interview Questions – Part 3 This WCF ...
随机推荐
- LRU
rsms/js-lru LRU缓存介绍与实现 (Java) 使用场景 缓存计算结果
- PAT (Basic Level) Practise:1006. 换个格式输出整数
[题目链接] 让我们用字母B来表示“百”.字母S表示“十”,用“12...n”来表示个位数字n(<10),换个格式来输出任一个不超过3位的正整数.例如234应该被输出为BBSSS1234,因为它 ...
- c# ICSharpCode.SharpZipLib.Zip实现文件的压缩
首先了解ZipOutPutStream和ZipEntry对象 ZipOutPutStream对象 如果要完成一个文件或文件夹的压缩,则要使用ZipOutputStream类.ZipOutputStre ...
- indexOf()的用法
indexOf()的用法:返回字符中indexof(string)中字串string在父串中首次出现的位置,从0开始!没有返回-1:方便判断和截取字符串! indexOf()定义和用法indexOf( ...
- pascal矩阵 分类: 数学 2015-07-31 23:01 3人阅读 评论(0) 收藏
帕斯卡矩阵 1.定义 帕斯卡矩阵:由杨辉三角形表组成的矩阵称为帕斯卡(Pascal)矩阵. 杨辉三角形表是二次项 (x+y)^n 展开后的系数随自然数 n 的增大组成的一个三角形表. 如4 ...
- leetcode 117 Populating Next Right Pointers in Each Node II ----- java
Follow up for problem "Populating Next Right Pointers in Each Node". What if the given tre ...
- JavaWeb学习记录(十九)——jstl自定义标签库之传统标签
一.传统标签 (1)JSP引擎将遇到自定义标签时,首先创建标签处理器类的实例对象,然后按照JSP规范定义的通信规则依次调用它的方法. public void setPageContext(PageCo ...
- 《Java程序设计》第4周学习总结
学号20145220 <Java程序设计>第4周学习总结 6.1.1 继承共同行为 •定义:继承基本上就是避免多个类间重复定义共同行为. •优点:1.提高了代码的复用性.2.让类与类之间产 ...
- poj1511 最短路
题意:与poj3268一样,所有人需要从各点到一点再从一点到各点,求最短路总和. 与poj3268一样,先正向建图跑 dijkstra ,得到该点到其他所有各点的最短路,即这些人回去的最短路,再用反向 ...
- 论文笔记之:Pedestrian Detection aided by Deep Learning Semantic Tasks
Pedestrian Detection aided by Deep Learning Semantic Tasks CVPR 2015 本文考虑将语义任务(即:行人属性和场景属性)和行人检测相结合, ...