AngularJS - "服务耦合" vs网络开销

时间:2015-10-04 17:39:59

标签: javascript angularjs architecture

因此,我的前端页面需要来自促销,产品,制造商和零售商服务的数据 - 每个都包含后端API

我应该......

A)在前端(每个服务)进行4次单独的呼叫,以从4个位置获取数据?

或者

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

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

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

这样做的正确或更有棱角的方法是什么?

1 个答案:

答案 0 :(得分:1)

这不是一个有角度的问题,这是一个SOA问题。这是本书中最古老的一本。答案当然是,这取决于。

服务粒度是与迁移到面向服务的体系结构(AngularJS强迫您进入体系结构)相关的最难的问题之一。它归结为性能和服务可重用性之间的平衡行为。

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

需要考虑的一些事项:

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