WCF编程系列(四)配置文件

时间:2021-10-10 02:35:04

WCF编程系列(四)配置文件

 

.NET应用程序的配置文件

前述示例中Host项目中的App.config以及Client项目中的App.config称为应用程序配置文件,通过该文件配置可控制程序的运行时 行为,相对于在设计时通过程序来设定运行时行为,配置文件具有更高的灵活性:我们无需重新编译程序即可修改应用程序行为。编译器最终会将 App.config编译成 [应用程序名称].exe.config 文件,并放在当前应用程序目录中。而对应Web应用程序(ASP.NET)其对应的配置文件为Web.config。

.NET存在一个默认的全局配置文件Machine.config,通常位于相应.Net Framework运行库目录下的Config目录中,如:C:\Windows\Microsoft.NET\Framework \v2.0.50727\CONFIG。.NET应用程序启动时,会将应用程序下的App.config与Machine.config合并 (App.config的配置会覆盖Machine.config配置)。

.NET配置文件是一个标准的XML文件,根节点为<configuration>,在该节点下包含多个.NET的配置节点

隐藏行号 复制代码 ? C#
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <configuration>
  3.   ......
  4. </configuration>

WCF配置文件结构

WCF配置位于应用程序配置文件中的<system.serviceModel>节点下,其主要内容如下:

隐藏行号 复制代码 ? C#
  1. <system.ServiceModel>
  2.   
  3.   <services>
  4.     <service>
  5.       <endpoint/>
  6.     </service>
  7.   </services>
  8.  
  9.   <bindings>
  10.     <binding>
  11.     </binding>
  12.   </bindings>
  13.  
  14.   <behaviors>
  15.     <behavior>
  16.     </behavior>
  17.   </behaviors>
  18.   <client>
  19.     <endpoint/>
  20.   </client>
  21. </system.ServiceModel>

<services>节点

该节点下包含应用程序承载的所有服务规范,由多个<service>节点组成。

<service>节点

一个<service>定义一个服务,该节点包含两个属性:name,指定提供服务契约实现的类型,是一个完全限定名称(即包括命名空间和类 型名称),如示例一中指定的Xfrog.Study.WCF.FirstService;behaviorConfiguration,指定服务的行为控 制配置名称,该名称和<behaviors>下<behavior>节点的name属性对应,如示例一中的 behaviorConfiguration。

<endpoint>节点

<service>节点下可包含多个<endpoint>节点,每个节点包含以下属性,用以指定终结点的地址、绑定及契约:

address属性,一个URI用以指定服务的地址,它可以是相对地址也可以是绝对地址,如果指定的是相对地址,其基地址取<service><host><baseAddresses>下定义的地址,如示例一中的定义。

binding属性,指定一个绑定,通常是WCF中预定义绑定,当然也可以指定一个自定义的绑定。

contract属性,指定一个契约,通常为通过ServiceContract特性定义的接口或类型,同样是一个完全限定名称,如示例一中的Xfrog.Study.WCF.IFirstService。

bindingConfiguration属性,如果需要修改绑定的默认行为,则需要在bindings节点下,预定义绑定对应的绑定配置节点(参见 【WCF编程系列(三)】中的预定义绑定列表)下的<binding>节点来指定,该节点的name属性和此处 bindingConfiguration属性对应,如示例一中Client项目中的绑定:

隐藏行号 复制代码 ? C#
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <configuration>
  3.   <system.serviceModel>
  4.     <bindings>
  5.       <basicHttpBinding> 
  6.         <binding name="BasicHttpBinding_IFirstService" ....>
  7.           ....
  8.         </binding>
  9.       </basicHttpBinding>
  10.     </bindings>
  11.     <client>
  12.       <endpoint  binding="basicHttpBinding"
  13.           bindingConfiguration="BasicHttpBinding_IFirstService" contract="IFirstService"
  14.           name="BasicHttpBinding_IFirstService" />
  15.     </client>
  16.   </system.serviceModel>
  17. </configuration>

<endpoint>中bindingConfigration设置为BasicHttpBinding_IFirstService,对应于<bindings><basicHttpBinding><binding name="BasicHttpBinding_IFirstService"….>中的定义,而<basicHttpBinding>配置节点对应的是basicHttpBinding预定义绑定。

<client>节点

该节点用于客户端的配置,在该节点下指定客户端需调用的终结点定义。

使用WCF配置编辑器

前面示例中我们都是通过手动输入的配置内容,实际上Visual Studio 2008 为我们提供了一个WCF配置编辑器,在VS中选择工具菜单—>WCF服务配置编辑器可启动它,如果项目中已经存在App.config文件,则可直 接在该文件上单击右键,选择编辑WCF配置来启动编辑器。

WCF编程系列(四)配置文件的更多相关文章

  1. WCF编程系列&lpar;六&rpar;以编程方式配置终结点

    WCF编程系列(六)以编程方式配置终结点   示例一中我们的宿主程序非常简单:只是简单的实例化了一个ServiceHost对象,然后调用open方法来启动服务.而关于终结点的配置我们都是通过配置文件来 ...

  2. WCF编程系列&lpar;五&rpar;元数据

    WCF编程系列(五)元数据   示例一中我们使用了scvutil命令自动生成了服务的客户端代理类: svcutil http://localhost:8000/?wsdl /o:FirstServic ...

  3. WCF编程系列&lpar;二&rpar;了解WCF

    WCF编程系列(二)了解WCF   面向服务     服务是复用进化的结果,起初的复用是函数,面向对象编程的出现使复用从函数上升到对象,随后面向组件编程又将复用从对象上升到组件,现在面向服务编程将复用 ...

  4. WCF编程系列&lpar;三&rpar;地址与绑定

    WCF编程系列(三)地址与绑定   地址     地址指定了接收消息的位置,WCF中地址以统一资源标识符(URI)的形式指定.URI由通讯协议和位置路径两部分组成,如示例一中的: http://loc ...

  5. WCF编程系列&lpar;一&rpar;初识WCF

    WCF编程系列(一)初识WCF   Windows Communication Foundation(WCF)是微软为构建面向服务的应用程序所提供的统一编程模型.WCF的基本概念:  地址:定义服务的 ...

  6. WCF编程系列&lpar;七&rpar;信道及信道工厂

    WCF编程系列(七)信道及信道工厂   信道及信道栈 前面已经提及过,WCF中客户端与服务端的交互都是通过消息来进行的.消息从客户端传送到服务端会经过多个处理动作,在WCF编程模型中,这些动作是按层 ...

  7. C&num;中的函数式编程:递归与纯函数(二) 学习ASP&period;NET Core Razor 编程系列四——Asp&period;Net Core Razor列表模板页面

    C#中的函数式编程:递归与纯函数(二)   在序言中,我们提到函数式编程的两大特征:无副作用.函数是第一公民.现在,我们先来深入第一个特征:无副作用. 无副作用是通过引用透明(Referential ...

  8. 学习ASP&period;NET Core Razor 编程系列四——Asp&period;Net Core Razor列表模板页面

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  9. WCF学习系列四--【WCF Interview Questions – Part 4 翻译系列】

    WCF Interview Questions – Part 4   This WCF service tutorial is part-4 in series of WCF Interview Qu ...

随机推荐

  1. 【转】设计模式(九)外观模式Facade(结构型)

    设计模式--外观模式Facade(结构型): 1. 概述 外观模式,我们通过外观的包装,使应用程序只能看到外观对象,而不会看到具体的细节对象,这样无疑会降低应用程序的复杂度,并且提高了程序的可维护性. ...

  2. 【转载】看懂SqlServer查询计划

    看懂SqlServer查询计划 阅读目录 开始 SQL Server 查找记录的方法 SQL Server Join 方式 更具体执行过程 索引统计信息:查询计划的选择依据 优化视图查询 推荐阅读-M ...

  3. Objective-C 计算代码运行时间

    今天看到一篇关于iOS应用性能优化的文章,其中提到计算代码的运行时间,觉得非常有用,值得收藏.不过在模拟器和真机上是有差异的,以此方法观察程序运行状态,提高效率. 第一种:(最简单的NSDate) N ...

  4. strncpy和strcpy

    实体化代码运行图: 实现代码: #include <stdio.h> #include <string.h> #include <math.h> #include ...

  5. 完全用Linux工作,抛弃windows

    录一篇旧文 作者:王垠 完全用Linux工作,抛弃windows 我已经半年没有使用 Windows 的方式工作了.Linux 高效的完成了我所有的工作. GNU/Linux 不是每个人都想用的.如果 ...

  6. find the greatest common divisor

    function gcd(a, b) return a else return gcd(b, a mod b)

  7. struts2整合JFreechart 饼图、折线图、柱形图

    struts2整合JFreechart 饼图.折线图.柱形图 上效果图: 当然可以将数据导出图片格式存储.具体下的链接里的文件有保存成图片的操作. 因为是strust2整合JFreechart,所以s ...

  8. Swift - 使用导航条和导航条控制器来进行页面切换并传递数据

    转自:http://www.hangge.com/blog/cache/detail_586.html

  9. Android开发技巧——定制仿微信图片裁剪控件

    拍照--裁剪,或者是选择图片--裁剪,是我们设置头像或上传图片时经常需要的一组操作.上篇讲了Camera的使用,这篇讲一下我对图片裁剪的实现. 背景 下面的需求都来自产品. 裁剪图片要像微信那样,拖动 ...

  10. 通过sort&lpar;&rpar;方法实现升序和降序排列

    数组 升序:Arrays.sort(arr); 降序: 方法一:Arrays.sort(arr,Collections.reverseOrder()); 方法二: package com.yh.sor ...