WCF路由和服务元数据

时间:2012-11-03 10:23:37

标签: wcf web-services soap wsdl wcf-routing

我正在构建一个WCF路由器,它需要充当许多内部Web服务(WCF和ASMX)的代理。路由部分非常简单,但我无法理解服务元数据交换在此解决方案中的作用。

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

或许我的架构完全错了?

3 个答案:

答案 0 :(得分:4)

我在这里看到两个选项:

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

答案 1 :(得分:1)

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

查看this thread

答案 2 :(得分:0)

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