过去几年中,现代软件开发的整体环境发生了巨大的变化。对我个人来说,这种变化与宇宙的加速膨胀差不多。第二个千年刚到来时,产业的发展看起来还不是那么快,只是逐步在前进。现在技术发展的复杂度和多样性已经可以用超音速来形容了,越来越快,出现了新的编程语言、开发工具、开发方法论等等。
由于类似 Uber、Facebook、Google 这样的企业需要构建全球解决方案的需求越来越多,使得技术变得更加全面也更加复杂。这种超级的复杂度,是能构建全球性巨大系统而必须付出的代价。但是对于构建相对简单的典型业务自动化系统,我们也应该付出相同的代价吗?
业务应用系统 - 自动化的沃土
2000年代初,在“能自动化就自动化”的格言激励下,业务自动化得到了极大的发展。这种自动化的结果就是所谓的业务应用系统(LOB Applications)。这是一个非常通用的术语,描述那些终极目的就是使得业务能更有效运行的非常重要的应用程序(大部分都是定制开发)。
通常,LOB 应用程序有下列特点:
l 特定领域 - 为特定领域的专业人员服务,而不是大众市场
l 以数据为中心 - 高度依赖关系型数据库,并且关系型数据库是应用程序的关键核心
l 面向事务(OLTP) - 代表系统的一致性和可用性级别(高一致性、高可用性),假设每个事务都符合 ACID
l 全面的业务逻辑 - 包含大量自定义的业务逻辑和数据处理算法
l 丰富的UI - 有成百上千的功能交互界面,使用相对标准的控件(文本框、复选框、按钮、表格等)
功能性的 LOB 系统还有一些通用的需求:
l 支持标准的身份验证机制,比如 SAML 和 LDAP
l 基于角色的访问控制
l 数据库行级别的安全性控制
l 数据更改日志(数据审计)
l 系统间的互操作性 - 能调用第三方 API 并且提供 API 用于集成
l 业务流管理引擎,支持工业标准的 BPMN
l 报表和 BI 能力
l 集成常用的服务,比如邮件(SMTP 和 IMAP)、文件存储(Amazon S3,WebDAV)、搜索引擎,等等
l 可扩展性,随着业务增长,解决方案可以升级
对于 LOB 应用程序的高需求形成了所谓的 “快速应用程序开发工具” 市场,最终演化成关注如何使得开发 LOB 应用程序更加有效和快速。
快速应用开发平台的演进
九十年代中期,对于业务自动化的需求开始呈指数型增长。因此,许多RAD平台应运而生,为开发 LOB 应用程序提供了快速通道。RAD 平台将易学的编程语言和高效的开发工具相结合,因此几乎任何人都可以在很短的时间创建基本的 LOB 应用程序。自动化的繁荣离不开 Microsoft Access、Oracle Forms、FoxPro,当然还有 Borland Delphi(当年的引领者们)。所以,在 2000 年代第一个十年结束的时候,基于 RAD 平台已经开发了大量的 LOB 系统。
后来 RAD 平台错过了当时正在到来的网络时代。Web 用户界面是个必不可少的需求,也同样需要可扩展性、可用性以及其他相关的需求。这些因素使得 Delphi 和其他的 RAD 工具不再流行,因为它们要么不能满足这些需求,要么演进太慢,没有跟上现实的发展速度。经过几年的停滞之后,成百上千的应用程序变成了难以再继续提供技术支持的遗产。甚至连 “RAD” 这个词本身都变成了贬义词,不再意味着“简单易用”和“快乐开发”,而是指过时和没有前途的东西。这种状态说明这个领域急需进行现代化改造。
迁移到主流的企业级技术栈似乎需要惊人的代价。同样的功能,对于 Delphi 开发者来说只需要一天,而对于 web 开发者则需要一周 - 疯了!很明显,新技术对于构建全部重新定义的应用程序来说是合适的,但是对于典型的 LOB 应用(比如有上面提到的那些功能)来说,会产生不少重复的开销。这种失衡显示了软件开发工具的市场中有一个未被发现的缺口,现在这个缺口已经被新一代的 RAD 平台占据。新一代已经从前辈们的骨灰中崛起,这就是说现代RAD市场的大多数代表不是传统产品的直接后代,而是从零开始将过去的最佳实践与主流技术相结合而开发的。
RAD 平台的基本原理
首先,我们着重介绍一下 RAD 平台的主要原理。换言之,我们看看与传统的开发技术栈相比,这些平台为什么会更加高效。
架构和高级别 API