WCF服务访问以实现冗余(故障转移)

时间:2012-03-21 12:11:50

标签: wcf load-balancing reliability redundancy

我正在寻找为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路由器并让它分发连接,但如果它崩溃会发生什么?这不会给你带来单点故障吗?我正在寻找更具工业性的东西。

2 个答案:

答案 0 :(得分:1)

.NET 4.0中的WCF具有可在您描述的故障转移方案中使用的路由功能。这个WCF sample显示了内置RoutingService class如何用于此目的。

答案 1 :(得分:0)

您可以查看Microsoft Network Load Balancing (aka NLB)。微软也在WCF的背景下提到了这一点。有一篇关于此here的文章。