目前基於網路應用的架構風格主要有三種:
rpc架構風格將伺服器看作是由一些過程組成,客戶端呼叫這些過程來執行特定的任務。soap就是rpc風格的一種架構。過程是動詞性的(做某件事),因此rpc建模是以動詞為中心的。
分布式物件架構風格認為伺服器是由一些物件和物件上的方法組成,客戶端通過呼叫這些物件上的方法來執行特定的任務。並且客戶端呼叫這些物件上的方法應該就像是呼叫本地物件上的方法一樣,這樣開發就可以完全按照統一的物件導向方法來做。但是很可惜,這樣的抽象並不是很有效,因為分布式物件與本地物件存在著巨大的本質差別,想要掩蓋這些差別很多時候甚至是有害無益的。
rest架構風格將伺服器抽象為一組離散資源的集合。資源是乙個抽象的概念,而不是代表某個具體的東西。注意:要真正理解rest,就一定要增強自己的抽象思維能力,充分理解到資源是抽象的。資源是名詞性的,因此rest建模是以名詞為中心的。
上述是目前基於網路的應用的主要的三種抽象方式。這三種不同的抽象方式會嚴重影響客戶端與伺服器的互動模式,而不同互動模式的互動效率差別相當大。分布式物件的互動模式很多時候效率很低,因為掩蓋了分布式物件與本地物件的差別,很多時候都會導致細粒度的api。實踐已經證明,與rpc和分布式物件相比,rest是一種對於伺服器更加有效的抽象方式,將會帶來粒度更大和更有效率的互動模式。這樣的效果與fielding設計rest的初衷是吻合的,rest就是專門為互動的效能和可伸縮性進行過優化的一種架構風格。而soap在設計的時候優先考慮的從來不是效能和可伸縮性,而是互操作性,其開發效率比較低。 rest的主要優勢其實在於它是一種對於伺服器的更加有效的抽象方式。 效能分析:與基於二進位制通訊的rpc例如rmi對比,rest是基於文字傳輸的,從這點看應該說效能不如前者,但是rest強調通訊語義對於中間元件的可見性,這樣可以改善效能和可伸縮性。例如瀏覽器就是一種中介軟體。瀏覽器可以根據通訊的語義來確定資料有沒有發生改變,從而進行有效的快取。rmi傳輸資料再有效,它的資料也無法做有效的快取。因此rmi的效能未必比rest好,況且不能快取會帶來嚴重的可伸縮性問題。 如果說設計模式是從**角度為系統降低耦合度,那麼架構風格便是從資料角度解耦。架構是更加巨集觀和全面的視角,它不再是解決單一的技術問題,而是為系統提供更加完整的解決方案。
架構風格與基於網路的軟體架構設計(Restful)
軟體架構是對軟體系統執行時狀態的抽象,乙個軟體架構是乙個軟體系統在其操作的某個階段的執行時 run time 元素的抽象。乙個系統可能由很多層抽象和很多個操作階段組成,每個抽象和操作階段都有自己的軟體架構 軟體架構可以通過動態新增約束來獲取不同的架構屬性 performance 網路效能 吞吐量 負...
REST架構風格
rest風格通過uri訪問得到的資訊是自我描述的,包括了資訊本身和表示方式 html,xml,資料流等 資訊的描述是採用最通用的協議 http 超文字轉換協議 來進行的.客戶端根據資訊的表示解析和展示資訊本身.而互動是通過http的幾個基本操作 get,put,post,delete 來實現.一些看...
REST架構風格
rest 即representational state transfer.資源 表現層狀態轉化,是目前最流行的一種網際網路軟體架構 http協議裡面,四哥表示操作方式的動詞 get post put delete。他們分別對應四種基本操作 get用來獲取資源 post用來新建資源 put用來更新資...