點對點風格軟件架構模式


在這種模式中,單個組件被稱為對等點。對等點可以作為客戶端,從其他對等點請求服務,也作為服務器,為其他對等點提供服務。對等點可以充當客戶端或服務器或兩者的角色,並且可以隨時間動態地更改其角色。

 

使用場景:

 

像Gnutella和G2這樣的文件共享網絡

 

多媒體協議,如P2PTV和PDTP

 

像Spotify這樣的專有多媒體應用程序

在沒有中心服務器的情況下,我們是如何進行文件共享的呢?比如,室友,有一個10GB的游戲,你想要過來。你會通過怎樣的方法呢?

1.用U盤 2.上傳網盤在再下載 3.區域網文件共享

很容易比較出來,區域網文件共享的方法是最便捷和高效率的。

以前在貼吧也看到過一個例子,學校每月限網10GB,有的同學用迅雷下載了一部電影以后,流量不知不覺得就用完了。其實這是因為他在下載完電影后沒有及時關掉迅雷,當別人下載同一部電影后,他的電腦被當做服務器,在向別人上傳電影數據,不斷地消耗了流量。這便是是典型的點對點風格軟件架構模式。

點對點風格四個子例:

 

 

 

 

1、基於事件的集成風格也被稱作隱式調用(implicit invocation)風格或者事件系統(event system)風格,它通過除去了解連接器接口的標識(identity on the connector interface)的必要性,降低了組件之間的耦合。此風格不是直接調用另一個組件,而是一個組件能夠發布(或廣播)一個或者多個事件。在事件發布后,系統中的其他組件能夠注冊對於某些事件類型的興趣,由系統本身來調用所有已注冊的組件。

2、C2 架構風格[128]直接支持大粒度的重用,並且通過加強底層獨立性(substrate independence),支持系統組件的靈活組合。它通過將基於事件的集成風格和分層-客戶-服務器風格相結合來達到這些目標。異步通知消息向下傳送,異步請求消息向上傳送,這是組件之間通信的唯一方式。這加強了對高層依賴的松散耦合(服務請求可以被忽略),並且與底層實現了零耦合(不知道使用了通知),從而改善了對於整個系統的控制,又沒有喪失EBI 的大多數優點。

 

 

3、分布式對象風格將系統組織為結對進行交互的組件的集合。一個對象是一個實體,這個實體封裝了一些私有的狀態信息或數據、操作數據的一組相關的操作或過程、以及一個可能存在的控制線程,這種封裝使得它們能夠被整體地看作單個的單元。通常,一個對象的狀態對於所有其他對象而言,是完全隱藏和受到保護的。檢查或修改對象狀態的唯一方法是對該對象的一個公共的、可訪問的操作發起請求或調用。這樣就為每個對象創建了一個良好定義的接口,在對象的操作實現和它的狀態信息保持私有的同時,公開操作對象的規格,這樣做改善了可進化性。

 

4、為了降低對象標識的影響,現代分布式對象系統通常使用一種或更多種中間風格(intermediary styles)來輔助通信。這包括基於事件的集成風格和被代理的客戶/服務器(brokered client/server)風格。被代理的分布式對象風格引入了名稱解析組件——其目的是將該組件接收到的客戶端請求中一個通用的服務名稱解析為一個能夠滿足該請求的對象的特定名稱,並使用這個特定名稱來答復客戶端。盡管它改善了可重用性和可進化性,但額外的間接層要求額外的網絡交互,這降低了效率和用戶可覺察的性能。

在這里介紹一下C2風格,C2體系結構風格可以概括為:通過連接件綁定在一起的按照一組規則運作的並行構件網絡。C2風格中的系統組織規則如下:

 

  (1)系統中的構件和連接件都有一個頂部和一個底部;

 

  (2)構件的頂部應連接到某連接件的底部,構件的底部則應連接到某連接件的頂部,而構件與構件之間的直接連接是不允許的;

 

  (3)一個連接件可以和任意數目的其它構件和連接件連接;

 

  (4)當兩個連接件進行直接連接時,必須由其中一個的底部到另一個的頂部。

C2風格的體系結構

 

 

C2風格是最常用的一種軟件體系結構風格。從C2風格的組織規則和結構圖中可以得知C2風格具有以下特點:

 

  (1)系統中的構件可實現應用需求,並能將任意復雜度的功能封裝在一起;

 

  (2)所有構件之間的通訊是通過以連接件為中介的異步消息交換機制來實現的;

 

  (3)構件相對獨立,構件之間依賴性較少。系統中不存在某些構件將在同一地址空間內執行,或某些構件共享特定控制線程之類的相關性假設

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM