加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

[WCF 4.0新特性] 标准终结点与无(.SVC)文件服务激活

发布时间:2020-12-16 09:11:39 所属栏目:asp.Net 来源:网络整理
导读:今天介绍WCF 4.0的另外两个新特性:标准终结点(Standard Endpoint)和无(.SVC)文件服务激活(File-Less Activation)。前者实现了针对典型通信场景对终结点的定制,后者让你在进行IIS/WAS的服务寄宿中无须定义.svc文件。 一、标准终结点 我们知道,绑定的本

今天介绍WCF 4.0的另外两个新特性:标准终结点(Standard Endpoint)和无(.SVC)文件服务激活(File-Less Activation)。前者实现了针对典型通信场景对终结点的定制,后者让你在进行IIS/WAS的服务寄宿中无须定义.svc文件。

一、标准终结点

我们知道,绑定的本质就是一系列相关绑定元素的有序集合,而系统绑定就是基于若干典型的通信场景对相关绑定元素的整合。WCF通过系统绑定对绑定元素进行了定制,那么能否在终结点级别对组成该终结点的ABC(地址、绑定和契约)也进行相应的定制呢?实际上这对于最新版本的WCF是可行的,我们将这个机制称为“标准终结点”。

所谓标准终结点,就是针对典型的通信场景选择组成终结点的要素(主要是绑定和契约)进而创建出一个标准的终结点。在使用的时候,如果你需要的终结点要素和标准终结点完全一致,就无需进行重复的设置;如果不一致,则只需要单独对此进行重新设置以覆盖定义在标准终结点的默认设置。

比如说,对于用于发布元数据的终结点总是将IMetadataExchange作为其契约,并且在大部分情况下使用MexHttpBinding。如果我们基于这两个元素创建一个标准的MexEndpoint,那么在为服务配置发布元数据的终结点的时候就只需要指定地址就可以了。实际上,WCF确实为我们创建了这么一个标准的MexEndpoint终结点。包含MexEndpoint终结点在内,WCF总共为我们定义了如下面的列表所示的9个标准终结点。

  • mexEndpoint:用于公开服务元数据的标准终结点;
  • dynamicEndpoint:使用 WS-Discovery 在运行时动态查找终结点地址的标准终结点;
  • discoveryEndpoint:由服务用于发送发现消息的标准终结点;
  • udpDiscoveryEndpoint:通过 UDP 多播绑定为发现操作预配的标准终结点;
  • announcementEndpoint:由服务用于发送公告消息的标准终结点;
  • udpAnnouncementEndpoint:由服务用于通过 UDP 绑定发送公告消息的标准终结点;
  • workflowControlEndpoint:可用于对工作流实例调用控制操作的标准终结点;
  • webHttpEndpoint:带有自动添加 WebHttpBehavior行为的WebHttpBinding绑定的标准终结点;
  • webScriptEndpoint:带有自动添加 WebScriptEnablingBehavior行为的WebHttpBinding绑定的标准终结点。

如果你希望直接为某个服务配置一个标准终结点,可以借助于WCF4.0为终结点的配置节添加的一个新的配置属性kind,该属性表示标准终结点名称。在上面的配置中,我为服务配置了一个标准终结点mexEndpoint以实现基于MEX终结点形式的元数据发布。

   1: <?xml version="1.0"?>
   3:   system.serviceModel   4:     ...
   6:       service name="Artech.WcfServices.Service.CalculatorService"    7:         host   8:           baseAddresses   9:             add baseAddress="http://127.0.0.1:3721/calculatorservice"/>
  13:         kind="mexEndpoint" address="mex"  14:       service  15:     >  
    
   5:          6:         ="http://127.0.0.1:3721/calculatorservice" ="udpDiscoveryEndpoint" endpointConfiguration="wsd11"   8:          9:       10:     standardEndpoints  11:       udpDiscoveryEndpointstandardEndpoint ="wsd11" discoveryVersion="WSDiscovery11"  13:         14:       15:     16:   ...
   1: <%@ ServiceHost Service="Artech.WcfServices.Servicies.ResourceService: defaultContainer" 
="1.0" encoding="utf-8" ?   3:     >   
serviceHostingEnvironmentserviceActivations   7:           relativeAddress="ResourceService.svc" 
   9:                factory="Artech.WcfExtensions.IoC.UnityServiceHostFactory,Artech.WcfExtensions"  10:           12:       13: >

再举个例子,如何我们需要通过IIS的方式来寄宿我们熟悉的CalculatorService,在不需要定义.svc的情况下,下面的XML片断代表了所需的最少配置。借助于默认终结点(《[WCF 4.0新特性] 默认终结点》)的自动添加机制,WCF会为寄宿服务实现的每个服务契约针对于每一个基地址添加一个终结点。由于通过配置属性relativeAddress定义的地址就是服务的相对基地址,所以基于这个地址的终结点回自动添加。

4: 5: 6: ="Artech.WcfServices.Service.CalculatorService" ="OrderService.svc" 10: >

?

附上刚刚收到的9个新版新浪微博邀请码,有兴趣的朋友可以体验一下:

http://weibo.com/upcode/dgPcW4Gd7
http://weibo.com/upcode/dgPWOkRM9
http://weibo.com/upcode/dgPSQxHsz
http://weibo.com/upcode/dgPPBYReT
http://weibo.com/upcode/dgPPqPvgP
http://weibo.com/upcode/dgPGhy18k
http://weibo.com/upcode/dgPBEOB1M
http://weibo.com/upcode/dgPuEwykK
http://weibo.com/upcode/dgPt72DV0

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读