2015-10-04 219 views
1

所以我的前端页面,需要从促销,产品,Manufactuers和零售商服务的数据 - 每门课程的包装后端APIAngularJS - “服务连接”与网络开销

我应该......

A)在前端(对每个服务)进行4次独立呼叫以从4个地点获取数据?

或者

B)使该汇总所有4所服务的所有数据的后端方法的单个调用。当然,我还需要为此创建一个新的AngularJS服务

(a)的优点是它避免了后端服务耦合 - 在后端更模块化,因为服务不需要与每个服务器交谈其他。

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

什么是做这种正确的或者更加棱角分明的方式?

回答

1

这不是一个角度问题,这是一个SOA问题。这是该书中最古老的一本。答案当然要看情况。

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

一如既往,在考虑性能优化时,请在对性能做出假设之前进行测试。一点测试可以在这里有很长的路要走。你很可能会发现你根本没有问题(经常发生)。

有些事情要考虑:

  1. AngularJS和现代的浏览器在处理多线程编程相当不错。他们可以同时向服务器打开多个请求(通过浏览器进行更改)。
  2. 合并这些请求会增加它们不可缓存的可能性(您正在使用缓存标头,对吧?)
  3. 如果事实证明您需要组合服务,您仍然可以在后端扩展它们(甚至可以在外观缓存响应)。
+0

感谢您的意见@RobConklin。你是对的,我想这更像是一个SOA问题。基本上,我没有看到构建特定后端服务的重点,该服务将我的四项服务结合起来,仅用于制作单个网络请求的本页。性能方面都将会很好。我只是不知道是否打了四个电话(而不是一个)被认为是回到练习。 – Ricky

+0

此外,您是否有任何资源可以更深入地解决这类问题?我想这对我再次熟悉这一点并不会伤害。 – Ricky

+0

的几个环节: http://stackoverflow.com/questions/5514046/soa-how-granular-should-services-be-to-maintain-performance http://www.soablueprint.com/白皮书/ SOAPGPart3.htm#_Toc146083917 https://books.google.com/books?ID = ed5ml0T3zyIC&PG = PA32及液化石油气= PA32&DQ =如何+颗粒+宜+网络+服务+是与源= BL&OTS = 57fq1nLNou与SIG = A3HnUopsgMLBmJt-Kdg3tXPgbk4&HL = EN&SA = X&SQI = 2&VED = 0CEAQ6AEwB2oVChMIobi5w6WsyAIVhqKACh1aew6h#V = onepage&Q =如何%20granular%20should%20web%20services% 20be&f = false –