专栏首页张善友的专栏五分钟完成 ABP vNext 通讯录 App 开发

五分钟完成 ABP vNext 通讯录 App 开发

ABP vNext(后文简称Abp)是 Volo 公司堪称艺术品级的应用开发框架,它基于领域驱动设计(DDD)的思维,创新地采用了模块化的设计。Abp 目前无疑是 ASP.NET Core 开发框架中最先进和最优雅的存在。笔者认为,凭借绝妙的模块化设计和丝滑的开发体验,Abp 有望超越 Spring 家族在历史上的影响力。

模块开发与应用开发的关系

使用 Abp 框架,你可以提前制作一些功能模块,例如微信登录、私信、博客、论坛等模块,将它们打包备用。在开发具体的 App 应用时,你可以轻松将模块安装到你的工程中,节省了大量的重复性工作。除了自己造轮子,你还可以在 NuGet 上安装由开源社区维护的模块,当然,社区也在等待你的贡献。

五分钟完成通讯录 App 开发

今天我们不讲模块开发,而是从最简单的应用开发入手,笔者将遵循 Abp 最佳实践,带你体验如何在 5 分钟内,使用 Abp 框架开发一个通讯录 App。

第一步:使用 ABP CLI 生成项目

  1. 命令行安装 ABP CLI:dotnet tool install -g Volo.Abp.Cli
  2. 命令行生成通讯录 App 项目:abp new AddressBook(将在当前目录中生成项目)

第二步:创建“联系人”实体

在 Abp 中,联系人应为聚合根 AggregateRoot,详细请参考 Abp 官方手册对于领域驱动设计(DDD)的讲解。

  1. 新建 aspnet-core/src/AddressBook.Domain/Contacts 目录
  2. 在目录下手动创建 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;
        }
    }
  1. 运行 Address.DbMigrator 项目,这是为了给数据库建立基础结构和数据

第三步:使用 AbpHelper 生成剩余代码

  1. 下载 AbpHelper GUI:https://github.com/EasyAbp/AbpHelper.GUI/releases
  2. 使用 Code Generator 功能,一键生成与 Contact 相关的全套代码:

如果你是第一次使用,请通过左侧的 Install or update AbpHelper CLI module 安装 CLI 工具 如果你更习惯命令行操作,可以直接使用 AbpHelper CLI:https://github.com/EasyAbp/AbpHelper.CLI

第四步:开发完毕

  1. 启动 AddressBook.Web 项目
  1. 登录并使用通讯录(admin 用户的默认密码是 1q2w3E*

你一定注意到了,表单已被 abp-dynamic-form TagHelper 自动生成。另外,你只需要简单的修改本地化文件,就能显示出中文词汇,这里我们不做演示。

  1. Contact 的 RESTful API 也已经自动生成,如果需要它们,访问路由 /swagger

后记

我们的通讯录项目天然包含:用户权限角色管理、多租户 SaaS 支持,如果你打算系统的学习 Abp 框架,请阅读官方手册:https://docs.abp.io

文中使用的 AbpHelper 是由国内爱好者创建的 EasyAbp 开源组织制作的开发工具集,能明显提高你的开发效率,并且完全免费。此外,EasyAbp 还提供了很多实用的模块,了解更多:https://github.com/EasyAbp/EasyAbpGuide

下一节

在下一节中,笔者将会介绍,如何给通讯录安装私信模块。此模块由 EasyAbp 组织开发并持续维护,你甚至可以在商业项目中免费使用它。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • c#开源消息队列中间件EQueue 教程

    一、简介 EQueue是一个参照RocketMQ实现的开源消息队列中间件,兼容Mono,具体可以参看作者的文章《分享一个c#写的开源分布式消息队列equeue》...

    张善友
  • 编译错误CS1595

    编译错误 说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。 编译器错误信息: CS1595: 已在多处...

    张善友
  • MySQL 5.0和PostgreSQL 8.1

    MySQL 5.0的发布已经有好些天了,添加了“企业应用”所需的特性,它终于支持存储过程和触发器了;不过,企业应用最大的需求之一,被很多初学者所忽略了的(这个现...

    张善友
  • Dart 笔记 11 - 泛型

    List 和 Map 字面量可以被参数化。参数化字面量就是在字面量的开始括号之前添加 <type>(对于 List)或者添加 <keyType, valueTy...

    七适散人
  • QT5和C++ 11:Lambda是你的朋友(翻译文)

    自从Qt5发布以来,我一直在推迟对我一直在做的一个项目升级到Qt5。即使是像这样的版本,从Qt 4.7到Qt 5(没错,跳过了4.8),出于某种原因也不...

    Qt君
  • 面试官问:平常你是怎么对Java服务进行调优的?

    Rain falls because the clouds can no longer handle it's weight; just like tears ...

    黄泽杰
  • 面试官问我:平常如何对你的Java程序进行调优?

    Java 应用性能优化是一个老生常谈的话题,典型的性能问题如页面响应慢、接口超时,服务器负载高、并发数低,数据库频繁死锁等。尤其是在“糙快猛”的互联网开发模式大...

    美的让人心动
  • Java性能调优最强实践,让系统飞起来~

    Java 应用性能的瓶颈点非常多,比如磁盘、内存、网络 I/O 等系统因素,Java 应用代码,JVM GC,数据库,缓存等。笔者根据个人经验,将 Java 性...

    lyb-geek
  • 面试官问:有JVM调优经验吗?

    Java 应用性能优化是一个老生常谈的话题,典型的性能问题如页面响应慢、接口超时,服务器负载高、并发数低,数据库频繁死锁等。尤其是在“糙快猛”的互联网开发模式大...

    用户4143945
  • 面试官问:平常你是怎么对Java服务进行调优的?

    Java 应用性能优化是一个老生常谈的话题,典型的性能问题如页面响应慢、接口超时,服务器负载高、并发数低,数据库频繁死锁等。尤其是在“糙快猛”的互联网开发模式大...

    java思维导图

扫码关注云+社区

领取腾讯云代金券