136

WCF 中的 Web 引用和服务引用有什么区别?WCF 中哪个更可取?

4

5 回答 5

102

这里的低级答案是 Web 引用将创建一个客户端代理类,它允许您的代码与通过 WSDL 描述并通过 SOAP 或 HTTP GET 进行通信的 Web 服务进行通信(其他海报表明它只是 ASMX,但Web 引用也可以与基于 Java 的 Web 服务或基于 Python 的或 Ruby 对话,只要它们都与 WSDL 对话并符合 WS-I 互操作性标准)。

服务引用将创建与基于 WCF 的服务通信的客户端代理类:无论该 WCF 服务是否是 Web 服务。

于 2009-04-14T15:27:53.567 回答
68

Web Reference 允许您与任何基于实现 WS-I Basic Profile 1.1 的技术的任何服务进行通信,并将相关元数据公开为 WSDL。在内部,它使用客户端的 ASMX 通信堆栈。

服务引用允许您与任何基于实现 WCF 支持的许多协议(包括但不限于 WS-I Basic Profile)的任何技术的任何服务进行通信。在内部,它使用客户端的 WCF 通信堆栈。

请注意,这两个定义都非常广泛,并且都包括不是用 .NET 编写的服务。

完全有可能(尽管不推荐)添加指向 WCF 服务的 Web 引用,只要 WCF 端点使用basicHttpBinding或一些兼容的自定义变体。

还可以添加指向 ASMX 服务的服务引用。编写新代码时,您应该始终使用服务引用,因为它更灵活且面向未来。

于 2010-06-04T11:54:08.353 回答
17

服务引用是用于添加对所有 WCF 服务(它们可能不是 Web 服务)的引用的较新接口,而 Web 引用特别关注 ASMX Web 引用。

您可以通过添加服务参考中的高级选项访问网络参考(如果我没记错的话)。

我会使用服务引用,因为据我了解,它是两者中较新的机制。

于 2008-11-21T12:15:12.083 回答
7

服务引用处理端点和绑定,它们是完全可配置的。它们允许您通过任何传输协议(HTTP、TCP、共享内存等)将客户端代理指向 WCF

它们旨在与 WCF 一起使用。

如果您使用 WebProxy,您几乎将自己绑定到使用 WCF over HTTP

于 2008-11-21T12:34:07.770 回答
5

要考虑的另一点是,服务接口的新 UI 将为您提供更大的灵活性来创建代理类。例如,如果它们匹配,它将允许您将数据合同映射到现有的 dll(实际上这是默认行为)。

于 2008-11-23T00:54:54.810 回答