ABF平台的配置中心也可以称为渲染中心,负责所有应用的渲染数据和渲染功能的配置。在中后台的研发过程中,我们发现中后台系统是有普适性的原则的。多个系统在渲染功能上几乎有100%的可重用性。例如,常见的中后台页面是针对不同业务的同一种形式的页面,如搜索展示表格、添加表格内容、编辑表格内容、删除表格内容等。因此,配置中心的目标是作为“中后台工厂流水线”的配置者,完成业务系统的高效开发。那么,流水线应该有什么样的配置呢?1.应用配置——gates和keys不同于toB和toC项目。大多数中后端项目都是针对内部人员的。所以很多时候,业务方需要的只是不同的“门”(域名)和相同的“钥匙”(内网账号)。因此,渲染中心首先根据用户访问的不同域名完成相应应用的渲染。之后,可以应用同一把钥匙,快速完成中后台“门”和“钥匙”的制造。对于ABF平台来说,一个域名唯一对应一个应用。2、页面配置——多种房间应用下,ABF平台提出页面的概念,利用MPA的思想实现每个页面相互独立,有自己独特的页面和功能,以及整体继承了应用程序的配置。这样可以方便的实现系统功能的扩展。想要一个全新的功能页面?来吧,创建一个新的“房间”(页面)!基于以上两点,在技术实现上,ABF渲染中心通过域名和环境变量(daily/pre/prod)组成应用的唯一标识。在路由匹配规则方面,我们使用servlet的url-pattern匹配规则。一方面可以满足我们的精准匹配规则,另一方面通过/和/*的匹配规则可以更方便的进行页面的路由配置。3、门禁——人脸识别既然钥匙是一样的,那么必然只要我有这把钥匙,我就可以进出所有“房子”的所有“房间”,显然这不会是什么业务方想要。因此,配置中心为“房子”中的每个“房间”都增加了“人脸识别”(授权验证)。对于不同的页面和模块,可以通过增加权限验证来实现访问限制。为了更方便的控制权限的授权,我们提出了租户的概念,即所有能够访问一个应用的用户都是租户。而每个应用管理员只能管理租户对应的自己应用的权限,避免了越权行为的发生。在权限的技术实现上,我们首先确定了一个统一的用户信息结构,包括用户id、姓名、头像等字段,保证这个用户信息结构适用于多种登录系统。用户信息结构的统一是权限验证的前提,然后通过用户ID、应用ID和权限点的关联验证完成权限控制。用户ID和权限点验证相信大家都能理解,那么APPID验证的目的是什么?因为如果申请上没有验证,那么权限点就相当于对所有人开放。权限管理员可以管理所有应用的权限点。在实际开发过程中,我们必须自己管理自己的权限点。所以在许可点,我们已经隔离了应用程序。这个孤立的应用ID在用户信息结构上也有一个对应的ID,我们称之为租户ID,即每个登录的用户都会有一个专门的租户与之对应,与应用一一对应。租户A的用户无法通过租户B的权限点进行权限验证,权限点之间保证隔离。于是我们的登录流程就变成了:账号密码验证-租户选择-权限验证-页面匹配。一个用户可能有多个租户身份,登录时需要选择使用哪个租户身份登录。统一处理权限申请页面4.户型配置-规范房屋规格一方面是为了提高效率,另一方面是为了规范另一方面,整个中后台生态。我们为中间和背景提供了一个统一的布局组件,它定义了房子的“房间”应该如何布置。同时提供了“房间布局”(菜单)的配置。将应用程序的导航和菜单配置与源代码解耦大大增加了系统的可扩展性。在布局设计方面,我们考虑了最常见的布局结构:顶部导航、左侧导航、中间内容展示。另一方面,随着系统数量的增加,我们可能需要系统之间的相关性。为此,我们在左上角设计了常用的网站导航,增加了用户感官的连接感。为了将导航和内容解耦,我们直接规定页面模板的表现,规定内容部分是一个固定id的div。开发者在开发页面需求时,只需要渲染id对应的div中的content部分即可。同时,渲染中心还引入了ABF的微前端框架。这个框架的介绍可以在后面找到。通过这个框架,我们实现了导航、菜单和内容的解耦。这样一来,各个页面也相互解耦,可以自定义连接不同的页面,形成自己的菜单、导航和系统。5、自定义扩展——生成个性化房间。在满足了99%的相似配置后,业务方想要进行独一无二的房间改造怎么办?不要害怕!配置中心提供自定义“房间”扩展机制。与功能扩展方式类似,配置中心提供统一的入参,包括用户认证信息、域名访问信息、应用配置信息等,只要处理后的功能格式满足配置中心指定的格式,可以实现自定义“房间装饰”。比如优酷登录的简单实现——通过扩展功能验证优酷登录的用户信息,无论访问哪个页面,只要没有登录,都会渲染为优酷登录页面:其实,前面几点的设计,基本上我们标准化了一个Page渲染结构:包括域名,环境,用户信息,路由匹配,权限,布局,菜单等,一个ABF页面数据结构就形成了。通过自定义扩展能力,我们允许用户自定义修改所有这些信息,只要修改后的结构满足ABF指定的渲染结构,ABF渲染中心就会根据返回的渲染结构渲染页面。如上面优酷MCN的例子,我们实现了一个自定义的用户信息结构,同时通过判断该结构是否有效来修改渲染的页面模板是否为登录模板。通过以上几个方面的配置能力,ABF平台的配置中心实现了90%的中后台应用创建需要做的事情。通过ABF平台配置中心创建应用和页面,快速完成系统的创建和上线。
