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