7

我正在构建一个 WCF 路由器,它需要充当许多内部 Web 服务(WCF 和 ASMX)的代理。路由部分相当简单,但我不明白服务元数据交换在这个解决方案中是如何工作的。

换句话说:客户端如何为路由器后面的内部服务获取元数据?我是否需要手动向消费者提供 WSDL 文件?我可以以某种方式设置路由器以返回适当的内部服务的元数据吗?

或者也许我的架构完全错误?

4

3 回答 3

4

我在这里看到 2 个选项:

  1. 如果您不想公开内部地址,则可以选择创建“非透明”代理。优点是您可以做的不仅仅是路由消息(即这样的代理可以充当“安全边界”,解开加密消息并将它们明文传递到内部端点)。它还可以提供“可互操作级别”,将 WCF 服务公开为使用相同数据类型/消息 XML 结构的简单 SOAP。缺点是您必须更新其代码以及代理服务
  2. 您可以实现 WSDL 重写器。有了它,您可以即时屏蔽内部服务 URL - 根据您的条件,简单的字符串替换可能会或可能不会足够。

参考:

于 2012-11-12T12:07:41.000 回答
1

相同的“路由器服务”也可用于为路由器后面的内部服务获取单独的 WSDL。

看看这个线程

于 2013-11-10T15:13:43.723 回答
0

您是否考虑过使用简单的 HTTP 代理?所有使用 REST 或 SOAP 的 WCF 都是其核心 HTTP 请求。似乎路由功能(我假设您基于主机名、URL 路径或参数)可以通过代理 HTTP 请求来执行,而无需了解内容。ASP.Net 可以很好地自行清理传入的请求,但您始终可以根据需要添加额外的自定义过滤。

于 2012-11-13T01:03:53.107 回答