一、概述

  往往在很多项目中数据库连接字符串、变量和一些动态的加载类会写在配置文件中。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. 将零散文件使用ICSharpCode.SharpZipLib压缩打包后一次性下载

    public static Stream CreateZip(List<string> listPath, int level = 5) { MemoryStream mstream = ...

  2. centos7 mod_gearman 3.0.1 打包rpm

    wget https://github.com/sni/mod_gearman/archive/v3.0.1.tar.gz -O /root/rpmbuild/SOURCES/mod_gearman- ...

  3. php的yii框架开发总结5

    MVC架构之model类: 我的日报系统用到的数据表:tbl_dailyreport表 其中anthor_id是外键,对应tbl_user数据表的主键id,下面是tbl_user表 class Dai ...

  4. VM(xp系统下用虚拟机安装win8 提示 :units specified don't exist, SHSUCDX can't install)解决方法

    改成IDE的模式

  5. 腾讯云“动态加速”与“CDN”的区别——浅谈对“动态加速”的理解(可能有误)

    CDN的劣势及“动态加速”产生背景 通常CDN对静态内容支持较好,若使用其加速动态内容,可能会导致异常(如导致无法登录).当然,可以将动态内容的在CDN节点上的缓存时间设置为0秒来解决.但这毕竟是用户 ...

  6. PointCNN 论文翻译解析

    1. 前言 卷积神经网络在二维图像的应用已经较为成熟了,但 CNN 在三维空间上,尤其是点云这种无序集的应用现在研究得尤其少.山东大学近日公布的一项研究提出的 PointCNN 可以让 CNN 在点云 ...

  7. C语言中的特殊变量

    auto: 函数中的局部变量,动态地分配存储空间,数据存储在动态存储区中,在调用该函数时系统会给它们分配存储空间,在函数调用结束时就自动释放这些存储空间. register: 为了提高效率,C语言允许 ...

  8. SVN建立分支、代码合并以及常用操作

    在项目开发的过程中,现在遇到这样一个问题: 现在是9月份,在同一个项目中我要开发A.B两个模块,A模块是11月份上线,B模块是12月份上线,但是SVN上的trunk(主干)上的代码必须是上线的. 假设 ...

  9. http协议的发展历史

    在最早的时候,第一个定稿的http协议是http/0.9版本,在这个版本里面,http协议,它的内容,非常非常的简单 只有一个命令,就是GET 对应的就是我们现在经常用到的get请求,post请求,这 ...

  10. wcf 的小介绍

    http://www.cnblogs.com/scottckt/archive/2010/10/15/1852136.html