【问题标题】:AngularJS - "Service coupling" vs network overheadAngularJS - “服务耦合”与网络开销
【发布时间】:2015-10-05 08:45:46
【问题描述】:

所以我的前端页面需要来自促销、产品、制造商和零售商服务的数据——当然每个服务都包含一个后端 API

我应该……

A)在前端(对每个服务)进行 4 次单独调用以从 4 个位置获取数据?

或者

B) 对聚合所有 4 个服务的所有数据的后端方法进行一次调用。当然,我也需要为此创建一个新的 AngularJS 服务

(a) 的优点是它避免了后端服务耦合——后端更加模块化,因为服务不需要相互通信。

缺点是前端的网络开销——四个调用而不是一个

这样做的正确或更角度的方式是什么?

【问题讨论】:

    标签: javascript angularjs architecture


    【解决方案1】:

    这不是一个角度问题,这是一个 SOA 问题。它是书中最古老的之一。答案当然是,视情况而定。

    服务粒度是与迁移到面向服务的架构相关的最困难的问题之一(AngularJS 有点强迫您这样做)。它归结为性能和服务可重用性之间的平衡行为。

    与往常一样,在考虑性能优化时,请始终在对性能做出假设之前进行测试。在这里进行一些测试可以走很长的路。您很可能会发现自己根本没有问题(经常发生)。

    需要考虑的一些事项:

    1. AngularJS 和现代浏览器可以很好地处理多线程编程。他们可以同时向服务器打开相当多的请求(因浏览器而异)。
    2. 组合这些请求会增加它们不可缓存的可能性(您正在使用缓存头,对吗?)
    3. 如果您需要组合服务,则在多个服务前面放置一个外观意味着您仍然可以在后端扩展它们(甚至在外观缓存响应)。

    【讨论】:

    • 感谢您的 cmets @RobConklin。你是对的,我想这更像是一个 SOA 问题。基本上,我没有看到构建一个将我的四个服务组合在一起的特定后端服务的意义,该服务的唯一目的是为这个页面发出一个单一的网络请求。在性能方面,两者都会做得很好。我只是不知道打四次电话(而不是一次)是否被认为是回击练习。
    • 此外,您是否有任何资源可以更深入地解决此类问题?我想再熟悉一下这对我来说不会有什么坏处。
    • 谢谢@RobConklin。我想没有客观的一刀切的答案,但是这些链接肯定为我指明了正确的方向
    猜你喜欢
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    • 2016-02-13
    • 2017-10-06
    • 2018-09-06
    • 2011-06-30
    • 2015-06-02
    • 2015-11-19
    相关资源
    最近更新 更多