WCF入门教程【配置文件】
来源:互联网 发布:福建随行软件下载 编辑:程序博客网 时间:2024/06/07 03:44
服务协定以及实现写好后,需要将相关服务公布出去,就需要HOST来承载,供客户端来调用。
承载服务有两种方式,一种通过配置文件,一种通过代码进行配置。上一章已经介绍了代码方式来架设服务。
当然配置文件的方式还是很灵活,应用广泛。
通过此文章具体介绍WCF如果通过配置文件的方式进行配置。
一、配置文件功能
需要配置服务的EndPoint,设置相关绑定协议以及服务协定,并且还可以限定其具体的行为等。
二、配置文件结构
主要配置内容包括service节点、binding和behavior节点,还有其他的一些节点这里暂时不展开讨论。
<?xml version="1.0" encoding="utf-8" ?><configuration> <!-- 部署服务库项目时,必须将配置文件的内容添加到 主机的 app.config 文件中。System.Configuration 不支持库的配置文件。--> <system.serviceModel> <!--配置服务节点Start--> <services> <!--配置某一服务,在这里可以指定服务名称--> <service name="SecondWCFSample.Service1"> </service> </services> <!--配置服务节点End--> <!--配置绑定节点Start--> <bindings> <basicHttpBinding></basicHttpBinding> <mexHttpBinding></mexHttpBinding> <wsHttpBinding></wsHttpBinding> </bindings> <!--配置绑定节点End--> <!--配置行为节点Start--> <behaviors> <serviceBehaviors> <behavior> </behavior> </serviceBehaviors> </behaviors> <!--配置行为节点End--> <!--路由设置Start--> <routing> <filters> <filter name="filter1" filterType="Action"/> </filters> </routing> <!--路由设置End--> </system.serviceModel></configuration>
三、具体配置说明
1、Service节点
属性说明:
name - 指定这个service配置是针对的那个服务,为一个实现了某些Contract的服务类的完全限定名(名称空间.类型名),ServiceHost载入一个服务后,会到配置文件中的下找有没有name属性跟服务匹配的的配置
behaviorConfiguration - 指定在下的一个的name,这个特定给这个service制定了一些行为,比如服务是否允许身份模拟–>
案例:
<!--属性设置,name:服务的完全限定名,命名空间+实现类名;behaviorConfiguration行为配置,取设置的behavior的名称,具体可见behaviors节点--><service name="SecondWCFSample.Service1" behaviorConfiguration="basicBehavior"></service>
2、Endpoint节点
定义endpoint,指定三个要素ABC,地址(Address),绑定(Binding)以及协定(Contract)。
案例:
<!--定义endpoint,指定地址(address),绑定(binding)以及协定(contract)--> <!-- 属性说明: address - 服务端地址,相对于baseAddress的相对地址,如果为空则为baseAddress,也可以设定为绝对地址 binding - 绑定协议,系统的某一协议,basicHttpBinding,mexHttpBinding,wsHttpBinding等 contract - 协议完全限定名(名称空间.类型名) name - 客户端代理类的构造方法中的endpointConfigurationName对应到这个name bindingConfiguration - 指定客户端binding的具体设置,指向<bindings>元素下同类型binding的name --> <endpoint address ="" binding="wsHttpBinding" contract="SecondWCFSample.IService1"> <!--服务标识。 部署时,应删除或替换下列标识元素,以反映用来运行所部署服务的标识。删除之后,WCF将自动推断相应标识。--> <identity> <dns value="localhost"/> </identity> </endpoint>
3、Binding
绑定可指定在与终结点通话时所使用的通信机制,并指示如何连接到终结点。
绑定包含以下元素:
协议堆栈确定用于发送到终结点的消息的安全性、可靠性和上下文流设置。 传输确定将消息发送到终结点时使用的基础传输协议,例如 TCP 或 HTTP。 编码确定用于发送到终结点的消息的网络编码,例如,文本/XML、二进制或消息传输优化机制 (MTOM)。
具体的binding,功能不同,设置的属性不同,具体参照以下
<!--配置绑定节点Start--> <bindings> <basicHttpBinding> <binding name="basic" transferMode="Streamed" messageEncoding="Text" allowCookies="false" textEncoding=""></binding> </basicHttpBinding> <netTcpBinding> </netTcpBinding> <customBinding> </customBinding> </bindings> <!--配置绑定节点End-->
4、Behavior节点
behavior设置服务的运行时行为,比如:是否允许客户端获得服务的元数据、路由修改、操作访问权限设置、服务的限制机制、服务请求的超时时间等。
Behavior的具体含义可见:
WCF入门教程(一)简介
http://www.cnblogs.com/yank/p/3653160.html
案例:
<!--配置行为节点Start--> <behaviors> <serviceBehaviors> <behavior name="basicBehavior"> <!-- 为避免泄漏元数据信息, 请在部署前将以下值设置为 false 并删除上面的元数据终结点 --> <serviceMetadata httpGetEnabled="True"/> <!-- 要接收故障异常详细信息以进行调试, 请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息--> <serviceDebug includeExceptionDetailInFaults="False" /> </behavior> </serviceBehaviors> </behaviors> <!--配置行为节点End-->
具体子节点功能介绍如下:
详细可见:
http://msdn.microsoft.com/zh-cn/library/aa967282(v=vs.100).aspx
四、完整实例
<?xml version="1.0" encoding="utf-8" ?><configuration> <system.web> <compilation debug="true" /> </system.web> <!-- 部署服务库项目时,必须将配置文件的内容添加到 主机的 app.config 文件中。System.Configuration 不支持库的配置文件。--> <system.serviceModel> <!--配置服务节点Start--> <services> <!--配置某一服务,在这里可以指定服务名称--> <!--属性设置,name:服务的完全限定名,命名空间+实现类名;behaviorConfiguration行为配置,取设置的behavior的名称,具体可见behaviors节点--> <service name="SecondWCFSample.Service1" behaviorConfiguration="basicBehavior"> <!--主机地址--> <host> <!--基址,访问某服务地址的基址--> <baseAddresses> <add baseAddress = "http://localhost:8732/Design_Time_Addresses/SecondWCFSample/Service1/" /> </baseAddresses> <!--访问超时时间--> <timeouts /> </host> <!-- Service Endpoints --> <!-- 除非完全限定,否则地址将与上面提供的基址相关 --> <!--定义endpoint,指定地址(address),绑定(binding)以及协定(contract)--> <!-- 属性说明: address - 服务端地址,相对于baseAddress的相对地址,如果为空则为baseAddress,也可以设定为绝对地址 binding - 绑定协议,系统的某一协议,basicHttpBinding,mexHttpBinding,wsHttpBinding等 contract - 协议完全限定名(名称空间.类型名) name - 客户端代理类的构造方法中的endpointConfigurationName对应到这个name bindingConfiguration - 指定客户端binding的具体设置,指向<bindings>元素下同类型binding的name --> <endpoint address ="" binding="wsHttpBinding" contract="SecondWCFSample.IService1"> <!--服务标识。 部署时,应删除或替换下列标识元素,以反映用来运行所部署服务的标识。删除之后,WCF将自动推断相应标识。--> <identity> <dns value="localhost"/> </identity> </endpoint> <!-- Metadata Endpoints --> <!-- 元数据交换终结点供相应的服务用于向客户端做自我介绍。 --> <!-- 此终结点不使用安全绑定,应在部署前确保其安全或将其删除--> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> </service> </services> <!--配置服务节点End--> <!--配置绑定节点Start--> <bindings> <basicHttpBinding> <binding name="basic" transferMode="Streamed" messageEncoding="Text" allowCookies="false"></binding> </basicHttpBinding> <netTcpBinding> </netTcpBinding> <customBinding> </customBinding> </bindings> <!--配置绑定节点End--> <!--配置行为节点Start--> <behaviors> <serviceBehaviors> <behavior name="basicBehavior"> <!-- 为避免泄漏元数据信息, 请在部署前将以下值设置为 false 并删除上面的元数据终结点 --> <serviceMetadata httpGetEnabled="True"/> <!-- 要接收故障异常详细信息以进行调试, 请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息--> <serviceDebug includeExceptionDetailInFaults="False" /> <!----> <serviceSecurityAudit auditLogLocation="Security"/> <!--服务终结点的可发现性--> <serviceDiscovery> <announcementEndpoints> </announcementEndpoints> </serviceDiscovery> <!--maxItemsInObjectGraph指定要序列化或反序列化的最大项数--> <dataContractSerializer maxItemsInObjectGraph="1048576"/> </behavior> </serviceBehaviors> </behaviors> <!--配置行为节点End--> <!--路由设置Start--> <routing> <filters> <filter name="filter1" filterType="Action"/> </filters> </routing> <!--路由设置End--> </system.serviceModel></configuration>
五、其他配置
关于其他配置项,研究比较深入的朋友可以参见MSDN详细文档
http://msdn.microsoft.com/zh-cn/library/ms731354(v=vs.100).aspx
- WCF入门教程【配置文件】
- WCF入门教程(五)配置文件
- WCF入门教程四[WCF的配置文件]
- WCF入门教程四[WCF的配置文件]
- 无废话WCF入门教程四[WCF的配置文件]
- 无废话WCF入门教程四[WCF的配置文件]
- 无废话WCF入门教程四[WCF的配置文件]
- 无废话WCF入门教程四[WCF的配置文件]
- 无废话WCF入门教程四[WCF的配置文件]
- WCF入门教程——WCF的配置文件(四)
- 无废话WCF入门教程四[WCF的配置文件]
- 无废话WCF入门教程四[WCF的配置文件]
- 无废话WCF入门教程四[WCF的配置文件]
- WCF入门教程
- WCF入门教程
- WCF入门教程
- WCF入门教程
- WCF入门教程
- jquery用法--删除元素
- 如何实现session共享
- EIDE助手更新进度(详细更新记录)
- Python:pygame 作用
- 支持onload()事件的 HTML 标签
- WCF入门教程【配置文件】
- 17.1.17 B组总结
- C#+三层+会员管理系统源码供大家学习参考,有不足之处还请指出
- Core Graphics与OpenGL的关系
- poj2676
- rdlc报表预览打印
- ubuntu1404安装简记
- Codecraft-17 and Codeforces Round #391 (Div. 1 + Div. 2, combined) C. Felicity is Coming!
- HttpClient 实现get和post请求的过程