代理者模式——學習筆記
原文連結:enter link description here 作者:chgaowei
代理者系統結構模式可以用來構建帶有隔離元件的分散式系統,該軟體通過遠端服務呼叫進行互動。代理者元件負責協調通訊,諸如訊息轉發,以及傳回結果和異常。
我所知的一個應用代理者模式的架構是SOA。
1. 例子
分散式的城市資訊系統。
2. 語境
系統由獨立的、相互協作的、分散式的、異構的元件構成。
3. 問題
構建一個複雜的軟體系統,它是由獨立的和互操作的元件構成,而不是一個整體的應用程式,從而使系統具有可維護性,可變更性和靈活性。通過將系統分割為多個元件,系統變得可分佈和可擴充套件。可以參考SCA(服務元件架構)。
- 對客戶隱藏服務提供者資訊:比如他的地址,開發語言等。
- 元件在執行期可替換,移動,更改,而對客戶無影響。
- 能夠通過遠端呼叫服務。
4. 解決方案
通過引入代理者元件來隔離客戶端和服務提供端,對客戶隱藏服務端的細節。伺服器向代理者註冊自己的服務,客戶端通過向代理者傳送請求呼叫服務,代理者根據服務請求決定服務提供者,並且將請求路由到服務提供者。最後返回結果給客戶端。
5. 結構
分為:客戶機,伺服器,代理者,客戶端代理和服務端代理,網橋。
- 伺服器是服務的提供者,它們可能使用不同的技術構建,也就是它們可能是異構的。它們啟動後向代理者註冊服務。
- 客戶機呼叫服務,向代理者傳送請求。考慮一種情況,伺服器也可能是客戶端,這出現在它需要呼叫其他的服務端情況下。
- 代理者:接收伺服器的服務註冊,接收客戶端的服務請求,並路由的指定的伺服器。
- 客戶端代理和服務代理:是他們的一個小的模組,用來隱藏代理。它可以由代理者提供。
- 網橋:連線多個代理者。以構成更復雜的系統。
這種結構和SOA非常相像。SOA中的代理其實就是服務匯流排。
6. 動態特性
7. 實現
- 定義一個物件模型。
- 確定使用哪種方法公開服務。
- 指定代理者元件提供給客戶端和服務端的API。
- 用代理物件對客戶端和伺服器隱藏細節。
- 開發IDL編譯器。其實可以使用webservice。
8. 已解決的例子
9. 變體
- 直接通訊代理者系統:代理者將通訊通道開放給客戶端。
- 訊息傳送代理者系統:舉個簡單的例子,客戶端傳送一個服務請求,這個請求是一個訊息,代理收到訊息後,根據訊息的型別轉發至不同的伺服器。伺服器在具體解析這個請求。
- 交易器系統:客戶機的請求被唯一的轉發至目標伺服器。
- 介面卡代理者系統:應對異構的伺服器,分別提供代理者的介面卡,以對伺服器隱藏代理者的介面,實現靈活性。
- 會叫代理系統:反應式模型是事件驅動的,一旦事件到來,代理主將呼叫已註冊的方法來對事件作出反應。
10. 已知應用
11. 效果
優點:
- 對客戶端隱藏伺服器的資訊:位置,介面格式等。
- 服務元件的可變性和可擴充套件性。
- 代理者系統的可移植性。
- 不同代理者之間的互操作性。
- 可重用性。
缺點:
- 效率受限
- 容錯性差。
相關文章
- 設計模式學習筆記(七)代理模式以及動態代理的實現設計模式筆記
- 設計模式學習筆記之裝飾者模式設計模式筆記
- 學習筆記-設計模式:MVC模式筆記設計模式MVC
- 《SQL 反模式》 學習筆記SQL模式筆記
- 設計模式學習筆記設計模式筆記
- 學習筆記-設計模式筆記設計模式
- 設計模式學習筆記(十七)中介者模式及其應用場景設計模式筆記
- 設計模式學習筆記——單例模式設計模式筆記單例
- 設計模式學習——代理模式設計模式
- php設計模式學習筆記PHP設計模式筆記
- JavaScript設計模式學習筆記JavaScript設計模式筆記
- 反向代理學習筆記(一) Nginx與反向代理緒論筆記Nginx
- 設計模式學習筆記(二十一)訪問者模式及其實現設計模式筆記
- 設計模式學習筆記(十九)觀察者模式及應用場景設計模式筆記
- Nginx學習筆記(反向代理&搭建叢集)Nginx筆記
- java反射之動態代理學習筆記Java反射筆記
- 設計模式學習筆記之工廠模式設計模式筆記
- hadoop 偽分散式模式學習筆記Hadoop分散式模式筆記
- Event Bus 設計模式學習筆記設計模式筆記
- Redis學習筆記八:叢集模式Redis筆記模式
- iOS開發學習筆記:基礎知識之代理模式之老王的故事iOS筆記模式
- 重學Java設計模式-學習筆記(1)Java設計模式筆記
- Java設計模式學習筆記(五) 單例模式Java設計模式筆記單例
- 《laravel 框架關鍵技術解析》學習筆記之裝飾者模式Laravel框架筆記模式
- Android學習筆記-Activity的啟動模式Android筆記模式
- Java設計模式學習筆記(四) 抽象工廠模式Java設計模式筆記抽象
- Java設計模式學習筆記(三) 工廠方法模式Java設計模式筆記
- Java設計模式學習筆記(一) 設計模式概述Java設計模式筆記
- C#設計模式學習筆記:(9)組合模式C#設計模式筆記
- numpy的學習筆記\pandas學習筆記筆記
- 設計模式學習筆記(3)裝飾器設計模式筆記
- 外掛化開發筆記(一)代理模式筆記模式
- java設計模式學習筆記-5-介面卡模式Java設計模式筆記
- Java設計模式學習筆記(二) 簡單工廠模式Java設計模式筆記
- 設計模式學習筆記(十二)享元模式及其應用設計模式筆記
- 設計模式學習筆記(九)橋接模式及其應用設計模式筆記橋接
- 設計模式學習筆記(二十)狀態模式及其實現設計模式筆記
- Java設計模式學習筆記——工廠模式與抽象工廠模式Java設計模式筆記抽象
- 設計模式學習-使用go實現代理模式設計模式Go