为啥wcf的一段service配置,要发布两个endpoint终结点呢?

下面的wcf配置中,有两个终结点,为什么配置成这样呢?

<service name="SMotionHardwareLayer.MotionCardRes.DMC3400A.AxisRealization" behaviorConfiguration="Dmc3000IAxisAPI">
        <host>
          <baseAddresses>
            <add baseAddress="net.pipe://localhost/Dmc3000IAxisAPI"/>
          </baseAddresses>
        </host>

        <endpoint address="" binding="netNamedPipeBinding" bindingConfiguration="" contract="SMotionHardwareLayer.HardwareLayerService.IAxis"/>
        <endpoint address="mex" binding="mexNamedPipeBinding" contract="IMetadataExchange"/>
      </service>


在WCF(Windows Communication Foundation)的配置中,可以有多个端点(<endpoint>),

因为每个端点代表一个独立的通信通道,可能用于不同的目的、绑定或契约。

在你的示例中,<service> 定义了两个端点:一个用于提供服务的业务功能,另一个用于元数据交换。


(1)业务功能端点:

<endpoint address="" binding="netNamedPipeBinding" bindingConfiguration="" 

    contract="SMotionHardwareLayer.HardwareLayerService.IAxis"/>


这个端点使用 netNamedPipeBinding,这是WCF中用于在同一台机器上的进程间通信的绑定。

address 属性为空,意味着它将使用 <host> 元素中定义的 baseAddresses 作为其基础地址。

这个端点实现的契约(contract)是 SMotionHardwareLayer.HardwareLayerService.IAxis,

它代表了服务的业务功能。客户端通过这个端点与服务进行交互,调用服务定义的操作。


(2)元数据交换端点:

<endpoint address="mex" binding="mexNamedPipeBinding" contract="IMetadataExchange"/>

这个端点用于提供服务的元数据。它使用 mexNamedPipeBinding,这是一个专门为元数据交换设计的绑定。

address 属性设置为 "mex",这通常是一个标准的地址后缀,用于指示这个端点是用于元数据交换的。

contract 属性设置为 IMetadataExchange,这是WCF中用于元数据交换的标准接口。


元数据交换端点的存在允许客户端或其他工具(如Visual Studio的“添加服务引用”功能)

通过请求服务的元数据来动态了解服务提供的操作和数据类型。

这使得客户端可以自动生成必要的代理代码,从而与服务进行通信。


总结来说,有两个端点是因为它们各自服务于不同的目的:

一个用于业务逻辑交互,另一个用于提供服务的元数据,以便客户端可以动态地了解和使用服务。

这是WCF设计中常见的模式,用于分离服务的功能性方面和发现性方面。


本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:
本帖最后由 勇哥,很想停止 于 2024-04-25 09:28:17 编辑

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年5月    »
12345
6789101112
13141516171819
20212223242526
2728293031
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864