今天介绍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终结点形式的元数据发布。
>
>
4: ...
>
>
>
>
/>
>
>
/>
/>
>
>
>
>