JSON,REST,SOAP,WSDL和SOA:它们如何链接在一起
目前正在做一些考试,我正在努力通过一些概念。 这些在我的笔记中都被“提及”了,但我并不真正了解它们是如何联系在一起的。 据我的理解是:
SOA--使服务使用者/提供者进行通信的解决方案。 (据我了解,这是所有其他项目的总称)
WSDL - 描述提供者服务的语言。
SOAP - 服务用来发送消息的XML协议'包装器'。 与WSDL一起工作以提供参数?
REST - 一种类似于SOAP的设计模式,但避免使用XML? (真的不知道这个)
JSON - 使用JavaScript的XML的替代方法? (不知道这个或者)
环顾互联网,似乎并没有明确定义所有这些以及它们如何相互关联。
假设您正在开发一个Web应用程序,并且您决定将应用程序的表示与功能分开,因为它提供了更大的自由度。
您创建一个API并让其他人也可以在其上实现自己的前端。 你刚才在这里做的是实现一个SOA方法,即使用Web服务。
Web服务使功能构建块可以通过标准Internet协议访问,而不受平台和编程语言的影响。
因此,您设计了处理和生成有用内容的后端(Web服务)与前端(消耗数据)之间的交换机制,这可能是任何事情。 (Web,移动或桌面应用程序或其他Web服务)。 这里唯一的限制是前端和后端必须“说”相同的“语言”。
这就是SOAP和REST的用武之地。它们是您选择与Web服务进行通信的标准方式。
肥皂:
SOAP在内部使用XML来回发送数据。 SOAP消息具有严格的结构,因此需要解析响应XML。 WSDL是可以制定什么请求,使用哪些参数以及它们将返回什么的规范。 它是你的API的完整规范。
休息:
REST是一个设计概念。
万维网代表符合REST架构风格的系统的最大实现。
它不像SOAP那样僵化。 REST风格的Web服务使用标准URI和方法来调用Web服务。 当你请求一个URI时,它返回一个对象的表示 ,然后你可以对它进行操作(例如GET,PUT,POST,DELETE)。 您不仅限于选择XML来表示数据,您可以真正挑选任何内容(包括JSON)
Flickr的REST API更进一步,并且可以让您返回图像。
JSON和XML在功能上是等效的,并且可以选择。 XML被认为太冗长,而且很难解析,所以很多次数据都使用JSON更充分地表示。 (例如序列化)
尽管如此,仍然是一种选择。
WSDL :代表Web服务描述语言
在SOAP(简单对象访问协议)中,当您使用Web服务并将Web服务添加到项目时,您的客户端应用程序不知道Web服务函数。 现在,它以某种方式老式,对于每种不同的客户端,你都必须实现不同的WSDL
文件。 例如,你不能使用.Net
和php
客户端的相同文件。 WSDL
文件对Web服务功能有一些描述。 这个文件的类型是XML
。 SOAP
是REST
的替代品。
REST :代表具有代表性的状态转移
它是另一种API服务,它非常易于客户使用。 它们不需要像WSDL
文件那样具有特殊的文件扩展名。 CRUD操作可以通过不同的HTTP Verbs
来实现(GET用于读取,POST用于创建,PUT或PATCH用于更新,DELETE用于删除所需的文档),它们基于HTML
协议,大部分时间响应以JSON
或XML
格式。 另一方面,客户端应用程序必须通过确切的参数名称和类型完全调用相关的HTTP Verb
。 由于没有用于定义的特殊文件(如WSDL
,因此它是使用端点的手动作业。 但是这不是什么大问题,因为现在我们有很多插件用于不同的IDE来生成客户端实现。
SOA :支持面向服务的体系结构
包括所有使用Web服务概念和体系结构的编程。 想象一下你想要实现一个大规模的应用程序。 一种做法可能有一些不同的服务,称为微服务,整个应用程序机制将在正确的时间调用所需的Web服务。 REST
和SOAP
Web服务都是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
字符串中创建一个关联数组。 与以前描述的其他概念相比,这是一个不同的概念。
上一篇: JSON, REST, SOAP, WSDL, and SOA: How do they all link together