【问题标题】:Design pattern for WCF client switching and failover capabilities?WCF 客户端切换和故障转移功能的设计模式?
【发布时间】:2010-09-29 18:52:04
【问题描述】:

我正在寻找一种最佳实践或常用的 WCF 通信设计模式,如果 WCF(或初始服务存在),则允许通信发生并故障转移到另一个服务或本地信息服务

我不确定这是否有意义,所以让我举个例子。 我希望这个代理能够连接到 wcf 服务并(希望)向调用者(UI/BO 等)公开合同方法,以便该对象可以调用这些方法,代理尝试联系主要服务(可能是 WCF),如果它无法连接到辅助服务。

理想情况下,所有故障转移和重新连接逻辑都包含在代理中。

是否有封装“切换 wcf 客户端并进行故障转移”的设计模式?
也许不是设计模式,有人推荐一个体面的方法吗?

【问题讨论】:

    标签: c# wcf


    【解决方案1】:

    我会这样做:

    • 客户端的配置对服务有一个单一的引用
    • 客户端具有与服务通信的代理类
    • 在代理类中有一个try catch
    • 在尝试中将地址设置为主服务的地址并调用该服务
    • 如果失败则进入catch块,这里可以设置备份服务的地址并调用。

    【讨论】:

      【解决方案2】:

      Juval Lowy 有一篇关于 WCF 发现协议的精彩文章:http://msdn.microsoft.com/en-us/magazine/ee335779.aspx

      简而言之,这利用 UDP 的广播机制来发现实现指定接口的服务的位置。因此,模式可能是,当客户端上线时,它将发现服务的位置,并且在该客户端和服务的生命周期内,它们将来回通信。如果服务提供者不可用,客户端可以恢复以发现另一个服务,然后继续。

      此模式允许管理员在客户端上以最少的配置设置无限备份服务。

      【讨论】:

        【解决方案3】:

        我目前按照 Shiraz 所描述的方式经营业务。我有一个 ServiceCaller 类和一个 Call 方法,它包装了一个委托,该委托是对服务的实际调用。在调用委托之前,我可以做一些其他事情,以及将其包装在 try catch 中并集中错误处理。

        http://www.lukepuplett.com/2010/07/adding-useragent-to-wcf-clients.html

        将来我打算使用 NLB 或 MSMQ。为什么?好吧,故障转移与负载平衡密切相关,所以我将从 NLB 开始。

        试试这些文章;

        http://msdn.microsoft.com/en-us/library/ms730128.aspx

        http://www.devproconnections.com/print/net-framework2/load-balancing-and-scaling-your-wcf-services.aspx

        祝你好运,让我们知道你的进展。

        卢克

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-02-05
          • 2020-06-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-04-28
          • 2016-06-24
          相关资源
          最近更新 更多