快速应用开发(RAD)平台 - 20 年的演进

过去几年中,现代软件开发的整体环境发生了巨大的变化。对我个人来说,这种变化与宇宙的加速膨胀差不多。第二个千年刚到来时,产业的发展看起来还不是那么快,只是逐步在前进。现在技术发展的复杂度和多样性已经可以用超音速来形容了,越来越快,出现了新的编程语言、开发工具、开发方法论等等。

由于类似 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

现代 RAD 平台通过使用高级别抽象的全栈框架集成主流开发技术,从而解决这些技术之间的底层复杂性。这种高级别的框架为使用框架构建的所有应用定义了统一的坚实架构。了解这个架构非常重要,因为您应用程序中所有的边界和限制都源自于此架构。比如,您应用程序的扩展性怎样?是否模块化?可以用何种数据存储?能部署在什么样的环境?向后兼容性如何?还有很多其他的问题......

作为引入限制的回报,这种预定义的架构通过提供高级别的 API 加速 LOB 应用程序的开发,因为这些 API 都是贴近业务的。简单来说,框架将开发人员从底层技术中抽象出来,以便他们更专注解决业务问题。

这种使用高级抽象级别的方法在现代 RAD 框架中大量使用。其中有五个著名的玩家:Ruby on RailsGrailsDjangoCUBA PlatformZend Framework

通用基础功能

如上所述,RAD 平台主要用于 LOB 应用程序的开发。这种类型的应用程序有一些通用的需求,比如用户验证、数据访问限制、审计、文件存储、全文搜索、业务流程管理等等。RAD 平台满足这种需求是通过提供可重用的开箱即用功能或者扩展插件。

这种方案在现代 RAD 平台广泛使用。所以 CUBA 平台提供了扩展市场, Ruby on Rails 提供gems,Grails 使用插件, Django使用

开发工具

开发工具是最重要的部分,它不仅能保证高效的开发,还提供了更低的进入门槛、更平滑的学习曲线,当然,还有舒适的开发体验。事实证明这是可行的,因为这些工具仅集中在平台的预定义体系结构上:编程语言、使用的库和底层框架以及应用程序的结构(模块、附加组件、程序包)等等。

基于对采用的架构的广泛和深入的理解,RAD 工具可以为开发者提供终极便利。为了大致了解它们到底带来了什么便利,我们看看最常见的功能:

l 直观的可视化编辑器 - 用于新项目启动、项目配置、领域模型,UI 开发......

l 强大的代码生成 - 自动化最常用的脚手架代码和模板代码片段

l 智能提示 - 避免错误的使用元素,包含代码自动修复

l 高级导航 - 切换应用程序部分和配置部分

l 向导方式的版本升级过程 - 帮助迁移到平台的最新版本

l 分发准备 - 使方案易于部署

这里最生动的例子应该是 Embarcadero(前 Borland Delphi) 的 RAD Studio。另一个例子是 JHipster,RAD 家族的非典型成员 - 提供了命令行工具(CLI),主要关注项目的启动引导,为初始化 Java 项目配置提供非常多不同的选项。CUBA 平台提供了两种 RAD 工具:CUBA Studio 和 CUBA CLI,前一个是功能全面的强大 IDE,后一个是轻量级命令行工具。

低代码开发平台

如果您关注现代 RAD 市场及其发展,您一定听到或了解到大量关于所谓低代码开发平台(LCDP)的宣传语。各种口号表达出的低代码平台的理念是 : 不远的未来将不再需要专业的开发人员。只需要雇佣业务主管,不需要再雇佣专业的软件开发人员。这就是我在之前的章节中都没有提到任何一个低代码平台的原因。但是,如果我们说到 RAD,不可能忽略 LCDP,因为这些平台造成了一个非常有趣的现象 - 使开发工具成为开发人员的竞争对手。

在售卖给业务主管之前,他们强调的主要商业价值是:便宜、更快、更高质量。没错,虽然需要您每年支付数十万美元的许可费用,但是由于不需要专业的开发人员(非常贵且头脑灵活),也不需要对本地设施进行维护,最终您会取得理想的收益 。他们通过演示使非技术人员感到惊讶,在演示中,销售经理仅通过单击鼠标即可创建出基本的业务应用程序……给人的印象是,业务人员(即非专业开发人员)就能够自动化(数字化)自己的业务需求。

从技术角度来看,LCDP 使用与 RAD 同样的原理:预定义的架构和高级别 API 、 即用型的典型功能和开发工具。这里最大的区别是此类平台的适用范围。为了使非专业人士能创建企业级软件,LCDP 供应商将开发过程缩减到只需要绘制流程图,但这种方式会牺牲很多其他的能力:熟悉的协作开发流程、源代码控制、可定制性、可扩展性、互操作性、兼容性、性能、自动测试…。结果是,LCDP 仅适合构建非常基本的业务系统。

现在,MendixOutsystems 和其他 LCDP 供应商尝试与专业开发者建立更友好的关系。但是似乎还有很长的路要走,因为目前大多数专业开发人员出于充分的理由并没有认真考虑低代码。

结论

有人会说“快速应用程序开发平台”听起来太老了,是过时的技术 - 我同意,现在这个词有很强的负面含义。为了使 RAD 技术重新具有新鲜感,Gartner(高德纳,全球最具权威的IT研究与顾问咨询公司) 提出了新的术语:企业低代码应用平台(LCAP)和企业高效应用平台(HPAP)。但是,深入研究后仍然可以看到其中使用了同样的原理:加速同一类应用程序的开发,当然,也具有相同的限制。看起来像是对 RAD 技术执行的“证人保护计划”,让其以新名称过着幸福的生活。

现代 RAD 框架、工具和平台的市场中产品众多,大多数都可快速开发 Web 应用程序。这些产品可分为两类:一种面向专业开发人员并遵循传统开发模式  ,另一种是面向非专业开发人员,在低代码技术方面的先行者。第一种主要通过提供更高级别的 API 和代码生成功能来提高软件开发速度,可以使开发人员避免编写样板代码和通用基础功能。第二种提供了强大的运行时环境和可视化工具,业务人员很喜欢这种方式,甚至不是因为开发速度快,而是因为这类产品提供了通过画图而不需要编码就能实现一些业务功能的能力。

关于如何选择 RAD 工具,没有人可以给出确定的建议或某些可量化的方法, 它在很大程度上取决于项目的功能和非功能性需求。但是,我想提醒您注意产品的定价和许可协议。对于某些产品,您必须要为之付出一笔巨款 - 价格每年可能从0到数十万美元不等。尤其是使用低代码平台时,您的账单往往会达到6位数字。 更糟糕的是,由于供应商锁定,您不太可能切换其他的供应商。

原文地址:https://www.cnblogs.com/cubacn/p/cuba_plateform.html

时间: 2024-10-15 09:05:43

快速应用开发(RAD)平台 - 20 年的演进的相关文章

快速上手Ionic3 多平台开发企业级问答社区

详情请交流  QQ  709639943 01.快速上手Ionic3 多平台开发企业级问答社区 02.基于大数据技术之电视收视率企业项目实战(hadoop+Spark) 03.Node.js入门到企业Web开发中的应用 04.精通高级RxJava 2响应式编程思想 05.Java秒杀系统方案优化 高性能高并发实战 06.Java深入微服务原理改造房产销售平台 07.快速上手Linux 玩转典型应用 08.全面系统讲解CSS 工作应用+面试一步搞定 09.Java Spring Security开

畅捷通T+ RAP(Rapid Application Platform)快速应用开发平台

RAP概述 RAP(Rapid Application Platform)快速应用开发平台 是一个通过B/S方式操作平台数据的轻量级工具,轻松实现档案.单据和报表的开发,普通用户无需编写任何代码,即可轻松完成复杂的功能,真正做到所见即所得. 该开发平台基于.NET体系,是在T+架构之上,通过框架重用.组件重用完成了业务逻辑和元数据自动生成的过程.RAP涵盖了整个T+业务开发的全过程,包括档案.单据.报表.自定义页面等,可以快速对档案.单据和报表的列和栏目进行增删改,快速自定义页面和自定义按钮.

工业串口和网络软件通讯平台-快速构建自己的平台和开发设备

工业串口和网络软件通讯平台 _x86_x64:下载平台软件.开发包.开发手册.开发事例 公司网址:http://www.bmpj.net 下载地址(软件平台架构.开发组件.开发包.辅助工具): http://pan.baidu.com/s/1gdhDDUr 软件特点 1)能够很快的构建自己的通讯平台软件,包括主程序. 2)设备模块化开发,通过配制文件挂载,即可在平台软件下运行. 3)设备模块同时支持串口通讯方式和网络通讯方式,通讯方式自由切换. 4)设备协议无关性,可以把第三方协议转换成自定义的

为 Python Server Pages 和 Oracle 构建快速 Web 开发环境。

为 Python Server Pages 和 Oracle 构建快速 Web 开发环境. - 在水一方 - 博客频道 - CSDN.NET 为 Python Server Pages 和 Oracle 构建快速 Web 开发环境. 分类: 技术空间 2008-06-12 10:43 301人阅读 评论(0) 收藏 举报 pythonoracleserverwebapache数据库 目录(?)[+] Python 和 Python server Pages 的背景 解决方案组件 oracle 数

一起学Google Daydream VR开发,快速入门开发基础教程一:Android端开发环境配置一

原文因涉及翻墙信息,被强制删除,此文为补发! 准备工作 进入Google Daydream开发者官网,开启准备工作,官网地址:https://vr.google.com/daydream/developers/ -------------------------------------------------------------------------------------------------------------------- Google Daydream开发者网址: https

【如何快速的开发一个完整的iOS直播app】(原理篇)

一.个人见解(直播难与易) 直播难:个人认为要想把直播从零开始做出来,绝对是牛逼中的牛逼,大牛中的大牛,因为直播中运用到的技术难点非常之多,视频/音频处理,图形处理,视频/音频压缩,CDN分发,即时通讯等技术,每一个技术都够你学几年的. 直播易:已经有各个领域的大牛,封装好了许多牛逼的框架,我们只需要用别人写好的框架,就能快速的搭建一个直播app,也就是传说中的站在大牛肩膀上编程. 二.了解直播 热门直播产品 映客,斗鱼,熊猫,虎牙,花椒等等 直播效果图 直播效果.jpeg 1.一个完整直播ap

【如何快速的开发一个完整的iOS直播app】(播放篇)

前言 在看这篇之前,如果您还不了解直播原理,请查看上篇文章如何快速的开发一个完整的iOS直播app(原理篇) 开发一款直播app,集成ijkplayer成功后,就算完成直播功能一半的工程了,只要有拉流url,就能播放直播啦 本篇主要讲解的是直播app中,需要用到的一个很重要的开源框架ijkplayer,然后集成这个框架可能对大多数初学者还是比较有难度的,所以本篇主要教你解决集成[ijkplayer]遇见的各种坑. 很多文章,可能讲解的是如何做,我比较注重讲解为什么这样做,大家有什么不明白,还可以

Unity3d与iOS交互开发——接入平台SDK必备技能

原地址:http://www.2cto.com/kf/201401/273337.html# 前言废话:开发手机游戏都知道,你要接入各种平台的SDK.那就需要Unity3d与iOS中Objective-C的函数有交互,所以你就需要用到如下内容: 一.Unity3d To iOS: 1.创建一个C#文件 SdkToIOS.cs 这是调用iOS函数的接口: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 public class SdkToIOS: Mo

快速Android开发系列网络篇之Retrofit

Retrofit是一个不错的网络请求库,用官方自己的介绍就是: A type-safe REST client for Android and Java 看官网的介绍用起来很省事,不过如果不了解它是怎么实现的也不太敢用,不然出问题了就不知道怎么办了.这几天比较闲就下下来看了一下,了解一下大概实现方法,细节就不追究了.先来看一个官网的例子,详细说明去网官看 简单示例 首先定义请求接口,即程序中都需要什么请求操作 public interface GitHubService { @GET("/use