Web参考与服务参考


110

我刚和Paypal碰到一堵巨大的砖墙。我创建了一个常规的C#项目,以使用其WSDL创建一些包装器类。

如果创建非Web项目,则添加wsdl的唯一选择是“ Web服务参考”。这样就建立了与Web参考相同的代理类集,但实际上不是。.它增加了很多甚至PayPal都不知道的代理类。

因此,我一直在这笔代理类列表中寻找正确的接口以用作服务(SoapBinding),PayPalAPIAASoapBinding但我一直没有告诉我们的PayPal联络人。

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

PayPalAPIAAInterfaceClient
PayPalAPIInterfaceClient 

所以我想出了,哦,我可能已经创建了一个Service Reference和Web Reference,Web Reference是Web项目中的一个选项。但是我不希望我的服务参考与我的Web项目紧密结合。这就是为什么我创建C#项目的原因。

那么,什么是服务参考与Web参考呢?如果Service Reference会给我带来一个循环并为我提供一套与Web Reference不同的接口,那么我应该如何将其分离到另一个项目中?

另外,令事情更加混乱的是,VS 2008有一个Web Service Application项目。

那我用什么呢? 我们使用的是.NET 3.5框架,还不准备转向WCF。因此,即使不使用WCF还是什么,我仍然可以使用新的服务参考吗?如果您使用的是.NET 3.5而不是WCF,并且您仍想进行基本的Web服务,那么您是否仍沿用了Service Reference路由而只是不使用WCF框架?意味着它仍然可以像.NET 2.0 Web Reference一样使用,只是您将获得完全不同的WSDL版本?



2
8年后,仍然有意义。
迈克·德文尼

Answers:


213

“添加Web参考”是一种过时的,不推荐使用的ASP.NET Web服务(ASMX)技术(仅将XmlSerializer用于您的工作)-如果这样做,您将获得ASMX Web服务的ASMX客户端。您几乎可以在任何项目(Web应用程序,网站,控制台应用程序,Winforms-您为其命名)中执行此操作。

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

由于您还没有准备好使用WCF,因此,如果确实需要,您仍然可以添加旧式的Web参考:在执行“添加服务参考”时,在出现的对话框中,单击[高级]按钮位于左上角:

替代文字

然后在出现的下一个对话框中,选择底部的[添加Web参考]按钮。


6
MS将其隐藏在WCF对话框中是多么愚蠢!此处的位置甚至都没有任何意义
PositiveGuy 2010年

9
@coffeeaddict:好吧,我认为MS会默认试图巧妙地诱使您使用WCF-如果您确实确定的话,只能使用老式ASMX :-)
marc_s 2010年

27
如果您使用Alt + PrtScn,则可以仅捕获当前活动窗口的快照,这样就不必手动裁剪出想要显示的内容了:o)
Ernest

在计算机上也需要.NET 2.0吗?还是.NET 4.0能够处理基于.NET 2.0的“ Web参考”技术?我想知道,因为我在.NET 4.0应用程序中将SOAP Web服务部署为“ Web参考”。
计算机用户

1
@sparkyShorts:是的。
marc_s

9

如果我正确理解您的问题:

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

然后单击对话框左下方的“高级..”。

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

现在,您可以按需要添加常规的SOAP Web参考。


在计算机上也需要.NET 2.0吗?还是.NET 4.0能够处理基于.NET 2.0的“ Web参考”技术?我想知道,因为我在.NET 4.0应用程序中将SOAP Web服务部署为“ Web参考”。
计算机用户

4

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

如果您完全确定还没有准备好使用WCF(真的不知道为什么),那么应该创建一个常规的Web服务参考。


3
因为WCF对于新手来说并不容易。而且,我的老板不允许我这样做是真正的原因。它是代码并在此处运行。遇到这种情况时,我无能为力。
PositiveGuy 2010年

7
@coffeeaddict我认为您和您的老板是误会。两种类型的引用都将创建一个类,该类提供用于调用服务操作的方法。由“服务”引用创建的类碰巧继承自基类,该基类恰好在Microsoft认为是其称为WCF的某些技术的一部分的库中,这与它有何关联?
丹尼尔·普拉特

1
在计算机上也需要.NET 2.0吗?还是.NET 4.0能够处理基于.NET 2.0的“ Web参考”技术?我想知道,因为我在.NET 4.0应用程序中将SOAP Web服务部署为“ Web参考”。
计算机用户

3

最后,两者都做同样的事情。代码存在一些差异:Web服务未添加项目的Root命名空间,但是Service Reference将服务类添加到项目的命名空间。本ServiceSoapClient类获取不同的命名,这并不重要。在使用TFS时,我宁愿使用Service Reference,因为它可以更好地与源代码控制一起使用。两者都使用SOAP协议。

我发现最好使用服务参考,因为它是新的,因此将得到更好的维护。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.