Web引用与服务引用

我只是用贝宝打了一个巨大的砖墙。 我创build了一个常规的C#项目来使用他们的WSDL创build一些包装类。

如果您创build了非Web项目,那么添加wsdl的唯一选项就是Web服务参考。 而且这个版本与Web Reference相同,但并不是真正的。它补充说,即使是PayPal家伙也不知道。

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

我只能看到以下两个接口,在我看来我需要使用,因为我没有看到一个PayPalAPIAASoapBinding ,你可以在基于Web引用的服务参考中看到:

 PayPalAPIAAInterfaceClient PayPalAPIInterfaceClient 

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

那么,服务引用与Web引用有什么关系呢? 那么如果服务引用会给我一个循环,并给我一个不同的接口,而不是一个Web引用,那么我应该怎么把它分离出来呢?

另外,为了让事情变得更加混乱,VS 2008有一个Web服务应用程序项目。

那我该用什么? 我们正在使用.NET 3.5框架,我们还没有准备好转移到WCF 。 那么即使不使用WCF或什么,我仍然可以使用新的服务引用? 如果您使用的是.NET 3.5而不是WCF,而您仍然想要使用基本的Web服务,那么您仍然使用服务引用路由而不使用WCF框架? 这意味着它可以像.NET 2.0 Web Reference一样使用,只是要获得完全不同的WSDL一代?

添加Web引用是旧式的,不赞成使用的ASP.NET webservices(ASMX)技术(只使用XmlSerializer) – 如果你这样做,你会得到一个ASMX客户端用于ASMX web服务。 您可以在任何项目(Web应用程序,Web站点,控制台应用程序,Winforms – 您的名称)中执行此操作。

添加服务引用是实现它的新方法,增加了一个WCF服务引用,为您提供比普通的旧ASMX东西更先进,更灵活的服务模型。

由于您还没有准备好移动到WCF,如果您确实必须添加旧样式的Web引用,那么您在添加服务引用时,在出现的对话框中单击[Advanced ]button在左上angular:

替代文字

然后在下一个对话框中select底部的[添加Web引用]button。

如果我理解你的问题是正确的:

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

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

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

现在你可以添加一个像你正在寻找的常规SOAP Web引用。

添加服务引用允许您创build一个WCF客户端,通过使用适当的绑定,可以使用该客户端与常规Web服务交谈。 添加Web引用将允许您创build一个Web服务(即SOAP)引用。

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

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

我发现使用服务引用更好,因为它是新的,因此会更好地维护。