新增一个字段或者变更某个字段的校验规则,只需要修改 Proto,不需要修改代码,从而防止因变更代码导致错误 。
3.3 基于 PB 反射的前端页面自动生成方案在我们常见的运营系统中,经常会涉及到各种各样的表单页面 。在前后端交互方面,当需要增加字段或者变更字段的校验规则时,需要面临如下问题:
- 前端:针对新字段编写 html 代码,同时需要修改前端页面;
- 后台:针对每个字段做接收,并进行校验 。
通过获取 Message 中每个字段的描述然后返回给前端,前端根据字段描述来展示页面,并且对字段进行校验 。同时通过这种方式,前后端可以共享一份表单校验规则 。
在使用上述方案之后,当我们需要增加字段或者变更字段的校验规则时,只需要在 Proto 中修改字段,大大节省了工作量,同时避免了因发布带来的风险问题 。
3.4 通用存储系统在运营系统中,前端输入字段,传入到后台,后台校验字段之后,一般还需要把数据存储到数据库中 。
对于某些运营系统来说,其希望能够快速接入一些数据,传统开发常常会面临如下问题:
- 如何在不增加或变更表结构的基础上,如何快速接入数据?
- 如何零开发实现频繁添加字段、新增渠道等需求?
- 如何兼容不同业务、不同数据协议(比如 PB 中的不同 message)?
以 3.2 节中的 Proto 为例,举例如下,学生类中定义了两个字段,name 和 email 字段,原始信息为:
Student oStudent;oStudent.set_name("xiaowei");oStudent.set_email("test@tencent.com");
通过 PB 的反射,可以转化为平铺的结构:[{"id":"1","value":"xiaowei"},{"id":"2","value":"test@tencent.com"}]
转化为平铺结构后,可以快速存入到数据库中 。如果现在学生信息里需要增加一个字段 address,则不需要修改表结构,从而完成存储动作 。利用 PB 反射,可以完成有结构数据和无结构数据之间的转换,达到存储和业务解耦的特性 。四、总结本文首先给出了 PB 的反射函数,然后再结合自己平时负责的工作,给出了 PB 的进阶使用 。通过对 PB 的进阶使用,可以大大提高开发和维护的效率,同时提升代码的优雅度 。有需要更进一步研究 PB 的,可以阅读其源代码,不得不说,通过阅读优秀代码能够极大的促进编程能力 。
需要注意的是 PB 反射需要依赖大量计算资源,在密集使用 PB 的场景下,需要注意 CPU 的使用情况 。
推荐阅读
- 绿杨春茶的冲泡方法,教你鉴别春茶的两方法
- 冬季雾霾来袭!中医教你清理肺部污染物
- 春季脖子易出问题 中医专家教你颈椎病防治之道
- 初春老犯困当心是脑梗 教你几招有效预防
- PHP微服务实践——手把手教你搭建PHP微服务
- 牛肉的做法 教你吃牛肉抗癌
- 咽喉炎吃什么好 教你食疗治咽喉炎
- 教你太极拳推手的5个姿势
- 教你读懂太极拳的八字决
- 路由器怎样重置密码?教你方法,简单实用很有效