Model层自动化
前言(纯属捎带扯一下,后端大咖勿看)
谈到Model层自动化的产出我们就来从最初的地方开始讲,数据库!
无论你是用啥写服务器如果还手写Model那真的只能说你够low我服!不过如果是手写Model自动生成数据库那另说,总的来说就是要么从数据库转实体出来,要么从实体转数据库这才有点意思。
上边只是开玩笑下面正题,很多时候大家都无奈没办法不能说low不low,其中奥妙各有体会,通常有点规模的团队都是先定义表然后就出Model了
后端的Model层
后端数据库和实体互转的方案都不用Google,百度就能出来一大推,有直接读库生成的,也有从实体转sql生成库的,更有提前定义协议然后开始出对应模块对应语言的实体及sql
移动端的Model层
先继续谈会后台Model,这里要说的只是最好有一个提前定义的过程,这样一方面规范开发流程提前想好怎样建库合理,一方面有利于跨平台跨语言的开发,有了提前定义的协议,Model和枚举的各平台自动生成就方便了很多,写个简单的小程序即可,类型也就那几类。关键真的是一劳永逸,省去了大家互相校对的过程。
自动化生成移动端乃至前端用的Model层说白了就是做个类型映射,细说的话基本就是分为两类,一类直接就着后端现有项目读Model层的文件,然后做个类型的映射直接导出移动端需要的类,另一类也就是设计数据库时先定义Model的协议,然后根据协议自动生成各个平台需要的实体,而协议定义通常用序列化后的数据如xml(极力抵制,结构复杂),json,pb,sql文件都能干这事。
Model自动化实现
上面说到了xml,json,pb,sql文件都能干这件事,但其中最容易就是json,github上搜个json class基本就能有一大片总有你想要的语言,但json的局限在于也就能转换一下model,当然通过特殊定义中间转换,枚举啥的也能搞定,在这我推荐pb,首先它就是专门用来定义协议的,枚举实体不用说都能搞定,包括默认值设置也能写出来,而且是谷歌出品本身是im通讯协议,被它序列化的数据在上面说的里面算是最小的,而另一方面关于转码参考https://github.com/google/protobuf/blob/master/docs/third_party.md ,直接开放了各个语言的转换方法,当然你根本用不到它里面写的那么复杂,它的里面实体可是直接带pb转换model方法的,如果不是开发im根本用不到,要删部分源码实现自己的需要也行,。。。(下面讲一下正经方法)
Protobuf Convert转码
下面放代码片段(反馈的人多放全的,之所以不想放还有个原因是这边实现有点粗)
这里以Python为例,只是因为安装执行方便所以选它
转成OC的例子,之所以选OC因为我就是个搞IOS的。。。写起来各个公司需求不同每次都要改改改。。。也就是这个原因懒得放全的了,因为用的人说到底还是需要手动改成自己想要的,没有通用的。。。
more >>