Delphi多层开发方案比较
2006-02-04 13:50:46 来源:WEB开发网核心提示:方案->MidasDCOMCOM+ASTARemoteObject.NET提供者Borland微软微软http://www.astatech.comhttp://www.remobject
方案-> | 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=2\RemObjects SDK 2”和“1+1=2\RemObjects SDK 3”目录,后者是试用版,运行前需要先允许Delphi(不知道还有没有其它限制),测试时都是设置的使用Indy;Midas和DCOM的测试是自己写的程序,源程序和执行文件测试包中的“midas”目录。
- ››Delphi实现把10进制转换成16进制的函数进制转化
- ››Delphi中将字符串按给定字符分隔(似split函数功能...
- ››Delphi 动态创建窗体,锁定窗口赋值
- ››开发Android 日历教程
- ››开发学院总结 Win 8实用技巧大全
- ››开发学院原创教程:把win8的IE10放桌面上方法(非...
- ››Delphi 与 VC 共享接口和对象
- ››Delphi图像处理 -- 表面模糊
- ››开发者眼中的Windows Phone和Android
- ››开发学院教你用SQL 语句最快速清空MySQL 数据表的...
- ››Delphi之多线程实例
- ››Delphi SelectSingleNode的使用 根据节点属性获取...
更多精彩
赞助商链接