使用 API 而不是直接数据库访问的优缺点


Pros and Cons of using API instead of direct DB Access

我发现自己在一周内进行了几次讨论,讨论的是正在开发的Web应用程序以及它是否应该利用正在创建的API。

情况是这样的。我有一个带有MySQL数据库的PHP MVC Web应用程序以及几个内部开发的移动应用程序。对于移动应用程序,我们正在构建一个 rest API。最大的问题是为什么我的 PHP Web 应用程序现在应该使用该 rest api?我一直希望API的使用适用于需要与我的数据库交互的第三方系统或基于不同技术构建的系统。Web应用程序当然不是第三方系统,服务是PHP格式的。如果 API 与 Web 应用程序位于不同的服务器上,那么我想它可以被视为第三方系统......这还没有决定。

对我来说,将 API 用于 Web 应用程序似乎很

奇怪,特别是因为 API 服务将仅限于 Web 应用程序中可用功能的 50% 左右,让我构建另外 50% 对于 Web 应用程序是唯一的。我还预见到 Web 应用程序会逐步通过服务层而不是直接访问数据库的性能受到影响。另一方面,我看到更多的维护为我的 Web 应用程序提供了一个代码库,命中数据库和内置于移动应用程序 API 中的类似功能。

有没有人发现自己处于类似的情况,并且可以提供一些技术利弊来说明为什么我应该只使用 API,或者可以指出我一个可靠的案例研究?

优点:

  • 如果有一天您决定将后端应用程序移动到另一台计算机怎么办?使用 API,您的应用代码无需更改。
  • 如果有一天你成长了,并且需要扩展到 10000 个后端应用而不是 1 个,该怎么办?使用 API,您的应用代码无需更改。
  • 如果有一天你决定把MySQL换成Mongo怎么办?使用 API,您的应用代码无需更改。
  • ^ 强制分离数据访问层(DB)和应用程序之间的关注点

缺点:

    编写
  • 应用层时预先编写更多代码
  • 当您需要支持 API 尚不支持的新应用层功能时,可以进行更多增量工作

对我来说,职业选手显然赢了。