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