一、概述

  配置也是WCF编程中的主要组成部分。在 以往的.net应用程序中,我们会把DBConn和一些动态加载类及变量写在配置文件里。但WCF有所不同。他指定向客户端公开的服务,包括服务的地址、 服务用于发送和接收消息的传输和消息编码,以及服务需要的安全类型等。使用配置文件后,我们无需编译即可修改WCF的变化的信息,提高了程序的灵活性。

  如果在代码里写了配置,那么配置文件将不起作用。

  Web程序在Web.config中配置,应用程序中在App.config中配置。

二、服务配置的主要部分

  在Config中配置服务的结点为:<system.serviceModel></system.serviceModel>,在这个节点中主要有三个平级的部分。如下代码所示:

 1 <?xml version="1.0" encoding="utf-8"?>
2 <configuration>
3 <system.serviceModel>
4
5 <!--配置服务和终结点开始-->
6 <services>
7 <service>
8 <endpoint></endpoint>
9 </service>
10 </services>
11 <!--配置服务和终结点结束-->
12
13 <!--配置绑定开始-->
14 <bindings>
15 <netTcpBinding>
16 <binding>
17 </binding>
18 </netTcpBinding>
19 </bindings>
20 <!--配置绑定结束-->
21
22 <!--配置行为开始-->
23 <behaviors>
24 <serviceBehaviors>
25 <behavior>
26 </behavior>
27 </serviceBehaviors>
28 </behaviors>
29 <!--配置行为结束-->
30
31 </system.serviceModel>
32 </configuration>

  Service配置节[必须有]:配置服务、接口和终结点。每个Service都会有以下两个属性。name:名称空间.类名[服务的具体实现类]。behaviorConfiguration:一个在behaviors节点中找到的名称。

  Binding配置节[可有可无]:配置绑定,如http,tcp等

  Behavior配置节[可有可无]:配置行为,如认证等。

三、实例

 1 <?xml version="1.0"?>
2 <configuration>
3 <system.serviceModel>
4
5
6 <!--服务-->
7 <services>
8 <!--name:名称空间.类型名-->
9 <!--behaviorConfiguration:behavior的名称,请看behavior配置节的名称-->
10 <service name="WCFLibrary.User" behaviorConfiguration="MyBehavior">
11 <host>
12 <baseAddresses>
13 <!-- 每种传输协议的baseAddress,用于跟使用同样传输协议Endpoint定义的相对地址组成完整的地址,
14 每种传输协议只能定义一个baseAddress。HTTP的baseAddress同时是service对外发布服务说明页面的URL -->
15 <add baseAddress="http://localhost:8732/Design_Time_Addresses/WCFLibrary/Service/"/>
16 </baseAddresses>
17 </host>
18 <!-- 除非完全限定,否则地址将与上面提供的基址相关,每个服务可以有多个Endpoint -->
19 <!-- Address:指定这个Endpoint对外的URI,这个URI可以是个绝对地址,也可以是个相对于baseAddress的
20 相对地址。如果此属性为空,则这个Endpoint的地址就是baseAddress-->
21 <!--bindingConfiguration:binding的名称,请看binding配置节的名称-->
22 <endpoint address="" binding="wsHttpBinding" contract="WCFLibrary.IUser" bindingConfiguration="myHttpBinding">
23 <identity>
24 <dns value="localhost"/>
25 </identity>
26 </endpoint>
27 <!-- 此终结点不使用安全绑定,应在部署前确保其安全或将其删除-->
28 <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
29 </service>
30 </services>
31
32
33 <!--绑定-->
34 <bindings>
35 <wsHttpBinding>
36 <binding name="myHttpBinding">
37 <security mode="None">
38 <message clientCredentialType="Windows" />
39 </security>
40 </binding>
41 </wsHttpBinding>
42 </bindings>
43
44
45 <!--行为-->
46 <behaviors>
47 <serviceBehaviors>
48 <behavior name="MyBehavior">
49 <!-- httpGetEnabled - bool类型的值,表示是否允许通过HTTP的get方法获取sevice的WSDL元数据 -->
50 <serviceMetadata httpGetEnabled="True"/>
51 </behavior>
52 </serviceBehaviors>
53 </behaviors>
54
55 </system.serviceModel>
56 </configuration>

四、版权

  转载请注明出处:http://www.cnblogs.com/iamlilinfeng

WCF入门教程四[WCF的配置文件]的更多相关文章

  1. 无废话WCF入门教程四[WCF的配置文件]

    一.概述 配置也是WCF编程中的主要组成部分.在以往的.net应用程序中,我们会把DBConn和一些动态加载类及变量写在配置文件里.但WCF有所不同.他指定向客户端公开的服务,包括服务的地址.服务用于 ...

  2. 【转】WCF入门教程四[WCF的配置文件]

    一.概述 配置也是WCF编程中的主要组成部分.在以往的.net应用程序中,我们会把DBConn和一些动态加载类及变量写在配置文件里.但WCF有所不同.他指定向客户端公开的服务,包括服务的地址.服务用于 ...

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

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

  4. WCF入门教程三[WCF的宿主]

    一.WCF服务应用程序与WCF服务库 我们在平时开发的过程中常用的项目类型有“WCF 服务应用程序”和“WCF服务库”. WCF服务应用程序,是一个可以执行的程序,它有独立的进程,WCF服务类契约的定 ...

  5. 无废话WCF入门教程三[WCF的宿主]

    一.WCF服务应用程序与WCF服务库 我们在平时开发的过程中常用的项目类型有“WCF 服务应用程序”和“WCF服务库”. WCF服务应用程序,是一个可以执行的程序,它有独立的进程,WCF服务类契约的定 ...

  6. 【转】WCF入门教程三[WCF的宿主]

    一.WCF服务应用程序与WCF服务库 我们在平时开发的过程中常用的项目类型有“WCF 服务应用程序”和“WCF服务库”. WCF服务应用程序,是一个可以执行的程序,它有独立的进程,WCF服务类契约的定 ...

  7. WCF入门教程1——WCF简要介绍

    什么是WCF Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台. 整合了原有的windo ...

  8. WCF入门教程3——WCF通信模式

    本章内容 请求/响应模式 单工模式 双工模式 WCF异步调用 请求与响应模式 请求/响应     请求/响应通信是指客户端向服务端发送消息后,服务端会向客户端发送响应.这也意味着在接收到服务的响应以前 ...

  9. WCF入门教程:WCF基础知识问与答(转)

    学习WCF已有近两年的时间,其间又翻译了Juval的大作<Programming WCF Services>,我仍然觉得WCF还有更多的内容值得探索与挖掘.学得越多,反而越发觉得自己所知太 ...

随机推荐

  1. Python入门(四,高级)

    一,面向对象 面向对象技术简介 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 类变量:类变量在整个实例化的对象中是公用的. ...

  2. 64位Ubuntu下的Eclipse、ADT终于可以生成R.java了,虚机也可以正常建立

    64位Ubuntu12下的Eclipse总也不能自动生成R.java,导致无法正常编译程序,建虚拟器的时候总是提示少文件....三天下班机器没关(无奈公司网络不给力)来安装lib包. 各种加载,总结一 ...

  3. HttpWebRequest 和HttpWebResponse总结

    1. 总结 总结2 3. Code using System; using System.Collections.Generic; using System.Linq; using System.Te ...

  4. ASP.NET定制简单的错误处理页面

    通常Web应用程序在发布后,为了给用户一个友好界面和使用体验,都会在错误发生时跳转至一个自定义的错误页面,而不是ASP.net向用户暴露出来的详细的异常列表. 简单的错误处理页面可以通过web.con ...

  5. linux下C语言中的flock函数用法 【转】

    表头文件  #include<sys/file.h> 定义函数  int flock(int fd,int operation); 函数说明  flock()会依参数operation所指 ...

  6. C++学习笔记1:高级语言

    笔记参考资料:http://www.learncpp.com/ 1.high languages:C,C++,Pascal,Java,Javascript,Perl... compiling proc ...

  7. 用中文把玩Google开源的Deep-Learning项目word2vec

    google最近新开放出word2vec项目,该项目使用deep-learning技术将term表示为向量,由此计算term之间的相似度,对term聚类等,该项目也支持phrase的自动识别,以及与t ...

  8. linux性能监控基础命令

    压力测试监控下系统性能方法之一 #top 该命令监控的是进程的信息 看图逐行意义 top:执行命令的之间 up:已经执行了277天 2users:目前有两个使用者,使用#who可以查看具体的使用者详情 ...

  9. Spring AOP配置文件

    在<aop:config>...</aop:config>报错: Multiple annotations found at this line: - cvc-complex- ...

  10. 面向过程部分 Java 和 C++ 的区别

    前言 Java 和 C++ 在面向过程部分区别并不大,但还是有的,本文罗列了这些区别. 在 Java 中: 1. 数据类型的范围和机器无关 2. 加上前缀 0b 可以表示二进制数,如 0b1001 就 ...