WCF4.0新特性体验(3):标准终结点(Standard Endpoints)

简介:
  今天在WCF4.0新特性体验第3节,我们介绍WCF4.0里的标准终结点概念,也就是Standard Endpoints。
  WCF4.0提供了那些标准终结点?他们有什么作用?如何使用标准终结点?如何该表标准终结点的属性?如何自定义一个标注终结点?本文会给出介绍。
  WCF4.0提供了8个已经定义好的标准终结点。下面我们会给出详细介绍,然后是简单的示例代码。标准终结点并不是标准化终结点或者给终结点提供什么参考标准。这个标准终结点其实就是预定义好的终结点,WCF4.0已经内置到Framework里,我们可以直接使用。说白了,就是已经成型,可以直接使用。使用这些定义好的终结点,无非就是可以简化我们的开发工作。
【1】标准终结点介绍:
  WCF4.0提供了8个已经定义好的标准终结点,它们是:mexEndpoint、announcementEndpoint、
discoveryEndpoint、udpAnnouncementEndpoint、udpDiscoveryEndpoint、workflowControlEndpoint、webHttpEndpoint、webScriptEndpoint。这些终结点其实与WCF4.0的新增特性密切相关。从名字我们基本可以看出其作用。其中与WS-Discovery服务动态发现相关的最多。包含4个:announcementEndpoint、 discoveryEndpoint、udpAnnouncementEndpoint、udpDiscoveryEndpoint。各个终结点的作用如下表:
WCF4.0里的标准终结点
名称 描述
mexEndpoint 预定义了一个元数据交换节点,默认使用IMetadataExchange 契约和mexHttpBinding 绑定,address为空。
announcementEndpoint 为discovery的声明功能预定义的标准终结点,在使用此终结点用户需要额外配置address和binding。
discoveryEndpoint 为discovery 操作,预定义的一个标准终结点,在使用此终结点用户需要额外配置address和binding。
udpAnnouncementEndpoint 为使用UDP binding和WS-Discovery 协议规定的多播地址的discovery的声明功能提供的预定义的终结点。它继承自announcementEndpoint。
udpDiscoveryEndpoint 为discovery 操作提供的预定义的终结点。比如通过UDP binding和WS-Discovery 协议规定的多播地址的发现(find) 和解析(resolve。它继承自DiscoveryEndpoint。
workflowControlEndpoint 定义了一个控制workflow 实例执行状态的标准终结点(create、run、suspend、terminate等等)。
webHttpEndpoint 定义了一个配置了WebHttpBinding 和WebHttpBehavior的标准终结点。它继承自WebServiceEndpoint。在编写REST service使用。
webScriptEndpoint 定义了一个配置了WebHttpBinding 和WebScriptEnablingBehavior的标准终结点。它用于编写ASP.NET AJAX程序。
  这里EndPoint提供了2个新的属性:Kind和IsSystemEndpoint.
Kind:这里设定终结点的类别,一般是标准终结点的种类,或者用户自定义的标准终结点。如果不指定,则认为是一般的终结点。
IsSystemEndpoint:Boolean变量,设定终结点是否为系统终结点。
  你可以在服务终结点里直接使用这些标准终结点。使用的方式就是在EndPoint的Kind属性里定制特定的标准终结点的类型。这些标准终结点默认使用缺省属性,当然你也可以在standardEndpoints重新定制这些属性。
【2】代码示例:
  下面我们来演示一下如何使用standardEndpoints。这里主要是通过配置文件方式使用标准终结点。
  (1)标准终结点:我们配置了4个服务终结点,其中3个使用了标准终结点。第一个服务终结点我们Kind不做设置,这个终结点就是普通的服务中介店。具体配置信息如下:
<services> 
        <service name="WCFService.WCFService"> 
            <endpoint    name="endpoint1" 
                    address="http://localhost:8000/WCFService"    
                    binding="wsHttpBinding"    
                    contract="WCFService.IWCFService"> 
                </endpoint> 
            <endpoint name="endpoint2" kind="webHttpEndpoint"    contract="WCFService.IWCFService"> 
            </endpoint> 
            <endpoint name="endpoint3" kind="udpDiscoveryEndpoint"     endpointConfiguration="udp"> 
            </endpoint> 
            <endpoint name="endpoint4" kind="mexEndpoint"     address="mex"></endpoint> 
            <host> 
                <baseAddresses> 
                    <add baseAddress="http://localhost:8000/"/> 
                </baseAddresses> 
            </host> 
        </service> 
    </services> 
  (2)运行结果:
  配置完毕4个终结点以后,我们可以启动宿主查看终结点信息。终结点2、3、4标准终结点,分别引用 webHttpEndpointudpDiscoveryEndpoint和mexEndpoint。运行结果如下图:
(3)覆盖属性:
  如果我们感觉这些标准终结点的功能不符合要求,我们也可以通过standardEndpoints重新定制这些默认终结点的属性信息。配置代码如下:
  
<standardEndpoints> 
        <udpDiscoveryEndpoint> 
            <standardEndpoint name="udp" maxResponseDelay="00:01:00"    discoveryMode="Adhoc" discoveryVersion="WSDiscovery11"/> 
        </udpDiscoveryEndpoint> 
    </standardEndpoints>
  这里你只需要把name应用到特定的标准终结点上即可。使用终结点配置属性,例如: endpointConfiguration ="udp"。
  (4)自定义标准终结点:
  英文原文是custom standard endpoint 。我们可以定制自己的标准终结点,以便其他地方使用。这里我们需要使用extensions节点,在配置文件里指定新的标准终结点的name和type。name比如能与WCF4.0提供的标准终结点重复,而type为:namesapce,class。示例配置:
   
<extensions> 
            <endpointExtensions> 
                <add name="customStandEndpoint" type="WCFService.IWCFService, WCFService" /> 
            </endpointExtensions> 
        </extensions>
  然后在服务终结点里使用:
 
      
<endpoint    name="endpoint6"    kind="customStandEndpoint" 
                    address="http://localhost:8000/WCFService"    
                    binding="wsHttpBinding"    
                    contract="WCFService.IWCFService"> 
                </endpoint>
【3】总结:
  以上就是WCF4.0里标准终结点(standard endpoint)的介绍。目前版本,WCF4.0提供了8个已经定义好的标准终结点,它们是:mexEndpoint、announcementEndpoint、 discoveryEndpoint、udpAnnouncementEndpoint、udpDiscoveryEndpoint、workflowControlEndpoint、webHttpEndpoint、webScriptEndpoint。
  (1)这些预定义的标准终结点可以方便我们的开发工作。当然也提供了属性定制功能,让我们可以根据自己的需要定制特性。  
  (2)不过要想利用这些标准终结点,目前还只能参考英文文档,不过英文资料也很少。(学习的时间可能需要很久。可能还不如自己配置一个终结点来的方便。)
  (3)最终的标准终结点的数量或者特定参考最后的发布文档。这里还是基于Beta2。
  最后给出本文的参考代码,共大家参考学习: /Files/frank_xl/3.StandardEndpoints.zip
参考资料:



 本文转自 frankxulei 51CTO博客,原文链接:http://blog.51cto.com/frankxulei/320289 ,如需转载请自行联系原作者
相关文章
|
Web App开发 C#
WCF-找不到终结点
开发环境:Vs2010SP1 Rel 问题:开发WCF服务端新建Wcf服务的过程中,正常的新建了svc服务,在浏览器中打开总是提示找不到终结点 解决:添加svc文件时,应该选择WCF服务,而不是WCF数据服务, 如果你选择WCF数据服务,生成的svc头命令是 在浏览器中浏览这...
958 0
|
XML 安全 网络协议
WCF入门(一)——终结点,地址,绑定(1)
运行WCF服务 这里通过自宿主方式self-host来运行wcf服务。 公开终结点Endpoint,终结点由ServiceEndpoint 类来实现。它有很多的成员。其中要用到的是所说的ABC。 Address,Binding,Contract,地址,绑定,契约。
1034 0
|
网络架构
WCF入门(二)——终结点,契约(2)
Contract 契约,用于提供消息的标准,消息交换的规则。它分四类: ·服务契约 定义操作 ·数据契约 定义数据 ·异常契约 定义异常 ·消息契约 定义消息格式 (一)服务契约 服务契约,可以用接口定义,也可以直接在类上定义。
671 0
|
XML 安全 网络协议
WCF入门(一)——终结点,地址,绑定(1)
运行WCF服务 这里通过自宿主方式self-host来运行wcf服务。 公开终结点Endpoint,终结点由ServiceEndpoint 类来实现。它有很多的成员。其中要用到的是所说的ABC。 Address,Binding,Contract,地址,绑定,契约。
798 0
|
网络架构
WCF入门(二)——终结点,契约(2)
Contract 契约,用于提供消息的标准,消息交换的规则。它分四类: ·服务契约 定义操作 ·数据契约 定义数据 ·异常契约 定义异常 ·消息契约 定义消息格式 (一)服务契约 服务契约,可以用接口定义,也可以直接在类上定义。
599 0
|
前端开发
WCF更新服务引用报错的原因之一
WCF更新服务引用报错的原因之一
|
C# 数据安全/隐私保护
c#如何创建WCF服务到发布(SqlServer版已经验证)
c#如何创建WCF服务到发布(SqlServer版已经验证)
73 0