谈从publicCms项目里的收获

谈从publicCms项目里的收获

近期一个项目用到了cms,各种因素考虑最后决定使用 publicCms V2019免费版,因为之前没真正接触过cms类系统,这次还是收获比较大。

  1. 引导创建数据库设计, 这个项目第一次启动,会引导你创建数据库, 一般应用里是没有这种设计的。 这种模式在开源项目里,更加符合二次开发人员的需求,二次开发人员不用再去找初始化脚本,执行数据库,修改数据库配置 再启动应用 这套流程了。

​ 技术层面查看了它的实现,是用了 ScriptRunner 连接数据库后执行指定目录的sql文件

  1. 对外接口的设计,它做了一层抽象,类似这种AbstractTemplateDirective,抽象的目的我猜测是 为了规范接口拓展 和 方便用户二次开发。这种设计正是 面向接口 面向抽象 编程的体现。

  2. 对外接口的设计,它还贴心的提供了 接口列表 接口, 调用后可以之间看到 系统有哪些接口。 假如系统新增接口,也不用再告诉三方 新的地址了,三方可以自己查。
    技术层面是用 Map保存起来的 Map<String, AbstractTemplateDirective>

  3. appToken 设计, 对外接口一般都要求传 appToken。 它是这样设计的, 首先在网站后台 创建一个三方应用,创建后自动生成appKey appSecurity,还可以设置该应用 可以调用哪些接口, token超时时间。 把 appKey appSecurity 告诉三方应用后,三方应用可以调用获取appToken的接口,获取到appToken后, 可以再利用该值 调用其他接口(比如发布文章接口)。
    这样设计的好处,我想可以对三方应用进行管理,更大层面讲 隔离应用,隔离接口,Token超时校验 保证了系统的安全性。

  4. 扩展字段的设计, 它允许用户自己定义有哪些扩展字段,然后对应的新增文章 和 查看文章 里 就会自动列出扩展字段,同时对外接口里也满足这种设计。 技术层面 我查看了它的表结构设计,有扩展表, 扩展字段表, 然后实际值是存了一个json到原表。
    这种设计是第一次遇到,它提供了一个思路,之前维护系统经常要加字段, 一般的方式 都是修改表结构, 有个这个方式后或许可以改变之前的方式。

  5. 大字段分表设计, 文章涉及的大字段(文章内容, 扩展json) 它是单独建表的,并没有在主表里. 这种设计倒是比较常见,我虽然之前也知道这种方式的好处,但是自己开发系统真正实际执行的时候为了省事 都直接在一个表里了。执行力还是不够,应该改正。

  6. 多语言设计, 它可以自由切换语言版本,实际对应的值是存到了properties。

  7. 大批量的静态化, 基本上它所有的界面 都可以静态化, 当访问网站时,你看到的数据 并不是临时从数据库读取的,而是之前就用freeMarker静态化好的,这样就减小了数据库的访问压力。

posted @ 2024-04-27 20:59  changlong2022  阅读(24)  评论(0编辑  收藏  举报