[译]ABP vNext介绍
譯者注
ASP.NET Boilerplate是.Net平臺(tái)非常優(yōu)秀的一個(gè)開源Web應(yīng)用程序框架,在國內(nèi)也有大量的粉絲.
近日, 本人在github上閑逛, 發(fā)現(xiàn)ASP.NET Boilerplate團(tuán)隊(duì)又悄悄的建立了一個(gè)新項(xiàng)目:?ABP vNext
從名稱可以看出來, 這是ASP.NET Boilerplate的下一代框架. 那么, 為什么要開發(fā)這個(gè)新框架? 之前的框架還會(huì)繼續(xù)維護(hù)嗎?
ASP.NET Boilerplate團(tuán)隊(duì)的領(lǐng)導(dǎo)者h(yuǎn)ikalkan前幾天發(fā)布了一篇博客(使用的就是ABP vNext搭建的博客系統(tǒng)), 詳細(xì)的說明了這些問題.
本人將這篇文章翻譯過來, 共享給各位讀者粉絲. 全文使用Google翻譯+手工潤色, 不足之處, 請(qǐng)多包涵.
原文地址:https://abp.io/blog/abp/Abp-vNext-Announcement
轉(zhuǎn)載請(qǐng)注明原譯者(WAKU)和出處(https://www.cnblogs.com/waku/p/9708769.html)
ABP vNext介紹
介紹
過去的一段時(shí)間,我們正在設(shè)計(jì)一個(gè)新的主要版本的ASP.NET Boilerplate框架。現(xiàn)在,是時(shí)候與社區(qū)分享了。我們非常興奮,相信你也是。
命名
框架的名稱保持不變,除了我們將其僅稱為“ABP”而不是“ASP.NET Boilerplate”。因?yàn)?#xff0c;“Boilerplate(樣板)”會(huì)導(dǎo)致誤解,并沒反映出它是一個(gè)框架(而不是樣板代碼)。我們繼續(xù)使用“ABP”名稱,因?yàn)樗钱?dāng)前ASP.NET Boilerplate框架的繼承者,除了它是完全重寫的。
如何開始
我們已經(jīng)創(chuàng)建了一個(gè)啟動(dòng)模板。您可以從abp.io/Templates創(chuàng)建一個(gè)新項(xiàng)目并開始開發(fā)。欲了解更多信息,請(qǐng)?jiān)L問abp.io。
為什么要完全重寫?
為什么我們花了寶貴的時(shí)間從頭開始重寫它而不是增量更改和改進(jìn)。為什么?
ASP.NET Core
當(dāng)我們第一次介紹ABP框架時(shí),那是2013年(5年前)!那時(shí)候沒有.Net Core和ASP.NET Core,也沒有Angular2 +。ABP發(fā)布后,它們都是從頭開發(fā)的。
ASP.NET Core引入了許多內(nèi)置解決方案(擴(kuò)展庫),用于依賴注入,日志記錄,緩存,本地化,配置等。它們實(shí)際上獨(dú)立于ASP.NET Core,可用于任何類型的應(yīng)用程序。
我們之前使用第三方庫和我們自己的解決方案來滿足這些要求。在它們發(fā)布后我們立即集成到ASP.NET Core功能中。但這是集成,而不是在這些擴(kuò)展庫之上構(gòu)建ABP框架。例如,當(dāng)前的ASP.NET Boilerplate依賴于Castle Windsor進(jìn)行依賴注入,即使它已集成到ASP.NET Core的DI系統(tǒng)中。
我們希望依賴這些新的擴(kuò)展庫而不是第三方和自定義解決方案,這會(huì)改變框架的基本結(jié)構(gòu)。
自身模塊化
雖然目前的ABP本身已經(jīng)是模塊化的,并且包含許多包,但我們?nèi)匀幌M麑⒐δ芊纸鉃楦?xì)粒度的nuget包。
例如,核心Abp包包含許多功能,如DDD類,審計(jì),授權(quán),后臺(tái)作業(yè),事件總線,json序列化,本地化,多租戶,線程,時(shí)間等......我們希望將所有這些功能拆分到各自的包中并使它們可選。
放棄對(duì)傳統(tǒng)技術(shù)的支持
是的,新的ABP框架將不支持ASP.NET MVC 5.x,Entity Framework 6.x和其他傳統(tǒng)技術(shù)。
這些傳統(tǒng)技術(shù)會(huì)由Microsoft維護(hù),但不會(huì)再添加任何新功能。因此,如果您仍在使用這些技術(shù),則可以繼續(xù)使用當(dāng)前的ASP.NET Boilerplate框架。我們將繼續(xù)維護(hù)它,修復(fù)錯(cuò)誤并添加新功能。
刪除對(duì)這些傳統(tǒng)庫的支持將提高我們的開發(fā)速度(因?yàn)槲覀兡壳罢趶?fù)制我們的某些功能的工作)并專注于.Net Core和ASP.NET Core。
新的ABP框架將基于.net standard。因此,仍然可以在新的ABP框架中使用完整的.net framework或.net core。
目標(biāo)
我們從社區(qū)學(xué)到了很多東西,并且有開發(fā)當(dāng)前ASP.NET Boilerplate框架的經(jīng)驗(yàn)。新的ABP框架有著重要而令人興奮的目標(biāo)。
應(yīng)用程序模塊化
第一個(gè)目標(biāo)是提供良好的基礎(chǔ)設(shè)施來開發(fā)應(yīng)用程序模塊。我們將模塊視為一組應(yīng)用程序功能,具有自己的數(shù)據(jù)庫,自己的實(shí)體,服務(wù),API,UI頁面,組件等。
我們將創(chuàng)建一個(gè)包含免費(fèi)和付費(fèi)應(yīng)用程序模塊的模塊市場(chǎng)。您還可以在市場(chǎng)上發(fā)布自己的模塊。更多信息即將推出。
微服務(wù)
我們正在設(shè)計(jì)新的ABP框架可方便的開發(fā)微服務(wù)并使它們相互通信。
我們正在設(shè)計(jì)應(yīng)用程序模塊,以便它們可以作為微服務(wù)單獨(dú)部署,或者可以嵌入到單個(gè)應(yīng)用程序中。
我們正在為此創(chuàng)建規(guī)范/最佳實(shí)踐文檔
主題和UI組合
新的ABP框架將基于最新的Twitter Bootstrap 4.x提供主題基礎(chǔ)設(shè)施。我們開發(fā)了一個(gè)僅使用普通Bootstrap 4.x樣式的基本主題。它是免費(fèi)和開源的。我們還在開發(fā)高級(jí)和付費(fèi)主題。
UI組合是主要目標(biāo)之一。為此,主題系統(tǒng)將提供菜單,工具欄和其他可擴(kuò)展區(qū)域,以允許其他模塊交互(contribute)。
ORM / 數(shù)據(jù)庫無關(guān)性和MongoDB集成
雖然當(dāng)前的ASP.NET Boilerplate框架已經(jīng)實(shí)現(xiàn)了ORM /數(shù)據(jù)庫無關(guān)的存儲(chǔ)庫(Repository)模式,但身份集成模塊(以Abp.Zero*命名的包)與EF以外的ORM一直運(yùn)行的不太好。
使用新的ABP框架,最終目標(biāo)是完全抽象的底層數(shù)據(jù)存儲(chǔ)系統(tǒng)和開發(fā)與EF Core無關(guān)的模塊。
我們將MongoDB作為第一級(jí)別的數(shù)據(jù)庫,并在沒有任何關(guān)系數(shù)據(jù)庫或ORM假設(shè)的情況下設(shè)計(jì)實(shí)體和存儲(chǔ)庫。
更多可擴(kuò)展性
新的ABP框架為內(nèi)置服務(wù)提供了更多的擴(kuò)展點(diǎn)和覆蓋的能力。
一些功能
在本節(jié)中,我將介紹新ABP框架的一些令人興奮的新功能。
Bootstrap Tag Helpers
我們正在創(chuàng)建一個(gè)庫將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 bootstrapcard tag helper. ABP has tag helper wrappers for most ofthe bootstrap components. ? ? ? ? ? ?</p></abp-card-text><a abp-button="Primary" href="#">Go somewhere →</a></abp-card-body></abp-card>“abp-*”標(biāo)簽是ABP tag helper,用于簡化為Bootstrap 4.x編寫HTML。
動(dòng)態(tài)表單
動(dòng)態(tài)表單tag helper允許您為給定的模型類動(dòng)態(tài)地創(chuàng)建表單。例:
<abp-dynamic-form abp-model="@Model.PersonInput" submit-button="true" />輸出:
目前支持最常用的輸入類型. 更多類型正在開發(fā)中。
虛擬文件系統(tǒng)
虛擬文件系統(tǒng)允許您將視圖,頁面,組件,javascript,css,json和其他類型的文件嵌入到模塊程序集/包(dll)中,并在任何應(yīng)用程序中使用。在應(yīng)用程序中您的虛擬文件就像物理文件一樣, 完全的集成在ASP.NET Core中。
更多信息請(qǐng)參閱關(guān)于虛擬文件系統(tǒng)和相關(guān)文檔。
動(dòng)態(tài)捆綁和壓縮系統(tǒng)
動(dòng)態(tài)捆綁和壓縮系統(tǒng)運(yùn)行在虛擬文件系統(tǒng)上,并且允許模塊以模塊化,動(dòng)態(tài)和強(qiáng)大的方式創(chuàng)建,修改和交互捆綁包。一個(gè)例子:
<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(及其依賴項(xiàng),如果有)和另外兩個(gè)css文件來動(dòng)態(tài)創(chuàng)建一個(gè)新的樣式包。這些文件在生產(chǎn)環(huán)境中捆綁和壓縮,但將在開發(fā)環(huán)境中單獨(dú)添加。
有關(guān)更多信息,請(qǐng)參閱文檔
分布式事件總線(Distributed Event Bus)
在當(dāng)前的ABP中,有一個(gè)IEventBus服務(wù)來觸發(fā)和處理應(yīng)用程序內(nèi)的事件。除了這個(gè)本地事件總線,我們還創(chuàng)建了一個(gè)分布式事件總線抽象(和RabbitMQ集成)來實(shí)現(xiàn)分布式消息傳遞模式。
動(dòng)態(tài)C# HTTP客戶端代理
ABP已經(jīng)為所有HTTP API創(chuàng)建動(dòng)態(tài)JavaScript代理。該功能也存在于新的ABP框架中。此外,它現(xiàn)在可以為所有HTTP API創(chuàng)建動(dòng)態(tài)C#代理。
未來的工作
上面提到的所有東西都已經(jīng)開發(fā)出來了。但是,我們還有一些想法尚未著手。
單頁應(yīng)用程序(Single Page Applications)
我們?cè)谠O(shè)計(jì)新框架時(shí)考慮到了SPA這一點(diǎn)。但是,我們還沒有嘗試過任何SPA框架,我們還沒有為它準(zhǔn)備一個(gè)啟動(dòng)模板。
ASP.NET Boilerplate(當(dāng)前版本)和ASP.NET Zero會(huì)如何?
我們有專門的開發(fā)和支持團(tuán)隊(duì)積極致力于ASP.NET Boilerplate和ASP.NET Zero項(xiàng)目。這些項(xiàng)目有一個(gè)很大的社區(qū),我們也從社區(qū)中獲得了貢獻(xiàn)。
我們將在很長一段時(shí)間內(nèi)繼續(xù)為這些項(xiàng)目進(jìn)行改進(jìn),添加新功能和修復(fù)錯(cuò)誤。因此,您可以安全地繼續(xù)使用它們。
新的ABP可用在生產(chǎn)環(huán)境嗎?
還沒有。我們的第一個(gè)目標(biāo)是使基本功能穩(wěn)定,然后逐步完成其他功能。
我們會(huì)經(jīng)常發(fā)布新版本,每個(gè)新版本都可能會(huì)有重大變化。我們將在發(fā)行說明中寫下重大更改。
我們目前將其定義為實(shí)驗(yàn)性質(zhì)。但我們希望這不會(huì)持續(xù)很長時(shí)間。我們無法確定一個(gè)準(zhǔn)確的日期,請(qǐng)關(guān)注我們的發(fā)布。
包和版本控制
新的ABP框架將從v1.0開始,而不是遵循當(dāng)前的ASP.NET Boilerplate版本, 以反映它是一個(gè)重寫的事實(shí)。
我們會(huì)經(jīng)常發(fā)布它。你可以期待許多重大變化,直到v1.0。從v1.0開始,我們將注意不要在1.x版本中引入重大更改。
當(dāng)前ABP的包名稱以Abp前綴開頭(如Abp.EntityFrameworkCore)。新的包名稱以Volo.Abp前綴開頭(如Volo.Abp.EntityFrameworkCore)。
我應(yīng)該用哪一個(gè)?
如果您正在創(chuàng)建一個(gè)新項(xiàng)目,我們建議您繼續(xù)使用當(dāng)前的ASP.NET Boilerplate框架,因?yàn)樗浅3墒?#xff0c;功能豐富且可用于生產(chǎn)環(huán)境。
如果您愿意接受重大變化并希望體驗(yàn)新框架,那么您可以從新的ABP開始。我們不建議在臨近截止日期和在短期內(nèi)上線的項(xiàng)目上使用它。
貢獻(xiàn)
就像當(dāng)前的ABP框架一樣,您可為新框架做出貢獻(xiàn)。
您可以發(fā)送代碼或文檔的拉取請(qǐng)求。
您可以撰寫關(guān)于它的博客文章或教程。
您可以嘗試并分享您的經(jīng)驗(yàn)。
您可以提出改進(jìn)和功能請(qǐng)求。
您可以報(bào)告錯(cuò)誤和其他問題。
聯(lián)系/鏈接
官方網(wǎng)站:abp.io
Github:github.com/abpframework
Twitter:@abpframework
原文地址:?https://www.cnblogs.com/waku/p/9708769.html
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號(hào)文章匯總 http://www.csharpkit.com
總結(jié)
以上是生活随笔為你收集整理的[译]ABP vNext介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: asp.net core结合Gitlab
- 下一篇: dotnet core 开发无缝兼容Ht