WCF 配置系列(一)
我们在做WCF项目时,经常要编写WCF的服务端和客户端,也要涉及一些配置。我从网上看了些文章,现在进行罗列,供大家交流。
一 、服务端配置
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<compilation debug="true" />
</system.web>
<system.ServiceModel>
<services>
<service>
<host/>
<endpoint/>
</service>
</services>
<behaviors>
<behavior>
</behavior>
</behaviors>
<bindings>
<binding>
</binding>
</bindings>
</system.ServiceModel>
</configuration>
1.<System.ServiceModel>配置节包含了所有的WCF配置信息,其位于根配置节Configuration之下。
ServiceModel节点有3个部分
- <Services>节点
- <Behaviors>节点
- <Bindinds>节点
(一)<Services>节点
<Services>节点下,可以有很多个<service>节点。
<service>节点有两个属性:name和behaviorConfiguration.
1.Name属性是必须配置的,它的值应该是实现服务的类的名称,并包含它的命名空间在内(即命名空间+类名)。
2.BehaviorConfiguration属性用来指定服务的行为名称,可以为空(这里的Behavior,其实是 Service Behavior,后面我会介绍endpointBehaviors)。BehaviorConfiguration属性的值应该在后面的<behviors>配置节下被定义,否则WCF服务端将无法启动。
3.在<service>标签下,还需要包含一些子节点来定义服务的信息。
<host>
<baseAddresses>
<add baseAddress=""/>
</baseAddresses>
</host>
<endpoint address="" binding="wsHttpBinding" contract="" bindingConfiguration="" />
<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>
3.1<host>节点,这个节点指定服务的宿主信息。下面对部分节点做个说明:
A.<baseAddresses>节点:指定服务的访问地址。使用<add baseAddress=""/>标签进行地址的添加,可以添加多个地址。根据WCF宿主程序的不同,地址会有不同的形式。
B.<timeouts>节点:用来指定服务启动或关闭的间隔。可以使用closeTimeout 和 openTimeout两个属性进行控制。
C.<endpoint>节点:WCF需要在endpoint节点中指定服务指定的服务契约类型、通信绑定(Binding)和Behavior的绑定。<endpoint>节点有如下的属性用来指定上述信息。
<address>:指定enpoint的地址。地址必须为合法的Url格式,可以使相对路径也可以是绝对路径。address属性值可以为空,但是这个属性必须存在。如果address值为空,那么地址就是之前定义的baseAddresses中的地址。
<bindingConfiguration>:可选属性。除非有自定义的绑定策略,否则不要设置这个值。
<bingding>:指定使用的绑定策略,此属性为必要属性。使用的绑定策略师<binding>节点下定义的。
<contract>:该属性也是必须属性。它指定服务契约的类型,推荐使用接口来定义契约,并在这里使用接口的全名称。(如果不是有接口定义,也可以使用命名空间+类名来定义)。
<behaviorConfiguration>:可选属性,指定要使用的behavior配置的名称。
一个应用程序可以配置多个<endpoint>.
一切总是平衡的,这里少,那里补上!