1

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

4

2 回答 2

2

.NET 4.0 中的 WCF 具有路由功能,可用于您描述的故障转移场景。此WCF 示例显示了如何将内置RoutingService 类用于此目的。

于 2012-03-21T12:37:31.180 回答
0

你可以看看Microsoft Network Load Balancing (aka NLB)。微软也在 WCF 的上下文中提到了这一点。这里有一篇文章

于 2012-03-21T12:17:08.697 回答