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

WCF中的Web引用和服务引用有什么区别? WCF中哪个更好?

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

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

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

服务引用允许您与基于任何实现WCF支持的许多协议(包括但不限于WS-I Basic Profile)的任何技术的任何服务进行通信。 在内部,它使用客户端的WCF通信栈。

请注意,这两个定义是相当广泛的,都包括不是用.NET编写的服务。

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

也可以添加指向ASMX服务的服务引用。 编写新代码时, 应该始终使用服务参考,因为它更灵活,更具前瞻性。

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

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

我会使用服务引用,因为据我所知,这是两个新的机制。

服务引用处理端点和绑定,这是完全可configuration的。 他们让您通过任何传输协议(HTTP,TCP,共享内存等)将您的客户端代理指向WCF。

他们被devise为与WCF一起工作。

如果你使用WebProxy,你几乎可以自定义使用WCF over HTTP

另一点需要考虑的是,新的服务接口用户界面将为您创build代理类提供更多的灵活性。 例如,它将允许您将数据契约映射到现有的dll,如果它们匹配(实际上这是默认行为)。