2011-05-31 58 views
0

有一個用WCF編寫的Web服務,我將其添加爲參考。當我將它作爲服務引用添加到代理類生成器時,它完美地工作,但當我使用service.svc?WSDL將它添加爲Web引用時,它會生成稍微不同的類。以下是區別:添加WCF服務作爲Web引用和服務引用時的不同代理類

//service reference 
public partial class TestServicesClient : ... // correct class name 
{ 
    public int TestMethod(string serviceID, int dealID) // correct method signature 
    { ... } 
} 

//web reference 
public partial class TestServices: ... //different class name 
{ 
    public void TestMethod(string serviceID, int dealID, bool dealIDSpecified, out int TestMethodResult, out bool TestMethodResultSpecified) // different method signature 
    { ... } 
} 

我試過使用wsdl.exe來生成web引用類,沒有幫助。

這裏有什麼問題?

回答

2

這裏沒有錯。 Service Reference是使用WCF服務的「新」方式,它消除了諸如「指定」參數,「結果」參數和「結果指定」參數之類的開銷。

您仍然可以使用其他屬性/方法來檢查是否指定了參數或是否存在結果。但在WCF之前,它改變了方法簽名。

您使用服務引用和Web引用有點不同,這就是它的方式。

這裏的一些額外閱讀:

而從回覆引用到"What is the difference between WCF service and web service"

WCF 「Web服務」 是一個很大的一部分 更廣譜的遠程通過WCF啓用通信。你 將獲得更高程度的 靈活性和可移植性在做WCF 東西不是通過傳統的 ASMX因爲WCF的設計,從 上爬起來,彙總所有由MS提供的 不同的分佈式編程 基礎設施。 WCF中的 端點可以通過SOAP/XML輕鬆地通信 ,如 它可以通過TCP /二進制並更改 此介質僅僅是一個配置 文件mod。在理論上,這降低了 量的新代碼移植 或不斷變化的業務需求,目標在需要的時候, 等

ASMX比WCF年齡大了,什麼 ASMX可以這樣做,可以WCF(及以上)。 基本上你可以看到WCF試圖通過 邏輯地將所有的 分組在一起,使得兩個應用程序以不同的方式在 之間通信; ASMX 只是這些方法中的一種,所以 現在分組在WCF的保護傘 的能力之下。

+0

謝謝。附加閱讀:http://www.west-wind.com/weblog/posts/2007/Dec/13/Generated-Date-Types-in-WCF-and-unexpected-dateSpecified-fields – dstr 2011-06-01 07:07:18

0

服務參考和Web參考之間幾乎沒有差異。 WCF使用datacontract序列化器進行序列化。因此,將XmlSerializeFormat屬性添加到serivcecontract,然後添加Web引用。您的額外參數將被刪除。但後來它就像只使用wcf一樣使用web服務。還有一個限制是你只需要像http一樣使用web綁定。