Web参考和服务参考之间的区别?


Answers:


102

这里的低级答案是Web引用将创建一个客户端代理类,该类允许您的代码与通过WSDL描述的Web服务进行对话,并通过SOAP或HTTP GET进行通信(其他消息表明这只是ASMX,但是Web引用也可以与基于Java的Web服务,基于Python的或Ruby对话,只要它们都使用WSDL并符合WS-I互操作性标准即可。

服务参考将创建与基于WCF的服务进行通信的客户端代理类:不管该WCF服务是否为Web服务。


1
+1表示添加了格式正确的WSDL的任何标准Web服务均满足标准
sidney.andrews,2010年

那么我可以向基于Java的Web服务添加服务引用吗?还会有意义吗?因为Java对wcf堆栈一无所知...
user20358'9

是的,您可以将服务引用添加到Java etc Web Service(如果具有wsdl)。在这种情况下,服务参考会将其视为“经典”网络参考。
布雷迪·莫里兹

+1表示Web Service可以使用WSDL描述的Web Service以及ASMX。实际上,我有一个具有Web参考和服务参考的业务层。Web参考使用WSDL Web服务,而服务参考使用ASMX服务。
Jagd 2010年

67

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

服务参考允许您与基于实现WCF支持的多种协议中的任何一种的任何技术的任何服务进行通信(包括但不限于WS-I基本概要文件)。在内部,它在客户端使用WCF通信堆栈。

请注意,这两个定义都非常广泛,并且都包含非.NET编写的服务。

只要WCF终结点使用basicHttpBinding或兼容的自定义变体,完全有可能(尽管不建议)添加指向WCF服务的Web引用。

也可以添加指向ASMX服务的服务引用。编写新代码时,仅应始终使用Service Reference,因为它更加灵活且面向未来。


1
任何人都可以让我开始如何通过服务参考来使用服务吗?使用Web Reference,我似乎总是能够找到某种服务对象中的核心功能。有了服务参考,就不那么多了。例如,我正在尝试使用FedEx费率服务来获取各种FedEx运送选项的价格。我知道那里有一个getRates()调用,但是我无法通过Service Reference找到它。
Ben Mills

@BenMills:寻找带有Client后缀的类。
Christian Hayter

17

服务参考是更新的接口,用于添加对所有WCF服务方式的参考(它们可能不是Web服务),而Web参考专门与ASMX Web参考有关。

您可以通过添加服务参考中的高级选项访问Web参考(如果我没记错的话)。

我会使用服务引用,因为据我了解,这是两者的更新机制。


8
添加服务参考->高级->添加Web参考...类似于直观的解决方案。
Jagd

7

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

它们旨在与WCF一起使用。

如果您使用的是WebProxy,则几乎可以绑定到通过HTTP使用WCF


5

需要考虑的另一点是,新的Service Interface UI将使您在创建代理类的方式上具有更大的灵活性。例如,如果它们匹配,它将允许您将数据协定映射到现有的dll(实际上这是默认行为)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.