ABF平台的配置中心又可以称之为渲染中心,负责所有应用的渲染数据与渲染功能配置。

在中后台研发的过程中,我们发现中后台系统存在着普遍性的原则。多个系统在渲染的功能上存在几乎100%的可复用性。例如常见的中后台的页面就是搜索展示表格、表格内容新增、编辑表格内容、删除表格内容等针对不同业务的相同形式页面。所以配置中心的目标就是作为“中后台工厂流水线”的配置器,完成业务系统的高效开发。

那么,流水线应该有哪些配置呢?

1. 应用配置——大门与钥匙
不同于toB与toC的项目,绝大多数中后台项目面向对象都是内部人员。所以很多情况下,业务方需要的只是不同的“大门”(域名)和相同的“钥匙”(内网账号)。因此渲染中心首先完成了根据用户访问域名不同,实现对应应用的渲染。而在此之后可以套用同一个钥匙,即可快速完成一个中后台“大门”与“钥匙”的制造。对于ABF平台而言,一个域名即唯一对应了一个应用。

2. 页面配置——多种多样的房间
在应用之下,ABF平台提出了页面的概念,以MPA的思路实现每一个页面相互独立,有着自己独有的页面与功能,又整体继承应用的配置。这样可以便捷的实现一个系统功能的拓展。想要一个全新的功能页面?来吧,新建一个“房间”(页面)吧!

基于以上两点,在技术实现上,ABF渲染中心以域名与环境变量(daily/pre/prod)组成了应用的唯一标识,在路由匹配规则上,我们选用了servlet的url-pattern匹配规则。一方面可以满足我们精准匹配的规则,另外一方面通过/*和/**的匹配规则更好方便了页面的路由配置。

3. 权限控制——人脸识别
既然钥匙是一样的,那就难以避免会出现只要我有这个钥匙,我就可以在所有“房子”的所有的“房间”里进进出出,显然这不会是业务方希望的。所以配置中心为每个“房子”里面的“房间”增加了一个“人脸识别”(权限验证),针对不同的页面、模块都可以通过增加权限验证来实现对访问的限制。为了更加方便的控制权限的授权,我们提出了租户的概念,即一个应用所有可访问的用户即为租户。而每个应用管理员只能管理自己应用对应租户的权限,避免了越权行为的发生。

在权限这部分的技术实现上,首先我们确定了统一的用户信息结构体,包括用户id、名称、头像等字段,保证这个用户信息的结构体适用于多种登陆体系。用户信息结构的统一是权限验证的前提,而后通过用户ID、应用ID、权限点三者的关联验证来完成权限的控制。用户ID与权限点验证相信大家都可以理解,那么应用ID的验证又是为了什么?因为如果没有应用上的验证,那么权限点相当于对于所有人都是开放的。一个权限管理员可以管理所有应用的权限点。而实际开发过程中,我们必然需要自己管理自己的权限点。所以在权限点上我们做了应用的隔离。这一个隔离的应用ID在用户信息结构体上也有一个对应的ID,我们称为租户ID,即每一个登陆的用户我们都会有一个专有的租户与之对应,其与应用一一对应。租户A的用户无法通过租户B的权限点进行权限验证。保证了权限点之间的隔离。
所以我们的登陆过程也就变成了:账号密码验证-租户选择-权限验证-页面匹配。一个用户可能有着多个租户身份,需要在登陆时候选择用哪一个租户身份进行登陆。


 统一处理的权限申请页面

4. 布局配置——规范化的房子规格
一方面为了提高效率,另外一方面也为了整个中后台生态的规范性。我们提供了一个中后台统一的布局组件,定义了一个房子的“房间”应该怎么排布。同时提供了“房间排布图”(菜单)的配置。将一个应用的导航和菜单配置与源码解藕,大大增加了系统的可拓展性。

在布局的设计上一方面我们考虑了最常见的布局结构:顶导航、左导航、中间内容展示。另外一方面,随着系统的增多,我们可能希望系统之间的关联性。为此我们设计了左上角的常用网站导航,给用户的感官上增加了联系的感觉。
为了将导航与内容解藕,我们直接规定了页面模板的表现,规定内容部分为固定id的div。当研发人员进行页面需求开发的时候只需要将内容部分渲染在对应id的div即可。同时渲染中心也引入了ABF的微前端框架,这套框架的介绍可以查看后文。通过这套框架,我们实现了导航、菜单与内容的解藕。这样每个页面之间也相互解藕,你可以自定义的联结不同页面组成自己的菜单、导航与系统。

5. 自定义拓展——生成个性化的房间
在满足了99%的相似配置后,业务方就是想要一个独具一格的房间改怎么办?不要怕!配置中心提供了自定义“房间”拓展机制。类似于函数式的拓展方式,配置中心提供了一个统一的入参,包括用户身份验证信息、域名访问信息、应用配置信息等,只需要处理后的函数格式满足配置中心规定的格式,就可以实现自定义的“房间装修”。例如简单的优酷登录实现方式——通过拓展函数来验证优酷登录的用户信息,无论访问哪个页面只要你没有登录,都会渲染为优酷登录页:



其实之前几点的设计,基本上我们已经规范了一个页面的渲染结构:包括域名、环境、用户信息、路由匹配、权限、布局、菜单等。组成了一个ABF的页面数据结构体。通过自定义拓展能力,我们允许用户对这些所有信息都进行自定义的修改,只需要满足修改后结构满足ABF规定的渲染结构,ABF渲染中心就会根据返回的渲染结构渲染页面。如上面优酷MCN的例子,我们实现了自定义的用户信息结构体,同时通过对结构体是否有效的判断,修改渲染页面模板是否为登录模板。

通过以上几个方面的配置能力,ABF平台的配置中心实现了90%中后台应用创建所需要做的事情。通过ABF平台配置中心创建应用与页面即可快速的完成一个系统的创建与上线。

ABF平台设计(二)-流水线的配置器相关推荐

  1. ABF平台设计(一)-新一代标准化中后台研发平台

    "中后台系统"一般是指各种互联网公司研发的面向内部或者ToB用户的运营管理类平台,如各种CMS系统.CRM系统等,它们的特点是交互复杂度高(大量复杂表单.表格.弹框).碎片化严重( ...

  2. STL源码剖析学习二:空间配置器(allocator)

    STL源码剖析学习二:空间配置器(allocator) 标准接口: vlaue_type pointer const_pointer reference const_reference size_ty ...

  3. ABF平台设计(三)-优酷中后台低代码开发方案

    背景 我们团队绝大多数工作都是在开发各种中后台应用,也一直在探索如何提升中后台应用开发的效率.为此我们建设了ABF平台,能在ABF平台上一站式完成应用创建.权限控制.开发.部署等,这篇文章将介绍ABF ...

  4. ABF平台设计(四):体验黑科技-结构化的体验数据平台

    你是否遇到过下面的场景? 场景1: 新接收了一个项目,想了解一下当前的用户使用习惯和反馈,却没有一个全面.权威的数据支撑来帮助你深入了解,只能从用户口中了解到一些零散的信息: 场景2: 在讨论产品方案 ...

  5. ABF平台设计(五)-物料中心/脚手架

    概念 ● 广义上的物料是指与产品生产有关的所有物品,但对于前端开发来讲,物料(或前端物料)就是指组成页面并能够使其能够正常运转所需的元素(如一个按钮.一组按钮等),这里将这些元素统称为前端物料. ● ...

  6. STL笔记(二)---空间配置器

    一.概述 allocator是STL的六大组件之一,空间配置器.其作用就是为各个容器管理内存(内存开辟 内存回收).allocator配置的对象不只是内存,它也可以向硬盘索取空间.使用STL库的时候不 ...

  7. STL源码剖析 空间配置器 查漏补缺

    ptrdiff_t含义 减去两个指针的结果的带符号整数类型 ptrdiff_t (Type support) - C 中文开发手册 - 开发者手册 - 云+社区 - 腾讯云 std::set_new_ ...

  8. STL 源码剖析 空间配置器

    以STL的运用角度而言,空间配置器是最不需要介绍的东西,它总是隐藏在一切组件(更具体地说是指容器,container) 的背后 但是STL的操作对象都存放在容器的内部,容器离不开内存空间的分配 为什么 ...

  9. 【STL深入学习】SGI STL空间配置器详解(一)-第一级空间配置器

    一.SGI STL配置器简介 SGI STL的配置器与众不同,它与标准规范不同.如果要在程序中明确使用SGI配置器,那么应该这样写: vector<int,std::alloc> iv; ...

最新文章

  1. 关于libStagefright系列漏洞分析
  2. R包reshape2,轻松实现长、宽数据表格转换
  3. dwa的区别 teb_teb_local_planner安装及使用
  4. 网络推广是做什么的介绍网站内容更新时需要遵循哪些原则?
  5. 利用循环队列的思想进行加密解密(洛谷P1914题题解,Java语言描述)
  6. 一个程序员的逗逼瞬间(一)
  7. 阿里最快数周内提交赴港上市申请?回应:不予置评
  8. utilities —— 常见宏定义
  9. MySQL 8.0.12 基于Windows 安装教程
  10. HDOJ 2013_大二写
  11. 你手机里装过最牛的软件是什么,精选15款分享,有一个你没用过
  12. WPF实现鼠标拖动框选功能
  13. 2019腾讯广告大赛总结
  14. MYSQL设置初始密码
  15. Android知识点 363 —— dumpsys alarm
  16. Windows---diskpart命令的使用
  17. oracle rman delete backupset,RMAN Crosscheck后delete obsolete遇到RMAN-06091的解决
  18. 用matlab四边形中心,matlab4
  19. 180420 逆向-DDCTF_WP(Re)
  20. python显示等待隐式等待

热门文章

  1. 已解决:好用的集成PHP环境 一键安装包PHPNow--Win7下安装phpnow的方法出现[ Apache_pn ] 错误的解决 !(亲自测试通过)
  2. Window10配置PHPnow
  3. 网络上摘抄的数据库设计规范
  4. 2019华为精英挑战赛初赛模拟试题总结思考
  5. WIN10环境下MAVEN的安装与配置
  6. 打印机 “错误-正在打印”
  7. 计算机网络毕业实训报告书,计算机网络实训报告书
  8. 计算机表格如何求和,excel怎么求和,教您excel如何进行求和
  9. 2018互联网大会,科幻大片照进现实!
  10. [计算机网络]第四章——网络层