给 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
[Dependency(ReplaceServices = true)]public class MyPrivateMessageAppService : PrivateMessageAppService{public MyPrivateMessageAppService(IDataFilter dataFilter,IExternalUserLookupServiceProvider externalUserLookupServiceProvider,IPrivateMessageRepository privateMessageRepository,IPrivateMessageNotificationManager notificationManager,IPrivateMessageSenderSideManager privateMessageSenderSideManager,IPrivateMessageReceiverSideManager privateMessageReceiverSideManager) : base(dataFilter,externalUserLookupServiceProvider, privateMessageRepository, notificationManager,privateMessageSenderSideManager, privateMessageReceiverSideManager){}public override Task<PrivateMessageDto> CreateAsync(CreateUpdatePrivateMessageDto input){if (input.ToUserName == CurrentUser.UserName){throw new UserFriendlyException("请勿给自己发消息");}return base.CreateAsync(input);}}
效果展示
基于 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(后文简称Abp)是 Volo 公司堪称艺术品级的应用开发框架,它基于领域驱动设计(DDD)的思维,创新地采用了模块化的设计.Abp 目前无疑是 ASP.NET Core 开发框架中 ...
- 聊一聊ABP vNext的模块化系统
官网: https://abp.io/ 开源: https://github.com/abpframework/abp EasyAbp: https://easyabp.io/ Abp 模块: htt ...
- abp vnext2.0之核心组件模块加载系统源码解析
abp vnext是abp官方在abp的基础之上构建的微服务架构,说实话,看完核心组件源码的时候,很兴奋,整个框架将组件化的细想运用的很好,真的超级解耦.老版整个框架依赖Castle的问题,vnext ...
- 四、Abp Vnext中使用Minio打造文件管理模块(上)
在Abp商业版本中已经提供了文件管理模块的,免费版本是没有的,本文将介绍如何使用Minio打造一个自己的文件管理模块. 在项目开始之前,需要先安装一个Minio服务,可以在本地pc或云主机中安装,具体 ...
- 六、Abp Vnext 中Efcore的多模块关联查询
abp框架提供了非常棒的模块开发体验,这些模块是可复用的,并且也适用于开发微服务:既然模块可以独立发布,那么它的数据库配置也是独立的,对于使用efcore的模块,每个模块中都包含一个不同的Dbcont ...
- 基于 abp vNext 和 .NET Core 开发博客项目 - 数据访问和代码优先
基于 abp vNext 和 .NET Core 开发博客项目 - 数据访问和代码优先 转载于:https://github.com/Meowv/Blog 本篇主要使用Entity Framework ...
- ABP vNext微服务架构详细教程——身份管理服务
1 框架搭建 ABP vNext创建包含app和module两种模板,其中app方式所创建的模板包含用户.角色.权限管理,ABP基础配置IdentityServer的基础配置数据等功能.module模 ...
- Abp Vnext Vue3 的版本实现
Abp Vnext Pro 的 Vue3 实现版本 开箱即用的中后台前端/设计解决方案 开始 Github地址 文档地址 演示地址 系统功能 [x] 用户管理 [x] 角色管理 [x] 审计日志 [x ...
最新文章
- 每一个项目都可以有一个项目blog page
- C++ Double-Ended Queues(双向队列)
- 【渝粤教育】广东开放大学 动画原画设计 形成性考核 (22)
- 清空本地_PyQt5播放实时视频流或本地视频文件
- matlab2c使用c++实现matlab函数系列教程-prod函数
- python | 降水数据分析(Ⅰ) 绘制全国降水四季分布图
- 从程序员到项目经理(九):程序员加油站 — 再牛也要合群
- Win10系统在哪里卸载软件
- 技术接受模型(TAM,Technology Acceptance Model)
- ios 持续获取定位 高德地图_iOS 定位 高德地图
- python金融量化分析 | 闲杂笔记
- php5编译安装常见错误和解决办法集锦
- 《大话设计模式》—— 读后感 (12)牛市股票还会亏钱?—— 外观模式
- 「大哉数学之为用」优选法——梯级水库灌溉的优化设计
- Java Type接口 运行时获取泛型类型
- 最通俗易懂的OSPF五种报文+七种状态
- 欧洲为何没有牛逼的互联网公司?
- 在 ASP.NET Core 中上传文件
- 操作系统内核参数semmni在节点上没有适当的值应为=128找到=0
- 学习 axios 源码整体架构,打造属于自己的请求库