ABP架構v2.0 和 ABP商業版
ABP架構2.0版已經在本周公布.這篇文章解釋了為什麼我們釋出了一個搶先主版本,和2.0版本中的變化.
除了v2.0版本,我們很高興地宣布ABP商業版,這是建立在開源ABP架構的之上的一套專業的子產品,工具,主題和服務.
ABP架構V2.0
為什麼2.0,而不是1.2?
本來在V1.1.2釋出後計劃釋出1.2版.然而,有報告稱1.x版在Linux上有一些性能和穩定性問題,尤其是當應用程式部署在低配CPU和記憶體的Linux容器上.
我們深入研究了這一問題,并已查明問題的根本原因與攔截
async
方法的實作有關.此外,也有一些
async
套
sync
的用法影響了線程池的優化.
最後,在社群在大力協助下我們解決了所有的問題.但是,我們也有一些重要的設計決策導緻了一些破壞性變更,因為語義版本,我們不得不改變架構的主版号.
大多數的應用程式不會受到破壞性變更的影響,或者隻需要做一些微小的修改.
破壞性變更
删除了一些同步的API
一些攔截器需要使用
async
的API.當他們攔截
sync
方法時,他們需要調用
async
sync
.這最終導緻了
async
sync
的問題.這就是為什麼我們删除了一些同步的API.
當你需要在
async
方法中調用
sync
方法時,
async
sync
這種模式是
C#
一個經典問題.雖然有一些解決方法,但是都有相應的缺點,并建議不要寫這樣的代碼.你可以在網上找到關于這一話題的許多文檔.
為了避免這個問題,我們已經移除:
-
倉儲方法 (如sync
,insert
, 等...),update
-
工作單元API,sync
-
背景作業API,sync
-
審計日志API,sync
- 其他一些很少使用的
API.sync
如果你遇到了編譯錯誤,隻需使用這些API的
async
版本.
始終async!
從v2.0開始,ABP架構假設你以
async
方式編寫你的應用程式代碼.否則,一些架構的功能可能無法正常工作.
建議你的所有應用服務, 倉儲方法, 控制器動作(ontroller actions), 頁面處理器(page handlers)都是
async
.
即使你的應用服務方法并不需要是
async
,也将其設定為
async
,因為攔截器需要執行
async
操作(授權,工作單元等).你可以在不調用
async
的方法中傳回
Task.Completed
示例:
public Task<int> GetValueAsync()
{
//這個方法沒有任何async調用
return Task.CompletedTask(42);
}
上述例子通常并不需要是
async
因為它不執行
async
調用.然而,将它設定為
async
,這樣可以幫助ABP架構運作攔截器時避免出現
async
套sync的調用.
此規則不強制你寫的每一個方法都是
async
.這樣并不好而且很乏味.隻在攔截的服務上需要(特别是應用服務和倉庫方法)
其他破壞性變更
檢視發行說明中的破壞性變更.他們中的大多數都不會影響你的應用程式代碼.
新功能
本次釋出還包含一些新的功能和一堆改進:
- #2597 新的
包.Volo.Abp.AspNetCore.Serilog
- #2526
用戶端代理的用戶端驗證.C#
- #2374
背景作業.async
- #265 管理應用程式關閉.
- #2472
子產品實作IdentityServer
和DeviceFlowCodes
TokenCleanupService
功能,改進和BUG修複的完整清單, 請檢視釋出說明.
文檔
随着v2.0的釋出,我們也完成了一些缺少的文檔.在接下來的幾周内,我們将主要關注文檔和教程.
ABP商業版
ABP商業版是建立在開源ABP架構之上的一套專業的子產品,工具,主題和服務.
- 除了ABP架構免費和開源子產品之外, 提供專業子產品.
- 包含一個漂亮的UI主題, 具有5種不同的樣式.
- 提供ABP套件; 一個讓開發更具有生産力的工具. 通過配置實體屬性, 它可以在幾秒内建立全棧的CRUD頁面. 更多的功能陸續開發中.
- 為企業提供進階支援.
除了這些标準的功能,我們會将提供定制服務.更多細節請參見commercial.abp.io網站.
ABP架構 vs ABP商業版
ABP商業版不是付費版本的ABP架構.可以把它當作為專業公司提供的附加套餐.你可以用它來節省時間和更快地開發産品.
ABP架構将永遠是開源免費的!
一個原則是,我們建立的主要基礎設施作為開源産品, 然後銷售額外的預制應用程式功能,主題和工具.類似于ASP.NET Boilerplate和ASP.NET Zero産品.
購買商業版許可極大地節省你的時間和精力,你可以專注于自己的業務,此外也可獲得專門的和優先的支援.同時,你也在支援ABP核心團隊,因為我們花了大部分時間來開發,維護和支援開源的ABP架構.
有了ABP商業版,ABP現在變為一個平台.我們稱之為ABP.IO平台, 其中包括開源ABP架構和ABP商業版.
示範
如果你想知道ABP商業版應用程式的啟動模闆是什麼樣,你可以很容易地建立一個示範,并看到它的實際效果.該示範包括所有的預制子產品和主題.
下面是一張IdentityServer管理子產品UI的截圖:
這是一張來自使用material設計風格主題的示範應用程式的截圖:
價格
你可以建立無限個工程/産品, 銷售給無限個客戶, 部署在無限台伺服器上, 不受任何限制. 定價主要是基于開發人員個數,支援等級和源代碼需求上.有三個标準包;
- 團隊許可: 包括所有的子產品,主題和工具.允許最多3個開發者開發産品.可購買額外的開發者許可.
- 商業許可: 允許下載下傳所有的子產品和主題的源代碼.此外,預設包含了5個開發者許可.可購買額外的開發者許可.
- 企業許可: 在商業許可上, 提供無限的專屬支援.
請檢視價格頁面了解詳細資訊.除了标準包以外,我們也提供定制服務和定制許可.如有任何問題,請聯系我們.
許可比較
許可價格是根據開發者數量,支援等級和源代碼通路而變化的.
源代碼
團隊許可證不包括預制子產品和主題的源代碼.以NuGet和NPM包的方式使用所有這些子產品.通過這種方式,你可以很容易地通過更新包的依賴得到新功能和bug修複僅.但是不能通路其源代碼.是以不能嵌入子產品的源代碼到你的應用程式裡,和随意修改源代碼.
預制子產品提供一定等級的定制和擴充,并允許你覆寫服務,UI部分等.我們正在努力使他們更加可定制和可擴充.如果你無需在預制子產品中做很大修改的話,團隊許可是你理想的選擇,因為它更便宜,并且可輕松獲得新的功能和bug修複.
商業和企業許可允許你在需要時下載下傳任何子產品和主題的源代碼.它們使用與團隊許可相同的啟動模闆,是以所有的子產品都預設使用
NuGet
NPM
包.但是,在需要的情況下,你可以從一個子產品中删除包的依賴,并嵌入它的源代碼到你自己的解決方案中,然後完全定制它.在這種情況下,當一個新版本可用時, 更新子產品将不會那麼容易.當然, 你不必更新!但是,如果你願意,你也可以使用一些合并工具或Git的分支系統來做到這一點.
許可周期
ABP商業版許可是永久的,這意味着你可以永遠使用它繼續開發應用程式.
但是,下面的服務周期為一年:
- 進階支援一年後結束.你可以繼續得到社群支援.
- 一年後将不會得到子產品和主題的更新.你可以繼續使用最後獲得的版本.甚至可以在主版本内得到BUG修複和改進.
- 你可使用ABP套件一年.
如果想繼續獲得這些好處,可延長許可期限.續訂價格比正常價格低20%.
NDC London 2020
與去年一樣, 我們是著名的軟體開發會議NDC London的合作夥伴! 去年, 我們開展了ASP.NET Boilerplate和ASP.NET Zero主題:
今年,我們将着重于ABP.IO平台(開源ABP架構和ABP商業版).我們的展位會是這樣的:
如果你參加會議,記得要參觀我們的展位.我們将很高興來談一談ABP平台的功能,目标和軟體開發.
你想見ABP團隊嗎?
如果你在倫敦, 而且想和我們喝杯咖啡的話, 在2月1日的下午@hibrahimkalkan和@ismcagdas會在那.
想見面就給[email protected]寫個郵件 😃