API

应用程序接口(Application Programming Interface,缩写:API;又称为应用编程接口)是软件系统不同组成部分衔接的约定。这个对API的定义太过于广泛和抽象,而通俗的讲,API是一段应用程序与另一段应用程序相互“交流”的方式(协议)。

REST API

REST是Representational State Transfer(表现层状态转移)的缩写,其中省略了主语资源(Resources);由罗伊·菲尔丁(Roy Fielding)提出的,是用来描述创建HTTP API的标准方法的,他发现这四种常用的行为(查看(view),创建(create),编辑(edit)和删除(delete))都可以直接映射到HTTP 中已实现的GET,POST,PUT和DELETE方法。是遵循API原则的一种架构风格。是API的一个子集。

RESTful API

REST API是Web API设计的一种规范或者指导原则,而RESTful API则是这种架构设计原则或者规范的一种具体实现方式。也就是说,RESTful API是REST API的非正式实现方式

Web Service

Web Service提供了在各种平台或框架上运行的不同软件应用程序之间可以进行互操作的标准方法。Web Service的特点是具有良好的互操作性和可扩展性,以及由于使用XML而可以对程序处理过程进行描述。它们可以以松散耦合的方式组合不同的服务以实现复杂的操作。提供简单服务的程序可以通过相互交互,以提供复杂的增值服务。

两个Web Service之间主要通过HTTP网络协议进行通信,如我们熟知的SOA(面向服务的体系架构),主要依赖于XML-RPC和SOAP(Simple Object Access Protocol,即简单对象访问协议)。

两大类型

  • 基于SOAP的Web Service,WSDL(Web服务定义语言)文档,通过使用标准的的XML文档来描述Web
  • 基于REST的Web Service,使用JSON来描述数据格式,最重要的是HTTP传输协议对REST来说是非必须的。

REST、DO、RPC、SOAP

Java相关术语
SOAP:简单对象访问协议,是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息

CAP原则、ACID原则、SOA思想、RPC协议

分布式服务的CAP原则:C:数据一致性,A:服务可用性,P:分区容错性(服务对网络分区故障的容错性)。
在这个特性中任何分布式系统只能保证两个。

非关系型数据库遵循的CAP原则:C:强一致性。A:可用性。P:分区容错性。

关系型数据库遵循的ACID原则:A:原子性。C:一致性。I:独立性。D:持久性。

SOA思想:面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。

RPC协议:RPC(Remote Procedure Call)远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。

类设计六大原则

1、单一职责原则(SRP:Single responsibility principle)
解耦和增强内聚性(高内聚,低耦合),一个类和方法的只负责一个职责

2、开闭原则(OCP:Open/Closed Principle)
对扩展开放,对修改关闭。
与其修改别人的代码(或者老代码)不如先继承,然后更改。

3、里氏替换原则(LSP:Liskov Substitution Principle)
父类出现的地方子类就可以出现,且替换成子类也不会出现任何错误或者异常。

4、接口隔离原则 (ISP:Interface Segregation Principle)

  • 接口尽量小(细化业务)
  • 接口高内聚(减少对外交互,public方法少)
  • 定制服务(应单独为一个个体服务)
  • 有限设计(和第一个规范相辅相成)

5、依赖反转原则 (DIP:Dependency Inversion Principle)
高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。

6、迪米特法则(Law of Demeter)
迪米特法则也叫做最少知识原则(Least Knowledge Principle,LKP),即一个对象应该对其他对象有最少的了解。不关心其他对象内部如何处理。

参考文档
1、https://cloud.tencent.com/developer/article/1448167
2、https://blog.csdn.net/D_R_L_T/article/details/82562902
3、https://www.cnblogs.com/ibrahim/p/REST-API.html
4、https://blog.csdn.net/SilenceCarrot/article/details/52468521
5、https://www.jianshu.com/p/3460a0e6b34b

相关文章: