熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

Delphi中MIDAS的全面學習[1]

2013-11-11 21:06:52  來源: Delphi編程 

  (一)MIDAS是什麼?

  Delphi中MIDAS到底是什麼呢?和他相關組件是什麼呢? MIDAS(Multitiered Distributed Application Services)多層分布式應用服務

  Delphi所提出的MultiTier結構是把原來的TwoTier前台應用程序內的dbExpressADOBDESQL LinkDataMoule拿到另外一台NT服務器(就是所謂的應用程序服務器)而前台程序只剩下一個可執行文件及MIDASDLL而移到NT服務器上的DataMoule則變成一個COM程序(Remote DataModule)

  注:前台一定要把MIDASDLL發布到系統目錄下

   ()前台程序會通過調用應用程序服務器提供的方法(接口)提出一個請求 應用程序服務器會響應這個請求傳送一個相應的SQL命令到後台數據庫而後台數據庫會把執行SQL命令產生的DataSet返回給應用程序服務器

   注:Delphi提供了Type Library來幫助應用程序服務器定義COM方法(接口)

   ()NT服務器上的COM程序是通過中間軟件(dbExpressADOBDESQL Link)傳送SQL到後台數據庫當應用程序服務器要把讀取到的DataSet傳送給前台時就必須利用DCOM的機制來進行Delphi提供的TDataSetProvider組件就會把讀取到的DataSet壓縮並且分割成一段一段的數據包通過DCOM或TCP/IP傳給前台

  注:Delphi提供了RemoteDataModule向導來幫你產生COM程序的結構

  由於Delphi的程序具有傳送DataSet的特殊機制所以Delphi也實現了一個接口叫做IProvider(即TDataSetProvider)來幫助應用程序服務器上的COM程序發送DataSet數據

   ()前台程序與NT服務器上的COM程序是通過DCOM的機制互相溝通

   前台的應用程序是通過MIDASDLL和應用程序服務器相互溝通前台的MIDASDLL會把接收到的應用程序服務器發過來的數據包再還原成DataSet丟給前台程序中的TClientDataSet組件

  注:前台程序必須提供相應的TClientData組件來和應用程序服務器上的每個IProvider(即TDataSetProvider)對應用戶 修改前台數據時修改的只是Cache(緩存)在前台的Dataset最後要通過TClientDataApplyUpdate方法來把前台變動的數 據寫回到後台數據庫中
    
  (二)創建並注冊MIDAS應用程序服務

  Delphi中如何創建並注冊MIDAS應用程序服務器COM程序? 

  Delphi提供一些向導(如:RemoteDataModuleAutomation ObjectTypeLibrary)來自動產生COM程序的結構

   (法)創建一個普通應用程序服務器

  新建一個普通工程然後通過New>Other>Multitier>Remote DataModule來自動新建一個COM服務器結構
        注: 要注冊創建的MIDAS應用服務器可以運行應用程序或者使用/REGSERVER開關運行程序

  (法)創建一個NTService類型的應用程序服務器這樣就無需登陸系統也能啟動應用程序服務器避免斷電重啟帶來的無法訪問應用程序服務器的問題

  新建一個NTService工程然後通過New>Other>Multitier>Remote Data Module來自動新建一個COM服務器結構
        注: 要注冊創建的NTService服務器通過/install開關來運行程序
     注: MIDAS程序需要客戶端注冊MIDASDLL和STDVCLDLL動態庫      
   
  (三)MIDAS應用程序COM服務器實例化模型種類

  ()Internal Instance

  創建一個InProcess的COM程序即DLL服務器

  ()Single Instance

  如果每個客戶程序都運行服務器程序的一個實例則使用該模型就是每個連上線的前台程序在服務器上都會有一個對應的應用程序服務器被運行因此每個前台 發出來的查詢都會有各自獨立Process的應用程序來處理根本無所謂排隊的問題但是它會比較占用系統資源影響服務器整體的運行效率

  ()Multiple Instance

  如果客戶程序共享服務器程序則使用該模型就是一個應用程序服務器可以同時處理好幾個前台程序的鏈接以技術的層面來解釋就是所有前台程序可以共享單一 Process的應用程序服務器該模式的最大好處是激活及運行的效率較快比較不會耗用服務器太多系統資源而且管理上比較方便但是它隱藏著一個不 具備多任務處理的問題如果一個前台用戶發出了一個查詢請求而且這個查詢要求產生的結果可能多大數MB這時候其他在線前台用戶發出的查詢要求都必須 等待之前的查詢要求運行完並得到相應之後才得以繼續運行這可能會耗用許多時間而且如果一旦某個前台程序的查詢發生錯誤那麼其他在後面排隊的查詢 請求將會跟著死掉

  注:那麼到底采用哪種模式來創建應用程序服務器?答案是:按系統需求而定簡單的說就是你可以創建兩組應用程序服務器一組是采用Multiple Instance模式另一組采用Single Instance模式而你必須把程序的類型分為兩種一種是查詢數據量較小或是比較不重要的寫入操作另一種查詢數據量較大或是重要數據的寫入操作如 此一來你的前台程序就可以放置兩個TDCOMConection來各自連上兩個不同模式的應用程序服務器進行不同性質的工作

[]  []  


From:http://tw.wingwit.com/Article/program/Delphi/201311/8532.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.