连接到没有端点地址的WCF服务

时间:2018-10-24 01:39:38

标签: wcf service wmi intranet

当客户端调用WCF服务时,第一步是创建与服务的连接(使用端点地址,或使用配置文件记录服务器URL)。但是,如果客户不知道服务地址,应该如何找到服务?

1 个答案:

答案 0 :(得分:1)

我曾经说过,WCF服务器应将固定端点公开给客户端,以便客户端可以发现它。 DiscoveryEndpoint可以使用单播/多播来发布服务元数据。单播使用DiscoveryEndpoint配置端点,并应为其分配固定的地址,而组播使用UdpDiscoveryEndpoint,后者通过UDP组播发布服务元数据。因此,无需为UdpDiscoveryEndpoint分配地址​​,因为它具有默认的广播地址,例如ipv4为soap.udp://239.255.255.250:3702。

Service应该将ServiceDiscoveryBehavior添加到Service行为集合。默认情况下,服务应用ServiceDiscovery Behavior后,所有服务端点都向客户端公开,如果要隐藏一个,则需要在特定端点上禁用EndpointDiscoveryBehavior。

 <endpointBehaviors>
        <behavior>
          <endpointDiscovery enabled="false">
          </endpointDiscovery>
        </behavior>
      </endpointBehaviors>

在客户端。我们在System.ServiceModel.Discovery程序集中找到带有DiscoveryClient类的可用服务。搜索完成后,所有可用的端点都存储在FindResponse对象中。我们可以使用其Endpoints属性调用目标服务。