[譯]ABP vNext介紹
譯者注
ofollow,noindex" target="_blank">ASP.NET Boilerplate 是.Net平臺非常優秀的一個開源Web應用程式框架,在國內也有大量的粉絲.
近日, 本人在github上閒逛, 發現ASP.NET Boilerplate團隊又悄悄的建立了一個新專案: ABP vNext
從名稱可以看出來, 這是ASP.NET Boilerplate的下一代框架. 那麼, 為什麼要開發這個新框架? 之前的框架還會繼續維護嗎?
ASP.NET Boilerplate團隊的領導者hikalkan前幾天釋出了一篇部落格(使用的就是ABP vNext搭建的部落格系統), 詳細的說明了這些問題.
本人將這篇文章翻譯過來, 共享給各位讀者粉絲. 全文使用Google翻譯+手工潤色, 不足之處, 請多包涵.
原文地址:https://abp.io/blog/abp/Abp-vNext-Announcement
轉載請註明原譯者(WAKU)和出處(https://www.cnblogs.com/waku/p/9708769.html)
ABP vNext介紹
介紹
過去的一段時間,我們正在設計一個新的主要版本的ASP.NET Boilerplate框架。現在,是時候與社群分享了。我們非常興奮,相信你也是。
命名
框架的名稱保持不變,除了我們將其僅稱為“ABP”而不是“ASP.NET Boilerplate”。因為,“Boilerplate(樣板)”會導致誤解,並沒反映出它是一個框架(而不是樣板程式碼)。我們繼續使用“ABP”名稱,因為它是當前ASP.NET Boilerplate框架的繼承者,除了它是完全重寫的。
如何開始
我們已經建立了一個啟動模板。您可以從 abp.io/Templates 建立一個新專案並開始開發。欲瞭解更多資訊,請訪問 abp.io 。
為什麼要完全重寫?
為什麼我們花了寶貴的時間從頭開始重寫它而不是增量更改和改進。為什麼?
ASP.NET Core
當我們第一次介紹ABP框架時,那是2013年(5年前)!那時候沒有.Net Core和ASP.NET Core,也沒有Angular2 +。ABP釋出後,它們都是從頭開發的。
ASP.NET Core引入了許多內建解決方案(擴充套件庫),用於依賴注入,日誌記錄,快取,本地化,配置等。它們實際上獨立於ASP.NET Core,可用於任何型別的應用程式。
我們之前使用第三方庫和我們自己的解決方案來滿足這些要求。在它們釋出後我們立即整合到ASP.NET Core功能中。但這是整合,而不是在這些擴充套件庫之上構建ABP框架。例如,當前的ASP.NET Boilerplate依賴於Castle Windsor進行依賴注入,即使它已整合到ASP.NET Core的DI系統中。
我們希望依賴這些新的擴充套件庫而不是第三方和自定義解決方案,這會改變框架的基本結構。
自身模組化
雖然目前的ABP本身已經是模組化的,並且包含許多包,但我們仍然希望將功能分解為更細粒度的nuget包。
例如,核心Abp包包含許多功能,如DDD類,審計,授權,後臺作業,事件匯流排,json序列化,本地化,多租戶,執行緒,時間等......我們希望將所有這些功能拆分到各自的包中並使它們可選。
放棄對傳統技術的支援
是的,新的ABP框架將不支援ASP.NET MVC 5.x,Entity Framework 6.x和其他傳統技術。
這些傳統技術會由Microsoft維護,但不會再新增任何新功能。因此,如果您仍在使用這些技術,則可以繼續使用當前的ASP.NET Boilerplate框架。我們將繼續維護它,修復錯誤並新增新功能。
刪除對這些傳統庫的支援將提高我們的開發速度(因為我們目前正在複製我們的某些功能的工作)並專注於.Net Core和ASP.NET Core。
新的ABP框架將基於.net standard。因此,仍然可以在新的ABP框架中使用完整的.net framework或.net core。
目標
我們從社群學到了很多東西,並且有開發當前ASP.NET Boilerplate框架的經驗。新的ABP框架有著重要而令人興奮的目標。
應用程式模組化
第一個目標是提供良好的基礎設施來開發應用程式模組。我們將模組視為一組應用程式功能,具有自己的資料庫,自己的實體,服務,API,UI頁面,元件等。
我們將建立一個包含免費和付費應用程式模組的模組市場。您還可以在市場上釋出自己的模組。更多資訊即將推出。
微服務
我們正在設計新的ABP框架可方便的開發微服務並使它們相互通訊。
我們正在設計應用程式模組,以便它們可以作為微服務單獨部署,或者可以嵌入到單個應用程式中。
我們正在為此建立 規範/最佳實踐文件
主題和UI組合
新的ABP框架將基於最新的Twitter Bootstrap 4.x提供主題基礎設施。我們開發了一個僅使用普通Bootstrap 4.x樣式的基本主題。它是免費和開源的。我們還在開發高階和付費主題。
UI組合是主要目標之一。為此,主題系統將提供選單,工具欄和其他可擴充套件區域,以允許其他模組互動(contribute)。
ORM / 資料庫無關性和MongoDB整合
雖然當前的ASP.NET Boilerplate框架已經實現了ORM /資料庫無關的儲存庫(Repository)模式,但身份整合模組(以Abp.Zero*命名的包)與EF以外的ORM一直執行的不太好。
使用新的ABP框架,最終目標是完全抽象的底層資料儲存系統和開發與EF Core無關的模組。
我們將MongoDB作為第一級別的資料庫,並在沒有任何關係資料庫或ORM假設的情況下設計實體和儲存庫。
更多可擴充套件性
新的ABP框架為內建服務提供了更多的擴充套件點和覆蓋的能力。
一些功能
在本節中,我將介紹新ABP框架的一些令人興奮的新功能。
Bootstrap Tag Helpers
我們正在建立一個庫將twitter bootstrap 4.x元素/元件包裝到tag helper中。例:
<abp-card> <img abp-card-image="Top" src="~/images/my-dog.png" /> <abp-card-body> <abp-card-title>Card title</abp-card-title> <abp-card-text> <p> This is a sample card component built by ABP bootstrap card tag helper. ABP has tag helper wrappers for most of the bootstrap components. </p> </abp-card-text> <a abp-button="Primary" href="#">Go somewhere →</a> </abp-card-body> </abp-card>
“abp-*”標籤是ABP tag helper,用於簡化為Bootstrap 4.x編寫HTML。
動態表單
動態表單tag helper允許您為給定的模型類動態地建立表單。例:
<abp-dynamic-form abp-model="@Model.PersonInput" submit-button="true" />
輸出:
目前支援最常用的輸入型別. 更多型別正在開發中。
虛擬檔案系統
虛擬檔案系統允許您將檢視,頁面,元件,javascript,css,json和其他型別的檔案嵌入到模組程式集/包(dll)中,並在任何應用程式中使用。在應用程式中您的虛擬檔案就像物理檔案一樣, 完全的整合在ASP.NET Core中。
動態捆綁和壓縮系統
動態捆綁和壓縮系統執行在虛擬檔案系統上,並且允許模組以模組化,動態和強大的方式建立,修改和互動捆綁包。一個例子:
<abp-style-bundle> <abp-style type="@typeof(BootstrapStyleContributor)" /> <abp-style src="/libs/font-awesome/css/font-awesome.css" /> <abp-style src="/libs/toastr/toastr.css" /> </abp-style-bundle>
這段程式碼通過包含bootstrap(及其依賴項,如果有)和另外兩個css檔案來動態建立一個新的樣式包。這些檔案在生產環境中捆綁和壓縮,但將在開發環境中單獨新增。
有關更多資訊,請參閱 文件
分散式事件匯流排(Distributed Event Bus)
在當前的ABP中,有一個IEventBus服務來觸發和處理應用程式內的事件。除了這個本地事件匯流排,我們還建立了一個分散式事件匯流排抽象(和RabbitMQ整合)來實現分散式訊息傳遞模式。
動態C# HTTP客戶端代理
ABP已經為所有HTTP API建立動態JavaScript代理。該功能也存在於新的ABP框架中。此外,它現在可以為所有HTTP API建立動態C#代理。
未來的工作
上面提到的所有東西都已經開發出來了。但是,我們還有一些想法尚未著手。
單頁應用程式(Single Page Applications)
我們在設計新框架時考慮到了SPA這一點。但是,我們還沒有嘗試過任何SPA框架,我們還沒有為它準備一個啟動模板。
ASP.NET Boilerplate(當前版本)和ASP.NET Zero會如何?
我們有專門的開發和支援團隊積極致力於ASP.NET Boilerplate和ASP.NET Zero專案。這些專案有一個很大的社群,我們也從社群中獲得了貢獻。
我們將在很長一段時間內繼續為這些專案進行改進,新增新功能和修復錯誤。因此,您可以安全地繼續使用它們。
新的ABP可用在生產環境嗎?
還沒有。我們的第一個目標是使基本功能穩定,然後逐步完成其他功能。
我們會經常釋出新版本,每個新版本都可能會有重大變化。我們將在發行說明中寫下重大更改。
我們目前將其定義為實驗性質。但我們希望這不會持續很長時間。我們無法確定一個準確的日期,請關注我們的釋出。
包和版本控制
新的ABP框架將從v1.0開始,而不是遵循當前的ASP.NET Boilerplate版本, 以反映它是一個重寫的事實。
我們會經常釋出它。你可以期待許多重大變化,直到v1.0。從v1.0開始,我們將注意不要在1.x版本中引入重大更改。
當前ABP的包名稱以Abp字首開頭(如Abp.EntityFrameworkCore)。新的包名稱以Volo.Abp字首開頭(如Volo.Abp.EntityFrameworkCore)。
我應該用哪一個?
如果您正在建立一個新專案,我們建議您繼續使用當前的ASP.NET Boilerplate框架,因為它非常成熟,功能豐富且可用於生產環境。
如果您願意接受重大變化並希望體驗新框架,那麼您可以從新的ABP開始。我們不建議在臨近截止日期和在短期內上線的專案上使用它。
貢獻
就像當前的ABP框架一樣,您可為新框架做出貢獻。
- 您可以傳送程式碼或文件的拉取請求。
- 您可以撰寫關於它的部落格文章或教程。
- 您可以嘗試並分享您的經驗。
- 您可以提出改進和功能請求。
- 您可以報告錯誤和其他問題。
聯絡/連結
官方網站: abp.io
Github: github.com/abpframework
Twitter: @abpframework