我正在将来自其他供应商的产品与我们现有的流程集成。
此产品通过ASP.NET Web服务与我们的系统连接。在中,我需要编写一个ASP.NET Web服务,它具有供应商指定的特定方法名称和参数。
很简单,但我们希望将尽可能多的东西迁移到WCF。我还没有使用过WCF,但是我认为它是ASP.NET Web服务(和其他东西)的替代品。
看到我不能修改供应商的产品,我可以使用WCF编写这个新Web服务的唯一方法是,可以像使用WCS服务一样使用它,就像它是ASP.NET Web服务一样(即,供应商的产品,它正在消耗ASP.NET Web服务)。
可以通过这种方式使用WCF服务吗?
答案 0 :(得分:5)
迁移应该几乎是机械的。替换包含此内容的.asmx文件:
<%@ WebService
Language="C#"
CodeBehind="~/App_Code/CommunicationService.cs"
Class="CommunicationService" %>
...包含以下内容的.svc文件:
<%@ ServiceHost
Language="C#"
CodeBehind="~/App_Code/CommunicationService.cs"
Service="CommunicationService" %>
......你差不多完成了。
但是,WCF Web服务的默认设置与ASP.NET Web服务的默认设置不同。特别是,传入和传出消息的XML名称空间可能不同。并非每个人都为其服务和消息指定不同的xml名称空间,但对于那些人来说,迁移将是一个问题。行为差异(WCF-vs-ASPNET)将导致成功能够调用ASMX服务的应用程序无法使用“转换”的WCF服务。
This article详细讨论了该问题,并描述了一个很好的解决方法:使用自定义ServiceHost。
上面文章中的服务主机代码不完整,因为它只能修复请求架构;您可能/可能还需要为响应模式执行类似的操作。
祝你好运。答案 1 :(得分:0)
除了其他答案并指出您的迁移问题之外,您仍然可以打开以保持旧Web服务现在正常工作,但将这些Web服务(现有)指向WCF主机服务。所以新的和旧的Webservice都能无缝地工作。