我正在寻找最佳实践或经常使用WCF通信的设计模式,允许进行通信,如果WCF(或初始服务存在),则故障转移到另一个服务或本地信息服务
我不确定这有多大意义所以让我举一个例子。 我希望这个代理能够连接到wcf服务并(希望)将合同方法暴露给调用者(UI / BO等),以便该对象可以调用这些方法,代理尝试联系主服务(可能是WCF),如果失败则连接到辅助服务。
理想情况下,所有故障转移和重新连接逻辑都将包含在代理中。
是否有一个设计模式封装了“切换wcf客户端并进行故障转移”? 也许不是设计模式,任何人都推荐一个体面的方法?
答案 0 :(得分:4)
我会这样做:
答案 1 :(得分:3)
Juval Lowy有一篇关于WCF发现协议的精彩文章:http://msdn.microsoft.com/en-us/magazine/ee335779.aspx
简而言之,这利用UDP的广播机制来发现实现指定接口的服务的位置。因此,模式可能是当客户端上线时,它将发现服务的位置,并且对于客户端和服务的生命,他们将来回通信。如果服务提供商变得不可用,客户端可以恢复发现另一个服务,然后继续。
此模式允许管理员在客户端上使用最少的配置设置无限的备份服务。
答案 2 :(得分:2)
我目前按照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
祝你好运,让我们知道你是怎么过的。路