ChatGPT解决这个技术问题 Extra ChatGPT

JSON、REST、SOAP、WSDL 和 SOA:它们如何链接在一起

目前正在做一些考试,我正在努力解决一些概念。这些都在我的笔记中被“提到”过,但我并不真正理解它们是如何联系在一起的。据我的理解是:

SOA - 使服务消费者/提供者进行通信的解决方案。 (据我了解,这是其他所有内容的总称)

WSDL - 一种描述提供者服务的语言。

SOAP - 服务用于发送消息的 XML 协议“包装器”。与 WSDL 一起提供参数?

REST - 一种在功能上类似于 SOAP 但避免使用 XML 的设计模式? (真的不确定这个)

JSON - 使用 javascript 的 XML 的替代方案? (也不确定这个)

在互联网上环顾四周,似乎没有明确定义所有这些是什么以及它们如何相互关联。


A
Anirudh Ramanathan

想象一下,您正在开发一个 Web 应用程序,并且您决定将功能与应用程序的呈现分离,因为它提供了更大的自由度。

您创建一个 API 并让其他人也通过它实现自己的前端。您在此处所做的是实施一种SOA 方法,即使用网络服务。

Web 服务使功能构建块可以通过独立于平台和编程语言的标准 Internet 协议访问。

因此,您设计了一种在处理和生成有用信息的后端(Web 服务)和前端(使用数据)之间的交换机制,前端可以是任何东西。 (网络、移动或桌面应用程序,或其他网络服务)。这里唯一的限制是前端和后端必须“说”相同的“语言”。

这就是 SOAP 和 REST 的用武之地。它们是您选择与 Web 服务通信的标准方式。

肥皂:

SOAP 在内部使用 XML 来回发送数据。 SOAP 消息具有严格的结构,然后需要解析响应 XML。 WSDL 是对可以发出哪些请求、使用哪些参数以及它们将返回什么内容的规范。它是您的 API 的完整规范。

休息:

REST 是一种设计理念。

万维网代表了符合 REST 架构风格的系统的最大实现。

它不像 SOAP 那样死板。 RESTful web-services 使用标准 URI 和方法调用网络服务。当您请求一个 URI 时,它会返回一个对象的表示,然后您可以对其执行操作(例如 GET、PUT、POST、DELETE)。您不仅可以选择 XML 来表示数据,还可以选择任何东西(包括 JSON)

Flickr 的 REST API 更进一步,还允许您返回图像。

JSON 和 XML 在功能上是等效的,并且是常见的选择。还有一些基于 RPC 的框架,例如基于 Protobufs 的 GRPC 和 Apache Thrift,可用于 API 生产者和消费者之间的通信。 Web API 最常用的格式是 JSON,因为它易于在每种语言中使用和解析。


对 JSON 与 XML 的冲突的最佳答案。一个更平衡的版本是:XML 和 JSON 是序列化数据的方式。 XML 更加灵活,并且围绕它设计了很多标准,但有些人认为它过于复杂和冗长。 JSON 是一种更简单的格式,它以简洁的方式定义了一些基本结构,易于用于非正式的数据结构;有些人正在研究基于它的标准,以复制那些存在于 XML 之上的标准。
S
Saman Gholami

WSDL:代表 Web 服务描述语言

在 SOAP(简单对象访问协议)中,当您使用 Web 服务并向项目添加 Web 服务时,您的客户端应用程序不知道 Web 服务功能。现在它在某种程度上已经过时了,对于每种不同的客户端,您必须实现不同的 WSDL 文件。例如,您不能为 .Netphp 客户端使用相同的文件。 WSDL 文件有一些关于网络服务功能的描述。该文件的类型是 XMLSOAPREST 的替代品。

REST:代表状态转移

它是另一种 API 服务,对客户来说非常容易使用。它们不需要像 WSDL 文件那样具有特殊的文件扩展名。 CRUD 操作可以通过不同的 HTTP Verbs 实现(GET 用于读取,POST 用于创建,PUT 或 PATCH 用于更新和 DELETE 用于删除所需文档),它们基于 HTTP 协议,并且大多数时候响应在JSONXML 格式。另一方面,客户端应用程序必须通过确切的参数名称和类型准确调用相关的 HTTP Verb。由于没有用于定义的特殊文件,例如 WSDL,它是使用端点的手动作业。但这没什么大不了的,因为现在我们有很多用于不同 IDE 的插件来生成客户端实现。

SOA:代表面向服务的架构

包括所有带有 Web 服务概念和架构的编程。想象一下,您要实现一个大型应用程序。一种做法是拥有一些不同的服务,称为微服务,整个应用程序机制将在正确的时间调用所需的 Web 服务。 RESTSOAP 网络服务都属于 SOA

JSON:代表 javascript Object Notation

当您为 javascript 序列化对象时,对象格式的类型是 JSON。想象一下你有人类课:

class Human{
 string Name;
 string Family;
 int Age;
}

你有一些来自这个类的实例:

Human h1 = new Human(){
  Name='Saman',
  Family='Gholami',
  Age=26
}

当您将 h1 对象序列化为 JSON 时,结果是:

  [h1:{Name:'saman',Family:'Gholami',Age:'26'}, ...]

javascript 可以通过 eval() 函数评估此格式,并根据此 JSON 字符串创建一个关联数组。与我之前描述的其他概念相比,这是一个不同的概念。


这个答案包含一些错误(例如 HTML <> HTTP)

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅