• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于MIDAS的圖書館信息管理系統(tǒng)的構(gòu)建

      2010-08-15 00:44:26姚曦
      電腦與電信 2010年9期
      關(guān)鍵詞:應(yīng)用程序客戶端組件

      姚曦

      (福建衛(wèi)生職業(yè)技術(shù)學(xué)院,福建福州350000)

      1.引言

      1.1 兩層體系結(jié)構(gòu)

      以往人們開發(fā)系統(tǒng)大都采用客戶機(jī)/服務(wù)器的兩層結(jié)構(gòu),在這種模式中,所有的形式邏輯和業(yè)務(wù)邏輯均駐留在客戶端,而服務(wù)器則成為數(shù)據(jù)庫服務(wù)器。這樣一來服務(wù)器就變得很“胖”,被稱為“胖客戶端(FatClient)”。它的弊端十分明顯:“胖”客戶端造成更新繁瑣,日常維護(hù)十分困難,一旦客戶端的程序發(fā)生改變,就必須對(duì)所有的客戶端進(jìn)行修改。并且隨著客戶端的不斷增加,對(duì)帶寬與服務(wù)器的壓力也越來越大。

      1.2 三層體系結(jié)構(gòu)

      M IDAS是Multi-tier Distributed Application Services Suite(多層分布式應(yīng)用程序服務(wù)包)的縮寫。三層體系結(jié)構(gòu)即客戶應(yīng)用程序(表示層),應(yīng)用程序服務(wù)器(業(yè)務(wù)層),遠(yuǎn)程數(shù)據(jù)庫服務(wù)器(數(shù)據(jù)層)。其中數(shù)據(jù)層負(fù)責(zé)存儲(chǔ)數(shù)據(jù),可以理解為數(shù)據(jù)庫服務(wù)器。業(yè)務(wù)層負(fù)責(zé)從數(shù)據(jù)庫中獲取數(shù)據(jù)并檢查其的合法性。表示層也可稱做GUI層,負(fù)責(zé)在客戶端顯示數(shù)據(jù)。

      M IDAS優(yōu)點(diǎn)在于使三層結(jié)構(gòu)在邏輯上相互獨(dú)立。表示層配置在客戶機(jī)中,即在客戶端僅是一些界面設(shè)計(jì),沒有具體的應(yīng)用程序。當(dāng)要追加新業(yè)務(wù)時(shí),只需統(tǒng)一在應(yīng)用程序服務(wù)器進(jìn)行中間件的更新,而不影響其它兩層,實(shí)現(xiàn)了“瘦”客戶端,彌補(bǔ)了兩層體系結(jié)構(gòu)的不足。

      2.系統(tǒng)的設(shè)計(jì)思想

      本系統(tǒng)以Delphi7.0為主要的開發(fā)平臺(tái),MS SQL Server2000作為數(shù)據(jù)庫服務(wù)器,采用Delphi中的M IDAS基本的開發(fā)方法,構(gòu)建了具有三層體系結(jié)構(gòu)的圖書館信息管理系統(tǒng)。系統(tǒng)在客戶端使用基于TCP/IP協(xié)議的Delphi TsocketConnection組件連接中間件。在中間件使用多線程連接數(shù)據(jù)庫,并使用遠(yuǎn)程數(shù)據(jù)模塊(RemoteDataModle)中的Provider接收來自客戶端的Clientdataset組件的請(qǐng)求,并向數(shù)據(jù)庫查找想要的數(shù)據(jù)。而后再通過Provider向客戶端的Clientdataset組件送回?cái)?shù)據(jù)。最后數(shù)據(jù)存儲(chǔ)在由MS SQL Server2000構(gòu)建的數(shù)據(jù)服務(wù)器中。

      2.1 系統(tǒng)的需求分析

      通過調(diào)研,確定了圖書館信息管理系統(tǒng)的兩類管理模式:圖書管理員,學(xué)生。他們各自擁有權(quán)限管理及功能。圖書管理員有5個(gè)操作模塊:圖書管理、學(xué)生管理、查詢、圖書操作、報(bào)表打印。學(xué)生有2個(gè)操作模塊:圖書信息檢索、學(xué)生信息。

      2.2 系統(tǒng)的模塊組成

      本多層的圖書館管理系統(tǒng)有三個(gè)功能模塊來實(shí)現(xiàn)。客戶服務(wù)器,應(yīng)用程序服務(wù)器,數(shù)據(jù)庫。他們的實(shí)現(xiàn)步驟如下:首先開發(fā)遠(yuǎn)程應(yīng)用程序服務(wù)器,他負(fù)責(zé)為客戶服務(wù)器提供數(shù)據(jù)服務(wù)。其次開發(fā)客戶服務(wù)器及客戶端界面,最后連接客戶端應(yīng)用程序和遠(yuǎn)程應(yīng)用程序服務(wù)器。

      3.系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

      3.1 遠(yuǎn)程應(yīng)用程序服務(wù)器的實(shí)現(xiàn)

      Delphi建立的遠(yuǎn)程應(yīng)用程序服務(wù)器要求是一個(gè)EXE服務(wù)器,它稱為M IDAS應(yīng)用程序服務(wù)器。通常通過以下幾個(gè)步驟來建立:1、建立應(yīng)用程序。2、建立基于TCP/IP的TremoteDataModule的遠(yuǎn)程數(shù)據(jù)模塊。3、在遠(yuǎn)程數(shù)據(jù)模塊中使用ADOQuery組件連接數(shù)據(jù)庫。4、使用TdataSetProvider組件連接遠(yuǎn)程數(shù)據(jù)模塊之中的數(shù)據(jù)集組件。5、編譯、運(yùn)行遠(yuǎn)程應(yīng)用程序服務(wù)器。

      3.2 遠(yuǎn)程應(yīng)用程序服務(wù)器與數(shù)據(jù)庫的連接

      本系統(tǒng)使用TADOConnection組件連接數(shù)據(jù)庫。如果想建立多個(gè)數(shù)據(jù)源連接,則需要同時(shí)使用多個(gè)TADOConnection組件,否則只需使用一個(gè)TADOConnection組件即可。本系統(tǒng)使用connectionstring連接數(shù)據(jù)庫。連接的語句為“Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;InitialCatalog=圖書館管理系統(tǒng);Data Source=yx”其中各參數(shù)意義如下:

      Provider:數(shù)據(jù)提供者。因?yàn)楸鞠到y(tǒng)數(shù)據(jù)庫為SQL,所以選擇SQLOLEDB.1。

      Persist Security Info:設(shè)置為“false”時(shí),當(dāng)連接處于打開狀態(tài)時(shí),一些安全信息不會(huì)返回。

      User ID:用戶登錄數(shù)據(jù)庫的ID。

      Initial Catalog:數(shù)據(jù)庫的目錄名稱。

      Data Source:數(shù)據(jù)庫服務(wù)器的名稱。

      3.3 客戶服務(wù)器的實(shí)現(xiàn)

      客戶端使用TClientDataSet通過TCP/IP與遠(yuǎn)程應(yīng)用程序服務(wù)器的TdatasetProvider進(jìn)行連接來獲取數(shù)據(jù)。使用TClientDataSet的ApplyUpdates方法來保存對(duì)數(shù)據(jù)庫的更新操作。其中TClientDataSet是個(gè)存在于內(nèi)存中的“虛擬表”,它具有緩沖的作用,因此對(duì)數(shù)據(jù)庫的操作非???。

      3.4 數(shù)據(jù)的顯示操作

      本系統(tǒng)在客戶服務(wù)器上使用Dbgrid來顯示數(shù)據(jù),利用Dbgrid中的Dataset連接ClientDataSet,而不是直接連接到數(shù)據(jù)源。以往當(dāng)需要在客戶服務(wù)器上顯示查找的記錄時(shí),會(huì)訪問數(shù)據(jù)庫依次查詢各條記錄,直至最后一條。這就造成每次顯示數(shù)據(jù)都必須訪問數(shù)據(jù)庫,當(dāng)多客戶端或多次操作時(shí),數(shù)據(jù)庫的開銷就很大。Dbgrid的優(yōu)點(diǎn)在于可通過設(shè)置ClientDataSet中的PacketRecords選項(xiàng)可以選擇下載多少的數(shù)據(jù)至內(nèi)存,并直接在內(nèi)存中進(jìn)行查詢操作,無需每次操作都訪問數(shù)據(jù)庫,極大減少了數(shù)據(jù)庫的開銷,滿足了多客戶端的需求,提高了系統(tǒng)的負(fù)載能力。具體的操作步驟如下:

      在客戶服務(wù)器中建立三個(gè)TclientDataset,在遠(yuǎn)程應(yīng)用程序服務(wù)器中建立兩個(gè)TDataSetProvider,兩個(gè)ADOQury。其中clientDataset1連接Datasetprocider1,DataSetProvider1的數(shù)據(jù)集為ADOQury1,clientDataset2連接的是Datasetprocide2,DataSetProvider2的數(shù)據(jù)集為ADOQury2,兩個(gè)ADOQury的SQL string語句都是Select*From Notebook(從圖書記錄表中選取所有的信息)。ClientDataset3沒有連接任何其它數(shù)據(jù)組件。

      如果用戶要搜索以“明月”為開頭的數(shù)據(jù),那么可能會(huì)找到“明月夜”,“明月天”這些數(shù)據(jù),但如果直接把數(shù)據(jù)添加到clientDataset1中,考慮到clientDataset1也許已經(jīng)存在這些數(shù)據(jù),clientDataset1中的數(shù)據(jù)就會(huì)重復(fù)。所以必須對(duì)clientDataset1進(jìn)行檢查。如果直接在clientDataset1進(jìn)行檢查,那么clientDataset1會(huì)到數(shù)據(jù)庫下載所有的數(shù)據(jù)。因此需要一個(gè)無連接任何組件的clientDataset3。把clientDataset1中的數(shù)據(jù)指定給clientDataset3,用CheckData方法來比較兩個(gè)clientDataset的數(shù)據(jù)是否相同,如果找到相同的數(shù)據(jù)則在clientDataset2中刪除,最后把clientDataset2中的數(shù)據(jù)重新更新至clientDataset1即可。

      3.6 數(shù)據(jù)的更新操作

      數(shù)據(jù)的更新操作一般可以分為增加,修改和刪除。本系統(tǒng)使用TclientDataSet組件中的的Insert,Edit,Delete等方法來更新數(shù)據(jù),然后調(diào)用Post。但與兩層體系結(jié)構(gòu)不一樣的地方在于:調(diào)用Post后,實(shí)際上并沒有對(duì)數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)進(jìn)行更新,而是將更新的內(nèi)容存儲(chǔ)在客戶服務(wù)器的內(nèi)存中。最后必須調(diào)用ApplyUpdates來執(zhí)行更新操作后,才把數(shù)據(jù)真正地更新到數(shù)據(jù)庫服務(wù)器。同時(shí)還可以為ApplyUpdates設(shè)置一個(gè)數(shù)值來設(shè)置容錯(cuò)率。數(shù)值的大小代表了容錯(cuò)率的高低,并設(shè)置出現(xiàn)錯(cuò)誤時(shí)事務(wù)的處理方法來提高系統(tǒng)的安全性。

      4.結(jié)束語

      近年來,隨著計(jì)算機(jī)網(wǎng)絡(luò)的發(fā)展,對(duì)信息的需求越來越大。隨之人們對(duì)數(shù)據(jù)處理的要求也越來越高。不僅要求高負(fù)荷,也要求高可靠性和安全性。從長遠(yuǎn)看,M IDAS的數(shù)據(jù)庫結(jié)構(gòu)將會(huì)慢慢取代傳統(tǒng)的兩層數(shù)據(jù)庫結(jié)構(gòu),成為開發(fā)數(shù)據(jù)庫系統(tǒng)的關(guān)鍵技術(shù),為數(shù)據(jù)處理提高安全穩(wěn)固的保障?;谶@種想法,本文闡述了分布式數(shù)據(jù)結(jié)構(gòu)的基本結(jié)構(gòu),對(duì)其進(jìn)行了研究,分析了它的優(yōu)點(diǎn)。并在研究的基礎(chǔ)上,論述了一個(gè)基于M IDAS的圖書館信息管理系統(tǒng)。給出了需求分析和具體的實(shí)現(xiàn)方法與主要技術(shù)。

      [1] W illiam Y.Arms.數(shù)字圖書館概論[M].電子工業(yè)出版社,2001.

      [2] 王志梅.關(guān)系數(shù)據(jù)庫基礎(chǔ)與技術(shù)[M].國防工業(yè)出版社,2005.

      [3] 董良,高磊,朱明峰,高忠濤.深入淺出Delphi6[M].清華大學(xué)出版社,2002.

      [4] 李維.Delphi5.X ADO/MTS/COM+高級(jí)程序設(shè)計(jì)篇[M].機(jī)械工業(yè)出版社,2000.

      [5] 李維.DELPHI5.X分布式多層應(yīng)用系統(tǒng)篇[M].械工業(yè)出版社,2000.

      [6] Arco Cantu.Mastering Delphi7.oel Fugazzotto.2003.

      猜你喜歡
      應(yīng)用程序客戶端組件
      無人機(jī)智能巡檢在光伏電站組件診斷中的應(yīng)用
      能源工程(2022年2期)2022-05-23 13:51:50
      新型碎邊剪刀盤組件
      U盾外殼組件注塑模具設(shè)計(jì)
      刪除Win10中自帶的應(yīng)用程序
      縣級(jí)臺(tái)在突發(fā)事件報(bào)道中如何應(yīng)用手機(jī)客戶端
      孵化垂直頻道:新聞客戶端新策略
      基于Vanconnect的智能家居瘦客戶端的設(shè)計(jì)與實(shí)現(xiàn)
      風(fēng)起新一代光伏組件膜層:SSG納米自清潔膜層
      太陽能(2015年11期)2015-04-10 12:53:04
      客戶端空間數(shù)據(jù)緩存策略
      關(guān)閉應(yīng)用程序更新提醒
      電腦迷(2012年15期)2012-04-29 17:09:47
      杂多县| 新邵县| 闽侯县| 清徐县| 沂水县| 高淳县| 通山县| 翼城县| 三亚市| 文安县| 安顺市| 类乌齐县| 锡林浩特市| 汉中市| 静安区| 穆棱市| 莱芜市| 水富县| 武安市| 拜泉县| 和顺县| 延津县| 临湘市| 本溪| 江川县| 罗江县| 乌兰察布市| 灵寿县| 桦川县| 东平县| 灯塔市| 双流县| 洛川县| 定州市| 通道| 金昌市| 旺苍县| 西畴县| 元阳县| 丰顺县| 陆川县|