我正在寻找为WCF服务提供冗余的正确方法。我想我正试图解决代码中的“基础设施”问题。我没有达到负载均衡器的速度,但似乎应该有像路由器这样的东西。
// Cycle through the list of service.
foreach (var uri in InfrastructureInformation.ServiceUris)
{
try
{
using (var client = WcfClientFactory.Create<ServiceClient>(uri))
{
// Do stuff here.
}
}
catch
{
// todo: Do not catch "exception" here. We have to find a better way of doing this.
// Try the next URI.
}
}
似乎应该有一种方法可以让一个我可以点击的URI,一些“平衡器”会转移到一个可用的服务。如果一个服务停止维护,那么平衡器就不会向该服务发出任何请求。
现在我知道WCF路由,我认为这就是答案。只需建立一个WCF路由器并让它分发连接,但如果它崩溃会发生什么?这不会给你带来单点故障吗?我正在寻找更具工业性的东西。
答案 0 :(得分:1)
.NET 4.0中的WCF具有可在您描述的故障转移方案中使用的路由功能。这个WCF sample显示了内置RoutingService class如何用于此目的。
答案 1 :(得分:0)
您可以查看Microsoft Network Load Balancing (aka NLB)。微软也在WCF的背景下提到了这一点。有一篇关于此here的文章。