Web 参考与服务参考

Posted

技术标签:

【中文标题】Web 参考与服务参考【英文标题】:Web Reference vs. Service Reference 【发布时间】:2011-01-10 14:45:48 【问题描述】:

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

如果您创建一个非 Web 项目,则添加 wsdl 的唯一选项是 Web 服务引用。这构建了一组与 Web Reference 相同的代理类,但不是真的......它增加了更多,甚至 PayPal 的人都没有意识到。

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

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

PayPalAPIAAInterfaceClient
PayPalAPIInterfaceClient 

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

那么到底什么是服务参考与 Web 参考?如果服务参考会给我一个循环并给我一组与 Web 参考不同的接口,我应该如何将其分离到另一个项目中?

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

那我用什么? 我们正在使用 .NET 3.5 框架,我们还没有准备好迁移到 WCF。那么即使不使用 WCF 或什么,我仍然可以使用新的服务参考吗?如果您使用的是 .NET 3.5 而不是 WCF,并且您仍然想做基本的 Web 服务,您是否仍然走服务参考路线而不使用 WCF 框架?这意味着它是否仍可以像 .NET 2.0 Web 参考一样使用,只是您将获得完全不同的一代 WSDL?

【问题讨论】:

Difference between web reference and service reference?的可能重复 8 年后仍然有意义。 【参考方案1】:

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

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

由于您还没有准备好迁移到 WCF,如果您确实需要,您仍然可以添加旧式 Web 引用:当您执行“添加服务引用”时,在出现的对话框中,单击按钮左角的【高级】按钮:

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

【讨论】:

MS 将它隐藏在 WCF 对话框中是多么愚蠢!这里的位置甚至没有任何意义 @coffeeaddict:嗯,我认为 MS 正试图巧妙地引导你默认使用 WCF - 如果你真的下定决心,只能使用旧式 ASMX :-) 如果您使用 Alt + PrtScn,您可以只拍摄当前活动窗口的快照,这样您就不必手动裁剪您想要显示的内容 :o) 计算机上是否也需要 .NET 2.0?或者.NET 4.0 将能够处理基于.NET 2.0 的“Web Reference”技术?我想知道,因为我在 .NET 4.0 应用程序中将 SOAP Web 服务部署为“Web 参考”。 @sparkyShorts:是的。【参考方案2】:

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

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

【讨论】:

【参考方案3】:

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

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

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

然后点击下一个对话框左下角的“Add Web Reference..”。

现在您可以添加您正在寻找的常规 SOAP Web 参考。

【讨论】:

计算机上是否也需要 .NET 2.0?或者.NET 4.0 将能够处理基于.NET 2.0 的“Web Reference”技术?我想知道,因为我在 .NET 4.0 应用程序中将 SOAP Web 服务部署为“Web 参考”。【参考方案4】:

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

如果您绝对确定自己还没有为 WCF 做好准备(真的不知道为什么),那么您应该创建一个常规的 Web 服务引用。

【讨论】:

因为 WCF 对于新手来说并不容易。而且我的老板不让我搬去是真正的原因。这是代码并在此处运行。当你遇到这种情况时,我无能为力。 @coffeeaddict 我认为你和你的老板被误导了。两种类型的引用都将创建一个类,该类提供调用服务操作的方法。由“服务”引用创建的类恰好继承自一个基类,而该基类恰好位于一个库中,微软认为该库是它称为 WCF 的某些技术的一部分,这有什么关系? 计算机上是否也需要 .NET 2.0?或者.NET 4.0 将能够处理基于.NET 2.0 的“Web Reference”技术?我想知道,因为我在 .NET 4.0 应用程序中将 SOAP Web 服务部署为“Web 参考”。

以上是关于Web 参考与服务参考的主要内容,如果未能解决你的问题,请参考以下文章

Web 参考与服务参考

Web 参考与服务参考

Web参考和服务参考之间的区别?

数据库服务器与web服务器分离有啥好处?

Web参考和服务参考之间的区别?

Web参考和服务参考之间的区别?