企业级快速开发平台的演进

世开 Coding行业视角RAD大约 12 分钟...

RAD 和 LCDP 分别是什么?RAD 和 LCDP 又是什么关系?

题图

过去几年中,现代软件开发的整体环境发生了巨大的变化。回想在 2000 年代初期,产业的发展并没有那么快,技术和框架只是在稳步前进。而现在,技术发展的复杂度和多样性已经可以用超音速来形容了,出现了新的编程语言、开发工具、开发方法论等。

由于类似国外的脸书、谷歌,或国内的字节、腾讯这样的企业需要构建全球解决方案的需求越来越多,使得技术变得更加全面也更加复杂。这种超级的复杂度,是构建全球性巨大系统而必须付出的代价。但是对于相对简单的典型业务自动化系统,我们也需要这种复杂度吗?

业务应用系统是自动化的沃土

2000 年代初,电脑开始普及,在“能自动化就自动化”的格言激励下,业务自动化得到了极大的发展。这种自动化的结果就是产生了所谓的业务应用(LOB)系统。这是一个非常通用的术语,描述那些终极目的就是使得业务能更有效运行的非常重要的应用程序(大部分都是定制开发)。

通常,LOB 应用程序有下列特点:

  • 特定领域 - 为特定领域的专业人员服务,而不是大众市场
  • 全面的业务逻辑 - 包含大量自定义的业务逻辑和数据处理算法
  • 以数据为中心 - 高度依赖关系型数据库,并且关系型数据库是应用程序的关键核心
  • 丰富的 UI - 有成百上千的功能交互界面,使用相对标准的控件(文本框、复选框、按钮、表格等)

而这些业务应用系统都普遍有一些通用(与具体的业务领域不相关)的需求:

  • 支持标准的身份验证机制,比如 SAML 或 LDAP
  • 基于角色的访问控制
  • 数据库行级别的安全性控制
  • 数据更改记录和日志(数据审计)
  • 与外部系统集成,提供系统间的互操作性
  • 业务流引擎,支持工业标准的 BPMN
  • 报表和 BI 能力
  • 集成常用的服务,比如电子邮件、文件存储、搜索引擎等
  • 可扩展性,随着业务增长,解决方案可以升级

对于业务应用系统的高需求促生了所谓的 “快速应用程序开发工具” 市场,关注如何使得开发业务应用程序更加高效和快速。

快速开发平台(RAD)的演进

九十年代中期,对业务自动化的需求开始呈指数型增长。因此,许多 RAD 平台应运而生,为开发业务应用程序提供了快速通道。RAD 平台将易学的编程语言和高效的开发工具相结合,编程初学者都可以在很短的时间创建基本的应用。彼时的繁荣离不开微软的 Access、Oracle Forms、FoxPro,当然还有 Borland Delphi 的贡献。在 2000 年代末期,基于当时的 RAD 平台已经开发了大量的业务系统。

后来,当时著名的 RAD 平台都错过了正在到来的网络时代,而仍然专注于桌面客户端的开发。随着 Web UI 的流行,对其可扩展性、可用性以及其他相关的需求也变得如往日桌面客户端一样重要了起来。而这些因素使得 Delphi 和其他的 RAD 工具不再流行,这些工具要么不能满足需求,要么演进太慢,没有跟上发展速度。经过几年的停滞之后,成百上千的应用系统变成了难以再继续提供技术支持的遗产项目。甚至连 “RAD” 这个词本身都变成了贬义词,不再意味着“简单易用”和“快乐开发”,而是指过时和没有前途的东西。这种状态说明 RAD 领域也同样亟需进行现代化改造。

那时,Web 开发者没有好用的 RAD 工具,同样的功能,用 Delphi 实现只需要一天,但是改造成 web 则需要一周。这种高昂的代价使得将业务系统迁移至主流技术栈成了“锦上添花”的事。很明显,新技术对于构建全部重新定义的应用系统来说是合适的,但是对于典型的业务应用(比如有上面提到的那些功能)来说,会产生不少重复的开销。这种失衡同时也表示在软件开发工具的市场中有一个未被发现的缺口,现在这个缺口已经被新一代的 Web RAD 平台占据,它们从前辈们的骨灰中崛起,是从零开始将过去的最佳实践与主流技术相结合而开发的全新平台。

RAD 平台的原理

与传统软件开发相比,使用 RAD 平台为什么会高效?其实就是一个抽象加复用的过程,RAD 平台中的这个过程,体现在不同方面:

  • 基础架构:现代 RAD 平台通过使用高级别抽象的全栈框架集成主流开发技术,解决这些技术之间的底层复杂性
  • 开发工具:通过代码生成、代码检查、代码辅助等技术,提供了编码规范和经验的抽象和复用
  • 功能模块:将固定的功能抽象成可以重用的库、扩展组件,提供了功能的抽象和复用

架构和高级别 API

RAD 平台使用高级别的框架,为业务系统定义了统一的坚实架构。使用平台开发的业务系统中所有的边界和限制都源自于此架构,因此,深入了解架构是非常必要的。比如,开发出来的业务系统适合什么样的场景?系统的扩展性怎样?是否模块化?可以用哪种类型的数据存储?能部署在什么样的环境?向后兼容性如何?等等,也许你能想到更多的问题...

有失必有得,虽然选中 RAD 平台会限制我们对框架和基础架构的选择,但是这种预定义的架构通过提供针对业务的高级别 API 能加速业务与应用系统的开发。也就是说,框架将开发人员从底层技术中抽离出来,以便他们更专注解决业务问题。

这种使用高级抽象级别的方法在现代 RAD 平台中大量使用。在不同的编程语言环境中,有几个著名的平台:Ruby on Railsopen in new windowGrailsopen in new windowDjangoopen in new windowJmix Framework