前言 模型是整個架構(gòu)設(shè)計的理論基礎(chǔ),模式是整個架構(gòu)得以實現(xiàn)的方法論。以模型為基礎(chǔ),以模式為方法,以相關(guān)技術(shù)為手段去構(gòu)建一個可行、可靠、可重用的平臺架構(gòu)。 ▓模型是在一個更高的層次對現(xiàn)有的概念或?qū)嶓w進(jìn)行抽象,它脫離了具體的基礎(chǔ)平臺,在這種概念的設(shè)計下,我們的平臺架構(gòu)會獨立于任何基礎(chǔ)平臺。 ▓模式是一個久經(jīng)考驗的、可行的、可靠的、可重用的針對某一類問題的解決方案。在架構(gòu)設(shè)計中大量的采用相關(guān)模式進(jìn)行設(shè)計,使我們的設(shè)計是經(jīng)得起考驗、已被證明是可行、可靠、可重用的。 ▓在整個架構(gòu)設(shè)計中我們必須考慮的模型如下: 遠(yuǎn)程、分布式組件模型 數(shù)據(jù)模型 業(yè)務(wù)模型 安全模型 這些模型的建立也就意味著我們的架構(gòu)是多層、分布式的;我們的整個架構(gòu)設(shè)計主要是針對中間層進(jìn)行設(shè)計。 內(nèi)容 ◆在整個架構(gòu)設(shè)計中我們不能不考慮到表示層與中間層之間的交互。在整個的交互設(shè)計中我們必須采用相關(guān)模式。在現(xiàn)有的模式中,MVC模式是這種問題域的最佳解決方案。通過MVC模式我們主要要達(dá)到如下目標(biāo): 降低藕合(表示層與中間層) 隱藏中間層實現(xiàn)細(xì)節(jié) 隱藏組件類型及位置 ◆在中間層與數(shù)據(jù)層之間我們也必須提供存取接口,在現(xiàn)有的數(shù)據(jù)存取接口之上,我們可以自由選擇(決定于您選擇的基礎(chǔ)平臺),不過為了整個設(shè)計獨立于基礎(chǔ)平臺的特性,我們可以在基礎(chǔ)平臺之上定義自己的數(shù)據(jù)存取接口。在整個接口的設(shè)計中我們應(yīng)該做到以下目標(biāo): 數(shù)據(jù)源類型、位置無關(guān)性 接口健壯、友善 ◆業(yè)務(wù)模型的建立和具體的業(yè)務(wù)緊密相關(guān),當(dāng)我們在導(dǎo)入現(xiàn)實世界的業(yè)務(wù)模型到計算機(jī)世界的過程中,我們應(yīng)該采用相關(guān)的模式,以使我們的每個業(yè)務(wù)組件之間的層次更加合理、清晰;組件之間的交互更加有效。業(yè)務(wù)模型的建立必須與計算機(jī)模型一一對應(yīng),以使我們的導(dǎo)入更加流暢、無縫。關(guān)于業(yè)務(wù)模型與計算機(jī)模型對應(yīng)關(guān)系如下: 功能組織結(jié)構(gòu)圖 ―――― 軟件結(jié)構(gòu) 業(yè)務(wù)流程 ―――― 業(yè)務(wù)組件邏輯流程 業(yè)務(wù)數(shù)據(jù) ―――― 系統(tǒng)數(shù)據(jù) 業(yè)務(wù)單據(jù) ―――― 系統(tǒng)界面、報表 在業(yè)務(wù)模型的建立過程中,我們會采用相關(guān)的組件模型去實現(xiàn)。對每種組件模型的充分理解會使我們在設(shè)計的過程中能夠充分的利用這種組件模型的優(yōu)勢,從而更好的為我們的業(yè)務(wù)模型提供服務(wù)。通用的組件模型如下: 組件的注冊機(jī)制 組件的發(fā)現(xiàn)機(jī)制 組件的創(chuàng)建方式 組件的調(diào)用信息的傳輸機(jī)制(協(xié)議、編碼格式) 組件的調(diào)用約定 組件的生成期管理 組件與容器的交互 組件的特別規(guī)范 ◆既然是一個多層、分布式架構(gòu),我們就不得不考慮我們的數(shù)據(jù)、信息在各層之間的傳輸機(jī)制。為了使我們的系統(tǒng)能夠很容易的被其它后續(xù)系統(tǒng)集成,在我們的整個數(shù)據(jù)、信息傳輸過程中我們都采用了XML編碼格式。在處理數(shù)據(jù)的傳輸?shù)臅r候,我們可以采用值對象模式(value object)以減少在物理分布式的情況下多次遠(yuǎn)程調(diào)用帶來的性能犧牲。在遠(yuǎn)程調(diào)用參數(shù)的處理上,我們又要考慮到本地調(diào)用的特點,盡量采用系統(tǒng)提供的序列化功能,由系統(tǒng)來確定什么情況下序列化而不是我們自己去做偽序列化操作(比如自己先將對象導(dǎo)出為字符串等)。在值對象模式的應(yīng)用中,我們主要針對數(shù)據(jù),通過對值對象模式的擴(kuò)展,將其擴(kuò)展到數(shù)據(jù)集合的級別,我們將整個數(shù)據(jù)處理過程分為兩個階段,一階段是RDBMS階段,一階段是客戶端階段。在客戶端階段我們必須能夠提供一個類DBMS的內(nèi)存數(shù)據(jù)管理系統(tǒng)模型。 讓系統(tǒng)可以把所需要的數(shù)據(jù)一次性抽取到客戶端,然后在客戶端進(jìn)行操作而不是通過頻繁的客戶端、服務(wù)器端交互來完成數(shù)據(jù)的操作,在用戶完成操作后,由用戶一次性提交到服務(wù)器端以進(jìn)行持久化處理。為了滿足這種需求,我們必須在建立一個簡單的客戶端數(shù)據(jù)庫管理系統(tǒng)模型。參考模型如下: 數(shù)據(jù)庫結(jié)構(gòu)、表結(jié)構(gòu)、關(guān)系定義 數(shù)據(jù)保存 數(shù)據(jù)庫常用操作(新增、刪除、編輯、查詢、計算、排序) 數(shù)據(jù)合法性保護(hù) 數(shù)據(jù)完整性保護(hù) 事務(wù)或偽事務(wù)支持 ◆隨著信息化進(jìn)程的深入,客戶對關(guān)鍵業(yè)務(wù)數(shù)據(jù)的安全要求越來越迫切。在這種形式下,如果一個平臺架構(gòu)缺少了安全的解決方案,將是致命的,無論對客戶還是對整個平臺。在整個平臺架構(gòu)中我們可以從安全模型入手去建立自己的安全方案。整個安全模型如下,我們可以基于基礎(chǔ)平臺的安全框架去實現(xiàn)它。 身份驗證: 你是否可以進(jìn)入系統(tǒng) 訪問控制: 你是否可以訪問當(dāng)前資源 日志功能: 你做了什么 數(shù)據(jù)合法性: 數(shù)據(jù)是否符合業(yè)務(wù)規(guī)則 數(shù)據(jù)完整性: 是否會出現(xiàn)不完整數(shù)據(jù) 關(guān)鍵數(shù)據(jù)的保密性: 關(guān)鍵數(shù)據(jù)是否可以被輕易盜取 后記 【以抽象模型和模式為背景去設(shè)計平臺架構(gòu),可以使我們的架構(gòu)在設(shè)計上獨立于各種基礎(chǔ)平臺(J2EE、。NET等),也使我們在切換平臺時只是在開發(fā)語言上有所差別。】 |
|