一種應用程式命令執行架構設計
袁永福 2011-7-5
有感於一些程式中aspx頁面中直接編寫功能性**,難於組織和維護,實現不了程式的高度可配置化,自此提出一種應用程式命令執行架構,其架構圖如下
在這個架構中,每乙個應用程式中存在乙個host(宿主),它是應用程式功能模組組織中的頂級結構,它戰略上管理著整個應用系統的功能點,而且是訪問本架構的入口點。
這樣整個應用程式通過「host — module — command」**結構將所有的功能點組織在一起。module可以動態的掛在host下面而無需硬編碼,這樣可以實現外掛程式式的軟體功能機制,若精心設計還能搞出軟體模組熱拔插的機制。
host下面還有session(會話),session是乙個執行時的資料容器,command中的功能模組可以通過它來臨時儲存和共享資料,當host關閉時session中的資料會被清空。使用session能減少各個command的耦合性,保證系統的變形金剛的功能。在實現時,對於asp.net程式,這裡的session可以是asp.net session的封裝;對於winform程式,session可以是乙個字典列表物件。
host下面還掛著ui controler(使用者介面控制器),ui controler用於訪問使用者介面,它下面掛著若干個form(使用者介面表單物件),對於winform程式是乙個個窗體或使用者控制項,對於asp.net這是乙個個aspx頁面或使用者控制項。
每乙個form下面有著若干個功能性控制項,比如選單、按鈕等等。這些功能性控制項通過一種binding機制繫結到host下面掛著得所有的command物件。當程式執行時,使用者按下命令按鈕,則通過繫結機制觸發command物件,從而執行command物件的功能性**來完成某項功能。
而且binding機制能實現反向控制操作,當執行了某個操作使得一些command的狀態發生改變,比如可用狀態、可見狀態等等。此時系統會自動更新使用者介面中的控制項狀態,比如設定選單、按鈕灰化使其不可用等等。
為了能讓binding機制可行,需要提供很強的設計時支援,使得開發人員在開發應用程式使用者介面時能很方便的將選單、按鈕和command物件進行繫結,在這方面vs.net沒有任何問題。
host下面還掛著permission(授權),這是進行授權控制,在程式執行時使用者按下選單、按鈕通過binding機制觸發command物件,在最後的關頭系統會自動呼叫permission來進行validate(驗證)。若驗證通過則觸發command物件,若驗證不通過則啥都不會發生。而且根據授權資訊還能更新使用者介面的功能控制項狀態,比如某個command通過不授權,使用者沒有許可權呼叫,則自動設定繫結到該command的選單、按鈕灰化,使其不可用。
當然使用者介面控制項可以對映到command物件,開發者編寫的後台**(user code)也可以觸發command物件,此時也會通過授權驗證。
在實現中,binding機制或者user code都不能直接訪問command物件,而且使用命令名通過host來查詢command物件並在host內部的**中觸發,在host內部觸發command物件前就可以呼叫permission物件執行驗證。
通過這種應用程式命令執行架構,系統的功能和使用者介面從邏輯上分開了,實現了外掛程式式的軟體功能架構,這種架構能促使開發者開發出能在多個專案中都能使用的程式功能模組,這些功能模組經過標準化就是產品,因此這種架構能為專案的產品化打下乙個良好的技術基礎。
而且對於已有系統,可以將頁面物件改造成module,實現form和module在形式上的統一而邏輯上的分開,這樣能低成本的改造舊系統,保護客戶的已有投資。
spark應用程式的執行架構
spark應用程式的執行架構 幾個基本概念 1 job 包含多個task組成的平行計算,往往由action催生。2 stage job的排程單位。3 task 被送到某個executor上的工作單元。4 taskset 一組關聯的,相互之間沒有shuffle依賴關係的任務組成的任務集。乙個應用程式由...
Spark應用程式的執行架構
1 簡單的說 由driver向集群申請資源,集群分配資源,啟動ex ecutor。driver將spark應用程式的 和檔案傳送給executor。executor上執行task,執行完之後將結果返回給driver或者寫入外界。2 複雜點說 提交應用程式,構建sparkcontext,構建dag圖,...
spark應用程式的執行架構
幾個基本概念 1 job 包含多個task組成的平行計算,往往由action催生。2 stage job的排程單位。3 task 被送到某個executor上的工作單元。4 taskset 一組關聯的,相互之間沒有shuffle依賴關係的任務組成的任務集。乙個應用程式由乙個driver progra...