Allen 2024-10-25 16:37:17 343 0 0 0 0

网站名称:delphi发展历史,Delphi版本历史,Delphi数据库技术沉浮录--谨献给成为历史的BDE

网站地址:

delphi发展历史,Delphi版本历史,Delphi数据库技术沉浮录--谨献给成为历史的BDE

[SEO信息] [Alexa信息]

-->>直达网站

2014年9月,delphi xe7 出来了,这次在数据库技术方面,彻底抛掉了从1995 年delphi 1.0 就自带的BDE(Borland Database Engine)数据库访问技术。从而宣告了这个持续了20余年的delphi 访问数据库技术进入历史。   纵观delphi 数据库技术的20年发展史,其实也是delphi 的发展史。通过数据库技术的变化,也可以了解delphi的发展历史及未来的方向。

一、 话说当初

Delphi 1.0 是16 位的编译器,当时的互联网几乎是不存在,拿到的第一份delphi 1.0 是那种软件集合光盘(你懂得),在486的win95 上好长时间,才安装好,安装界面是borland 经典的赛车仪表盘窗口。装完以后,就进入了拖拽控件的设计界面,配套的数据库技术就是BDE,BDE(Borland Database Engine)是borland公司的数据库引擎,它结合了SQL Links允许程序员通过它能够连接到各种不同的数据库(例如oralce,sybase,sql server等)。

最早的 BDE是给Paradox 用的,后来borland 把paradox 卖了,保留了BDE,在delphi 里面就直接使用BDE作为访问数据库的技术。由于当时真正的数据库服务器还很少,所以开发的数据库还是以本地为主,数据库为Paradox.由于当时BDE支持paradox 没有中文语言支持,中文出现的是乱码,很是麻烦,经过多次实验,终于发现使用泰国语言支持可以显示中文(当年中文支持几乎是所有计算机系统头疼的事).     

Delphi 2.0 使delphi 进入了32位的世界,而且明确的提出了C/S 的概念。BDE 也正式换成了32位的,使用BDE 可以顺利的连接访问oracle 和 sql server 数据库服务器。彻底进入C/S 时代,脱离了

单机桌面时代,看到oracle 7.0 数据能够显示到dbgrid 里面,并能够删改,简直兴奋死了。  在delphi 1.0 和delphi 2.0 时代,基本上没有成熟的第三方的数据库技术,属于BDE 垄断的时代。

二、群雄逐鹿

1997 年,Delphi 3.0 的推出,大大稳固了Delphi 的市场地位,已经与比他出来更早的VB,PB 并驾齐驱了。在Delphi 3.0 中,borland 已经提出了多层的概念及实现方式,而当时C/S 基本上还是完全垄断数据库市场,经过了好多年,多层技术才被众多的开发者接受,可见当时borland  的牛人多厉害。

delphi 3.0 出来后,delphi  的数据库访问技术在第三方的支持下,出现了百花齐放,主要有三种形式。

一种是类似BDE 的,直接支持后台数据库服务器的访问,有支持多种数据库的SQLDirect,zeoslib等,还有支持单一数据库的,例如ODAC、DOA等。这些直接使用原生代码实现数据库API ,然后访问数据库服务器。

第二种是类似后来的 ADOEXPRESS, 通过封装ODBC、 ADO等微软数据访问技术数据库服务器,典型代表就是ODBC Express。这两种与BDE 最大的不同就是程序分发时不在安装BDE, 只要安装了数据库的客户端就可以了,减少了程序配置的麻烦。

第三种就是自己实现数据库,用delphi 自己开发一套完整的数据库系统,既可以直接把数据库功能集成到程序里面,也可以分成客户端与服务器端使用。这一类典型的代表就是Elevatesoft's DBISAM和TurboPower's FlashFiler ,还有Nexus Database Systems NexusDB。这些既实现了C/S 架构,也不用购买昂贵的数据库服务器。非常适合对于中小企业的应用。

这些第三方数据库技术各个都有自己的买点。开发者选择的也很多,有时为了集成一些项目,甚至在一个IDE上会装上超过5种以上的数据库访问技术。

三、危机四伏

随着delphi 4.0  的仓促推出而失败,delphi 5重新夺回过去的辉煌,同时编译器增加了很多新的功能,BDE 也在微小更新,第三方数据库访问技术随着时间的发展,技术也越来越成熟。同时服务端的数据库技术也在突飞猛进,oracle 推出了8i,微软也出了sql server 2000,BDE 却没有大的更新,已经有了昨日黄花之感。

同时BDE的第一次内部危机也随之而来,Borland 要在delphi 6 中加入Linux 的支持,而BDE 是只能支持WINDOWS的,那么要在delphi 中支持Linux 数据库的访问,BDE是不能用了。于是borland 开发了同时支持windows 和linux 的DBEXPRESS.同时为了提高多层应用,DBEXPRESS 特意处理了很多多层上问题,与三层技术结合起来,叫了一个非常牛的名字datasnap。准备做一个企业级的多层中间件。dbexpress 的推出,已经提前宣布了BDE 的命运。

delphi 7.0 的推出,把delphi推到了历史上的最高点,盛极必衰。borland内部开始发生动荡,很多人纷纷离去,支持linux 的kylix 没有大卖,使得delphi 又回到微软的阵营,

先推出了一个历史上最烂的delphi 8 for NET(没有之一),接着推出了历史第二烂的delphi 2005,导致delphi 的水平过了好几年还维持在delphi 7.0 的水平,错失了市场,错失了时机,delphi 开始衰败。broalnd 内部继续动荡,也没有太多精力把DBEXPRESS 的技术提高,使得BDE 没有被完全踢出delphi. 当然了BDE 自己也没有任何变化。

delphi业务自己也被borland 分理出来,搞了一个叫codegear 的部门,伺机叫卖。在这期间出了delphi 2006 和delphi 2007,这两个版本除了IDE 的变化外,还是基本上炒delphi 7 的冷饭,连最基本的unicode 都没有加入支持。

易博龙在delphi 历史最低价的时候出手了,以非常便宜的价格购得了borland 的delphi 及其他开发工具业务。推出了第一个支持unicode 的 delphi版本 delphi 2009(当然是bug 满天飞)。

紧接着就是dephi 2010,delphi xe. 这几个版本主要是就是unicode 的稳定版,数据库技术这一块除了支持unicode 外,也没有大的变化。

四、双雄争霸

delphi xe2 出来后,虽然开始正式支持WIN64 和mac osx了,但是时不我待,机会已经错过,delphi 的市场已经大幅萎缩,很多第三方数据库技术要么就是停止更新,要么就是简单的维护,不再做大幅度的更新。数据库服务器访问控件一直更新的基本上就剩devart 的unidac 和da-soft的anydac。

其实很有意思,这两个公司的数据库访问控件都是从oracle 数据库访问做起的,devart 的第一个数据库访问控件叫ODAC。da-soft 的第一个数据库访问控件叫NCOCI8,而且免费的。接着开发出来freedac 也是免费的,后来又推出来商业版的的anydac.而且还在RTC 公司支持下,开发了一个简单的三层数据库访问框架--Thindac。

后来remobjects 公司看上了anydac , 就把anydac 收入旗下,与自己的拳头产品Data Abstract搭配起来买。后来可能是由于产品发展的方向不一致,anydac 经过不到三年时间,又从remobjects 公司独立出来了。

delphi xe2,xe3,xe4 主要任务是跨平台,开始支持win64,并通过Firemokey 开始支持mac osx,ios。 虽然有一些小的毛病,但是产品质量已经大大提高.firemonkey 也在不断地优化。

当然了,那个 BDE 虽然基本上没人用,还是在那里呆着,作为标准配置,每次 Delphi 安装时,都被默默的安装到硬盘上。 

在所有的第三方数据库控件中,只有unidac  和anydac 及时的更新,快速支持firemonkey,并支持delphi最新的跨平台应用。

因此这一阶段的第三方数据库支持,就剩下这两个开始争霸。这两个各有优缺点,功能也各有千秋。有时确实难分伯仲。

大体上是unidac  支持后台数据库自身功能强点。而anydac 是客户端数据操作功能更完善,更强。

五、王者能否归来? 

随着delphi xe5 的发布,发生一件令人瞠目结舌的事情,delphi xe5 直接把anydac 集成进去了,原来易博龙已经在delphi xe4 时已经把anydac 收入旗下,命名为 firedac. 随着xe5 正式发布。至此,支持多平台的第三方数据库控件就只剩下了unidac 为主力军。

随着delphi 半年一个新版本的快速更新,从今年4月份的 Delphi xe6 到今年的9月发布的delphi xe7,firedac已经融入了Delphi的血脉之中,不但是作为一个数据库访问层,而且在datasnap 中起了举足轻重的作用,使用TFDMemTable开始了替换苍老的、众人诟病的 Tclinetdataset  的进程,并在最新的 Enterprise Mobility Services (EMS) 的客户端扮演重要角色。这样 BDE 终于被送进历史的博物馆,结束了20余年的生涯(默哀,一路走好)。

由于firedac 被delphi 直接集成,成了免费的,这样有了delphi就可以直接使用firedac。而且性能与unidac 相近,很多程序员会直接选择firedac  作为数据库访问层,并开始放弃unidac。 这种情况下,会不会造成unidac 的没落?

这一点个人认为应该不会的,竞争是暂时的,长远来看,更多是双赢:

1.firedac 的更新是随着delphi 版本发布的,也就是说firedac 的新功能只有最新版本delphi  才能使用,而unidac 支持从d5  到xe7 所有版本,你不用升级delphi 就可以访问最新的数据库功能(好像现在用d7 的人不在少数)。

因此,unidac虽然收费,但是使用面会更宽一点。

2.unidac也有很多功能点是独一无二的(例如无客户端访问oracle数据库),对于一些有这种要求的客户还是会继续   留在unidac  上的。

同时由于 firedac 是免费的,那么为了竞争,unidac 也会加快开发,增加更多功能,对我们来说   其实也是好事。

在这一点上,没了unidac, 其实对于开发者来说没有任何好处。

3.作为两大跨平台的数据库访问控件,他们的对手不是彼此,而应该是delphi 以外的企业开发市场,如何利用各自的技术优势把delphi 的市场做大?让delphi 能够提供更多的功能,支持更多的新兴技术,吸引更多的开发者进来。有了市场,   盘子大了,   随便哪一个都会有更多的用户使用,还害怕什么,delphi 3-delphi7  时代就是很好的例子。

 4.firedac  与unidac 更应该发挥各自的优点,加强合作。利用firedac 的优势,加强Delphi的datasnap,提高稳定性,增强

更多新的功能(现在已经加强了REST 的支持),提供一个稳定的强大的企业级的中间层。而unidac 也可以利用自身的优势,提供对新的数据库功能及特性的支持(例如oracle 12c,sql server 2017), 乃至提供对nosql 数据库的支持,来加强 delphi 企业级开发的优势。如果把两者的优势结合起来,就可以开发出功能强大又支持各种新技术的企业级的数据库应用。

让delphi 走向辉煌,重回王者之位。

不破不立,旧的不去,新的不来,BDE  走了,firedac 来了,新的delphi 携带着多平台开发也来了,你准备好了没?

 

备注:

1、由于本人年纪已老,记忆力下退,文中很多东西都是按记忆写的,可能年代和名称会有错误,欢迎指出;

2、由于本人年纪已老,思维僵化,如果你认为我的观点不对的地方,就不要指出了,指出我也不改。

2019.10 补记:

unidac 如我所猜开始支持多种云端数据库的支持,同时sql server 也实现了无驱直连访问。

dbexpress 也成为昨日黄花,落入尘埃。


作者:xalion

来源:https://www.cnblogs.com/xalion/p/3979617.html

Tag: Delphi Delphi历史
我也要发一个   ·   返回首页     ·   返回[Delphi]   ·    前一个  ·   下一个
欢迎评论
未登录,
请先 [ 注册 ] or [ 登录 ]
(一分钟即可完成注册!)
返回首页     ·   返回[Delphi]   ·   返回顶部