目前在delphi 开发多层应用的框架基本上集中在以下几种,每种开发框架都有自己的优缺点,没有最好的,大家可以根据
自己的实际需求选择相应框架,我把我本人在使用几种框架的体会与大家分享一下。如有不对之处,可以拍砖。
1. DELPHI 自身提供的DataSnap
从delphi 3 开始,delphi 自身就开始支持多层开发,后期的版本逐步加强三层开发功能,在delphi 6 以后,
把这一功能叫Datasnap,并且每个都有很多变化,包括DBExpress 的数据库访问、服务器的开发、传输协议都
在最新的delphi XE以后都大大加强了。下面是Datasnap 的架构图
同时在最新的delphi XE2 里面,增加了对移动操作系统的支持,直接生成
常见的移动操作系统的访问应用服务器的能力,包括iOS,Android,BlackBerry 等。在数据传输方面使用了开放的JSON
格式,最大限度增加与其他语言的互操作性,开发者不需要购买第三方控件就可以开发出来强有力的多层系统。但是这个框架也存在
一些缺点和问题:
1).只能在最新的delphi 版本上开发,以前的版本无法使用,尤其是很多同学喜欢的D7;
2).版本之间的变化比较大,升级到新版本后代码都要有所修改;
3).服务器目前只支持windows 和mac OS X ,暂时不支持其他平台;
4).系统自身相对比较封闭,不能充分利用第三方控件,最大限度挖掘系统的潜力;
5).更新速度慢,基本上是跟随每个delphi 新版本发布才更新。
2. RemObjects SDK 和Data Abstract
RemObjects SDK 和Data Abstract 在delphi 多层开发框架里面是鼎鼎有名, RemObjects SDK 用来
实现多层服务及访问,而Data Abstract 主要解决数据库的访问,由于RemObjects SDK 是Data Abstract
的一部分,因此购买时只要买Data Abstract就可以了。Data Abstract 除了有delphi 版外,还是.NET、
JAVA 和XCODE版。Data Abstrac 提供可视化的中间层数据访问设计,提供数据模式,提供脚本描述逻辑,
可以不夸张的讲,多层数据库中间层需要的功能,它基本上都有了。下面是Data Abstrac的工作原理图:
这套框架最大的优点就是功能非常多,非常强,但是最大的问题是价格太高了,单个平台的版本
购买价格为899美元,以后每年的续订价为499 美元。同时由于他的功能太多了,以至于我们都有可能
迷失在他的功能海洋里面;),一般出现问题后,基本上自己没办法修改。最后一个问题是,它现在的重点放在了.NET
和JAVA, 很多语法和实现方式非常像C#, 呵呵,这一点应该不算是问题,只不过是让我有点不爽。哈哈!
3.kbmMW
kbmMW 是一套短小精悍的delphi 多层框架,配合它的kbmMemTable 很容易设计出来多层数据库应用服务器,
所有的功能都在一个包里。同时提供了客户端C,C#,JAVA,PHP 的支持。它支持负载平衡、失效恢复和代理。同时支持
发布/订阅 模式的消息传输方式,大大提高了多层的效率.下面是kbmMW 的支持服务类型:
kbmMW 基本上能够满足多层开发的各种需要,更新速度也比较快,我本人也是在使用remobjects 后转到kbmMW 上的,
当然这套框架也是有问题的,第一,可视化界面设计的非常丑,看看上面的图你就知道了。第二,使用这个框架对开发者有
一定的要求,因为它的配置都是需要自己定制的,经验不足的话,会出现一些怪问题。我最初时就是因为连他都安装不到IDE 放弃的,
最后从remobjects转过来时,慢慢研究了一天才搞清楚(呵呵,我自己的水平也太臭了)。
4.RealThinClient SDK
虽然 RealThinClient SDK 也算是一套多层开发框架,但是严格意义上又有一些区别,首先 RealThinClient SDK 主要是使用
HTTP 协议实现数据传输的,其次对多层数据库这一块基本上没有直接支持,很多地方需要开发者自己写代码实现数据库功能。
但是这套框架最大的特点是效率比较高,非常稳定。它的远程函数实现也比较漂亮,减少了很多手工的错误,赞一个。
用它做动态webserve,也是一个不错的选择。因此多层系统数据库访问不是非常多的话,推荐使用。
下图为RealThinClient SDK 自带的webserver 的 demo运行图:
以上是目前delphi 开发多层系统的框架的简单介绍,需要更多了解的,可以到官方网站进行详细的了解。
另外 ,1、2、3 框架服务器使用的是indy 控件来实现网络传输的,RealThinClient SDK 是自己封装
Sock 来实现网络传输的。同时后三个都可以运行在D7 后的各个主要的delphi 版本。大家可以根据自己的
具体情况选择。