Web 引用和服务引用的区别?

WCF 中 Web 引用和服务引用的区别是什么? 在周转基金中哪个更好?

103611 次浏览

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

您可以通过添加服务引用中的高级选项访问 Web 引用(如果我没记错的话)。

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

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

它们被设计为与 WCF 一起工作。

如果您使用 WebProxy,那么您基本上将自己绑定到使用 WCF over HTTP

需要考虑的另一点是,新的 UI for Service Interface 将在如何创建代理类方面提供更大的灵活性。例如,它将允许您将数据契约映射到现有的 dll,如果它们匹配的话(实际上这是默认行为)。

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

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

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

服务参考允许您与基于任何技术的任何服务进行通信,这些技术实现了 WCF 支持的任何协议(包括但不限于 WS-I基本概要)。在内部,它在客户端使用 WCF 通信堆栈。

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

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

还可以添加指向 ASMX 服务的服务引用。在编写新代码时,你应该经常使用服务参考仅仅是因为它更加灵活和不受未来影响。