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(实际上这是默认行为)。