AppBoxFuture实战: 如何同步开发与生产环境的模型
框架是用抽象模型驱动的方式来生成应用系统的,这样可以将这些模型序列化为相应的模型包文件,通过反序列化导入至其他部署环境内,从而实现开发环境与生产环境的同步,包括对应的数据库结构的同步。下面通过示例来演示如何操作:
一、准备测试应用
- 通过New->Application创建一个新应用,名称如:erp;
- 选择新建的应用的Entities目录,通过New->Entity新建一个实体模型并映射至Default存储内,随便添加些属性;
- 选择新建的应用的Services目录,通过New->Service新建一个服务模型,随便实现一个服务方法;
- 选择新建的应用的Views目录,通过New->View新建一个视图模型;
- 通过Models->Publish发布当前应用。
二、导出应用模型包
通过AppStore->Export Application选择相应的应用导出,参考以下动图:
三、导入应用模型包
导入应用模型包时框架会判断当前是否存在相同的应用,如果存在则会进行新旧模型的比对,进行相应的添加、删除、更新模型的操作,如果不存在则简单导入整个应用。在这里我们先尝试导入整个应用,所以先通过选择刚刚创建的应用,点击Models->Delete删除掉,然后再通过AppStore->Import Application重新导入,参考以下动图:
注意:如果模型包使用了非默认数据库,导入前需要先创建相同名称相同类型的存储模型。
四、更新应用模型包
以上步骤导入了一个新的应用,下面步骤尝试更新应用:
- 修改模型:比如实体模型添加一个属性或添加一个索引,服务模型修改一下逻辑;
- 重新发布并导出为新的应用模型包;
- 删除当前应用,导入旧的应用模型包(步骤二导出),查看一下模型定义;
- 再重新导入新的应用包(本步骤导出),再查看一下模型是否更新了,另外可看一下数据库的数据表结构是否同步更新了。
五、本篇小结
模型包的导入导出功能一方面可以方便同步开发与生产环境,另一方面作者将来想建设一个应用及外包市场,这样大家就可以在市场上下载模型包直接导入修改。GitHub/enjoycode上用于测试的Windows的部署包[appbox.deploy.win]也由GitHub Action自动更新,Linux请自行编译测试。另一边码代码一边码文实属不易,作者需要您的支持请您多多点赞推荐!