通过WCF路由服务路由对传统ASMX Web服务的调用

通过WCF路由服务路由对传统ASMX Web服务的调用

问题描述:

我正在处理包含对两个.asmx Web服务的引用的遗留应用程序。我们希望重新构建服务层以遵循更多的企业服务总线模式,其中客户端将其所有呼叫定向到一个服务,该服务处理将请求路由到适当的服务。通过WCF路由服务路由对传统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 

这是可能的,我正在盘算的方式做?

+0

当你尝试做什么会发生什么? –

我从来没有尝试过,但理论上它应该没有任何问题。 WCF向后兼容ASMX - 您可以使用WCF客户端与ASMX交谈,如果需要访问ASP.NET管道,可以使用WCF而不是ASMX进行一些额外的配置。只要尝试使用路由端点basicHttpBinding(用于向后兼容)。对于路由服务使用IRequestReplyRouter合同。

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

+1

因此,它的工作方式与您期望的相似,但将.asmx服务的元数据暴露出来令人沮丧。我能够通过路由器成功路由WCF服务的mex端点,然后svcutil可以很容易地使用路由端点,但.asmx要求我的类已经使用真正的WSDL生成,并且我只需要在事实之后更改URL。 – mclark1129