【问题标题】:Which is better: {REST API, website} --> {database}, or {website} --> {REST API} --> {database}?哪个更好:{REST API, website} --> {database} 或 {website} --> {REST API} --> {database}?
【发布时间】:2011-10-14 04:59:04
【问题描述】:

我有一个产品可以收集和显示各种测量值(不会涉及它)。正如人们所期望的那样,显示部分是建立在其之上的数据库 + 网站(使用 Symfony)。

不过,我们也可能会创建一个 API 来将数据公开给第三方。

现在,我们可以选择在数据库之上同时构建网站和 API,或者只是在之上构建 API,然后让网站实现 API。

我更喜欢后者,否则每次架构更改(可能是几次)时,我都必须为 API 和网站调整模型层。 如果我有后者,我显然有只适应 API 模型的优势。如果 API 合同保持不变,则网站不需要调整。

但是,性能显然存在不足之处。 使用网站 数据库,vs 网站 API 数据库,第一个显然是最快的。

我的问题是:您对这种权衡有何看法? 我希望性能几乎可以平衡,因为所有机器都在同一个局域网上+会有缓存。如果是这样,那么易于开发肯定会让我的生活更轻松:-)

期待您的意见和经验!

【问题讨论】:

    标签: performance api rest architecture


    【解决方案1】:

    如果有过早优化的情况,就是这样!如果没有更多信息,您不会知道答案,而且我非常怀疑两者之间的性能差异将微不足道,以至于在您的领域中无关紧要。

    IMO 最好的方法是使用这两种方法对你的一些模型进行峰值检测,然后看看你会得到什么。

    【讨论】:

    • 两个答案(你的和 djna 的)几乎都是我希望/想到的,但是在我浏览答案的过程中,还有更多的负面声音。我在一家初创公司工作,所以开发速度对我来说是一个非常关键的因素。如果性能差异可以忽略不计,我肯定会做出选择:以 API 的形式围绕 DB 一层,所有其他组件都针对该 API 编写。
    【解决方案2】:

    许多现代网站使用 JavaScript(AJAX 等),然后对 API 进行服务调用。如果您采用这种方法,您只需在 DB 前面有一个精心设计、可重用的 API 层。

    我发现这里几乎没有或根本没有额外的努力,我怀疑你会招致明显的性能损失。

    【讨论】:

      【解决方案3】:

      要确保您的 API 可供他人使用,没有比自己使用更好的方法了。我会去网站 -> API -> 数据库。写一次,你可以随时调整它,如果你也有的话,以后“作弊”。

      【讨论】:

        猜你喜欢
        • 2023-04-08
        • 2013-11-27
        • 1970-01-01
        • 2011-06-13
        • 2020-11-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-07
        相关资源
        最近更新 更多