2012-08-17 89 views
0

我正在使用此wsdl生成類。服務引用生成不同的類到Web引用

https://pal-live.adyen.com/pal/Payment.wsdl

當我將它添加爲「Web引用」它創建包含付款所需的方法Payment類。

當將其添加爲「服務引用」它僅創建這些方法,但沒有付款類的接口。

還有其他類的,但關鍵的支付類失蹤,其方法是隻在一個接口。

wsdl如何生成不同的類?這裏的關鍵區別是什麼?我如何獲得這個支付類?

它也可能是值得指出的是,我之所以不能使用Web引用是因爲這段代碼被部署到蔚藍的網站和我得到的SDK版本錯誤,如果我推Web引用生成的代碼。推測是因爲.net版本。

謝謝

+0

是否有'PaymentClient'類或從'ClientBase'繼承的任何類? – cadrell0 2012-08-17 16:44:34

+0

WCF客戶端使用的接口不是具體實現,而是一個側面節點。然後該接口與'ChannelFactory'或'ClientBase'一起使用,它只是'ChannelFactory'的一個包裝。擁有界面通常就夠了。 – cadrell0 2012-08-17 16:48:30

回答

1

我用svcutil根據你的wsdl生成類。

它創建的接口PaymentPortType。這定義瞭如何與您的服務進行溝通的合同。但是,這並不知道服務所在的位置。

這也造就了一流的PaymentPortTypeClient。該類繼承ClientBase<PaymentPortType>。通過給PaymentPortTypeClient一個綁定和終端地址,您現在擁有了與服務交談所需的一切。

注:這可能來自一個配置文件,此時你會使用構造

public PaymentPortTypeClient(string endpointConfigurationName) 

ClientBase擁有一個私人的ChannelFactory。 ChannelFactory.CreateChannel()將創建一個實現PaymentPortType的對象,並可以與您的服務進行通信。這是自動完成的,並存儲在ClientBase.Channel中。

最後,PaymentPortTypeClient還實現PaymentPortType。實現接口中的每種方法以在通道上調用該方法。