體系結構模式
ANSIIEEEStd1471一200對體系結構的定義:一個系統的基本組織,表現為系統的組件、組件之間的相互關係、組件和環境之間的相互關係以及設計和進化的原則
黑板模式 黑板模式是一種常用的架構模式,套用中的多種不同數據處理邏輯相互影響和協同來完成數據分析處理。就好像多位不同的專家在同一黑板上交流思想,每個專家都可以獲得別的專家寫在黑板上的信息,同時也可以用自己的分析去更新黑板上的信息,從而影響其它專家。
在實際套用中常見的實現模式有:
A 利用資料庫
利用資料庫充當黑板,不同的套用共享資料庫中信息,並且可以更新數據信息。這也是最常見的實現方式。
特點:
1 便於實現信息的查詢,篩選和統計,這方面關係資料庫提供了SQL 92的強大支持。
2 不能用於較高實時性要求的環境,這種實現是工作在“拉模式”下的,並且高頻率的訪問資料庫會導致嚴重的系統性能問題。
B 利用發布—訂閱模式
這種實現方式通常採用訊息佇列作為黑板,佇列工作在主題模式(Topic),專家作為佇列的訂閱者,同時可以向佇列傳送訊息,訊息會被傳送至所有訂閱者。以上過程實現了專家間的信息交流。
特點:
1 可以有效套用於實時性要求較高的系統,這種實現工作在“推模式”下。
2 難於實現信息的統計分析,不像實現方式一那樣可以通過SQL支持,這些工作必須開發者自己完成。
用戶界面,特別是圖形用戶界面,承擔著向用戶顯示問題模型和與用戶進行操作和I/O互動的作用。用戶希望保持互動操作界面的相對穩定,但更希望根據需要改變和調整顯示的內容和形式。例如,要求支持不同的界面標準或得到不同的顯示效果,適應不同的操作需求。這就要求界面結構能夠在不改變軟體的功能和模型情況下,支持用戶對界面構成的調整。
要做到這一點,從界面構成的角度看,困難在於:在滿足對界面要求的同時,如何使軟體的計算模型獨立於界面的構成。模型-視圖-控制(MVC:Model-View-Controller)就是這樣的一種互動界面的結構組織模型
對於界面設計可變性的需求,MVC把互動系統的組成分解成模型、視圖、控制三種部件。
模型部件是軟體所處理問題邏輯在獨立於外在顯示內容和形式情況下的內在抽象,封裝了問題的核心數據、邏輯和功能的計算關係,他獨立於具體的界面表達和I/O操作。
視圖部件把表示模型數據及邏輯關係和狀態的信息及特定形式展示給用戶。它從模型獲得顯示信息,對於相同的信息可以有多個不同的顯示形式或視圖。
控制部件是處理用戶與軟體的互動操作的,其職責是控制提供模型中任何變化的傳播,確保用戶界面於模型間的對應聯繫;它接受用戶的輸入,將輸入反饋給模型,進而實現對模型的計算控制,是使模型和視圖協調工作的部件。通常一個視圖具有一個控制器。
模型、視圖與控制器的分離,使得一個模型可以具有多個顯示視圖。如果用戶通過某個視圖的控制器改變了模型的數據,所有其它依賴於這些數據的視圖都應反映到這些變化。因此,無論何時發生了何種數據變化,控制器都會將變化通知所有的視圖,導致顯示的更新。這實際上是一種模型的變化-傳播機制。
實現:
分析套用問題,對系統進行分離
分析套用問題,分離出系統的核心功能、對功能的控制輸入、系統的輸出行為三大部分。設計模型部件使其封裝核心數據和計算功能,提供訪問顯示數據的操作,提供控制內部行為的操作以及其他必要的操作接口。以上形成模型類的數據構成和計算關係。這部分的構成與具體的套用問題緊密相關。
設計和實現每個視圖
設計每個視圖的顯示形式,它從模型中獲取數據,將它們顯示在螢幕上。
設計和實現每個控制器
對於每個視圖,指定對用戶操作的回響時間和行為。在模型狀態的影響下,控制器使用特定的方法接受和解釋這些事件。控制器的初始化建立起與模型和視圖的聯繫,並且啟動事件處理機制。事件處理機制的具體實現方法依賴於界面的工作平台。
使用可安裝和卸載的控制器
控制器的可安裝性和可卸載性,帶來了更高的自由度,並且幫助形成高度靈活性的套用。控制器與視圖的分離,支持了視圖與不同控制器結合的靈活性,以實現不同的操作模式,例如對普通用戶、專業用戶、或不使用控制器建立的唯讀視圖。這種分離還為在套用中集成新的I/O設備提供了途徑。
類似的結構模式還有PAC(Presentation-Abstraction-Control)、Forward-Receiver、Publisher-subscriber、各類可視化用戶界面控制項等。
其中,"表示-抽象-控制"結構模式(PAC)也是從數據模型及其可是化關係的處理上提出的。其中,表示與視圖對應,抽象與模型對應,控制與控制對應。從邏輯本質上,兩者沒有太大區別。但是,MVC和PAC還是存在著不同的地方。
(1) MVC的控制更側重於在視圖上的用戶的I/O處理,而PAC的控制主要指從抽象到表示的傳遞和協調作用。
(2) 此外,PAC把系統分割為協作但鬆散耦合的智慧型體,而MVC是專門處理互動界面的,各個部件之間的關聯更密切一些。
(3) 另外,從體系結構上看,PAC是屬於系統級別的,因為它解決的問題更傾向於系統及部件之間的協作和關聯關係。
運行模式:子系統的體制和運作方式