目前正在做一些考试,我正在努力解决一些概念 . 这些都在我的笔记中被“提及”,但我并不真正理解它们是如何联系在一起的 . 据我所知:
SOA - 使服务使用者/提供者进行通信的解决方案 . (据我所知,这是其他一切的总称)
WSDL - 描述提供者服务的语言 .
SOAP - 服务用于发送消息的XML协议“包装器” . 与WSDL一起使用以提供参数?
REST - 在功能上类似于SOAP但避免使用XML的设计模式? (真的不确定这一个)
JSON - 使用javascript的XML的替代品? (也不确定这一个)
在互联网上环顾四周似乎没有明确定义所有这些是什么以及它们如何相互关联 .
2 回答
想象一下,您正在开发一个Web应用程序,并决定将功能与应用程序的表示分离,因为它提供了更大的自由度 .
您可以创建一个API,并让其他人在其上实现自己的前端 . 你刚刚在这里做的是实现SOA方法,即使用web服务 .
因此,您在后端(Web服务)和前端(消耗数据)之间设计了一种交换机制,后端可以是任何东西 . (Web,移动或桌面应用程序或其他Web服务) . 这里唯一的限制是前端和后端必须“说”相同的“语言” .
这就是SOAP和REST的用武之地 . 它们是您选择与Web服务进行通信的标准方法 .
SOAP:
SOAP内部使用XML来回发送数据 . SOAP消息具有严格的结构,然后需要解析响应XML . WSDL 是可以进行哪些请求的规范,具有哪些参数以及它们将返回什么 . 它是API的完整规范 .
REST:
REST是一个设计概念 .
它不像SOAP那么严格 . RESTful web-services使用标准URI和方法来调用Web服务 . 当您请求URI时,它返回一个对象的 representation ,然后您可以执行操作(例如GET,PUT,POST,DELETE) . 您不仅可以选择XML来表示数据,还可以选择任何内容(包括JSON)
JSON 和XML在功能上是等价的,可以选择其中之一 . XML被认为过于冗长,并且难以解析,因此使用JSON可以更充分地表示这么多次数据 . (例如序列化)
It is a choice nonetheless.
WSDL :代表Web服务描述语言
在SOAP(简单对象访问协议)中,当您使用Web服务并向您的项目添加Web服务时,您的客户端应用程序不会以某种方式过时,并且对于每种不同的客户端,您必须实现不同的
WSDL
文件 . 例如,您不能为.Net
和php
客户端使用相同的文件 .WSDL
文件包含有关Web服务功能的一些说明 . 该文件的类型是XML
.SOAP
是REST
的替代方案 .REST :代表国家代表转移
它是另一种API服务,它非常容易为客户使用 . 它们不需要像
WSDL
文件那样具有特殊的文件扩展名 . CRUD操作可以通过不同的HTTP Verbs
(用于读取的GET,用于更新的POST,用于更新的PUT或PATCH以及用于删除所需文档的删除)来实现,它们基于HTML
协议,并且大多数情况下响应为JSON
或XML
格式 . 另一方面,客户端应用程序必须通过确切的参数名称和类型来完全调用相关的HTTP Verb
. 由于没有特殊的定义文件,如WSDL
,它是使用 endpoints 的手动作业 . 但这并不是什么大不了的事,因为现在我们有很多用于不同IDE的插件来生成客户端实现 .SOA :代表面向服务建筑
包括所有带有Web服务概念和体系结构的编程 . 想象一下,您想要实现一个大型应用程序 . 一种做法可以是使用一些不同的服务,称为微服务,整个应用程序机制将在适当的时间调用所需的Web服务 .
REST
和SOAP
网络服务都是SOA
.JSON :代表
javascript Object Notation
当您为javascript序列化对象时,对象格式的类型是JSON . 想象你有人类:
你有这个类的一些实例:
当您将h1对象序列化为JSON时,结果为:
javascript
可以通过eval()
函数评估此格式,并从此JSON
字符串创建关联数组 . 与我之前描述的其他概念相比,这是一个不同的概念 .