全面攻略WCF配置子节点

开发 后端
WCF配置子节点在文章中你会看到3子节点:behaviors, serviceHostingEnvironment和serivces,都有详细的介绍。

经过长时间学习WCF,于是和大家分享一下,看完本文你肯定有不少收获,希望本文能教会你更多东西。如果熟悉WCF,你一定知道WCF配置是位于system.serviceModel节点下。你会看到3个子节点:behaviors, serviceHostingEnvironment和serivces。

WCF配置子节点Services: 文件内已经有一个名为CatalogService的服务,实现服务的类名一致。在Service节点下,你可以看到Endpoint,它包含了服务的 ABCs:Address(地址), binding (绑定)和contract (协定).
◆Address: 你会发现地址是空的 ,不必担心,因为svc文件会作为基
◆Binding: webHttpBinding是WCF3.5提供的可以让服务以REST方式发布的新型绑定。这个绑定有两种模式,你可以通过特定的终结点行为来指定模式(通过设定behaviorConfiguration)
◆Contract: contract指定了WCF服务提供的功能。该属性被设为一个已经定义好的服务协定。要定义一个服务协定,你可以用ServiceContract修饰一个接口或者类。被ServiceContract修饰的接口或者类中,所有由OperationContract修饰的方法将被作为服务的操作暴露给客户。一般来说用接口做服务协定是更好的做法,这样做的好处是分离了协定与具体实现。但在我们使用的模板中却使用了类的方法,也就是说,接口是从类自动推断出来的(接口推断)。
◆BehaviorConfiguration: 对于webHttpBinding, 你需要将该属性设为一个拥有webHttp或enableWebScript子节点的终结点行为。

#T#F配置子节点Behaviors: 将behaviors加入到服务或者服务终结点的目的在于改变runtime的默认行为或者加入定制的扩展。你会发现我们使用的模板已经声明了一个名为 CatalogServiceAspNetAjaxBehavior的终结点行为. 该行为有一个enableWebScript 元素。enableWebScript是两种可能的终结点行为之一,另一种就是webHttp。事实上enableWebScript是webHttp用来提供AJAX 功能(比如生成客户端代理)的子类

WCF配置子节点ServiceHostingEnvironment: 跟ASP.Net运行的WCF服务的默认配置是让两者互不干扰 例如,ASP.NET runtime 不参与WCF请求的处理. WCF服务也不能使用ASP.NET context 和 session 这样的功能. 而我们这里的配置是将aspNetCompatibilityEnabled 设为true, 在这种设置下WCF请求就会加到ASP.Net 的请求流水线里了。
*要使WCF支持REST,只要在该配置文件中注意最重要的两点:1)binding应设为webHttpBinding 2) endpoint behavior要设定为webHttp或enableWebScript

  1. CatalogService.cs  
  2. [ServiceContract(Namespace = "")]  
  3. [AspNetCompatibilityRequirements(RequirementsMode =  
  4. AspNetCompatibilityRequirementsMode.Allowed)]  
  5. public class CatalogService  
  6. {  
  7. // Add [WebGet] attribute to use HTTP GET  
  8. [OperationContract]  
  9. public void DoWork()  
  10. {  
  11. // Add your operation implementation here  
  12. return;  
  13. }  
  14. // Add more operations here and mark them with [OperationContract]  

 在这里我们就真得做点儿事儿了。如果已经读了上面的内容,你应该已经注意到我们已经用接口推断的方法定义了的服务协定,就是说用ServiceContract属性修饰了一个类而不是一个接口。无论如何,我们要开始做一点儿实现了。***件事儿是设定ServiceContract属性的NameSpace参数。这一点非常重要。客户端用于调用WCF服务的代理的名字空间就是从这里拿的。

责任编辑:田树 来源: 博客
相关推荐

2009-11-06 14:33:27

WCF代理节点

2009-11-05 14:40:08

WCF KnownTy

2009-11-06 15:54:15

WCF异步调用

2009-11-12 14:37:26

ADO.NET结构

2009-11-05 16:45:52

WCF可靠性传输

2009-12-22 10:16:54

WCF服务状态

2009-11-10 16:46:52

VB.NET指针应用

2009-12-22 15:02:40

WCF限流

2011-01-21 09:32:57

LinuxSendmail

2009-11-11 09:48:08

ADO.NET Com

2009-12-08 17:56:16

WCF配置

2010-02-26 14:05:57

WCF通信方式

2010-02-22 10:18:18

WCF配置文件

2009-12-22 11:14:38

WCF禁用安全配置

2023-07-28 14:48:00

数据分析效果

2010-08-06 11:40:03

RIP配置

2011-08-18 13:31:44

SQL Server数子节点查询所有父节点

2010-03-02 16:05:48

WCF端点配置

2009-11-05 15:36:58

WCF service

2009-11-05 10:30:41

WCF Address
点赞
收藏

51CTO技术栈公众号