给 ABP vNext 应用安装私信模块
在上一节五分钟完成 ABP vNext 通讯录 App 开发 中,我们用完成了通讯录 App 的基础开发。
这本章节,我们会给通讯录 App 安装私信模块,使不同用户能够通过相互发送消息,并接收新私信的通知。在章节的最后,笔者将演示模块的“改装”,实现禁止用户发私信给自己的定制化需求。
什么是“模块”?
使用 Abp 框架,你可以提前制作一些功能模块,例如微信登录、私信、博客、论坛等模块,将它们打包备用。在开发具体的 App 应用时,你可以轻松将模块安装到你的工程中,节省了大量的重复性工作。除了自己造轮子,你还可以在 NuGet 上安装由开源社区维护的模块,当然,社区也在等待你的贡献。
安装私信模块
笔者用到的私信应用模块(EasyAbp.PrivateMessaging)由 EasyAbp 组织开发并持续维护,你甚至可以在商业项目中免费使用它。现在,笔者将带你一步步给通讯录 App 安装此模块。
第一步:使用 NuGet 安装模块包
- 将 NuGet 包
EasyAbp.PrivateMessaging.Application
,安装到AddressBook.Application
项目。 - 将 NuGet 包
EasyAbp.PrivateMessaging.Application.Contracts
,安装到AddressBook.Application.Contracts
项目。 - 将 NuGet 包
EasyAbp.PrivateMessaging.Domain
,安装到AddressBook.Domain
项目。 - 将 NuGet 包
EasyAbp.PrivateMessaging.Domain.Shared
,安装到AddressBook.Domain.Shared
项目。 - 将 NuGet 包
EasyAbp.PrivateMessaging.EntityFrameworkCore
,安装到AddressBook.EntityFrameworkCore
项目。 - 将 NuGet 包
EasyAbp.PrivateMessaging.HttpApi
,安装到AddressBook.HttpApi
项目。 - 将 NuGet 包
EasyAbp.PrivateMessaging.HttpApi.Client
,安装到AddressBook.HttpApi.Client
项目。 - 将 NuGet 包
EasyAbp.PrivateMessaging.MongoDB
,安装到AddressBook.MongoDB
项目。 - 将 NuGet 包
EasyAbp.PrivateMessaging.Web
,安装到AddressBook.Web
项目。(如果你不需要 UI,可以跳过这一步)
第二步:添加配置
分别在以上项目的 Module 类中添加私信模块的依赖,例如:在 AddressBookApplicationModule.cs 中添加特性
[DependsOn(PrivateMessagingApplicationModule)]
,以此类推。在 AddressBookApplicationModule.cs 中找到
Configure<AbpAspNetCoreMvcOptions>(options => { ... });
,在里面加一行配置options.ConventionalControllers.Create(typeof(PrivateMessagingApplicationModule).Assembly);
,这一步是为了私信模块 WebAPI 的自动生成。在 AddressBookMigrationsDbContext.cs 中找到 OnModelCreating 方法,在里面加一行
builder.ConfigurePrivateMessaging();
,使私信模块的 EF Core 迁移能够进行。
第三步:创建 EF Core 迁移并更新数据库
不熟悉这块操作的同学可以参考 Abp 官方手册的介绍。
第四步:安装完毕
启动 AddressBook.Web 项目,可以看到私信模块已经安装成功了。
进一步了解 EasyAbp 私信模块:https://github.com/EasyAbp/PrivateMessaging
改进模块:禁止用户发私信给自己
Abp vNext 框架支持应用对模块代码的重写,在 AddressBook.Application 项目中新建 MyPrivateMessageAppService.cs
效果展示
基于 Abp 的高可扩展性,甚至 JS 和 CSS 等静态文件也能够被重写,请阅读官方文档以了解更多用法:Customizing the Existing Modules
后记
等到不久的将来 Abp 官方模块商城 market.abp.io 上线,文中手动安装模块的方式将成为历史,你只需要按一个键,模块就自动安装好了。在此之前,AbpHelper 可能会先开发一个简易的模块安装器,如果你有需要,请关注我们的进展:https://github.com/EasyAbp/EasyAbpGuide
下一节
在下一节中,笔者将会介绍,如何通过一个改动,让我们的通讯录 App 升级为多租户 SaaS 系统。
给 ABP vNext 应用安装私信模块的更多相关文章
- [Abp vNext 源码分析] - 2. 模块系统的变化
一.简要说明 本篇文章主要分析 Abp vNext 当中的模块系统,从类型构造层面上来看,Abp vNext 当中不再只是单纯的通过 AbpModuleManager 来管理其他的模块,它现在则是 I ...
- 五分钟完成 ABP vNext 通讯录 App 开发
五分钟完成 ABP vNext 通讯录 App 开发 ABP vNext(后文简称Abp)是 Volo 公司堪称艺术品级的应用开发框架,它基于领域驱动设计(DDD)的思维,创新地采用了模块化的设计.A ...
- [Abp vNext 源码分析] - 9. 接口参数的验证
一.简要说明 ABP vNext 当中的审计模块早在 依赖注入与拦截器一文中有所提及,但没有详细的对其进行分析. 审计模块是 ABP vNext 框架的一个基本组件,它能够提供一些实用日志记录.不过这 ...
- abp vnext2.0之核心组件模块加载系统源码解析与简单应用
abp vnext是abp官方在abp的基础之上构建的微服务架构,说实话,看完核心组件源码的时候,很兴奋,整个框架将组件化的细想运用的很好,真的超级解耦.老版整个框架依赖Castle的问题,vnext ...
- 浅谈Abp vNext的模块化设计
abp的模块化给我留下深刻的印象,模块化不是什么新概念,大家都习以为常,但是为什么要模块化,模块化的意义或者说目的是什么?也许我们思考得并不深入.难得的是abp不仅完美的阐述了模块化概念,而且把模块化 ...
- 在ABP VNext框架中对HttpApi模块的控制器进行基类封装
在ABP VNext框架中,HttpApi项目是我们作为Restful格式的控制器对象的封装项目,但往往很多案例都是简单的继承基类控制器AbpControllerBase,而需要在每个控制器里面重写很 ...
- 用abp vNext快速开发Quartz.NET定时任务管理界面
今天这篇文章我将通过实例代码带着大家一步一步通过abp vNext这个asp.net core的快速开发框架来进行Quartz.net定时任务调度的管理界面的开发.大伙最好跟着一起敲一下代码,当然源码 ...
- Abp vNext 切换MySql数据库
Abp vNext是Abp的下一代版本,目前还在经一步完善,代码已经全部重写了,好的东西保留了下来,去除了很多笨重的东西,从官宣来看,Abp vNext主要是为了以后微服务架构而诞生的. 从源码来看, ...
- [Abp vNext微服务实践] - 启动流程
前几篇分别介绍了abp vNext微服务框架和微服务CI/CD环境搭建,本篇开始介绍vNext微服务框架的开发环境搭建. 环境准备 官方介绍的系统架构图如下: 上图中身份服务和网关服务已经集成在系统中 ...
随机推荐
- JVM笔记(一)
<ignore_js_op> Class Loader类加载器负责加载class文件,class文件在文件开头有特定的文件标识,并且ClassLoader只负责class文件的加载,至于它 ...
- Apollo核心概念之“Namespace”
转载于https://github.com/ctripcorp/apollo,by Ctrip, Inc. Apollo核心概念之“Namespace” 1. 什么是Namespace? Namesp ...
- HexoC++第04课 构造析构.md
C++第04课 构造析构.mdhtml {overflow-x: initial !important;}#write, body { height: auto; } #write, #write h ...
- python编程基础——集合
集合是是基本数据类型的一种集合类型. 作用:去重 属性:intersection.union.difference.issubset 实例: list_1=[1,2,3,4,3,5,2,6,1]lis ...
- phaser2->3:来个打地鼠试水
本文中phaser具体版本 phaser2:2.8.1 phaser3:3.17.0 一.实现效果二.实现细节三.项目总结四.参考文档 一.实现效果 源码地址(phaser2&phaser3) ...
- 手机视频APP将关闭 生态梦成空的三星如何自救?
生态梦成空的三星如何自救?"> 三星如今的处境,只能用"屋漏偏逢连夜雨"来形容.继营收.利润.智能手机销量等大幅下滑之后,裁员也接踵而来,股价的下跌也自然在情理之中 ...
- OpenGL的矩阵使用——绘制桌子
其中最左边的桌子循环上移(即匀速上移到一定位置后回到原点继续匀速上移),中间的桌子不断旋转(即绕自身中间轴旋转),最右边的桌子循环缩小(即不断缩小到一定大小后回归原来大小继续缩小). 桌子的模型尺寸如 ...
- Liferay7 Intellij IDEA 开发环境搭建
一.安装Liferay插件 安装过程不在赘述,推荐两种安装方式: 通过Intellij插件市场安装 通过下载插件zip包安装 安装完成后,在项目板块中点鼠标右键,会出现Liferay菜单. 二.安装L ...
- android逆向---charles抓包
手机与电脑处于同一网络环境,且正确设置代理后,charles显示CONNECT失败,提示信息SSL handshake with client failed: An unknown issue occ ...
- MongoDB监控及报警
转载请注明出处:https://www.cnblogs.com/shining5/p/11142357.html MongoDB监控及报警 Prometheus是由SoundCloud开发的开源监控报 ...