10月27日,活字格开发团队负责人雷学斌代表葡萄城做客掘金稀土开发者大会,在低代码探索专题分享中首次揭秘活字格最受专业开发者欢迎的三个特色功能及其实现原理,让我们一起看看活字格如何赢得程序员的“芳心”。

活字格,出自专业控件厂商

低代码领域,葡萄城具有得天独厚的自身条件。在2012年启动低代码预研前,葡萄城已经专注于软件开发工具领域32年,先后基于VBX、COM、.NET和纯前端等技术平台推出各类开发控件产品,并根据技术环境和用户需求的变化,积极进行产品和技术迭代,不断降低软件开发所需的代码量,提升软件开发生产力,积累了丰厚的技术实力和领先的研发经验。经过4年的研发,活字格低代码开发平台于2016年正式推出。为了与更多开发者共创共建,葡萄城采取了面向开发者免费的商业模式,迄今为止已有超过6万名开发者通过活字格走上低代码开发之旅,其中不乏来自软件公司和大企业信息化部门的专业开发者。

这些程序员为什么选择活字格作为低代码开发的工具?基于开发经验和运营团队的反馈,活字格开发团队总结出了最受程序员喜爱的三大功能特性。我们将分别进行解密,看看这些功能是如何被打造出来的。

程序员最喜爱的功能1:抹平数据库的SQL语法差异

目前主流的数据库产品大多诞生在2000年之前,彼时的应用场景较为单一,应用开发者对用户体验的关注度不如现在这么高,此时形成的SQL92等标准中包含的SQL语句和数据类型并没有现在这般丰富。随着互联网的发展,用户体验的重要度得到了大幅提升,推动数据库厂商在数据库底层提供对地图、分页加载的支持。另一方面,这些新功能意味着新的SQL语法,考虑到不同的数据产品推出这些功能的时代背景不同,这部分SQL语法存在较大的差异。如果仅是基于特定的数据库开发应用,程序员尚且可以通过学习该数据库的“方言”来解决。但是对于需要整合多源数据的程序员,比如中大型企业的内部开发团队或系统集成商的开发者来说,这种差异化带来了很多困扰。

(在不同的数据库中实现相同的分页加载操作)

作为一个以“开放性”为特色,帮助客户整合现有软件资产打造数字化平台的低代码产品,活字格必须“抹平”数据库厂商和版本的差异。具体而言,活字格在数据访问层做了针对MS SQL、MySQL、Oracle、PostgreSQL、SQLite、达梦DM8等数据库的适配,用户完全感知不到数据库的语法差异。对于活字格的开发团队来说,这意味着大量的开发和测试工作量;但是对于程序员来讲,用起来就非常方便了。

此外,很多长期从事业务系统开发的程序员都知道,多数复杂的数据处理与计算需求是通过业务人员更熟悉的Excel公式来描述的。理解这些多层嵌套的公式,并将其转化为业务逻辑代码或SQL语句,需要耗费大量精力,而且难免会因为对Excel的理解不够深入导致各种Bug。

为了解决这一难题,活字格的开发团队实现了“用Excel公式操作数据库”的功能,开发者可以直接将Excel公式“搬到”活字格中,作为服务端业务逻辑的一部分。活字格服务器在执行时,会自动将这些Excel公式准确地翻译成对应数据库上的SQL语句。这种做法,比微软的Power Fx还要早上数年。Excel公式有超过400个,如何确保翻译过程的准确性?雷学斌提到,活字格采用了葡萄城表格技术中的计算引擎来完成公式的词法解析、语法解析、执行路径计算等关键环节。基于同样的计算引擎,葡萄城的另一款明星产品SpreadJS纯前端表格控件除了广泛应用于头部互联网公司,还在国内外一线会计师事务所、银行和投资机构中承担数据计算的重任。总之,“从Excel到SQL”的路径看上去简单,但必须依靠扎实的技术基础,才能确保其质量可以应用于企业核心业务开发。

(活字格的数据处理方式和引擎架构)

程序员最喜爱的功能2:Web API的可视化开发与调试

在企业级应用开发过程中,开发者需要构建大量Web API来响应前端请求,在服务端处理逻辑复杂、安全性要求高、数据量大的业务需求。长期以来,服务端业务逻辑的可视化开发和调试一直是软件开发工具的难点。比如,微软在VC++和VB时代就提供了前端界面的可视化开发能力,直到低代码时代才提供了非常基础的服务端构建功能。事实上,以同样在掘金开发者大会上做分享的蚂蚁金服为代表的很多低代码平台厂商选择了绕过这个难题,仅提供非常有限的服务端开发能力,甚至走上了仅支持前端开发的路线。但是,这个问题对于面向企业级应用开发的活字格来说,是必须要攻克的难关。

在构建服务端业务逻辑的方式上,活字格的开发团队探索过很多种技术方案,最终回归到以Lamda为代表的函数式编程的通用做法。开发者编写类似自然语言的Lamda表达式,交给执行引擎将代码语句解析为表达式。此时的表达式更像是一个在Visio中设计出的流程图,存在大量的分支和跳转,并且存在相互引用,不是可执行的形态。最终,执行引擎会根据引用关系和执行顺序,从图出发,构建出实际执行的表达式树,然后按顺序遍历树上的节点,分别执行这些节点上的表达式。可以说,表达式树是执行引擎与计算机直接进行交互的核心,直观准确地描述了代码的实际执行过程。

(Visual Studio中展示的Lamda表达式树)

为了向开发者直观展示业务逻辑的执行,提升可维护性,活字格开发团队在设计器中复刻了表达式树的构建和呈现过程,并且在抽象程度上进一步上移,隐藏不必要的细节以提升易用性。首先,开发团队归纳了高级语言的语法特征和企业软件开发中常用的类库(如逻辑控制、局部变量、异常处理、事务控制、数据访问、文件操作、Web API调用等),将其封装成“命令”后提供给用户;然后,开发团队在设计器中提供了命令设计器:命令设计器的本质是一个树性结构,使用者可以在树上创建节点,并通过点选的方式设置该节点对应的命令、输入输出参数和注释。最终,使用者用这种方式可视化地构建出整个业务逻辑,不但写起来方便,读起来也会更直观。

这种做法与编码开发保持一致,从根源上确保了使用活字格可以满足所有场景下的业务逻辑开发需求。因为与编码开发的概念保持一致,程序员只需要非常少的“概念转换”即可掌握这种做法,学习成本很低。

(C#代码与活字格的服务端命令)

“每天工作的一半是写代码,另一半是修bug。”如何在低代码开发平台中快速完成业务逻辑的调试和自测,是程序员们不得不关注的问题。在输出完整日志供程序员排查的基础上,活字格的开发团队还借鉴Visual Studio和TestDriven.NET插件的做法,让使用者无需发布就能在设计器中直接对业务逻辑进行测试,并输出完整的执行过程,包含每个参数值和每一个操作耗费的时间。不论开发Web API还是供其他开发者调用的私有化服务端命令,设计器提供的调试机制都能大幅提升程序员自测的效率和效果。总之,从开发到调试,活字格遵循编码开发时代积累的最佳实践,在服务端业务逻辑和Web API构建方面提供了全方位的可视化解决方案,对于程序员来说,既好学,又好用。

(无需发布即可测试Web API)

程序员最喜爱的功能3:以所见即所得的方式做响应式布局

低代码是覆盖软件开发全生命周期的可视化解决方案。在用户界面设计阶段,低代码开发平台应该提供怎样的设计模式,在确保高度定制化的基础上,尽可能提升开发效率呢?为了解开这一难题,活字格的开发团队决定从“可视化开发”的源头寻找思路。

作为微软最早期的合作伙伴,葡萄城在为微软平台开发者提供大量控件的同时,对该平台的技术特性和背后的实现原理也有深刻理解。在开发WinForm程序的时代,Visual Studio的使用者将控件拖入窗体,IDE根据控件的位置和层次关系,自动生成包含这些信息的代码。运行时,这些代码被顺次执行,还原抽出与设计时一致的样式,达到所见即所的效果。这种开发方式很快就成为了Windows程序开发的标准模式,程序员不需要将程序运行起来,就能在设计器上看到页面布局的效果。时至今日,市面上用户群体最大的ERP软件——用友U8+就是基于微软的技术栈,用这种可视化的方式完成开发的,在用户体验层面得到了企业用户的广泛认可。

(使用Visual Studio开发WinForm程序的体验)

于是,活字格将这种设计思想,结合Excel的操作体验,应用在Web页面开发中,最终提供了以绝对坐标为基准的页面设计方案。针对不同的应用场景,该方案有“固定布局”和“网格布局”两种模式。

1、固定布局

固定布局是活字格的默认做法。开发者在设计器中像操作Excel一样在网格中完成页面元素的布置和样式设置;设计器会在发布时将包含有绝对坐标的页面设计存储为模型文件,并上传到服务器;在最终用户浏览器中运行的解析引擎会把元数据还原为与设计器中一致的Web界面。

(固定布局可实现严格意义上的所见即所得)

除了所见即所得带来的高开发效率,这种设计体验有以下三个显而易见的优势:

  • 布局灵活:开发者可以在页面的任意位置放置任意元素,并设置为任意样式,而不必拘泥于平台内置的模板。
  • 门槛更低:页面布局和样式设置的方式高度类似Excel,全程可视化;开发者不需要具备CSS知识即可完成页面设计;对于熟悉CSS的开发者,活字格还提供了对样式进行进一步调整的能力。
  • 兼容性好:活字格的元数据解析引擎不依赖任何第三方JS框架或CSS样式库,可以确保页面在不同浏览器和设备上的表现一致。

此外,如果开发的目标是代替现有的Excel模板,或者需求方提供的设计方案是用Excel描述的,开发者还可以直接将Excel文件导入活字格。活字格将根据Excel自动生成页面,还原其中的内容和大部分样式,进一步减少页面开发工作量。

(使用活字格开发的“仿纸质单据”页面)

2、 网格布局

固定布局可以确保最终页面的布局和预期完全一致,通常用于开发对界面布局要求非常严格的场景,比如那些需要延续现有体验,降低使用人员培训成本的内部应用。但是,对于面向外部用户的应用,开发者通常需要提供更加“现代化”的界面,以提升用户满意度。此时,活字格提供的“网格布局”将会派上用场。

与固定布局参考了WinForm的设计思路类似,网格布局的设计思想则源于WPF。为了实现页面布局根据屏幕尺寸自动调整,WPF提供了Grid布局控件,并允许开发者通过在Grid.ColumnDefinition中设置Width=“25*”的形式控制各元素的尺寸占比。简单地说,在固定布局的基础上,将页面元素所在位置的绝对定位坐标,转换为可根据设定规则计算得出的动态坐标,就实现了网格布局(Grid Layout)。

在活字格的页面设计界面中,元素的绝对定位坐标是通过其所在的单元格来确定的,而单元格的位置则以行和列的方式进行描述。当我们将这些行和列设置成“根据内容自适应”或者“在指定的范围内按照比例进行分配”后,绝对定位的坐标就变成了根据规则计算得出的动态坐标。这种做法一方面提供了更具弹性的页面布局方式,另一方面因为延续了固定布局的使用体验,而不是将其割裂,最终使得活字格页面布局的学习曲线更平滑,开发者上手更容易。

(使用网格布局开发出的页面效果)

低代码让程序员的工作更有价值

本次评选出的程序员最喜爱的功能,刚好覆盖了数据库、服务端和前端,这三者相互分离又相互配合,最终组成了高可用性、高安全性、高可维护型的企业级应用。从上面的三个功能的解密中,我们不难看出专注控件技术40余年的葡萄城,在规划和设计一款企业级低代码开发平台时,与其他厂商不同的思维方式。葡萄城将低代码视作软件开发技术的改良者,寻找开发者的痛点并通过可视化的技术方案予以解决;尊重软件开发行业的知识积累和最佳实践,让开发者可以最大程度复用其在学校学习和开发工作中积累的宝贵经验。

(活字格让程序员的工作更有价值)

事实上,活字格当前的主要用户群体是IT技术人员和程序员。使用活字格开发的大型项目大多有程序员的参与,这些程序员中有资深的前后端开发,也有大学毕业刚入行的新手,他们都能从低代码技术中获益。

对于从业多年的程序员来说,开发 ≠ 写代码。低代码平台诞生的初衷是为了减少大量重复工作,提升开发效率,把专业开发人员从简单、重复的开发需求中解放出来,把精力投入到更有价值的事情上,比如,前瞻研究,开放技术视野;学习行业,深钻业务逻辑;或者带团队,转型到管理岗位。

作为入门新手,低代码平台的组件化和拖拽式配置降低了开发门槛,新手程序员能够借助此类平台快速入门,加速升级打怪;有更多机会参与到更核心的项目,积累更多经验值,实现快速成长。

如果你是一名对低代码技术持观望态度的开发者,不妨搜索“活字格”,免费下载这款被数万名开发者选择的企业级低代码开发平台,和葡萄城一道,开启您的低代码之旅!