五分钟完成 ABP vNext 通讯录 App 开发
abp vnext(后文简称abp)是 volo 公司堪称艺术品级的应用开发框架,它基于领域驱动设计(ddd)的思维,创新地采用了模块化的设计。abp 目前无疑是 asp.net core 开发框架中最先进和最优雅的存在。笔者认为,凭借绝妙的模块化设计和丝滑的开发体验,abp 有望超越 spring 家族在历史上的影响力。
模块开发与应用开发的关系
使用 abp 框架,你可以提前制作一些功能模块,例如微信登录、私信、博客、论坛等模块,将它们打包备用。在开发具体的 app 应用时,你可以轻松将模块安装到你的工程中,节省了大量的重复性工作。除了自己造*,你还可以在 nuget 上安装由开源社区维护的模块,当然,社区也在等待你的贡献。
五分钟完成通讯录 app 开发
今天我们不讲模块开发,而是从最简单的应用开发入手,笔者将遵循 abp 最佳实践,带你体验如何在 5 分钟内,使用 abp 框架开发一个通讯录 app。
第一步:使用 abp cli 生成项目
命令行安装 abp cli:
dotnet tool install -g volo.abp.cli
命令行生成通讯录 app 项目:
abp new addressbook
(将在当前目录中生成项目)
第二步:创建“联系人”实体
在 abp 中,联系人应为聚合根 aggregateroot,详细请参考 abp 官方手册对于领域驱动设计(ddd)的讲解。
新建 aspnet-core/src/addressbook.domain/contacts 目录
在目录下手动创建 contact.cs 文件
public class contact : aggregateroot<guid> { public virtual string name { get; protected set; } public virtual string phonenumber { get; protected set; } public virtual string address { get; protected set; } public virtual byte? age { get; protected set; } public virtual datetime? birthday { get; protected set; } protected contact() { } public contact( guid id, string name, string phonenumber, string address, byte? age, datetime? birthday) : base(id) { name = name; phonenumber = phonenumber; address = address; age = age; birthday = birthday; } }
- 运行 address.dbmigrator 项目,这是为了给数据库建立基础结构和数据
第三步:使用 abphelper 生成剩余代码
下载 abphelper gui:https://github.com/easyabp/abphelper.gui/releases
使用 code generator 功能,一键生成与 contact 相关的全套代码:
如果你是第一次使用,请通过左侧的 install or update abphelper cli module 安装 cli 工具
如果你更习惯命令行操作,可以直接使用 abphelper cli:https://github.com/easyabp/abphelper.cli
第四步:开发完毕
启动 addressbook.web 项目
登录并使用通讯录(admin 用户的默认密码是
1q2w3e*
)
你一定注意到了,表单已被 abp-dynamic-form taghelper 自动生成。另外,你只需要简单的修改本地化文件,就能显示出中文词汇,这里我们不做演示。
-
contact 的 restful api 也已经自动生成,如果需要它们,访问路由 /swagger
后记
我们的通讯录项目天然包含:用户权限角色管理、多租户 saas 支持,如果你打算系统的学习 abp 框架,请阅读官方手册:
文中使用的 abphelper 是由国内爱好者创建的 easyabp 开源组织制作的开发工具集,能明显提高你的开发效率,并且完全免费。此外,easyabp 还提供了很多实用的模块,了解更多:https://github.com/easyabp/easyabpguide
下一节
在下一节中,笔者将会介绍,如何给通讯录安装私信模块。此模块由 easyabp 组织开发并持续维护,你甚至可以在商业项目中免费使用它。
上一篇: MSSQL清理所有用户数据库日志(SQLSERVER2008)
下一篇: MySQL数据库---索引