【问题标题】:WCF routing and various endpointsWCF 路由和各种端点
【发布时间】:2025-11-28 22:45:02
【问题描述】:

我有一个小问题,不知道从哪里开始。

我需要提供订阅服务,如果返回唯一地址,消费者将在订阅后发送肥皂。它的工作原理是这样的:你在地址http://foo.org/Subscribe 上发送一个 SOAP,作为响应你得到地址http://foo.org/SubscriptionManager/1,下一个消费者将得到http://foo.org/SubscriptionManager/2 等等。

如何通过 WCF 实现它?我猜想 WCF 有类似 ASP.Net Routing 之类的东西,我可以在其中路由 http://foo.org/SubscriptionManager/ 之类的链接并访问 2 作为参数,但我还没有找到类似的东西。

我期待任何帮助。

【问题讨论】:

  • 您是在问如何实现可以向端点发送请求并让它返回地址作为响应的 WCF 客户端?

标签: wcf routing wcf-routing


【解决方案1】:

我的问题是为什么要将用户路由到不同的端点?

在我看来,返回一个服务 URI 供消费者调用的整个想法并不是一个好的设计。

您正在迫使您的消费者做更多的工作 - 他们必须进行额外的调用并询问响应才能找出他们必须调用的端点。

如果您的要求是在两个服务之间分散负载,您应该提供一个负载平衡端点,然后将请求发送到其他端点。

或者,如果您的要求是根据某些规则将某些用户路由到一个或其他订阅服务,那么您可以查看WCF-Routing

【讨论】:

  • 嗯,这个想法是在订阅中,这是我们公司的规范,所以我必须这样做。我还没有在 MSDN 上找到如何在运行时生成像 foo.org/SubscriptionManager/1 这样的端点并将其返回给我的消费者。最好的解决方案是如果我可以制作一个过滤器,它会使用参数将我的消费者路由到服务操作,正如我在问题中所说的那样。
  • WCF-Routing 允许您创建过滤器以根据请求消息的内容路由服务请求。但是,在运行中更改肥皂请求比较棘手。我认为 WCF 路由在称为 SOAP 处理 的东西中提供了这一点(这篇文章的一半msdn.microsoft.com/en-us/library/ee517422.aspx
  • 休,非常感谢您的帮助。对不起,我是新手,所以我不能投票给你寻求帮助。我的最后一个问题 - WCF 是否支持端点的运行时创建,所以我不需要使用路由(抱歉,SOAP-Processing 没有给我解决方案,恐怕,我需要使用用于路由消息的 Http 标头)?
  • 很抱歉之前没有回复您。 WCF 确实支持端点的运行时创建。