如果引用或轉貼,麻煩註明出處與本網誌連結,否則視為侵權。

2011年11月26日

彈性應用系統平台十種設計方向(Flexible Application Platform 10 Design Approach)

 

作者 : Fred Wang 日期 : 2011/11/26

甚麼是一個高彈性的應用系統平台,可能具備下面的彈性需求類型 :

a.使用者操作彈性,b.彈性可調整的外觀,c.支援多前端平台,d.功能可擴展性,e.開發人員分工協同設計,f.程式高度可再用性,g.彈性支援多種後端來源資料儲存與傳送方式,h.可彈性擴充後端支援的硬體

是否有機會做到呢? 下面提供一些設計方向,可以依據所需的彈性需求類型組合參考下面的設計方向來建構。在此僅說明設計方向,至於實現的技術需要獨立專文討論。

一,使用者介面個人化設計 : 如iGoogle,myYahoo等個人化入口網站,提供End User有限度地調整自己個人網頁要看的內容。

二,使用者外觀與資料分離式設計 : 將外觀如theme, styles抽離網頁內容,在Runtime時由展示層(Presentation Layer)動態組合成網頁後呈現到使用者前端(Client),好處是可以獨立設計與調整外觀Theme,並可切換不同的Theme,這種設計在許多系統都已經實現,特別是WCM系統,IBM Portal, Quickr等。有些平台提供設計師上傳預先設計好的themes或styles檔案的介面,有些提供使用者介面(UI)進行Themes與styles有限度的微調,並可以儲存自訂的Themes與styles。    

三,多重網路協議層設計 : 為了支援多種的使用者前端如Web Browser,內嵌式設備,行動設備或自行開發的應用前端(application Client) 如Flex, Adobe AIR等,在展示層增加一個層次用來處理多種的網路協議(protocol),將這些前端訊息格式轉換成一致的格式傳給後端層次的成式處理,也將後端層次的層次處理或抓取的資料轉成前端訊息格式回應給前端。

四,MVC架構或多層次架構設計 : 將不同類型的處理分層,一個層次的程式接收前一層的資訊加以處理再轉交/呼叫下一個層次的程式或透過委託程式(delegation)分配給後一層次的程式處理。這種設計可以提高功能的可擴充性,而且有利於大型專案的專職分工。

五,程式模組化設計 : 這是程式設計入門學問了,程式設計師必需具備的高內聚力,低耦合性等模組化程式設計素養,不管是前端的Javascript,邏輯處理的Java等都平常都要養成模組化設計的習慣,而團隊則要做好共用模組的管理,如測試,驗證,品檢,文件製作等才能提高再用性的效力;另外,Design Pattern與software framework的運用也是很好的方向。

六,Metadata結構設計 : 在資料庫的資料表(data tables)前增加Metadata層,程式不直接存取實體的資料表,而是存取Metadata層結構的資料,而Metadata與資料表的轉換有專屬程式處理,例如:Metadata與Oracle資料庫間有一組處理程式,而Metadata與MS SQL Servr資料庫間又有另外一組處理程式。此種設計廣泛出現在Data Warehouse,而知名ERP軟體SAP也是採用此種設計。

七,高度參數化設計 : 將系統中任何可能變動的參數甚至一些判斷邏輯從程式抽離,並設計使用者介面(UI)提供管理者進行調整。這些參數又分為系統參數與業務相關參數,可以區分不同權限管理。多數商用系統應該都有這樣的設計,很多是儲存在.ini檔中,而較好的是提供使用者操作介面,例如SAP的Configuration。

八,可客製物件設計 : 這種設計是將商業的元素物件化,例如:訂單是一個物件,訂單項目是另一個物件,每個物件有標準欄位與可自訂欄位,欄位值可以設定預設值公式,欄位檢查,並可以設定物件間的關聯,部份看起來是資料庫管理系統的作業,部分應該是程式中處理的,有些系統如Force.com將這些動作完全提供使用者介面,透過畫面以簡單的操作完成設定。

九,彈性資料表設計 : 這個設計是資料庫內表格設計的一種技巧,例如,物料主檔各類型的物料屬性不同,如果採用聯集,會設計出一個欄位超多的資料表,儲存資料時也將產生許多的空值或預設值,浪費許多的儲存空間。因此衍生彈性資料表設計,就是區分預設欄位資料表與彈性欄位資料表,前者包含key欄與一些共同的必要欄位,這些欄位可以設定索引快速搜尋,後者包含Key欄,屬性名稱欄位,型態欄位與內容欄位。

十,虛擬化與雲端化的基礎架構設計 : 這是近年最夯的IT話題,主要好處就是高擴充彈性的基礎架構(infrastructure),服務容量將要不足時可以隨時加入硬體伺服器,任何一台伺服器要維修也可以不影響營運下抽離。有兩種不同種類的技術,一種是VMWare,Xen的虛擬技術,一種是Google Hadoop, MapReduce等技術。

作者: Fred Wang(http://fredwang.blogspot.com),麻煩參考時請註明出處,本網站的連結,否則視為侵權。

沒有留言:

張貼留言

歡迎提供意見, 謝謝 (註 : 留言經過版主審核通過才會發布)