Web API 和 Web 服务有啥区别?
Posted
技术标签:
【中文标题】Web API 和 Web 服务有啥区别?【英文标题】:What is the difference between a web API and a web service?Web API 和 Web 服务有什么区别? 【发布时间】:2013-10-20 14:36:18 【问题描述】:网络 API 和 网络服务 之间有什么区别吗?或者他们是一回事?
【问题讨论】:
另见:API vs. Webservice [closed] 参见programmers.SE:Difference between Web API and Web Service? API 是发布的接口,而服务是在后端运行的实现。 请谨慎阅读答案。其中一些已过时或无效 只是添加了一个更精彩的解释 - quora.com/What-is-the-difference-between-web-services-and-API 【参考方案1】:-
Web 服务是用于在系统之间交换数据的开源协议和标准的集合
或应用程序,而 API 是允许两个应用程序相互交互的软件接口
无需任何用户参与。
Web 服务用于 REST、SOAP 和 XML-RPC 进行通信,而 API 用于任何形式的通信。
Web 服务仅支持 HTTP 协议,而 API 支持 HTTP/HTTPS 协议。
Web 服务支持 XML,而 API 支持 XML 和 JSON。
所有 Web 服务都是 API,但所有 API 都不是 Web 服务。
【讨论】:
【参考方案2】:API 和 Web 服务作为一种通信手段。
唯一的区别是Web 服务促进了两台机器通过网络进行交互。 API 充当两个不同应用程序之间的接口,以便它们可以相互通信。 API 是一种方法,第三方供应商可以通过该方法编写与其他程序轻松交互的程序。 Web 服务被设计为具有以机器可处理格式描述的接口,该格式通常在 Web 服务描述语言 (WSDL) 中指定
所有 Web 服务都是 API,但并非所有 API 都是 Web 服务。
Web 服务只是封装在 HTTP 中的 API。
这篇here 文章提供了有关 Web 服务和 API 的良好知识。
【讨论】:
【参考方案3】:Web 服务和 Web API 的基本区别
网络服务:
1) 它是基于 SOAP 的服务,以 XML 形式返回数据。
2) 只支持HTTP协议。
3) 它不是开源的,但可以被任何理解 XML 的客户端使用。
5) 它需要 SOAP 协议来通过网络接收和发送数据,因此它不是轻量级架构。
网络 API:
1) Web API 是基于 HTTP 的服务,默认返回 JSON 或 XML 数据。
2) 支持HTTP协议。
3) 它可以托管在应用程序或 IIS 中。
4) 它是开源的,任何理解 JSON 或 XML 的客户端都可以使用它。
5) 它具有轻量级架构,适用于带宽有限的设备,例如移动设备。
【讨论】:
Web 服务可以托管在很多地方,而不仅仅是 IIS 几乎所有的点都是错误的。我无法理解 40 位用户如何投票。 @horcrux 我同意。 Web 服务不一定是基于 SOAP 的服务。 我见过的最令人困惑的答案。【参考方案4】:Web 服务通常提供WSDL,您可以从中自动创建客户端存根。 Web 服务基于SOAP protocol。 ASP.NET Web API 是一个较新的 Microsoft 框架,可帮助您构建 REST based interfaces。响应可以是 JSON 或 XML,但无法自动生成客户端,因为 Web API 不提供像来自 Web 服务的 WSDL 那样的服务描述。 因此,这取决于您要使用哪种技术的要求。也许WCF 更符合您的要求,只需查看 MSDN 文档即可。
【讨论】:
Web 服务不一定基于 SOAP 协议。 技术上过时的答案 “ASP.NET Web API”是微软框架,而不是“Web API”本身。 过时的答案,请访问此链接microsoft-techies.blogspot.com/2014/03/…【参考方案5】:在 ASP.Net 的上下文中,Web API 是一个控制器,其基类是ApiController,并且不使用视图。 Web 服务是从WebService 派生的类,并具有自动 WSDL 生成功能。默认情况下它是一个 SOAP api,但您也可以通过添加 ScriptServiceAttribute 来使用 JSON。
【讨论】:
【参考方案6】:有两件事很容易理解,
-
API:它是应用程序的一层,可以为其他应用程序服务
本地请求。
Webs Service:是一个 API,可以通过
通过网络或互联网形成远程系统。
注意: 所有 Web 服务都是 API,但并非所有 API 都是 Web 服务
【讨论】:
本地以及网络上【参考方案7】:所有的WebServices都是API,但所有的API都不是WebServices,暴露在Web上的API称为WebServices。
【讨论】:
Web Service 是 W3C 定义的标准,为第三方软件通过 XML (WSDL/UDDI) 进行交互的有据可查的服务。 Web API 是基于 HTTP 的 API,没有很好的文档记录,有自己的标准。 API 通常是可以或不可以访问互联网以与其他应用程序通信的东西,也可以有其他协议,例如用于系统调用的 API,用于在操作系统中与您的终端/cmd 对话。【参考方案8】:Web Service 和 Web API 之间的区别在这里很好地解释了:
https://softwareengineering.stackexchange.com/questions/38691/difference-between-web-api-and-web-service
链接中的文字:
Web 服务 - 这是 W3C 定义的标准,因此可以半自动或自动访问它们(WSDL / UDDI)。整个东西都是基于 XML 的,所以任何人都可以调用它。并且服务的每个方面都非常明确。有参数描述标准、参数传递标准、响应标准、发现标准等。你可能会写2000页的书来描述标准。甚至还有一些用于做“标准”事情的“附加”标准,比如身份验证。
尽管自动调用和发现几乎无法工作,因为客户端相当差,并且您无法真正保证可以从任何客户端调用任何服务。
Web API 通常以 HTTP/REST 的形式完成,没有任何定义,输出可以是例如。 JSON/XML,输入可以是 XML/JSON/或纯数据。没有任何标准 => 没有自动调用和发现。您可以在文本文件或 PDF 中提供一些描述,您可以在 Windows-1250 而不是 unicode 等中返回数据。为了描述标准,它会是带有一些简单信息的 2 页小册子,您将定义其他所有内容。
Web 正在转向 Web API / REST。 Web 服务实际上并不比 Web API 好。开发起来非常复杂,而且他们消耗更多的资源(带宽和 RAM)......并且由于所有数据转换(REQUEST->XML->DATA->RESPONSE->XML->VALIDATION->CONVERSION->DATA)都非常慢。
例如。在 WebAPI 中,您可以打包数据,将其压缩发送,然后在客户端解压缩+解包。在 SOAP 中,您只能压缩 html 请求。
【讨论】:
【参考方案9】:更多详情请访问此链接
【讨论】:
为什么?从这张图片看来,SOAP Web 服务似乎不能在智能手机上使用……甚至在台式机上?真的吗?有人强迫你在这些平台上阅读 JSON 而不是 XML? 如果读取 xml 并不意味着它 SOAP 基础服务 REST 还支持命令分隔值 (CSV)、javascript 对象表示法 (JSON) 和真正简单的聚合 (RSS)。【参考方案10】:Web 服务与 Web API 完全一样——只是在底层数据格式方面受到更多限制。两者都使用 HTTP 协议,并且都允许创建 RESTful 服务。 并且不要忘记 JSON-RPC 等其他协议 - 也许它们更适合。
【讨论】:
如果现在有限制,不是“完全一样”吗?【参考方案11】:API vs Web Service
刚刚粘贴了链接文章的摘要:
总结:
所有 Web 服务都是 API,但所有 API 都不是 Web 服务。
Web 服务可能无法执行 API 将执行的所有操作。
Web 服务仅使用三种使用方式:SOAP、REST 和 XML-RPC 通信,而 API 可以使用任何样式进行通信。
Web 服务的运行始终需要网络,而 API 的运行则不需要网络。
API 有助于直接与应用程序交互,而 Web 服务是...
阅读更多:API 和 Web 服务之间的区别 |之间的区别| API 与 Web 服务http://www.differencebetween.net/technology/internet/difference-between-api-and-web-service/#ixzz3e3WxplAv
完整答案请参见以上链接。
【讨论】:
但是,问题是关于 WebAPI 和 WebService 之间的区别,而不是“API” 此外,第 3 点不正确。它具有误导性,只会有助于混淆“SOAP 与 REST”主题。【参考方案12】:如果需要,Web 服务是 Web API。具体来说,Web API 通常表示 RESTful(基于 HTTP)的 Web 服务,而 Web 服务通常表示 SOAP+WSDL(+HTTP 或 SMTP 或 JMS..)。
通常 RESTful Web 服务与 Web 服务(WSDL、SOAP)相对,但最近引入了术语 RESTful Web 服务(带有大写“W”),意思是 RESTful+WSDL+SOAP..
查看此图表,了解三个概念之间的差异: http://www2.mokabyte.it/cms/figureproviderservlet?figureId=IUS-6NS-OBV_7f000001_19624184_5621ef4e--Fig02.jpg
希望对你有帮助!
【讨论】:
【参考方案13】:嗯,TMK 在微软世界里可能是对的,但在包括 Java/Python/等所有软件的世界里,我相信没有区别。它们是一样的。
【讨论】:
以上是关于Web API 和 Web 服务有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章