
面向互動的架構
面向互動架構的主要目標是將使用者的互動與資料抽象和業務資料處理分離。面向互動的軟體架構將系統分解為三個主要部分:
資料模組 - 資料模組提供資料抽象和所有業務邏輯。
控制模組 - 控制模組識別控制流和系統配置操作。
視圖表示模組 - 視圖表示模組負責資料輸出的視覺或音訊表示,並且還提供使用者輸入的介面。
面向互動的架構有兩種主要風格:模型-檢視-控制器 (MVC) 和表示-抽象-控制 (PAC)。MVC 和 PAC 都提出了三元件分解,並用於互動式應用程式,例如具有多個對話和使用者互動的 Web 應用程式。它們在控制流和組織方面有所不同。PAC 是一種基於代理的層次結構架構,但 MVC 沒有清晰的層次結構。
模型-檢視-控制器 (MVC)
MVC 將給定的軟體應用程式分解為三個相互關聯的部分,有助於將資訊的內部表示與呈現給使用者或從使用者接受的資訊分開。
模組 | 功能 |
---|---|
模型 | 封裝底層資料和業務邏輯 |
控制器 | 響應使用者操作並指導應用程式流程 |
檢視 | 格式化並呈現來自模型的資料給使用者。 |
模型
模型是 MVC 的核心元件,直接管理應用程式的資料、邏輯和約束。它包含資料元件,這些元件維護原始應用程式資料和應用程式邏輯以進行介面。
它是一個獨立的使用者介面,捕獲應用程式問題域的行為。
它是應用程式核心結構的特定於域的軟體模擬或實現。
當其狀態發生變化時,它會向其關聯的檢視發出通知,以生成更新的輸出,並向控制器發出通知以更改可用的命令集。
檢視
檢視可用於以圖形形式(例如圖表或圖表)表示任何資訊輸出。它包含表示元件,這些元件提供資料的視覺表示
檢視向其模型請求資訊併為使用者生成輸出表示。
同一資訊的多個檢視是可能的,例如,管理層的條形圖和會計人員的表格檢視。
控制器
控制器接受輸入並將其轉換為模型或檢視的命令。它包含輸入處理元件,這些元件透過修改模型來處理來自使用者的輸入。
它充當關聯模型和檢視與輸入裝置之間的介面。
它可以向模型傳送命令以更新模型的狀態,並向其關聯的檢視傳送命令以更改檢視對模型的呈現。

MVC - I
它是 MVC 架構的簡單版本,其中系統分為兩個子系統:
控制器-檢視 - 控制器-檢視充當輸入/輸出介面並進行處理。
模型 - 模型提供所有資料和領域服務。
MVC-I 架構
模型模組會通知控制器-檢視模組任何資料更改,以便任何圖形資料顯示都會相應更改。控制器也會根據更改採取適當的操作。

控制器-檢視和模型之間的連線可以設計成訂閱-通知模式(如上圖所示),其中控制器-檢視訂閱模型,模型通知控制器-檢視任何更改。
MVC - II
MVC-II 是 MVC-I 架構的增強,其中檢視模組和控制器模組是分開的。模型模組像 MVC-I 中那樣發揮積極作用,提供資料庫支援的所有核心功能和資料。
檢視模組呈現資料,而控制器模組接受輸入請求、驗證輸入資料、初始化模型、檢視、它們之間的連線,並分派任務。
MVC-II 架構

MVC 應用
對於互動式應用程式,MVC 應用程式非常有效,在這些應用程式中,單個數據模型需要多個檢視,並且易於插入新的或更改介面檢視。
MVC 應用程式適用於模組之間有明確劃分的情況,以便可以分配不同的專業人員來同時處理此類應用程式的不同方面。
優點
有許多可用的 MVC 供應商框架工具包。
多個檢視與相同的資料模型同步。
易於插入新的或替換介面檢視。
用於應用程式開發,其中圖形專業人員、程式設計專業人員和資料庫開發專業人員在一個設計的專案團隊中工作。
缺點
不適用於面向代理的應用程式,例如互動式移動和機器人應用程式。
基於相同資料模型的多個控制器和檢視對會使任何資料模型更改變得昂貴。
在某些情況下,檢視和控制器之間的劃分並不明確。
表示-抽象-控制 (PAC)
在 PAC 中,系統被安排成許多協作代理(三元組)的層次結構。它是在 MVC 的基礎上開發的,以支援除了互動式需求之外的多個代理的應用程式需求。
每個代理具有三個元件:
表示元件 - 格式化資料的視覺和音訊表示。
抽象元件 - 檢索和處理資料。
控制組件 - 處理任務,例如控制流和兩個元件之間的通訊。
PAC 架構類似於 MVC,從某種意義上說,表示模組類似於 MVC 的檢視模組。抽象模組看起來像 MVC 的模型模組,控制模組類似於 MVC 的控制器模組,但它們在控制流和組織方面有所不同。
每個代理中的抽象元件和表示元件之間沒有直接連線。每個代理中的控制組件負責與其他代理的通訊。
下圖顯示了 PAC 設計中單個代理的框圖。

具有多個代理的 PAC
在由多個代理組成的 PAC 中,頂級代理提供核心資料和業務邏輯。底層代理定義詳細的特定資料和表示。中間層或中間層代理充當低層代理的協調器。
每個代理都有其自己指定的特定工作。
對於某些中間層代理,不需要互動式表示,因此它們沒有表示元件。
所有代理都需要控制組件,所有代理都透過它相互通訊。
下圖顯示了參與 PAC 的多個代理。

應用
對於互動式系統有效,其中系統可以以分層方式分解成許多協作代理。
當代理之間的耦合預計是鬆散的時有效,以便對一個代理的更改不會影響其他代理。
對於分散式系統有效,其中所有代理都分佈在遠端位置,並且每個代理都具有自己的功能、資料和互動式介面。
適用於具有豐富 GUI 元件的應用程式,其中每個元件都保留其自己的當前資料和互動式介面,並且需要與其他元件通訊。
優點
支援多工和多檢視
支援代理的可重用性和可擴充套件性
易於插入新代理或更改現有代理
支援併發,其中多個代理在不同的執行緒或不同的裝置或計算機上並行執行
缺點
由於表示和抽象之間的控制橋接以及代理之間控制的通訊而產生的開銷。
由於代理之間的鬆散耦合和高度獨立性,難以確定正確的代理數量。
每個代理中控制對錶示和抽象的完全分離會產生開發複雜性,因為代理之間的通訊僅發生在代理的控制之間