ASP.NET Boilerplate是.Net平臺很是優秀的一個開源Web應用程序框架,在國內也有大量的粉絲.javascript
近日, 本人在github上閒逛, 發現ASP.NET Boilerplate團隊又悄悄的創建了一個新項目: ABP vNextcss
從名稱能夠看出來, 這是ASP.NET Boilerplate的下一代框架. 那麼, 爲何要開發這個新框架? 以前的框架還會繼續維護嗎?html
ASP.NET Boilerplate團隊的領導者hikalkan前幾天發佈了一篇博客(使用的就是ABP vNext搭建的博客系統), 詳細的說明了這些問題.java
本人將這篇文章翻譯過來, 共享給各位讀者粉絲. 全文使用Google翻譯+手工潤色, 不足之處, 請多包涵.git
原文地址:https://abp.io/blog/abp/Abp-vNext-Announcementgithub
轉載請註明原譯者(WAKU)和出處(https://www.cnblogs.com/waku/p/9708769.html)mongodb
過去的一段時間,咱們正在設計一個新的主要版本的ASP.NET Boilerplate框架。如今,是時候與社區分享了。咱們很是興奮,相信你也是。數據庫
框架的名稱保持不變,除了咱們將其僅稱爲「ABP」而不是「ASP.NET Boilerplate」。由於,「Boilerplate(樣板)」會致使誤解,並沒反映出它是一個框架(而不是樣板代碼)。咱們繼續使用「ABP」名稱,由於它是當前ASP.NET Boilerplate框架的繼承者,除了它是徹底重寫的。json
咱們已經建立了一個啓動模板。您能夠從abp.io/Templates建立一個新項目並開始開發。欲瞭解更多信息,請訪問abp.io。bootstrap
爲何咱們花了寶貴的時間從頭開始重寫它而不是增量更改和改進。爲何?
當咱們第一次介紹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框架可方便的開發微服務並使它們相互通訊。
咱們正在設計應用程序模塊,以便它們能夠做爲微服務單獨部署,或者能夠嵌入到單個應用程序中。
咱們正在爲此建立規範/最佳實踐文檔
新的ABP框架將基於最新的Twitter Bootstrap 4.x提供主題基礎設施。咱們開發了一個僅使用普通Bootstrap 4.x樣式的基本主題。它是免費和開源的。咱們還在開發高級和付費主題。
UI組合是主要目標之一。爲此,主題系統將提供菜單,工具欄和其餘可擴展區域,以容許其餘模塊交互(contribute)。
雖然當前的ASP.NET Boilerplate框架已經實現了ORM /數據庫無關的存儲庫(Repository)模式,但身份集成模塊(以Abp.Zero*命名的包)與EF之外的ORM一直運行的不太好。
使用新的ABP框架,最終目標是徹底抽象的底層數據存儲系統和開發與EF Core無關的模塊。
咱們將MongoDB做爲第一級別的數據庫,並在沒有任何關係數據庫或ORM假設的狀況下設計實體和存儲庫。
新的ABP框架爲內置服務提供了更多的擴展點和覆蓋的能力。
在本節中,我將介紹新ABP框架的一些使人興奮的新功能。
咱們正在建立一個庫將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文件來動態建立一個新的樣式包。這些文件在生產環境中捆綁和壓縮,但將在開發環境中單獨添加。
有關更多信息,請參閱文檔
在當前的ABP中,有一個IEventBus服務來觸發和處理應用程序內的事件。除了這個本地事件總線,咱們還建立了一個分佈式事件總線抽象(和RabbitMQ集成)來實現分佈式消息傳遞模式。
ABP已經爲全部HTTP API建立動態JavaScript代理。該功能也存在於新的ABP框架中。此外,它如今能夠爲全部HTTP API建立動態C#代理。
上面提到的全部東西都已經開發出來了。可是,咱們還有一些想法還沒有着手。
咱們在設計新框架時考慮到了SPA這一點。可是,咱們尚未嘗試過任何SPA框架,咱們尚未爲它準備一個啓動模板。
咱們有專門的開發和支持團隊積極致力於ASP.NET Boilerplate和ASP.NET Zero項目。這些項目有一個很大的社區,咱們也從社區中得到了貢獻。
咱們將在很長一段時間內繼續爲這些項目進行改進,添加新功能和修復錯誤。所以,您能夠安全地繼續使用它們。
尚未。咱們的第一個目標是使基本功能穩定,而後逐步完成其餘功能。
咱們會常常發佈新版本,每一個新版本均可能會有重大變化。咱們將在發行說明中寫下重大更改。
咱們目前將其定義爲實驗性質。但咱們但願這不會持續很長時間。咱們沒法肯定一個準確的日期,請關注咱們的發佈。
新的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