2012-08-17 34 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。实现接口中的每种方法以在通道上调用该方法。

相关问题