温州微网站制作哪里有,wordpress标签球形,手机怎么建立自己网站,最近的新闻事件在上一节五分钟完成 ABP vNext 通讯录 App 开发 中#xff0c;我们用完成了通讯录 App 的基础开发。这本章节#xff0c;我们会给通讯录 App 安装私信模块#xff0c;使不同用户能够通过相互发送消息#xff0c;并接收新私信的通知。在章节的最后#xff0c;笔者将演示模块… 在上一节五分钟完成 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 中找到 ConfigureAbpAspNetCoreMvcOptions(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 TaskPrivateMessageDto 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 系统。