[譯]ABP vNext介紹

譯者注

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


ABP vNext介紹

介紹

過去的一段時間,咱們正在設計一個新的主要版本的ASP.NET Boilerplate框架。如今,是時候與社區分享了。咱們很是興奮,相信你也是。數據庫

命名

框架的名稱保持不變,除了咱們將其僅稱爲「ABP」而不是「ASP.NET Boilerplate」。由於,「Boilerplate(樣板)」會致使誤解,並沒反映出它是一個框架(而不是樣板代碼)。咱們繼續使用「ABP」名稱,由於它是當前ASP.NET Boilerplate框架的繼承者,除了它是徹底重寫的。json

如何開始

咱們已經建立了一個啓動模板。您能夠從abp.io/Templates建立一個新項目並開始開發。欲瞭解更多信息,請訪問abp.iobootstrap

爲何要徹底重寫?

爲何咱們花了寶貴的時間從頭開始重寫它而不是增量更改和改進。爲何?

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 &rarr;</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

相關文章
相關標籤/搜索