程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi多層開發方案比較

Delphi多層開發方案比較

編輯:Delphi

方案-> Midas DCOM COM+ ASTA RemoteObject .Net 提供者 Borland 微軟 微軟 http://www.astatech.com http://www.remobjects.com 微軟 核心技術 COM COM COM ASTA自己的,類同Midas,
  但不依賴於COM RemObjects自己的WebService技術,
  不依賴於COM WebService 開發工具 Delphi7 Delphi7 Delphi7 Delphi7 Delphi7 Visual Studio/Delphi8,9 與現有開發模式兼容程度 ★★★★★ ★★★★ ★★★★ ★★
  (很不同的開發模式) ★★★★
  (支持Delphi的Prvider/ClIEntDataSet) ★ 部署容易程度 ★★★ ★★ ★ ★★★★
  (集成server、不需要類似socket server、midas.dll的東西) ★★★★★
  (集成server、不需要類似socket server、midas.dll的東西) ★ 可伸縮性 ★★★★ ★★★★ ★★★★★★ ★★★★ ★★★★★
  (支持自帶服務器,或者使用apache/IIS等容器) ★★★★ 性能(效率) ★★★ ★★★★ ★★★★ ★★★★★
  (二進制傳輸,支持壓縮) ★★★★
  (二進制傳輸,支持壓縮) ★★
  (文本的XML消息傳輸) 消息傳輸格式 二進制COM消息 二進制COM消息 二進制COM消息 二進制流 二進制流或文本的XML SOAP消息 XML SOAP消息 源程序 不全 無 無 有 有 無 購買價格 $0 $0 $0 $299 - $7,500 EUR 299 $0 與.Net集成 不可以 可以 可以 不可以 可以
  (直接基於webservice並提供.Net客戶端開發包,並可以使用二進制消息格式) 可以 中間件跨平台 有可能 不可能 不可能 有可能 可以
  (支持Kylix開發,支持apache做容器) 可能吧 總體評價 ★★★ ★★ ★ ★★★★ ★★★★★ ★★
  

速度與效率測試

測試項目 * 計算1000次1+1=2 * 傳輸10000條100字節記錄 * 所花時間(ms) * 傳輸字節數 * 所花時間 傳輸字節數 Midas (Socket Connection) 26,047 366,000 2,359 1047,000 Midas (DCOM Connection) 812 933 2,047 1047,000 ADO直連數據庫 (兩層)     297 1046,000         Asta 3 壓縮     1,578 1100,000           RemoteObject2 HTTP 二進制 壓縮 8,641 791,000 2,515 1048,000 RemoteObject2 HTTP 二進制 不壓縮 7,765 783,000 2,391 1049,000 RemoteObject2 HTTP SOAP 11,687 1935,000 3,110 1052,000 RemoteObject2 TCP 二進制 壓縮 8,406 512,000 2,422 1049,000 RemoteObject2 TCP 二進制 不壓縮 6,547 504,000 2,484 1563,000 RemoteObject2 TCP SOAP 11,281 1673,000 RemoteObject3 HTTP 二進制 壓縮 11,625 504,000 RemoteObject3 HTTP 二進制 不壓縮 10,593 501,000 RemoteObject3 HTTP SOAP 15,640 1108,000 RemoteObject3 TCP 二進制 壓縮 11,172 512,000 RemoteObject3 TCP 二進制 不壓縮 10,203 504,000 RemoteObject3 TCP SOAP 15,547 1712,000

結果分析:

  • 兩層的效率當然是最高的;這樣選擇三層方案時就可以在伸縮性和性能之間做權衡,選擇最優方案
  • DCOM針對本機運算可能做過優化,太快了,傳輸的字節數也太少了
  • Socket Connection的效率實在不敢恭維,比RemoteObject使用SOAP傳輸還低
  • RemoteObject使用二進制傳輸的效率大概是使用SOAP的2-3倍
  • RemoteObject使用二進制傳輸基本能達到甚至超過Socket Server的性能
  • RemoteObject的壓縮好像沒什麼用
  • Asta性能比RemoteObject和Midas都高,但這個結果是設置了ADOQuery的CacheSize=1000時取得的,其它的測試都沒有專門設置該屬性
      


  * 以上測試涉及文件都在附件中的測試包中;都是連接的本機(localhost);空白的是沒有做測試的

* 傳輸字節數測量都是用的CommView 4.1 IP包檢測捕獲軟件,監測“Loopback”(127.0.0.1)設備;CommVIEw軟件安裝見測試包的tools目錄;字節數包括實際傳輸的數據和IP握手信息等,如果大於10K,則只保留到千位,可能每次測量會有一點點區別。

* 測試所花時間時CommVIEw停止捕獲IP包,測試3次左右,取中間值

* 測試計算1000次1+1=2:
  中間都是實現類似以下方法:
  function Sum(a, b: Integer): Integer;
  begin
  Result := a + b;
  end;
  
  其中RemoteObject 2、3的測試程序直接用的它自帶的MegaDemo例子,執行文件分別見測試包中的“1+1=2RemObjects SDK 2”和“1+1=2RemObjects SDK 3”目錄,後者是試用版,運行前需要先允許Delphi(不知道還有沒有其它限制),測試時都是設置的使用Indy;Midas和DCOM的測試是自己寫的程序,源程序和執行文件測試包中的“midas”目錄。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved