软件架构的数据流总结(三)
14. Interpreter / virtual machine (解釋器/虛擬機)
典型樣例:Java 虛擬機,Rule-based systems,腳本語言(JavaScript)
原理:Program or Script加載到解釋器,創(chuàng)立Program和環(huán)境的鏈接。解釋器從程序中讀取指令并處理,從而影響Environment。
問題:比直接執(zhí)行要慢許多;需要定制debugger;需要開發(fā)和實現(xiàn)特征豐富的編程語言。其實像python,Matlab,java都應該屬于這種類型。
15. Hub-And-Spoke
應用:用來連接不兼容的遺留系統(tǒng)(legacy systems);
工作機制:spoke在hub上注冊和取消注冊。spoke X 發(fā)送消息給spoke Y時,先通過hub將X language轉變?yōu)橹虚g表示,然后再轉變?yōu)閅 language,最后將消息發(fā)送給spoke Y。
問題:More complex (debugging);Single Point of failure (hub)
16. Event Bus or Message Bus
典型樣例:Process monitoring;Trading systems;Software development environments。
應用:當應用(app)可以被分解為功能獨立的且能通過簡單的消息通訊的模塊時,可以選用這種架構。
工作機制:這些模塊能夠在run-time加入和移出。當一個模塊希望與其他模塊通訊時,就在Event Bus上放一個消息,然后Event Bus負責傳遞消息給收件人。有幾種通訊可能發(fā)生在Event Bus上,1)發(fā)布-訂閱(publish-subscribe):當一個模塊發(fā)布消息到Bus上,所有訂閱的Module都會收到;2)廣播(broadcast):消息將傳遞給所有module;3)點對點(point-to-point):兩兩之間的通訊。這種機制跟各種總線通訊有點相似了,比如RS422、RS485等通訊協(xié)議,或者是網(wǎng)絡通訊中的一些協(xié)議相關。
問題:當模塊之間共享大量的數(shù)據(jù)時,再通過bus來pump數(shù)據(jù)可就不明智了。還要注意同步問題。
17. Structural Model (Synchronizer,同步器)
應用:飛行模擬器。這種pattern用在復雜的time-critical系統(tǒng)。當你需要聯(lián)合定期或不定期的控制流時。當你的模塊需要定期升級或者通過彼此之間發(fā)送消息使得狀態(tài)改變的情況下。
工作機制:這種模式的核心是一個控制環(huán):以固定的時間周期運行,被叫做時間間隔或時間幀。pattern包括一個應用特定部分,叫做應用級,一個一般的部分,叫做執(zhí)行級。
18. Ports-And-Adapters / Hexagonal Architecture
這種結構的主要目的是將應用的核心邏輯與它使用的服務去耦合,允許不同的服務插入(plugged in),也允許應用在沒有那些服務的時候照樣執(zhí)行。
core logic或者business logic是應用程序的核心;而services是不必要的,在不改變應用程序目的的情況下,是可以替代的。比如:數(shù)據(jù)庫訪問和其他類型的存儲,用戶接口元件,e-mail和別的通訊元件,硬件設備等。
優(yōu)勢:core logic能夠獨立于服務進行測試;很容用其他更適合需求改變的服務代替。
The primary adapter calls the API functions of the core logic。
這種應用可以被不同類型的用戶使用,每個用戶都可以創(chuàng)建他們自己的應用變體,通過插入定制的adapters。
完結
最后再總結一下:對于軟件architecture,每個人都有每個人的設計,上面給總結的是比較鮮明的18種基于數(shù)據(jù)流的框架pattern,有些雖然不用自己去設計,但是在理解某些開發(fā)方式的時候是非常有益處的:比如MVC組件模型(或者PAC模型),很明顯基本上GUI界面的設計都是基于這種模式,理解了這種模式,再進行界面開發(fā)時就有一種鳥瞰的感覺;比如virtual machine;比如Master-Slave等。
有些可能比較常見,比如MVC、PAC、Pipe and Filter,Master-Slave,layered system,client-server,state machine等,有些比較專用:structural model等。
對于常見的模型,能有一個比較好的深入理解,對于閱讀程序或者是開發(fā)大型程序都是極有幫助的。
希望總結能對后續(xù)的學習有一定的幫助!
2015-7-8 14:16 星期三
轉載于:https://www.cnblogs.com/huty/p/8519346.html
總結
以上是生活随笔為你收集整理的软件架构的数据流总结(三)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring的IOC原理
- 下一篇: C++复习笔记--继承和派生