首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >管理应用程序应该使用API,还是应该直接访问DB?

管理应用程序应该使用API,还是应该直接访问DB?
EN

Software Engineering用户
提问于 2017-03-21 09:15:56
回答 3查看 4.1K关注 0票数 2

我将开发一个移动应用程序,它将主要作为一个客户。云上将有一个API,这些移动客户端将与之交互,还将有一个用于管理目的的web应用程序。

我在考虑是否应该为API和admin应用程序使用两个单独的应用程序。我的想法是:

  1. 如果我将API和管理应用程序保持为一体,那么管理应用程序就可以直接从数据库访问东西,从而具有更好的性能。但这将引入一个耦合。
  2. 如果我将它们分开,就会删除耦合,但这可能会影响性能。

顺便提一句,我将在API和管理应用程序中使用Rails,不管我是否将它们分开。

这些应用程序是为我们开发的,我们将向我们的客户提供移动应用程序和管理应用程序作为服务。我们的客户不会直接使用API,但是我们的客户端应用程序会使用API。

我在这里看到了一些类似的问题,但它们主要讨论的是web和消费web应用程序,而我谈论的只是管理应用程序和API的结合。

EN

回答 3

Software Engineering用户

回答已采纳

发布于 2017-03-21 19:55:42

由于您已经在为您的应用程序客户端编写要消费的API,您已经拥有了一个业务模型和逻辑库。让管理系统通过API访问数据意味着您不必复制该逻辑,这意味着客户端应用程序与您的数据和管理系统之间的交互不一致的可能性更小。

然而,有必要考虑安全问题。从本质上说,一个管理系统将有相当广泛的能力,列出数据,可能包括用户帐户的细节,并修改该数据-远远超出了你的客户应用程序应该能够做到的。

为了避免复制,如果逻辑-创建客户端API,然后让您的管理API扩展它。这样,如果核心逻辑发生变化,您应该只更改一次。

票数 5
EN

Software Engineering用户

发布于 2017-03-21 19:38:08

创建API和创建管理面板是两件完全不同的事情。API应该尽可能的轻量级和快速,管理面板应该是用户友好的。

由于项目的职责完全不同,负责他们工作的团队成员也是如此。

除了其他的事情..。

对于管理面板,您将需要以下人员:

  • 了解UX,
  • 设计图形用户界面,
  • 代码图形用户界面,

另一方面,对于API,您需要的人员:

  • 理解API标准,
  • 知道如何分析应用程序,
  • 了解如何构建可扩展和性能良好的系统。

当您查看每个项目所需要的人员的基本摘要时,可以看到将管理面板代码直接放入API项目中是没有什么意义的。作为一个后端开发人员,我对你的前端毫不在意。

如果您更改按钮的颜色是这样的话,但是上帝禁止这种更改来破坏我的git存储库,在这里,我正在处理的响应问题以800 ms而不是150 ms返回(反之亦然,我怀疑前端开发人员对缓存、队列、.)感兴趣。

你对表现的担忧没什么好担心的。管理面板只能供所述系统的管理员使用。很少需要管理页面以惊人的速度加载,“慢”(差别实际上只有几毫秒)加载时间不是问题。

撇开脱钩不说,分离项目的另一个好处是增加了安全性。在两个项目(或它们的适当构建脚本)中没有敏感凭据,但只有一个-- API项目。如果您决定为前端雇用一个新的程序员,在某些情况下,您可以让他们启动&甚至不需要他们签署NDA就可以运行,因为在管理面板中没有什么可妥协的--他们没有直接访问数据库的权限。

雇用API开发人员可能是一个较长的过程,在此过程中,签名的NDA是允许他们访问代码的一项要求。

票数 2
EN

Software Engineering用户

发布于 2017-03-21 11:53:01

考虑到模块级别上的第一个坚实原则(单一责任原则),我将将API应用程序与Admin应用程序分开。这就是软件的可维护性和灵活性。它还使您能够更容易地找到最终的bug。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/344584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档