在新冠病毒的日子裡,我們釋出了ABP架構v2.3, 這篇文章将說明本次釋出新增内容和過去的兩周我們做了什麼.
關于新冠病毒和我們的團隊
關于冠狀病毒的狀況我們很難過.在Volosoft的團隊,我們有不同國家的遠端工作者在自己家裡工作.從上周開始,我們已經完全開始在家遠端工作,包括我們的主要辦公室的員工.
我們相信并祈禱人類會在很短的時間内克服這個問題.
關于釋出周期
從ABP v2.1.0開始,我們開始每兩周的周四釋出功能版本.本次是該決定後的第3次釋出,我們看到這種方式目前運轉良好,并提高了我們的靈活性.
我們将繼續每兩周釋出功能版本(如v2.4,v2.5).另外,如果需要我們會随時釋出熱修複版本(如v2.3.1,v2.3.2).
ABP架構v2.3.0新增内容
我們已在這兩周的開發周期内通過393次送出完成和合并了 104個issue和pull request.
我将介紹這個版本加入的一些新功能和改善.
React Native移動應用程式
我們終于完成了react native移動應用程式.目前,它可以讓你登入,管理使用者和租戶.它利用ABP架構相同的設定,授權和本地化系統.
應用程式的一些截圖:
它沒有太多的功能,但它是你的移動應用程式一個完美的起點,因為它是完全內建到後端并支援多租戶.
Angular TypeScript代理生成器
從我們的Angular應用程式中調用伺服器中的REST端點是很常見的.這種情況下,我們一般建立服務(在伺服器上包含各個服務的方法)和模型對象(對應伺服器上的DTO).
除了手動建立這樣的與伺服器互動的服務外,我們可以使用像NSWAG工具來為我們生成服務代理.但是NSWAG有以下幾個我們遇到的問題:
- 它産生一個大,單一的.ts檔案;
- 當你的應用程式增長時,它變得太大了.
- 它不适合ABP架構的 子產品化方式.
- 它建立了有點醜陋的代碼.我們希望有一個幹淨的代碼(就像我們手寫的).
- 它不能生成伺服器端聲明的相同的方法簽名(因為swagger.json不能準确地反映後端服務的方法簽名).我們已建立了公開伺服器端方法約定的端點,來允許用戶端生成更好的用戶端代理.
是以,我們決定建立一個ABP CLI指令來自動生成typescript用戶端代理(#2222),用于在ABP架構中開發REST API.
它用起來很簡單.隻需要在你Angular應用程式的根檔案夾運作以下指令
abp generate-proxy
它隻會為你自己的應用程式的服務建立代理.它(預設)不會為你使用的應用程式子產品建立代理.有幾個選項.參見CLI文檔.
複合主鍵的CRUD應用服務
CrudAppService
是一個很有用的基類,用來為你的實體建立CRUD應用服務.不過,它不支援複合主鍵的實體.
AbstractKeyCrudAppService
是新開發的基類以支援複合主鍵的實體.更多資訊請浏覽文檔.
添加子產品的源代碼
應用程式啟動模闆帶有一些應用子產品, 以Nuget和NPM包的方式預先安裝了 .這樣做有幾個重要的優點:
- 當新版本可用時, 你可以 輕松地更新 這些子產品.
- 你的解決方案更幹淨,這樣你就可以專注于自己的代碼.
但是,當你需要對一個依賴的子產品大量定制時,就不如它的代碼在你的應用程式中那麼容易.為了解決這個問題,我們引入了一個ABP CLI的新指令, 在你的解決方案中用代碼替換Nuget包.用法很簡單:
abp add-module --with-source-code
該指令以源代碼方式添加子產品, 或者如果子產品已經以包引用方式添加了, 則替換為源代碼,.
建議在使用此指令前儲存你的更改到源代碼控制系統, 因為它會修改很多你的代碼.
此外,我們也建立了文檔來說明如何定制依賴的子產品而不改變它們的源代碼(見下面的部分).仍然建議以包的方式使用子產品,以便在以後可以輕松更新.
免費子產品的源代碼是MIT許可,是以你可以自由更改它們并添加到您的解決方案中.
切換到預覽版
ABP架構正在迅速發展,我們經常釋出新版本.不過,如果你想更緊密地追随它,你可以使用每日預覽包.
我們建立了一個ABP CLI指令來輕松地為你的解決方案更新到最新的預覽包.在你的解決方案的根檔案夾中運作以下指令:
abp switch-to-preview
它會修改所有ABP相關的NuGet和NPM包的版本.當你需要時你也可以切換回最新穩定版:
abp switch-to-stable
更多資訊請浏覽ABP CLI文檔.
文檔改進
擴充/定制依賴應用子產品
我們建立了一個巨大的文檔來說明如何定制子產品依賴而不改變其源代碼.參見文檔.
除了文檔以外,我們已經修訂了所有子產品(#3166),來使他們的服務更容易擴充和定制.
EF Core遷移指南
最近,我們建立了一個指南,說明ABP啟動模闆所使用的遷移系統. 該指南還介紹了如何定制遷移結構,拆分你的子產品跨多個資料庫,複用一個子產品的表,等等.
從 ASP.NET Boilerplate遷移
如果你有建立在 ASP.NET Boilerplate的解決方案,我們建立了一個指南,試着幫助遷移你的解決方案到新的ABP架構上.
其他一些功能
架構
- 添加
和IRepository.GetAsync
方法(#3184).IRepository.FindAsync
子產品
- 當建立新租戶時擷取管理者的密碼和電子郵件位址,租戶管理子產品(#3088).
- 內建Elastic全文檢索, 文檔子產品(#2901).
- 新的Quartz背景工作者子產品(#2762)
示例
- 微服務示範添加多租戶支援(#3032).
所有的功能, 改善和BUG修複, 請浏覽釋出說明.
下一步?
我們未來幾個月的目标如下:
- 完成文檔和示例,寫更多的教程.
- 使架構和現有子產品的更加可定制和可擴充.
- 內建gRPC和為所有預置子產品實作gRPC端點(#2882).
- 為ABP架構建立Blazor UI, 并在所有子產品和啟動模闆中實作它(#394).
- 為預置子產品添加新功能,并為ABP商業版建立新子產品.
更多細節請浏覽GitHub裡程碑.