每週一薦:分佈式計算的模式語言

書籍:《面向模式的軟件架構IV:分佈式計算的模式語言》

簡介

迄今爲止,人們提出的軟件開發模式有不少是關於分佈式計算的,但人們始終無法以完整的視角瞭解分佈式計算中各種模式是如何協同工作、取長補短的。構建複雜的分佈式系統似乎成爲了永遠也無法精通的一門手藝。本書的出版改變了這一切。

本書是經典的POSA系列的第4卷,介紹了一種模式設計語言,將分佈式系統開發中的114個模式聯繫起來。書中首先介紹了一些分佈式系統和模式語言的概念,然後通過一個倉庫管理流程控制系統的例子,介紹如何使用模式語言設計分佈式系統,最後介紹模式語言本身。

使用這一模式語言,人們可以有效地解決許多與分佈式系統開發相關的技術問題,如

  • ★ 對象交互
  • ★ 接口與組件劃分
  • ★ 應用控制
  • ★ 資源管理
  • ★ 併發與同步

本書從實用角度展示瞭如何從現有的主要模式中整合出一門全面的模式語言,用於開發分佈式計算中間件及應用程序。作爲該領域在市場上唯一統攬全局的書,它將給讀者帶來醍醐灌頂的感覺!

筆記

以前總是困惑自己正在開發的遊戲網絡通信框架是前人怎麼想出來的,看着底層那些亂七八糟的代碼,即膜拜又感到不解。看到本書講的一個模式:Half-Sync/Half-Async 頓時感覺清楚了許多。這本書對於很多模式都講的不是很細緻,只是粗略總結一下,詳細的用法和介紹還是要去參考一些《面向模式的軟件架構I》、《面向模式的軟件架構II》、《設計模式:可複用面向對象基礎》。對於網絡框架的架構這本書和《面向模式的軟件架構II》必備。

下面把書中提及到的分佈式相關的模式列舉出來:

從混沌到結構(From Mud To Structure )

  1. 領域模型(Domain Model)
  2. 分層(Layers)
  3. MVC模式(Model-View-Controller)
  4. PAC模式(Presentation-Abastraction-Control)
  5. 微內核(Microkernel)
  6. 反射(Reflection)
  7. 管道和過濾器(Pipes and Filters)
  8. 共享倉庫(Shared Repository)
  9. 黑板(Blackboard)
  10. 領域對象(Domain Object)

分佈式架構

  1. 消息機制(Messaging)
  2. 消息通道(Message Channel)
  3. 消息端點(Message Endpoint)
  4. 消息轉換器(Message Translator)
  5. 消息路由(Message Router)
  6. 發佈-訂閱者(Publisher-Subscriber)
  7. 代理者(Broker)
  8. 客戶端代理(Client Proxy)
  9. 請求者(Requestor)
  10. 調用者(Invoker)
  11. 客戶端請求處理(Client Request Handler)
  12. 服務端請求處理(Server Request Handler)

事件分派(Event Demultiplexing and Dispatching)

  1. Reator
  2. Proator
  3. Acceptor-Connector
  4. Asynchronous Completion Token

接口劃分(Interface Partitioning )

  1. Explicit Interface
  2. Extension Interface
  3. Introspective Interface
  4. 動態調用接口(Dynamic Invocation Interface)
  5. 代理(Proxy)
  6. 業務委託(Business Delegate)
  7. 外觀模式(Facade)
  8. 複合方法(Combined Method)
  9. 迭代器(Iterator)
  10. 枚舉方法(Enumeration Method)
  11. 批處理方法(Batch Method)

組件劃分(Component Partitioning)

  1. 封裝實現(Encapsulated Implementation)
  2. 整體-部分(Whole-Part)
  3. 組合模式(Composite)
  4. 主從模式(Master-Slave)
  5. Half-Object plus Protocol
  6. Replicated Component Group

應用控制(Application Control)

  1. 頁控制器(Page Controller)
  2. 前端控制器(Front Controller)
  3. 應用控制器(Application Controller)
  4. 命令處理器(Command Processor)
  5. 模板視圖(Template View)
  6. 轉換視圖(Transform View)
  7. 防火牆代理(Firewall Proxy)
  8. 授權(Authorition)

併發(Concurrency)

  1. Half-Sync/Half-Async
  2. Leader/Followers
  3. Active Object
  4. Monitor Object

同步(Synchronization)

  1. 守護掛起(Guarded Suspension)
  2. Future
  3. 線程安全接口(Thread-Safe Interface)
  4. 雙檢查鎖(Double-Checked Locking)
  5. 策略鎖定(Strategized Locking)
  6. 範圍鎖定(Scoped Locking)
  7. 線程指定存儲(Thread-Specific Storage)
  8. 複製值(Copied Value)
  9. 常量值(Immutable Value)

對象交互(Object Interaction)

  1. 觀察者(Observer)
  2. 雙分配(Double Dispatch)
  3. 中間者(Mediator)
  4. 命令模式(Command)
  5. 備忘錄模式(Memento)
  6. 環境對象(Context Object)
  7. 數據傳輸對象(Data Transfer Object)
  8. 消息(Message)

適配和擴展(Adaptation and Extension)

  1. 橋接模式(Bridge)
  2. 對象適配器(Object Adapter)
  3. 責任鏈(Chain of Responsibility)
  4. 解釋器(Interpreter)
  5. 插入器(Interceptor)
  6. 訪問者(Visitor)
  7. 修飾模式(Decorator)
  8. Execute-Around Object
  9. 模板方法(Template Method)
  10. 策略模式(Strategy)
  11. 空對象(NULL Object)
  12. 封裝外觀(Wrapper Facade)
  13. Declarative Component Configuration

模態行爲(Modal Behavior)

  1. 狀態對象(Objects for States)
  2. 狀態方法(Methods for States)
  3. 狀態集合(Collections for States)

資源管理(Resource Management)

  1. 容器(Container)
  2. 組件配置(Component Configurator)
  3. 對象管理器(Object Manager)
  4. 查找(Lookup)
  5. 虛擬代理(Virtual Proxy)
  6. 生命週期回調(Lifecyce Callback)
  7. 任務協調器(Task Coordinator)
  8. 資源池(Resource Pool)
  9. 資源緩衝(Resource Cache)
  10. Layzy Acquisition
  11. Eager Acquisition
  12. Partial Acquisition
  13. Activator
  14. Evictor
  15. Leasing
  16. 自動垃圾回收(Automated Garbage Collection)
  17. 計數句柄(Counting Handle)
  18. 抽象工廠(Abstract Factory)
  19. 構建者(Builder)
  20. 工廠方法(Factory Method)
  21. Disposal Method

數據庫訪問(Database Access)

  1. 數據庫訪問層(Database Access Layer)
  2. 數據映射(Data Mapper)
  3. 行數據網關(Row Data Gateway)
  4. 表格數據網關閉(Table Data Gateway)
  5. Active Record

以上模式詳細內容還需要更加深入的應用才能很好的掌握。繼續學習…

2012/04/06 01:08 於上海

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章