Answers:
假设您正在开发Web应用程序,并且决定将功能与应用程序的表示分离开来,因为它具有更大的自由度。
您创建一个API,并让其他人也可以在其上实现自己的前端。您在这里所做的只是实现一种SOA方法,即使用Web服务。
Web服务使功能构建块可以通过独立于平台和编程语言的标准Internet协议进行访问。
因此,您需要在后端(Web服务)(用于处理和生成有用的东西)与前端(消耗数据)之间建立一种交换机制。(Web,移动或桌面应用程序,或其他Web服务)。这里唯一的限制是前端和后端必须“说”相同的“语言”。
这就是SOAP和REST进入的地方。它们是您选择与Web服务通信的标准方式。
肥皂:
SOAP在内部使用XML来回发送数据。SOAP消息具有严格的结构,因此需要解析响应XML。 WSDL是关于可以发出哪些请求,使用哪些参数以及它们将返回什么的规范。它是您API的完整规范。
休息:
REST是一个设计概念。
万维网代表了符合REST架构风格的系统的最大实现。
它不像SOAP那样严格。RESTful Web服务使用标准URI和方法来调用Web服务。当您请求URI时,它返回一个对象的表示,然后您可以对其执行操作(例如GET,PUT,POST,DELETE)。您不仅限于选择XML来表示数据,还可以选择任何东西(包括JSON)
Flickr的REST API更进一步,还可以让您返回图像。
JSON和XML在功能上是等效的,是常见的选择。还有一些基于RPC的框架,例如基于Protobufs的GRPC和Apache Thrift,可用于API生产者和消费者之间的通信。Web API使用的最常见格式是JSON,因为它易于使用和解析每种语言。
WSDL:代表Web服务描述语言
在SOAP(简单对象访问协议)中,当您使用Web服务并将Web服务添加到项目中时,您的客户端应用程序不了解Web服务功能。如今,它已经过时了,对于每种不同的客户端,您都必须实现不同的WSDL
文件。例如,您不能将相同的文件用于.Net
和php
客户端。该WSDL
文件包含有关Web服务功能的一些描述。该文件的类型为XML
。SOAP
是的替代方案REST
。
休息:代表代表性状态转移
这是另一种API服务,对于客户端来说非常容易使用。他们不需要像WSDL
文件一样具有特殊的文件扩展名。CRUD操作可以通过不同的方式实现HTTP Verbs
(用于读取的GET,用于创建的POST,用于更新的PUT或PATCH以及用于删除所需文档的DELETE),它们基于HTTP
协议,并且大多数情况下响应是采用格式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
字符串创建关联数组。与我之前描述的其他概念相比,这是一个不同的概念。