AngularJS - "Service coupling" 与网络开销
AngularJS - "Service coupling" vs network overhead
所以我的前端页面需要来自促销、产品、制造商和零售商服务的数据——当然每个都包装一个后端 API
我应该...
A) 在前端(对每个服务)进行 4 次单独调用以从 4 个位置获取数据?
或
B) 对聚合来自所有 4 个服务的所有数据的后端方法进行一次调用。当然,我还需要为此创建一个新的 AngularJS 服务
(a) 的优点是它避免了后端服务耦合——后端更加模块化,因为服务不需要相互通信。
缺点是前端的网络开销 -- 四次调用而不是一次
执行此操作的正确或更多 angular 方法是什么?
这不是 angular 问题,这是一个 SOA 问题。它是书中最古老的之一。答案当然是,看情况。
服务粒度是与迁移到面向服务的体系结构相关的最困难的问题之一(AngularJS 有点迫使您进入)。它归结为性能和服务可重用性之间的平衡行为。
与往常一样,在考虑性能优化时,请始终在对性能做出假设之前进行测试。在这里进行一些测试可以大有帮助。你很可能会发现你根本没有问题(经常发生)。
需要考虑的一些事项:
- AngularJS 和现代浏览器可以很好地处理 multi-threaded 编程。他们可以同时向服务器打开相当多的请求(因浏览器而异)。
- 组合这些请求会增加它们无法缓存的可能性(您正在使用 cache-headers,对吧?)
- 如果事实证明你需要组合服务,在多个服务前面放置一个外观意味着你仍然可以在后端扩展它们(甚至在外观缓存响应)。
所以我的前端页面需要来自促销、产品、制造商和零售商服务的数据——当然每个都包装一个后端 API
我应该...
A) 在前端(对每个服务)进行 4 次单独调用以从 4 个位置获取数据?
或
B) 对聚合来自所有 4 个服务的所有数据的后端方法进行一次调用。当然,我还需要为此创建一个新的 AngularJS 服务
(a) 的优点是它避免了后端服务耦合——后端更加模块化,因为服务不需要相互通信。
缺点是前端的网络开销 -- 四次调用而不是一次
执行此操作的正确或更多 angular 方法是什么?
这不是 angular 问题,这是一个 SOA 问题。它是书中最古老的之一。答案当然是,看情况。
服务粒度是与迁移到面向服务的体系结构相关的最困难的问题之一(AngularJS 有点迫使您进入)。它归结为性能和服务可重用性之间的平衡行为。
与往常一样,在考虑性能优化时,请始终在对性能做出假设之前进行测试。在这里进行一些测试可以大有帮助。你很可能会发现你根本没有问题(经常发生)。
需要考虑的一些事项:
- AngularJS 和现代浏览器可以很好地处理 multi-threaded 编程。他们可以同时向服务器打开相当多的请求(因浏览器而异)。
- 组合这些请求会增加它们无法缓存的可能性(您正在使用 cache-headers,对吧?)
- 如果事实证明你需要组合服务,在多个服务前面放置一个外观意味着你仍然可以在后端扩展它们(甚至在外观缓存响应)。