Web 参考与服务参考

我在贝宝上碰壁了。我已经创建了一个常规的 C # 项目来使用它们的 WSDL 创建一些包装类。

如果创建非 Web 项目,则添加 wsdl 的唯一选项是 Web 服务引用。这个代理构建的代理类与 Web 引用构建的代理类几乎相同,但实际上并非如此。.它增加了更多,甚至贝宝的家伙没有意识到。

所以我一直在这个代理类列表中寻找合适的接口作为服务使用(SoapBinding) ,而 PayPalAPIAASoapBinding不在那里,我一直告诉我们的 PayPal 联系人。

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

PayPalAPIAAInterfaceClient
PayPalAPIInterfaceClient

So I figured out oh, I probably had created a Service Reference vs. a Web Reference which Web Reference is an option in a Web project. But I don't want my service reference tightly coupled to my web project. So that's why I created the C# Project.

So what the heck is a Service Reference vs. Web Reference? And how am I supposed to separate this out into anther project if Service Reference is going to throw me a loop and give me a set of different interfaces than a Web Reference would?

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

那我该用什么?我们使用的是.NET 3.5框架,我们已经准备好转移到 WCF 了.因此,即使不使用 WCF,我仍然可以使用新的服务参考吗?如果你吸毒的话。NET 3.5,而不是 WCF,你仍然想做基本的 Web 服务,你仍然走服务参考路线,只是不使用 WCF 框架?意思是它可以像。NET 2.0 Web Reference 仍然,只是你将得到一个完全不同的一代 WSDL?

171873 次浏览

Adding a service reference allows you to create a WCF client, which can be used to talk to a regular web service provided you use the appropriate binding. Adding a web reference will allow you to create 只有 a web service (i.e., SOAP) reference.

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

If I understand your question right:

添加。Net 2.0 Web Service Reference 而不是 WCF Service Reference,右键单击项目并单击“添加服务引用”。'

然后单击对话框左下角的“ Advanced. .”。

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

现在您可以添加一个正常的 SOAPWeb 引用,就像您正在寻找的那样。

Add Web Reference 是一种老式的、不被推崇的 ASP.NET webservices (ASMX)技术(只使用 XmlSerializer 来处理你的东西)——如果你这样做了,你会得到一个 ASMX Web 服务的 ASMX 客户端。您可以在几乎任何项目(网络应用程序,网站,控制台应用程序,Winforms-你的名字)这样做。

添加 Service Reference 是一种新的方法,添加 WCF 服务引用,它提供了比普通的 ASMX 东西更高级、更灵活的服务模型。

因为你还没有准备好转移到 WCF,所以你仍然可以添加旧式的 web 引用,如果你真的需要的话: 当你做“添加服务引用”时,在弹出的对话框中,点击按钮左角的[ Advanced ]按钮:

alt text

在下一个对话框中,选择底部的[ AddWebReference ]按钮。

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

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