在上一節五分鐘完成 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 官方手冊的介紹。
改進模組:禁止使用者發私信給自己Abp vNext 框架支援應用對模組程式碼的重寫,在 AddressBook.Application 專案中新建 MyPrivateMessageAppService.cs
效果展示
基於 Abp 的高可擴充套件性,甚至 JS 和 CSS 等靜態檔案也能夠被重寫,請閱讀官方文件以了解更多用法:Customizing the Existing Modules