《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 業界動態 > MIDAS技術的實現與可靠性分析

MIDAS技術的實現與可靠性分析

2009-06-03
作者:龍 艷

??? 摘 要:MIDAS為開發多層分布式應用系統提供的一個中間透明引擎,能有效地利用DCOM、TCP/IP等技術在Internet/Intranet上建立結構為“ 瘦客戶端+應用程序服務器+數據庫系統”的多層分布式應用程序,在此結構下可利用對象代理實現分布式負載均衡與容錯,從而提高系統的性能。
??? 關鍵詞:MIDAS;應用服務器;負載平衡;容錯

?

??? Internet/Intranet 的興起使得企業很方便地使用MIS(企業管理系統)來進行規劃管理。目前大多數MIS采用兩層C/S 結構,但隨著使用的深入,該結構逐漸暴露出其架構上的缺陷,如應用程序的可伸縮性和維護,同時,如何控制數據的統一性和完整性也成為問題。
??? 新一代的數據庫管理系統在傳統的C/S 結構中增加了應用服務器,這種新的結構就是所謂的三層體系結構。三層體系結構指邏輯上的三層,包括應用表示層、應用邏輯層和數據層。應用表示層又名客戶端, 主要負責用戶端界面, 提供給用戶一個操作方便且簡單快捷的應用服務接口;應用邏輯層或為應用服務器, 是整個結構中最重要的部分, 實現應用程序的應用邏輯處理;數據層又為數據庫服務器, 負責數據的存取和管理。應用服務器包括了統一的界面、業務規則的制定和數據處理邏輯的規定等功能。通常情況下, 客戶端不直接與數據庫進行交互, 而是通過通信協議與中間層建立連接, 再經由中間層與數據庫進行交互。多層應用服務技術允許分割應用程序,這樣,本地計算機無需安裝一整套數據庫工具,便可以在另一臺機器上存取數據;同時,它允許對業務規則和進程進行機種管理,并在整個網絡上分發,實現進程負載的動態調節。
1 MIDAS技術
??? MIDAS 的全稱是Multi- tier Distributed Application Services Suite(多層分布式應用程序服務包)。Delphi中所有強大又奇妙的分布式多層能力都來自MIDAS 的功能。MIDAS 是Delphi 多層應用系統的技術核心,是Delphi 用來開發多層應用系統所使用的中介透明引擎。通過MIDAS,程序員可以使用相同的組件存取不同的后端應用程序服務器。此外MIDAS 也提供了容錯能力、負載平衡能力以及高執行效率的能力。
??? 多層結構其實是對傳統C/S結構的擴展,是把一個數據庫應用程序分解成幾個邏輯部分,客戶端程序集中處理數據顯示部分和用戶與數據之間的交互。其優點可歸納為:
??? (1)將數據處理及通信功能封裝在一個共享的中間層里。不同的客戶端程序都能訪問這個中間層,這樣就避免了為每個客戶程序復制數據處理部分而產生的冗余。
??? (2)縮小了客戶端程序的規模,使得客戶端程序更容易進行開發。這是因為不需要安裝、配置和維護數據庫連接軟件。
??? (3)采用分布式數據處理過程。將一個應用程序要處理的任務分在幾臺機器上進行處理,從而提高了程序執行的性能。
??? (4)提高了數據的安全性。將不同的數據功能封裝成一定的中間層,通過提供安全控制結合容錯技術,可以開發出更安全的應用系統。
2 MIDAS技術架構和工作原理
??? MIDAS技術實現的架構圖如圖1所示

?


2.1客戶端
??? 從邏輯結構上看, 客戶端主要由三部分組成。首先,客戶端的DataModule中包含與應用服務器建立連接的RemoteServer組件, 客戶端通過RemoteServer組件與應用服務器的IAppserver接口連接,以此進一步連接DataSetProvider接口, 從而通過DataAccess組件實現數據的獲取和更新操作。再者ClientDataSet組件支持數據的存取、編輯、瀏覽、約束和過濾等功能。最后在客戶端Form中, 由數據感知組件如DBGrid、DBEdi、DBNavigator等形成與用戶交互的接口。
2.2應用服務器
??? 應用服務器是系統的核心, 也是連接客戶端和遠程數據庫的重要橋梁。該層主要由遠程數據模塊構成。
??? 遠程數據模塊RemoteDataModule是一個支持雙重接口的自動化服務器, 它自身提供了IAppServer接口。客戶端利用該接口與數據供應接口DataSetprovider通信。遠程數據模塊是一個容器, 可容納訪問遠程數據庫服務器的DataAccess對象和充當數據代理的DataSetProvider對象等。數據集組件DataAccess主要包括Table、Query、StoreProc等, 其主要功能是實現遠程數據庫的訪問, 該組件通過BDE、ADO、OLE DB等引擎接口訪問遠程數據庫。數據供應組件DataSetProvider充當DataSet對象與客戶端ClientDataSet對象間的數據代理。該組件有兩大功能:(1)通過DataSet對象從數據庫服務器獲取數據并封裝成數據包后回傳給客戶端的ClientDataSet對象;(2)將客戶端ClientDataSet對象中要求更新的數據提交給數據庫服務器, 并把由于各種原因而不能實現更新的數據存入日志后回傳給客戶端。MIDAS.DLL用于管理與組織應用服務器提供者組件和客戶端數據集組件上的數據包。
2.3數據庫服務器
??? 后臺遠程數據庫存放著用戶的所有業務數據, 通過BDE、OLE DB或ODBC等數據訪問接口和應用服務器進行通信。
??? 在一個基于MIDAS 的三層應用中,客戶端通過應用服務器得到數據和進行數據更新的過程,通常按照如下順序和方式實現:
??? (1)用戶啟動客戶端應用。客戶端連接到應用服務器,如果應用服務器尚未運行,它將被啟動。客戶端從應用服務器得到一個IAPPServer 接口。
??? (2)客戶端從應用服務器請求數據。
??? (3)應用服務器獲取數據,為客戶端打包數據,返回一個數據包給客戶端。
??? (4)客戶端解開數據包,顯示數據給用戶。
??? (5)當用戶與客戶端程序交互時,數據被更新。這些改動被客戶端記錄在一個變更日志中。
??? (6)最后,客戶端向應用服務器提請更新(applyupdates),通常是響應于用戶的一個操作。
??? (7)應用服務器解開數據包,并向數據庫服務器遞交更新(postupdates) 。
??? (8)當應用服務器完成解析過程,它返回任何沒有遞交的記錄給客戶端,以供后來的進一步解析。 ??????
??? (9)客戶端調整沒有解析的記錄。
??? (10)客戶端從服務器得到數據刷新自己。
3 MIDAS的實現
??? 要創建一個多層C/S應用程序,首先要創建應用服務器,然后注冊或安裝應用服務器, 只有應用服務器已注冊并且正在運行的情況下, 才能創建客戶程序。對于客戶程序來說, 既可以在設計期間連接應用服務器, 也可以在運行期間連接應用服務器。創建MIDAS應用服務器步驟如下:
??? (1)創建一個遠程數據模塊(Remote DataModule), 它允許客戶以DCOM、TCP等方式訪問此服務器;
??? (2)把一個數據集構件, 如TTable、TQuery或TStoredProc放到遠程數據模塊上,使它們能訪問遠程的后臺數據庫;
??? (3)把TDataSetProvider構件放在遠程數據模塊上, 設置它的DataSet屬性指定為要訪問的數據庫,其實就是第(2)步所放的數據集構件;
??? (4)編寫代碼, 實現規則;
??? (5)保存、編譯、注冊或者安裝應用服務器。
??? 在多層體系結構中, 一個客戶程序至少需要一個TClientDataSet構件, 作用是引入數據集。創建一個客戶程序的步驟如下:
??? (1)新建一個項目, 在項目中添加一個數據模塊(DataModule);
??? (2)根據通信協議把一個或者幾個MIDAS連接構件如TDCOMConnection加入到數據模塊上,設置相關屬性,指定和連接應用服務器, 這與具體的MIDAS連接構件有關;
??? (3)把一個或幾個TClientDataSet構件放到數據模塊上, 設置RemoteServer屬性指定為第(2)步添加的MIDAS連接構件, 設置Providername屬性為應用服務器上的TDataSetProvider構件, 這樣客戶程序就可以和應用服務器通信;
??? (4)把一個TDataSource構件放到數據模塊上, 設置它的DataSet屬性為第(3)步添加的TClientDataSet構件, 再把一個數據感知控件如TDBGrid放到窗體上, 設置它的DataSource屬性為TDataSource構件,至此, 一個簡單的客戶程序創建完畢。
4 可靠性分析
??? 在多層結構環境中,所開發的應用系統除了必須能夠正確而且有效率地運行之外,如何讓其更安全可靠,不會因為應用服務器或是數據庫服務器故障而導致整個系統無法繼續運行也是非常重要的。分布式多層應用系統的可靠性具體可以通過以下能力來體現:
??? (1)負載平衡能力。指能夠根據應用程序服務器的不同負荷,動態分配客戶端的連接,不至于有的應用服務器負載過重,而有的應用程序服務器負載過輕,使得所有的應用程序服務器的負載達到一個平衡。
??? (2)容錯能力。指某臺應用服務器發生故障時,原先連接到該服務器的客戶端可以立刻連接到其他提供相同服務的應用服務器,并繼續取得服務。
??? (3)暫存數據能力。指當所有的應用服務器都發生了故障,或是數據庫服務器發生了故障,客戶端應用程序應該有一種機制能夠把用戶更新的數據暫存在客戶端機器中,等應用程序服務器或是數據庫服務器恢復正常后,客戶端應用程序可以把數據加載到系統中,再實際更新回數據庫服務器中。
??? Delphi在客戶端提供了TSimpleObjectBroker組件來實現基本的負載平衡能力和容錯能力,該組件實現了基于偽隨機數算法的簡單對象代理。在客戶端的Data Module中加入一個TSimpleObjectBroker組件,并將其LoadBalanced屬性設置為true,然后把Data Module中各個RemoteServer組件的ObjectBroker的屬性設置成該TSimpleObjectBroker組件,就能夠實現偽隨機意義下的負載均衡。Servers屬性存儲一張能夠執行應用服務器列表,該表的第i個表項Items[i]由ComputerName、Port、Enabled、HasFailed(應用服務器所在的計算機名、端口號、當前是否可用標記、連接失敗標記)4個域構成,并提供其中的機器名稱給TDCOMConnection或是TSocketConnection作為連接的遠程機器的名稱。當TDCOMConnection或是TSocketConnection連接的機器發生故障時,TDCOMConnection或是TSocketConnection可以從TSimpleObjectBroker取得一個新的能夠執行應用程序服務器的遠程機器名稱,然后再連接到這臺新機器以取得應用程序服務器的服務。為了實現暫存數據能力,TClientDataSet提供了SaveToFile和LoadFromFile兩個方法。當所有的應用程序服務器都發生了故障,或是數據庫服務器發生了故障時,調用SaveToFile方法把TClientDataSet中所有的數據包括在客戶端更新的數據保存到一個文件中,然后在應用程序服務器或是數據庫服務器恢復正常后再執行客戶端應用程序,調用LoadFromFile方法加載先前存儲的數據到TClientDataSet中,最后再調用ApplyUpdates方法把客戶端更新的數據更新回數據庫中。
??? MIDAS技術與C/S 技術相比,尤其是在大中型數據庫應用系統中,系統的穩定性、延展性和執行效率有很大提高。開發一個高效可靠的分布式多層數據庫應用系統,還必須考慮負載平衡、容錯控制等能力,使用MIDAS的ObjectBroker技術可以實現并有效地提升系統的效率和健壯性。
參考文獻
[1] 李維. Delphi 5.x 分布式多層應用系統篇[M]. 北京: 機械工業出版社,2000.
[2]?TEIXEIRA S,PACheco X. Delphi開發人員指南[M]. 北京:機械工業出版社,2003.
[3]?王志剛. 基于MIDAS分布式多層系統的容錯技術. 湖南師范大學自然科學學報, 2001, 24 (2): 15.
[4]?徐新華.Delhi高級編程——Database與MIDAS編程[M].北京:人民郵電出版社,2000.
[5]?于重重. 基于三層ClientServer結構的管理信息系統的實現. 北京工商大學學報,2000,17(7):35-38.

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: www.av片| 久久国产经典视频| 男女性潮高清免费网站| 国产三级精品三级在专区| 国产在线视频你懂的| 国产自产视频在线观看香蕉| chinese熟妇与小伙子mature| 成年无码av片在线| 久久亚洲日韩看片无码| 最新中文字幕在线观看| 亚洲国产成人高清在线观看| 正在播放露脸一区| 人人妻人人澡人人爽欧美一区| 精品国产Av一区二区三区| 园田美樱中文字幕在线看一区| 青青草原综合久久大伊人| 国产成人精品视频午夜| 1000部拍拍拍18勿入免费视频软件| 国产麻豆成av人片在线观看| av一本久道久久波多野结衣| 好爽好紧好大的免费视频国产| 中文字幕亚洲专区| 无码人妻av一区二区三区蜜臀| 久久精品中文闷骚内射| 日韩精品中文字幕视频一区| 亚洲av最新在线观看网址| 欧美性大战XXXXX久久久√| 亚洲欧美日韩高清综合678| 电车痴汉在线观看| 免费无码不卡视频在线观看| 综合亚洲欧美日韩一区二区| 四虎影在线永久免费四虎地址8848aa| 调教办公室在线观看| 国产大片91精品免费观看男同 | 做a的视频免费| 精品久久久久久久久久中文字幕| 啊灬用力灬啊灬啊灬啊| 老妇高潮潮喷到猛进猛出| 四虎永久在线精品视频 | 奇米影视中文字幕| аⅴ中文在线天堂|