ABP vNext(后文簡稱Abp)是 Volo 公司堪稱藝術品級的應用開發框架,它基於領域驅動設計(DDD)的思維,創新地采用了模塊化的設計。Abp 目前無疑是 ASP.NET Core 開發框架中最先進和最優雅的存在。筆者認為,憑借絕妙的模塊化設計和絲滑的開發體驗,Abp 有望超越 Spring 家族在歷史上的影響力。
模塊開發與應用開發的關系
使用 Abp 框架,你可以提前制作一些功能模塊,例如微信登錄、私信、博客、論壇等模塊,將它們打包備用。在開發具體的 App 應用時,你可以輕松將模塊安裝到你的工程中,節省了大量的重復性工作。除了自己造輪子,你還可以在 NuGet 上安裝由開源社區維護的模塊,當然,社區也在等待你的貢獻。
五分鍾完成通訊錄 App 開發
今天我們不講模塊開發,而是從最簡單的應用開發入手,筆者將遵循 Abp 最佳實踐,帶你體驗如何在 5 分鍾內,使用 Abp 框架開發一個通訊錄 App。
第一步:使用 ABP CLI 生成項目
-
命令行安裝 ABP CLI:
dotnet tool install -g Volo.Abp.Cli
-
命令行生成通訊錄 App 項目:
abp new AddressBook
(將在當前目錄中生成項目)
第二步:創建“聯系人”實體
在 Abp 中,聯系人應為聚合根 AggregateRoot,詳細請參考 Abp 官方手冊對於領域驅動設計(DDD)的講解。
-
新建 aspnet-core/src/AddressBook.Domain/Contacts 目錄
-
在目錄下手動創建 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;
}
}
- 運行 Address.DbMigrator 項目,這是為了給數據庫建立基礎結構和數據
第三步:使用 AbpHelper 生成剩余代碼
-
下載 AbpHelper GUI:https://github.com/EasyAbp/AbpHelper.GUI/releases
-
使用 Code Generator 功能,一鍵生成與 Contact 相關的全套代碼:
如果你是第一次使用,請通過左側的 Install or update AbpHelper CLI module 安裝 CLI 工具
如果你更習慣命令行操作,可以直接使用 AbpHelper CLI:https://github.com/EasyAbp/AbpHelper.CLI
第四步:開發完畢
-
啟動 AddressBook.Web 項目
-
登錄並使用通訊錄(admin 用戶的默認密碼是
1q2w3E*
)
你一定注意到了,表單已被 abp-dynamic-form TagHelper 自動生成。另外,你只需要簡單的修改本地化文件,就能顯示出中文詞匯,這里我們不做演示。
- Contact 的 RESTful API 也已經自動生成,如果需要它們,訪問路由 /swagger
后記
我們的通訊錄項目天然包含:用戶權限角色管理、多租戶 SaaS 支持,如果你打算系統的學習 Abp 框架,請閱讀官方手冊:https://docs.abp.io
文中使用的 AbpHelper 是由國內愛好者創建的 EasyAbp 開源組織制作的開發工具集,能明顯提高你的開發效率,並且完全免費。此外,EasyAbp 還提供了很多實用的模塊,了解更多:https://github.com/EasyAbp/EasyAbpGuide
下一節
在下一節中,筆者將會介紹,如何給通訊錄安裝私信模塊。此模塊由 EasyAbp 組織開發並持續維護,你甚至可以在商業項目中免費使用它。