今天在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标准终结点,分别引用webHttpEndpoint、udpDiscoveryEndpoint和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
参考资料:
1.http://msdn.microsoft.com/en-us/library/system.servicemodel.discovery.discoveryendpoint(VS.100).aspx
2.http://msdn.microsoft.com/en-us/library/system.servicemodel.description.webscriptendpoint(VS.100).aspx
3.http://msdn.microsoft.com/en-us/library/system.servicemodel.description.webhttpendpoint(VS.100).aspx
4.http://msdn.microsoft.com/en-us/library/ee620807(VS.100).aspx
 本文转自 frankxulei 51CTO博客,原文链接:http://blog.51cto.com/frankxulei/320289,如需转载请自行联系原作者

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

  1. WCF4.0新特性体验(6):路由服务Routing Service(下)

    紧接前文WCF4.0新特性体验(5):路由服务Routing Service(上).今天我们介绍WCF4.0消息路由的实现机制,然后会讲解路由服务的实现过程. [4]WCF与路由服务: 其实在介绍WC ...

  2. WCF4.0新特性体验(9):非破坏性队列消息接收(Non-destructive queue receive )

    这次来介绍一下WCF4.0新特性体验(9):非破坏性队列接收(Non-destructive queue receive ).这个特性不是那么直观.确切来说是WCF4.0对于以前处理MSMQ消息队列机 ...

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

    今天介绍WCF 4.0的另外两个新特性:标准终结点(Standard Endpoint)和无(.SVC)文件服务激活(File-Less Activation).前者实现了针对典型通信场景对终结点的定 ...

  4. [WCF 4.0新特性] 默认终结点

    很多WCF的初学者是从之前的Web服务上转移过来的,他们非常怀念.asmx Web服务无配置的服务寄宿方式.你只需要在定义Web服务的时候再表示服务操作的方法上应用WebMethodAttribute ...

  5. Android5.0,6.0,7.0,8.0新特性整理

    背景 Android5.0(Android Lollipop)是谷歌公司2014年10月发布的全新安卓系统,至今已经两年多.然而由于国产手机对安卓ROM的深度定制或修改,以及手机厂商.芯片制造商.运营 ...

  6. Android6.0新特性

    1.大量漂亮流畅的动画 安卓6.0系统增加了大量漂亮的过度动画,可以从视觉上减少卡顿感,给用户带来流畅的体验.说到过渡动画,以前可是苹果手机的拿手好戏,现在安卓大有赶超iOS的趋势. 2.相机新增专业 ...

  7. Android 4.0新特性(中文)

    Android 4.0新特性(中文) 转自http://www.eoeandroid.com/thread-103300-1-1.html android4.0 SDK发布有一段时间了,在eoe上找到 ...

  8. Android5.0,6.0,7.0新特性整理

    背景 Android5.0(Android Lollipop)是谷歌公司2014年10月发布的全新安卓系统,至今已经两年多.然而由于国产手机对安卓ROM的深度定制或修改,以及手机厂商.芯片制造商.运营 ...

  9. Android5.0 6.0 7.0新特性

    原文链接:http://blog.csdn.net/haovip123/article/details/54618642 背景 Android5.0(Android Lollipop)是谷歌公司201 ...

最新文章

  1. 甲骨文否认将收购IT咨询巨头埃森哲 称从未考虑过
  2. windows下安装及配置 golang 的Web框架Beego环境
  3. Hybris开发环境的license计算实现
  4. overfitting(过度拟合)的概念
  5. 在Firefox中结合Wolfram Alpha和Google搜索结果
  6. JS脚本病毒调试脚本-Trojan[Downloader]:JS/Nemucod
  7. 快视频:剽窃了B站的数据库?360的常规操作了。
  8. Numpy——常用的排序函数
  9. LeetCode 438. 找到字符串中所有字母异位词(双指针+滑动窗口)
  10. python 通过js控制滚动条拉取全文 通过psutil获取pid窗口句柄,通过win32gui使程序窗口前置 通过autopy实现右键菜单和另存为操作...
  11. Python(六):dict、set
  12. Python 简单函数入门之“计算器“
  13. 计算机设计大赛作品开发文档
  14. 微信和QQ,终于可以互通了!
  15. TP-LINK无线上网短信Wifi认证配置流程
  16. linux的防火墙端口配置
  17. PHP格式化 插件 vs code
  18. 穷举、贪心算法--泊松分酒(2)
  19. 关于支付账户体系研究
  20. 【MySQL】 insert into语句几种方式

热门文章

  1. 一文初识:美、日、中3国药品GMP特点
  2. 企业的7种工作管理最佳实践
  3. ImageNet 存在十万标签错误,你知道吗?
  4. 深度 | 香港中文大学(深圳)张大鹏教授:生物特征识别的新进展 | CCF-GAIR 2019
  5. 平衡自动化与智能化,构建AI生态系统
  6. 谷歌如何通过机器学习实现逼真AR实时自拍效果
  7. 演硬汉才是布鲁斯威利斯的正事 --- 我看《虎胆追凶》
  8. 清华大学人工智能深度报告:八大维度解析机器学习
  9. 蝙蝠为啥这么厉害?地球人整明白了没有?
  10. 欢迎参加城市大脑与智慧城市前沿趋势 主题论坛 |未来科技大讲堂 第12期