【问题标题】:Routing calls to legacy ASMX web service through WCF Routing Service通过 WCF 路由服务将调用路由到旧版 ASMX Web 服务
【发布时间】:2011-07-07 20:06:39
【问题描述】:

我正在开发一个包含对两个 .asmx Web 服务的引用的旧应用程序。我们希望重构服务层,使其更多地遵循企业服务总线模式,其中客户端将其所有调用定向到一个服务,该服务将请求路由到适当的服务。

我一直在使用 WCF 路由服务,并且能够通过 RoutingService 成功地将对 WCF 服务的调用路由到相应的服务。

例如,客户端可以调用:

http://routingservice/RoutingService.svc/WcfService

路由服务会将其转发给

http://wcfservice/WcfService

通过我在配置中指定的规则

我想通过 .asmx 服务以某种方式实现相同的结果,我可以只更新旧应用程序中的 Web 引用 URL 以指向路由服务,然后路由服务会将请求转发到该 URL客户端当前正在使用

变化:

http://webservices/LegacyService.asmx

http://routingservice/RoutingService.svc/LegacyWebService

这可以按照我想的方式来做吗?

【问题讨论】:

  • 当你尝试这样做时会发生什么?

标签: wcf asmx wcf-routing


【解决方案1】:

我从未尝试过,但理论上它应该可以正常工作。 WCF 向后兼容 ASMX - 您可以使用 WCF 客户端与 ASMX 对话,如果需要访问 ASP.NET 管道,可以使用 WCF 代替 ASMX 并进行一些额外的配置。只需尝试使用带有basicHttpBinding 的路由端点(用于向后兼容)。对于路由服务,请使用IRequestReplyRouter 合约。

可能存在一个问题 - 如果您的 ASMX 服务使用 ASP.NET 会话,则会话密钥在 cookie 中传输 - 我不确定路由服务如何处理 cookie。

【讨论】:

  • 所以它确实像您期望的那样工作,尽管要为 .asmx 服务公开元数据非常困难。我能够通过路由器成功路由 WCF 服务的 mex 端点,然后 svcutil 可以同样轻松地使用路由端点,但是 .asmx 要求我的类已经使用真正的 WSDL 生成,而我只有事后更改 URL。
猜你喜欢
  • 1970-01-01
  • 2018-07-12
  • 1970-01-01
  • 1970-01-01
  • 2011-08-05
  • 1970-01-01
  • 1970-01-01
  • 2011-07-05
  • 2011-07-16
相关资源
最近更新 更多