一、概述

  往往在很多项目中数据库连接字符串、变量和一些动态的加载类会写在配置文件中。WCF也会在配置文件中写入一些配置参数,比如服务的地址、服务用于发送和接收消息的传输和消息编码等,通过配置文件可以灵活的修改,不需要再编译。

二、终结点Endpoint

  首先我们需要了解WCF的一个概念就是终结点Endpoint,WCF服务通过定义一个或者多个终结点,当服务端和客户端的终结点相互匹配的时候才可以完成通信。终结点Endpoint由三部分组成Address、Binding和Contract。

  Address:直译就是地址,相当于URL,通过地址可以访问到WCF的服务。

  Binding:直译是绑定,绑定的是客户端和服务端底层的细节,比如传输的时候使用什么编码格式xml、text、二进制等。采用tcp还是http等等。

  Contract:就是契约,规定我们那些服务接口可以访问,那些不能访问。暴露WCF服务的某些方法。

  终结点的详细配置内容就是写在配置文件中,用于WCF实现多个应用程序之间的通信。

三、WCF配置文件的组成

  WCF的配置详情都在<system.serviceModel>节点下,下面是配置文件的示例,配置的节点有点多,这里主要描述<services>、<bindings>和<behaviors>这三个。更加深入的内容可以详见MSDN文档。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<behaviors>
<!-- List of Behaviors -->
</behaviors>
<client>
<!-- List of Endpoints -->
</client>
<diagnostics wmiProviderEnabled="false" performanceCountersEnabled="false" tracingEnabled="false">
</diagnostics>
<serviceHostingEnvironment>
<!-- List of entries -->
</serviceHostingEnvironment>
<comContracts>
<!-- List of COM+ Contracts -->
</comContracts>
<services>
<!-- List of Services -->
</services>
<bindings>
<!-- List of Bindings -->
</bindings>
</system.serviceModel>
</configuration>

  1.<services>

  该节点是必须有的,配置服务、接口和终结点。可以有多个service节点,每个service节点有name(服务的具体实现,格式应为 Namespace.Class.)和behaviorConfiguration(一个字符串,其中包含要用于实例化服务的行为(behavior)的行为名),并且可以在service节点下存在多个终结点<endpoint>。具体实例如下:

    <services>
<service name="WcfServiceLibrary1.Service1">
<host>
<baseAddresses>
<add baseAddress = "http://localhost:8733/Design_Time_Addresses/WcfServiceLibrary1/Service1/" />
</baseAddresses>
</host>
<!-- Service Endpoints -->
<!-- 除非完全限定,否则地址将与上面提供的基址相关 -->
<endpoint address="" binding="basicHttpBinding" contract="WcfServiceLibrary1.IService1">
<!--
部署时,应删除或替换下列标识元素,以反映
用来运行所部署服务的标识。删除之后,WCF 将
自动推断相应标识。
-->
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<!-- Metadata Endpoints -->
<!-- 元数据交换终结点供相应的服务用于向客户端做自我介绍。 -->
<!-- 此终结点不使用安全绑定,应在部署前确保其安全或将其删除-->
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>

  2.<bindings>

  此节包含标准绑定和自定义绑定的集合。每一项都是一个可由其唯一 name 进行标识的 binding 元素。服务通过用 name 与绑定进行链接来使用绑定。绑定包含以下元素:

  • 协议堆栈确定用于发送到终结点的消息的安全性、可靠性和上下文流设置。
  • 传输确定将消息发送到终结点时使用的基础传输协议,例如 TCP 或 HTTP。
  • 编码确定用于发送到终结点的消息的网络编码,例如,文本/XML、二进制或消息传输优化机制 (MTOM)。

  因为绑定的内容节点非常多,详细的还是看详细文档,这里只举一个实例:

<mexHttpBinding>
<binding
closeTimeout="TimeSpan"
name="string"
openTimeout="TimeSpan"
receiveTimeout="TimeSpan"
sendTimeout="TimeSpan">
</binding>
</mexHttpBinding>

  3.<behaviors>

  此元素定义名为 endpointBehaviors 和 serviceBehaviors 的两个子集合。每个集合分别定义终结点和服务所使用的行为元素。每个行为元素由其唯一的 name 特性标识。比如:是否允许客户端获得服务的元数据、路由修改、操作访问权限设置、服务的限制机制、服务请求的超时时间等。实例如下:

    <behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="True" httpsGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>

 四、其他

  新建一个WCF服务程序后会有一个Web.config文件有<system.serviceModel>配置节点,当一个控制台应用程序添加该服务引用后也会有App.config文件中也会有<system.serviceModel>节点。我们知道当服务端和客户端的终结点相互匹配的时候才可以完成通信,但是现在我们把服务端Web.config的<system.serviceModel>节点内容全部删除,然后将WCF应用服务程序发布到IIS上,之后还是可以在客户端成功访问该服务。这是因为IIS在默认监听http协议,那样就可以确定文件地址、绑定,找到了文件那接口契约什么的也都找得到了,所以这时候服务端配置文件不需要<system.serviceModel>也可以。

五、说明

  这个随笔是我自己学习流程的一个记录,和大家共勉。

WCF入门二[WCF的配置文件]的更多相关文章

  1. WCF入门三[WCF宿主]

    一.概述 WCF程序必须在宿主上运行,也就是WCF服务必须寄宿在某一个windows的进程中,可以是IIS.控制台程序.窗体程序.WAS以及所有.net程序等程序进程中.在我用VS2013创建WCF服 ...

  2. WCF入门一[WCF概述]

    一.什么是WCF WCF是使用托管代码建立和运行面向服务(Service Oriented)应用程序的统一框架.它使得开发者能够建立一个跨平台的.安全.可信赖.事务性的解决方案,且能与已有系统兼容协作 ...

  3. Spring boot 入门二:Spring Boot配置文件详解

    一.自定义属性 当我们创建一个springboot项目的时候,系统默认会为我们在src/main/java/resources目录下创建一个application.properties.同时也支持ym ...

  4. WCF入门教程[WCF基本应用]

    一.概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分.由 .NE ...

  5. WCF入门四[WCF的通信模式]

    一.概述 WCF的通信模式有三种:请求/响应模式.单向模式和双工通信. 二.请求/响应模式 请求/响应模式就是WCF的默认模式,前面几篇随笔中的示例都是这种模式,当客户端发送请求后(非异步状态下),即 ...

  6. 纯手写wcf代码,wcf入门,wcf基础教程

    1.定义服务协定     =>定义接口 using System.ServiceModel; namespace WcfConsole { /// <summary> /// 定义服 ...

  7. Spring Boot入门(二):获取配置文件值

    本篇博客主要讲解下在Spring Boot中如何获取配置文件的值. 1. 使用yaml配置文件 Spring Boot默认生成的配置文件为application.properties,不过它也支持ya ...

  8. WCF入门教程(四)通过Host代码方式来承载服务 一个WCF使用TCP协议进行通协的例子 jquery ajax调用WCF,采用System.ServiceModel.WebHttpBinding System.ServiceModel.WSHttpBinding协议 学习WCF笔记之二 无废话WCF入门教程一[什么是WCF]

    WCF入门教程(四)通过Host代码方式来承载服务 Posted on 2014-05-15 13:03 停留的风 阅读(7681) 评论(0) 编辑 收藏 WCF入门教程(四)通过Host代码方式来 ...

  9. WCF入门教程(五)配置文件

    WCF入门教程(五)配置文件 服务协定以及实现写好后,需要将相关服务公布出去,就需要HOST来承载,供客户端来调用. 承载服务有两种方式,一种通过配置文件,一种通过代码进行配置.上一章已经介绍了代码方 ...

随机推荐

  1. 由Asp.Net客户端控件生成的服务器端控件

    由Asp.Net客户端控件生成的服务器端控件(也就是给客户端控件添加 runnat="server"),这样的控件既能在js中通过id命.类名获取到,也能在服务器端根据id获取到

  2. 关于 supersocket 不能通过Bootstrap 启动

    App.config内容   <configSections> <section name="superSocket" type="SuperSocke ...

  3. Description Resource Path Location Type Java compiler level does not match the version of the installed Java project facet Unknown Faceted Project Problem (Java Version Mismatch)

    project 编译问题,需要三处的jdk版本要保持一致,才能编译通过. 1.在项目上右键properties->project Facets->修改右侧的version  保持一致 2. ...

  4. User Agent字符串列表

    User Agent字符串列表 --之心 User Agent中文名为用户代理,是Http协议中的一部分,属于头域的组成部分,User Agent也简称UA.它是一个特殊字符串头,是一种向访问网站提供 ...

  5. Django基础--3

    ORM django一对多的操作 获取表单的三种方式:views 获取对象            .all()      html中获取方式为 row.id,row,host 获取字典         ...

  6. 双网卡(一外一内)都启用,将内网卡默认网关去除即可正常连接Internet

  7. April 17 2017 Week 16 Monday

    You will find that it is necessary to let things go; simply for the reason that they are heavy. 你会明白 ...

  8. Android(java)学习笔记67:Android Studio新建工程中的build.gradle、settings.gradle

    随着信息化的快速发展,IT项目变得越来越复杂,通常都是由多个子系统共同协作完成.对于这种多系统.多项目的情况,很多构建工具都已经提供了不错的支持,像maven.ant.Gradle除了借鉴了ant或者 ...

  9. ABI与编译器:ABI是由内核和工具链定义和实现的

    http://book.51cto.com/art/201412/460857.htm <Linux系统编程(第2版)>第1章入门和基本概念,这一章着眼于Linux系统编程的基础概念并从程 ...

  10. svn更改地址怎么办

    开发过程中有时会遇到服务器更换地址的情况,比如之前地址是 svn://www.aaa.com 后来换成了 svn://www.bbb.com 这时候怎么办呢?分客户端和服务器端2种情况处理 客户端: ...