【问题标题】:What happens when a WCF client specifies multiple endpoints for the same contract?当 WCF 客户端为同一个合同指定多个终结点时会发生什么?
【发布时间】:2010-12-25 16:26:36
【问题描述】:

它会消耗所有这些吗? 会抛出异常吗?

【问题讨论】:

    标签: .net wcf wcf-client endpoints


    【解决方案1】:

    您可以在客户端配置中为同一个合约和不同地址设置多个端点,没问题。

    它们需要由 <endpoint> 标记上的唯一 name= 属性分隔。

    <client>
      <endpoint name="tcpEndpoint"
                address="net.tcp://server:8888/SomeService"
                binding="netTcpBinding"
                contract="IYourService" />
      <endpoint name="httpEndpoint"
                address="http://server:8777/SomeService"
                binding="basicHttpBinding"
                contract="IYourService" />
    </client>
    

    创建客户端代理时,您需要提供要使用的端点的名称:

    YourClient client = new YourClient("netTcpEndpoint");
    

    您不能再只是实例化您的客户端并期望它找到要使用的“那个”端点,因为有多个(不幸的是,如果没有指定,则无法将一个定义为“默认”) .

    除此之外,我认为不会出现任何问题。

    【讨论】:

    • 是的。同时连接 ex: basicHttpbinding + wsHttpBinding + netTcpBinding 没有意义。
    • @vidal: 不是真的,不是 :-) 但是您可能可能让一个客户端通过 netTcp,而另一个客户端实例通过 http - 如果您需要(不知道为什么需要这样做 - 但你可以 ;-)
    • 如果您有一个 java web 客户端和一个 .Net 厚客户端,作为一个真实的例子。 java客户端使用http,.Net客户端使用net.tcp
    • @Patrik:是的,当然,在那种情况下,这完全有道理。我只是想知道让一个 .NET 客户端同时使用两个不同的端点是否有意义....
    • @marc_s 例如 Silverlight 客户端(轮询双工)和 WPF 客户端(任何其他绑定类型),因为轮询双工是 Silverlight 独有的。
    猜你喜欢
    • 1970-01-01
    • 2018-08-17
    • 2012-05-31
    • 1970-01-01
    • 2012-02-26
    • 2019-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多