【问题标题】:API vs. Webservice [closed]API 与 Web 服务 [关闭]
【发布时间】:2010-10-22 22:42:35
【问题描述】:

网络服务和 API 有什么区别?差异是否超过用于传输数据的协议? 谢谢。

【问题讨论】:

标签: web-services api terminology


【解决方案1】:

API(应用程序编程接口)是第三方可以编写与其他代码接口的代码的方法。 Web 服务是一种 API,几乎总是通过 HTTP 运行(尽管有些,如 SOAP,可以使用替代传输,如 SMTP)。 official W3C definition 提到 Web 服务不一定使用 HTTP,但这几乎总是如此,除非另有说明,否则通常是假定的。

有关 Web 服务的具体示例,请参阅 SOAPRESTXML-RPC。有关另一种类型的 API 的示例,一种用 C 编写的用于本地计算机的 API,请参阅Linux Kernel API

就协议而言,Web 服务 API 几乎总是使用 HTTP(因此是 Web 部分),并且肯定涉及网络通信。 API 通常可以使用它们希望的任何通信方式。例如,Linux 内核 API 使用 Interrupts 来调用构成其 API 的系统调用,用于来自用户空间的调用。

【讨论】:

  • 您是否会将每个 Web 服务都视为 API?使用 AJAX 重新加载网页区域而不是重新加载整个页面时如何?即使涉及 Web 服务,我也不一定将其视为 API。否则,我们可以为曾经创建的每一个函数提供一个案例,无论是在 DLL、JAR、Web 服务还是纯代码中,都是 API。要使 API 成为 API,它必须考虑到第 3 方开发人员,并且 API 不应该与最终产品(使用 API 的应用程序)有任何依赖关系。
  • 是的,每个 Web 服务都是一个 API。是的,AJAX Web 服务是一种 API,它只是没有文档记录,因此并不真正适合公众使用。并非每个 API 都是为第 3 方使用而设计的 API。您也可以拥有内部 API。
【解决方案2】:

基本上,Web 服务是两台机器之间的一种通信方法,而 API 是一个暴露层,允许您针对某些东西进行编程。

您很可能拥有一个 API,并且与该 API 交互的主要方法是通过网络服务。

技术定义(由维基百科提供)是:

API

应用程序编程接口 (API) 是由库和/或操作系统服务提供的一组例程、数据结构、对象类和/或协议,以支持应用程序的构建。

Webservice

W3C 将 Web 服务(也称为 Web 服务)定义为“旨在支持网络上可互操作的机器对机器交互的软件系统”

【讨论】:

  • 我同意有人反对我的回答,但我很想知道为什么。
  • 您的回答暗示 API 和 Web 服务是不同的,而实际上 Web 服务是一种 API。由于这个问题的症结在于两者之间的区别是什么,因此澄清 Web 服务是一种 API 很重要。
  • 有趣。我将不得不(恭敬地:))不同意。但我非常感谢您的反馈。
【解决方案3】:

在一般意义上,网络服务一个基于 HTTP 的 API。他们经常使用 JSON 或 XML,但也有一些其他方法。

【讨论】:

  • 所以所有的网络服务都是 API 但不是所有的 API 都是网络服务?
  • 对,API 可以是库,如 DLL、JAR 或 OCX 等。它们也可以是源代码分发,如 Facebook 的 PHP api...
【解决方案4】:

API 是一个已发布的接口,它定义了组件 A 与组件 B 的通信方式。

例如,Doubleclick 有一个已发布的 Java API,它允许用户查询数据库表以获取有关其在线广告活动的信息。

例如调用 GetNumberClicks(用户名)

要实现 API,您必须将 Doubleclick .jar 文件添加到您的类路径中。呼叫是本地的。

Web 服务是 API 的一种形式,其中接口是通过 WSDL 定义的。这允许通过 HTTP 远程调用接口。

如果 Doubleclick 将他们的界面实现为 Web 服务,他们将使用在 Tomcat 中运行的类似 Axis2 的东西。

远程用户会调用网络服务

例如调用GetNumberClicksWebService(用户名)

GetNumberClicksWebService 服务会在本地调用 GetNumberClicks。

【讨论】:

  • 这个问题真的很老了,但我会注意到这个答案混淆了 API 和接口。 API 不仅仅是一个已发布的接口(包括 SOAP 之类的东西),它是特定应用程序或服务的公共接口。更准确的说法是“API 是具有已发布接口的组件,第三方组件可以通过该接口与它们进行交互。”
【解决方案5】:

API(应用程序编程接口),完整的形式本身表明它是一个接口,它允许您在其他应用程序接口的帮助或支持下为您的应用程序编程,该接口公开了某种对您的应用程序有用的功能。

例如,在您的网站上显示更新的货币汇率将需要一些第三方接口来编程,除非您计划拥有自己的汇率数据库并定期更新相同的汇率。这组功能在其他人已经可用并且当他们想要与其他人共享时,他们必须有一个端点来与对此类交互感兴趣的其他人进行通信,因此他们通过 web-服务。这个端点只不过是他们的应用程序的接口,您可以针对 API 进行编程。

【讨论】:

    【解决方案6】:

    API 是基于代码的集成,而 Web 服务是基于消息的集成,与具有诸如 WSDL 之类的契约的可互操作标准进行集成。

    【讨论】:

    • 我不确定您的回答是否会在现有答案中添加任何内容。
    【解决方案7】:

    将 Web 服务视为 Web api。 API 现在是一个通用术语,因此 Web 服务是功能的接口,通常与业务相关,您可以通过各种协议从网络访问它。

    【讨论】:

      【解决方案8】:

      查看http://en.wikipedia.org/wiki/Web_service

      正如链接所提到的,Web API 是 Web 服务的一种发展,很可能与 Web 2.0 相关,而基于 SOAP 的服务被基于 REST 的通信所取代。请注意,REST 服务不需要 XML、SOAP 或 WSDL 服务 API 定义,因此这与传统 Web 服务有很大不同。

      【讨论】:

        【解决方案9】:

        另一个例子:google map api vs google direction api web service,前者为站点提供(传递)javascript文件(然后可以用作api来制作新功能),后者是Rest web service传递数据(以 json 或 xml 格式),可以处理(但不能在 api 意义上使用)。

        【讨论】:

        • 嗯...javascript可以作为数据返回然后作为代码使用,这不是一个有效的对比
        猜你喜欢
        • 2013-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-19
        • 2015-09-26
        • 1970-01-01
        • 1970-01-01
        • 2014-01-05
        相关资源
        最近更新 更多