2010-12-21 96 views
5

我正在将来自其他供应商的产品与我们现有的流程进行整合。WCF服务可以像使用ASP.NET Web服务一样使用吗?

本产品通过ASP.NET Web服务与我们的系统进行交互。正如所述,我需要编写一个具有供应商指定的特定方法名称和参数的ASP.NET Web服务。

够简单,但我们希望将尽可能多的东西移植到WCF。我还没有使用过WCF,但正如我所看到的那样,它代替了ASP.NET Web服务(以及其他)。

看到我无法修改供应商的产品,我可以使用WCF编写这个新Web服务的唯一方法是如果一个WCF服务可以像使用ASP.NET Web服务一样被使用(即,尽可能关于供应商的产品,它正在使用ASP.NET Web服务)。

WCF服务可以以这种方式消耗吗?

回答

5

是的,网络服务是网络服务。一般而言,WCF比ASP.NET更灵活,功能也更强大,但是您可以将WCF服务中的线上消息导入和导出为与ASMX服务的消息完全相同。但是,默认情况下WCF也是不同

迁移应该几乎是机械的。更换包含此.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。

上述文章中的服务主机代码是不完整的,因为它仅用于修复请求模式;你可能/也可能需要为响应模式做类似的事情。

祝你好运。

0

除了其他答案并指出您的迁移问题之外,您仍然可以继续开放以保持旧的Webservices正常运行,但将这些Webservices(Existing)指向WCF主机服务。所以新旧Web服务无缝地工作。

相关问题