当今的软件系统开发,如果没有配置文件几乎是不可想象的事。没有配置文件,软件如何按照用户的要求对功能进行定制?没有配置文件,在对软件进行配置安装的时候如何根据具体的硬软件环境进行修改?最重要的是没有配置文件,该如何应对软件系统的可扩展要求?不知不觉地,配置文件的编写与管理竟然成了软件开发的重中之重。
WCF作为分布式开发的基础框架,在定义服务以及定义消费服务的客户端时,都使用了配置文件的方法。虽然WCF也提供硬编程的方式,通过在代码中直接设置相关对象的属性来完成服务端与客户端的配置,然而这种方式并不利于后期的更改。无疑,配置文件为WCF带来了软件开发的灵活性,它的使用也是WCF开发过程中最频繁的。
WCF的配置文件共分为两部分:服务端配置与客户端配置。两者由于功能的不同,在配置文件的使用上也略有不同。
1.WCF的服务端配置
服务端的配置文件主要包括endpoint、binding、behavior的配置。一个标准的服务端配置文件所包含的主要xml配置节如下所示:
<system.ServiceModel>
<services>
<service>
<endpoint/>
</service>
</services>
<bindings>
<!—定义一个或多个系统提供的binding元素,例如<basicHttpBinding> -->
<!—也可以是自定义的binding元素,如<customBinding>. -->
<binding>
<!—例如<BasicHttpBinding>元素. -->
</binding>
</bindings>
<behaviors>
<!—一个或多个系统提供的behavior元素. -->
<behavior>
<!—例如<throttling>元素. -->
</behavior>
</behaviors>
</system.ServiceModel>
1.1 <services>配置节
在<services>配置节中可以定义多个服务,每一个服务都被放到<service>配置节中,WCF的宿主程序可以通过配置文件找到这些定义的服务并发布这些服务。
<service>配置节包含name和behaviorConfiguration属性。其中,name配置了实现Service Contract的类型名。类型名必须是完整地包含了命名空间和类型名。而behaviorConfiguration的配置值则与其后的<behaviors>配置节的内容有关。<endpoint>是<service>配置节的主体,其中,<endpoint>配置节包含了endpoint的三个组成部分:Address、Binding和Contract。由于具体的binding配置是在<bindings>配置节中完成,因而,在<endpoint>中配置了bindingConfiguration属性,指向具体的binding配置。如下所示:
<services>
<service name="BruceZhang.MyService" behaviorConfiguration="MyBehavior">
<endpoint address=""
binding="netTcpBinding"
bindingConfiguration="DuplexBinding"
contract="BruceZhang.IHello" />
</service>
</services>
我们也可以定义多个endpoint,例如:
<services>
<service
name="Microsoft.ServiceModel.Samples.CalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<endpoint address=""
binding="wsHttpBinding"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
<endpoint address="mex"
binding="mexHttpBinding"
contract=" Microsoft.ServiceModel.Samples.IMetadataExchange" />
</service>
</services>
如果address值为空,那么endpoint的地址就是默认的基地址(Base Address)。例如ICalculator服务的地址就是http://localhost/servicemodelsamples/service.svc,而IMetadataExchange服务的地址则为http://localhost/servicemodelsamples/service.svc/mex。这里所谓的基地址可以在<service>中通过配置<host>来定义:
<service
name="Microsoft.ServiceModel.Samples.CalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<host>
<baseAddresses>
<add baseAddress=
"http://localhost/ServiceModelSamples/service.svc"/>
</baseAddresses>
</host>
<endpoint … />
</service>
1.2 <behaviors>配置节
当我们在定义一个实现了Service Contract的类时, binding和address信息是客户端必须知道的,否则无法调用该服务。然而,如果需要指定服务在执行方面的相关特性时,就必须定义服务的behavior。在WCF中,定义behavior就可以设置服务的运行时属性,甚至于通过自定义behavior插入一些自定义类型。例如通过指定ServiceMetadataBehavior,可以使WCF服务对外公布Metadata。配置如下:
<behaviors>
<serviceBehaviors>
<behavior name="metadataSupport">
<serviceMetadata httpGetEnabled="true" httpGetUrl=""/>
</behavior>
<serviceBehaviors>
<behaviors>
在WCF中,behavior被定义为Attribute,其中,System.ServiceModel.ServiceBehaviorAttribute和System.ServiceModel.OperationBehaviorAttribute是最常用的behavior。虽然,behavior作为Attribute可以通过编程的方式直接施加到服务上,但出于灵活性的考虑,将behavior定义到配置文件中才是最好的设计方式。
利用ServiceBehavior与OperationBehavior可以控制服务的如下属性:
1、 对象实例的生命周期;
2、 并发与异步处理;
3、 配置行为;
4、 事务行为;
5、 序列化行为;
6、 元数据转换;
7、 会话的生命周期;
8、 地址过滤以及消息头的处理;
9、 模拟(Impersonation);
例如,通过ServiceBehavior设置对象实例的生命周期:
<behaviors>
<serviceBehaviors>
<behavior name="metadataSupport">
<instanceContextMode httpGetEnabled="true" httpGetUrl=""/>
</behavior>
<serviceBehaviors>
<behaviors>
分享到:
相关推荐
### WCF配置文件全攻略 #### 一、WCF配置文件的重要性 在现代软件系统开发中,配置文件扮演着至关重要的角色。它不仅能够帮助软件按照用户的具体需求进行功能定制,还能让开发者根据不同的硬件和软件环境灵活调整...
**WCF配置文件详解** Windows Communication Foundation (WCF) 是微软提供的一种用于构建分布式应用程序的框架,它允许服务提供者和服务消费者之间进行通信。在WCF中,配置文件扮演着至关重要的角色,提供了灵活的...
WCF配置文件工具则是用来管理和编辑WCF服务的配置文件,它简化了配置过程,使得开发者能够更方便地调整服务的行为、绑定、终结点和其他关键设置。 在WCF中,配置文件通常是XML格式的,名为`app.config`或`web....
WCF配置文件注释
c#技术,wcf的app.config 的配置,可以替代webservice
WCF配置文件编辑器,VS自带的。VS2008中那个有点bug从vs2010拷贝的。 可以直接复制到 :\Program Files\Microsoft SDKs\Windows\v6.0A\bin 下使用SvcConfigEditor.exe
通常,WCF使用配置文件(如app.config)来定义服务的行为、绑定、终结点等设置。然而,有时为了简化部署或特定需求,我们可能需要不依赖配置文件来实现双工通信。本篇文章将深入探讨如何在没有配置文件的情况下实现...
通过以上步骤,你可以实现一个纯配置文件驱动的WCF文件上传服务。在实际项目中,还需要考虑错误处理、日志记录、权限控制等更多细节,确保服务的稳定性和安全性。在提供的压缩包文件WCFTest中,可能包含了实现这些...
- 运行示例:启动服务和客户端,演示如何通过配置文件和源码设置WCF绑定、终结点和行为。 通过研究这些源码,开发者可以更好地理解WCF配置的实践应用,以及如何在实际项目中调整和优化服务的行为和性能。 总结来说...
WCF客户端与主机代理在不同机器的配置文件,以及默认终结点配置、多重绑定配置文件. 学习魔法八球示例时在不同机器上进行通讯搞了很长时间才实现。供初学者一起学习。
2. 创建一个新的网站或者虚拟目录,并将WCF服务的DLL文件和配置文件部署到该位置。 3. 配置Web.config文件,指定服务的终结点、行为和绑定。 4. 启动IIS应用程序池,服务即可通过HTTP或HTTPS对外提供服务。 ### 5. ...
Silverlight+WCF配置具体方法 讲解
在本主题中,我们将深入探讨如何利用WCF进行远程文件操作,并实现上传下载的进度显示。 **一、WCF服务的创建与配置** 1. **服务合同**:首先,我们需要定义一个服务合同(Service Contract),这是WCF服务的核心...
**RESTful风格的WCF资源文件详解** REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,以简洁、无状态、可缓存的方式进行数据交互。在.NET框架中,WCF(Windows ...
WCF服务通常在这里定义,包括服务合同(IService),服务实现(Service),以及必要的配置文件(Service.exe.config)。 - **IService.cs**: 定义了服务接口,例如`IFileUploadService`,其中可能有一个方法如`...
在本文中,我们将深入探讨如何使用WCF在C#中实现文件的传递。 首先,WCF的核心概念是服务契约(Service Contract),它定义了服务提供的操作或功能。在文件传输的场景下,我们需要定义一个服务契约来声明服务可以...
总之,配置并发布WCF服务到IIS是一项涉及多个层面的任务,需要理解服务契约、服务实现、配置文件以及IIS管理。通过熟练掌握这些知识,开发者能够创建健壮且灵活的分布式服务,为企业的IT系统提供强大的连接能力。
**WCF文件上传下载**是基于Windows Communication Foundation(WCF)技术实现的一种高效、安全的文件传输机制。WCF是.NET Framework中用于构建分布式应用程序的服务框架,它支持多种通信协议和绑定,使得服务间的...
在传统的WCF(Windows Communication Foundation)服务开发中,配置文件(如app.config或web.config)是不可或缺的一部分,它们用于定义服务的终结点、绑定、行为等信息。然而,有时候为了简化开发流程或在特定场景...
通过配置不同的绑定(Bindings),WCF可以支持多种通信协议,如HTTP、TCP等,使得文件可以在分布式环境中无缝传输。WCF服务也可以实现服务发现、事务处理和安全性,为整个系统提供强大的支持。 在实现文件负载均衡...