2015-10-04 145 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 –