Delphi多层开发方案比较

    技术2022-05-11  61

    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

    与现有开发模式兼容程度

    ★★★★★

    ★★★★

    ★★★★

    ★★

    (很不同的开发模式)

    ★★★★(支持DelphiPrvider/ClientDataSet)

    部署容易程度

    ★★★

    ★★

    ★★★★(集成server、不需要类似socket servermidas.dll的东西)

    ★★★★★(集成server、不需要类似socket servermidas.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做容器)

    可能吧

    总体评价

    ★★★

    ★★

    ★★★★

    ★★★★★

    ★★

     

    速度与效率测试

    测试项目 *

    计算10001+1=2 *

    传输10000100字节记录 *

     

    所花时间(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使用二进制传输的效率大概是使用SOAP23 RemoteObject使用二进制传输基本能达到甚至超过Socket Server的性能 RemoteObject的压缩好像没什么用 Asta性能比RemoteObjectMidas都高,但这个结果是设置了ADOQueryCacheSize=1000时取得的,其它的测试都没有专门设置该属性

    <!--[if !vml]--><!--[endif]-->* 以上测试涉及文件都在附件中的测试包中;都是连接的本机(localhost);空白的是没有做测试的

    <!--[if !vml]--><!--[endif]-->* 传输字节数测量都是用的CommView 4.1 IP包检测捕获软件,监测“Loopback”(127.0.0.1)设备;CommView软件安装见测试包的tools目录;字节数包括实际传输的数 据和IP握手信息等,如果大于10K,则只保留到千位,可能每次测量会有一点点区别。

    <!--[if !vml]--><!--[endif]-->* 测试所花时间时CommView停止捕获IP包,测试3次左右,取中间值

    <!--[if !vml]--><!--[endif]-->* 测试计算10001+1=2中间都是实现类似以下方法:function Sum(a, b: Integer): Integer;beginResult := a + b;end; 其 中RemoteObject 23的测试程序直接用的它自带的MegaDemo例子,执行文件分别见测试包中的“1+1=2/RemObjects SDK 2” “1+1=2/RemObjects SDK 3” 目录,后者是试用版,运行前需要先允许Delphi(不知道还有没有其它限制),测试时都是设置的使用Indy <!--[if !vml]-->MidasDCOM的测试是自己写的程序,源程序和执行文件测试包中的“midas”目录。

     

    最新回复(0)