AngularJS - "Service coupling" 与网络开销

AngularJS - "Service coupling" vs network overhead

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

我应该...

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

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

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

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

执行此操作的正确或更多 angular 方法是什么?

这不是 angular 问题,这是一个 SOA 问题。它是书中最古老的之一。答案当然是,看情况。

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

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

需要考虑的一些事项:

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