Web引用与服务引用

时间:2010-01-28 21:28:56

标签: c# .net-3.5 paypal

我刚刚用贝宝撞上了一堵巨大的砖墙。我创建了一个常规的C#项目来使用他们的WSDL创建一些包装类。

如果您创建非Web项目,则添加wsdl的唯一选项是Web服务引用。这构建了与Web Reference相同的一组代理类,但实际上并不是真的..即使是PayPal的人也不知道这些代码类。

所以我整个时间都在这个代理类列表中寻找正确的接口来用作服务(SoapBinding)而PayPalAPIAASoapBinding不在那里我一直告诉我们的PayPal点联系。

我只能看到以下2个接口,这些接口在我看来需要使用,因为我没有看到您在基于Web Reference的服务参考中看到的PayPalAPIAASoapBinding

PayPalAPIAAInterfaceClient
PayPalAPIInterfaceClient 

所以我想通了哦,我可能已经创建了一个服务引用与Web引用,Web引用是Web项目中的一个选项。但我不希望我的服务引用与我的Web项目紧密耦合。这就是我创建C#项目的原因。

那么服务参考与Web参考究竟是什么?如果Service Reference要给我一个循环并给我一组不同于Web Reference的接口,我该怎么把它分成另一个项目?

另外,为了让事情更令人困惑,VS 2008有一个Web服务应用程序项目。

那我该怎么用? 我们正在使用.NET 3.5框架,我们 已准备好转移到WCF 。即使不使用WCF还是什么,我仍然可以使用新的服务参考吗?如果您使用的是.NET 3.5而不是WCF,并且您仍然想要进行基本的Web服务,那么您是否仍然使用服务参考路由而不使用WCF框架?它可以像.NET 2.0 Web Reference一样使用,只是你将获得完全不同的WSDL生成?

4 个答案:

答案 0 :(得分:203)

添加Web引用是旧式的,已弃用的ASP.NET Web服务(ASMX)技术(仅使用XmlSerializer) - 如果这样做,您将获得一个ASMX客户端ASMX Web服务。您可以在几乎任何项目(Web应用程序,网站,控制台应用程序,Winforms - 您的名字)中执行此操作。

添加服务引用是一种新的方式,添加了一个WCF服务引用,它提供了比普通的旧ASMX更高级,更灵活的服务模型。

由于您尚未准备好转移到WCF,您仍然可以添加旧式Web引用,如果您真的必须:当您执行“添加服务引用”时,在出现的对话框中,单击按钮左下角的[高级]按钮:

alt text

在出现的下一个对话框中,选择底部的[Add Web Reference]按钮。

答案 1 :(得分:8)

如果我理解你的问题:

要添加.net 2.0 Web服务参考而不是WCF服务参考,请右键单击您的项目,然后单击“添加服务参考”。

然后点击对话框左下角的“高级..”。

然后单击下一个对话框左下角的“添加Web引用..”。

现在您可以添加常规的SOAP Web引用,就像您正在寻找的那样。

答案 2 :(得分:4)

添加服务引用允许您创建WCF客户端,如果您使用适当的绑定,则可以使用该客户端与常规Web服务进行通信。添加Web引用将允许您创建 Web服务(即SOAP)引用。

如果你完全确定你还没有为WCF做好准备(实际上不知道为什么),那么你应该创建一个常规的Web服务引用。

答案 3 :(得分:3)

最后,两者都做同样的事情。代码存在一些差异:Web Services不会添加项目的Root命名空间,但Service Reference会将服务类添加到项目的命名空间中。 ServiceSoapClient类获得不同的命名,这并不重要。在使用TFS时,我宁愿使用服务参考,因为它更适用于源代码控制。两者都使用SOAP协议。

我发现使用服务参考更好,因为它是新的,因此可以更好地维护。