首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

API类型的发展历史以及他们的特点

我们想通过查看过去60年API开发(从RPC到现在)的经验教训,从而了解各种API类型的优缺点。

为团队带来新工具的好处必须与其成本进行权衡,有很多东西需要衡量,有时间学习。由于新技术成本高,所以任何新技术都必须使用得更好,更快或更高效。GraphQL,在我们看来是向前迈出的一大步,并提供了足够的好处来证明开发成本的合理。

RPC可以说是第一个主要的API模式,它的起源可以追溯到60年代中期的早期计算。当时,计算机仍然如此庞大和昂贵,以至于我们想到的API驱动的应用程序开发的概念大多只是理论上的。带宽/延迟,计算能力,共享计算时间和物理邻近等约束迫使工程师考虑分布式系统而不是公开数据的服务。从60年代的ARPANET到90年代中期,使用CORBA和Java的RMI之类的东西,大多数计算机使用远程过程调用(RPC)相互交互,这是一个客户端 - 服务器交互模型,客户端 - 服务器交互模型,客户端导致过程(或方法)在远程服务器上执行。

RPC有很多好东西,它的主要原则是允许开发人员将远程环境中的代码视为本地代码,尽管速度慢且不太可靠,从而在其他不同且不同的系统中创建连续性,就像ARPANET出现的很多东西一样,它已经超前了,因为这种连续性是我们在处理不可靠的异步操作(如数据库访问和外部服务调用)时仍然需要努力的。

几十年来,对于如何允许开发人员将这样的异步行为嵌入到程序的典型流程中进行了大量研究,如果当时有Promises,Futures和ScheduledTasks这样的东西,我们的API环境可能会有所不同。

关于RPC的另一个好处是,由于它不受数据结构的限制,因此可以为客户端编写高度专业化的方法,这些客户端可以准确地请求和检索所需的信息,从而最大限度地减少网络开销和较小的有效负载。

但是,有些事情会使RPC变得困难。首先,根据设计,RPC在本地系统和远程系统之间创建了大量的耦合,即失去了本地和远程代码之间的界限。对于某些域,这在客户端SDK中是可以的,甚至是首选的,但对于客户端代码不能很好理解的API,它可能比面向数据的更不灵活。

但更重要的是API方法的扩散潜力,从理论上讲,RPC服务公开了一个可以处理任何任务的小巧周到的API。

下一个主要的API类型是SOAP,它诞生于90年代末的Microsoft Research。SOA是用于应用程序之间的基于XML的通信的远大协议规范。SOAP的目标是通过为复杂的Web服务创建结构良好的基础来解决RPC,XML-RPC的一些实际缺点。实际上,这只是意味着向XML添加行为类型系统。遗憾的是,它造成的障碍比它解决的更多,因为今天写的新SOAP端点非常少。

虽然令人难以忍受的冗长和可怕的名字,但SOAP确实有一些好处。客户端和服务器之间的WSDL和WADL(中的可执行合同保证了可预测的,类型安全的结果,并且WSDL可用于生成文档或创建与IDE和其他工具的集成。

关于API演变的SOAP的重大启示是它逐渐且可能无意中引入了更多面向资源的调用。SOAP端点允许你以预定的结构请求数据,而不是考虑生成数据所需的方法。

SOAP最重要的缺点是冗长,如果没有大量的工具,几乎不可能使用它,需要工具来编写测试,工具来检查来自服务器的响应以及工具来解析所有数据。许多旧系统仍然使用SOAP,但是对于大多数新项目来说,工具的需求使得它太麻烦,并且XML结构所需的字节数使其成为服务移动设备或分布式系统的不良选择。

最后,API设计模式:REST。

SOAP使用HTTP作为传输,并在请求和响应主体中构建其结构。另一方面,REST抛出客户端 - 服务器契约,工具,XML,用HTTPs语义替换它们,因为它是结构选择而不是使用HTTP谓词与引用某个层次结构中的资源的数据和URI交互数据。

REST完全明确地将API设计从建模交互更改为简单地对域的数据建模。在使用REST API时完全面向资源,不再需要知道或关心检索给定数据所需的内容,也不需要了解后端服务的实现。

简化不仅对开发人员来说是一个好消息,而且由于URL代表稳定的信息,它很容易缓存,它的无状态使得水平扩展变得容易,并且由于它模拟数据而不是预测消费者需求,因此可以大大减少API的表面积。

REST的发展是目前最值得我们追求的,它是一个惊人的成功,当然它也有自己的缺点。

REST服务往往至少有点“健谈”,因为它需要在客户端和服务器之间进行多次往返才能获得足够的数据来呈现应用程序,这种级联请求会对性能造成破坏性影响,特别是在移动设备上。

REST风格服务的下一个问题是发送方式的信息比需要的多。

REST API缺少的最后一个是内省机制。如果没有任何关于端点返回类型或结构的信息的合同,就无法可靠地生成文档,创建工具或与数据交互。

每种API类型都存在缺陷,但是随着互联网开发的发展,都在不断追求完美。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190124A1ER6M00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券