2010-12-21 113 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服務無縫地工作。

相關問題