WCF 中的 Web 引用和服务引用有什么区别?WCF 中哪个更可取?
5 回答
这里的低级答案是 Web 引用将创建一个客户端代理类,它允许您的代码与通过 WSDL 描述并通过 SOAP 或 HTTP GET 进行通信的 Web 服务进行通信(其他海报表明它只是 ASMX,但Web 引用也可以与基于 Java 的 Web 服务或基于 Python 的或 Ruby 对话,只要它们都与 WSDL 对话并符合 WS-I 互操作性标准)。
服务引用将创建与基于 WCF 的服务通信的客户端代理类:无论该 WCF 服务是否是 Web 服务。
Web Reference 允许您与任何基于实现 WS-I Basic Profile 1.1 的技术的任何服务进行通信,并将相关元数据公开为 WSDL。在内部,它使用客户端的 ASMX 通信堆栈。
服务引用允许您与任何基于实现 WCF 支持的许多协议(包括但不限于 WS-I Basic Profile)的任何技术的任何服务进行通信。在内部,它使用客户端的 WCF 通信堆栈。
请注意,这两个定义都非常广泛,并且都包括不是用 .NET 编写的服务。
完全有可能(尽管不推荐)添加指向 WCF 服务的 Web 引用,只要 WCF 端点使用basicHttpBinding
或一些兼容的自定义变体。
还可以添加指向 ASMX 服务的服务引用。编写新代码时,您应该始终使用服务引用,因为它更灵活且面向未来。
服务引用是用于添加对所有 WCF 服务(它们可能不是 Web 服务)的引用的较新接口,而 Web 引用特别关注 ASMX Web 引用。
您可以通过添加服务参考中的高级选项访问网络参考(如果我没记错的话)。
我会使用服务引用,因为据我了解,它是两者中较新的机制。
服务引用处理端点和绑定,它们是完全可配置的。它们允许您通过任何传输协议(HTTP、TCP、共享内存等)将客户端代理指向 WCF
它们旨在与 WCF 一起使用。
如果您使用 WebProxy,您几乎将自己绑定到使用 WCF over HTTP
要考虑的另一点是,服务接口的新 UI 将为您提供更大的灵活性来创建代理类。例如,如果它们匹配,它将允许您将数据合同映射到现有的 dll(实际上这是默认行为)。