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