我和ABP vNext 的故事
Abp VNext是Abp的.NET Core 版本,但它不僅僅只是程式碼重寫了。Abp團隊在過去多年社群和商業版本的反饋上做了很多的改進。包括效能、底層的框架設計,它融合了更多優雅的設計實踐。不管你是自己需要快速上手專案、或者是公司的研發團隊沒有足夠的能力去完整地開發一套穩定且功能全面的快速開發框架;對於.NET 系的開發者和公司來說,Abp目前就是你目前最好的選擇。2020年7月15日和騰飛Jesse、計節做了一次《我和ABP vNext的故事》直播,期間我分享時間超時,佔用了25分鐘,也就是這次直播分享時間超過我們預定的一小時。直播回看地址:https://wxc2160346e3bc5861.h5.xiaoe-tech.com/v1/course/video/v_5f0f9c39e4b04349896c2370?type=2
2018年我從騰訊離職開始創業至今,馬上就滿2年時間了,在這兩年時間裡我一直在伴隨ABP vNext這個專案成長,我的分享主題就是下面這三點,這三點也是大家非常關心的為什麼我要選擇ABP vNext。
ABP vNext 的前身是aspnetboilerplate, 2017年開始基於.NET Core 進行重構,新的框架名稱定義為ABP,目前已經發布3.0.4 版本。在國內ABP ,很多人可能對這個ABP vNext不太瞭解,很多人使用過的abp更多是老版本的aspnetboilerplate ,老版本的aspnetboilerplate 其實我也沒有深入使用過,我只用它做過一個簡單Demo,來自國內社群的使用體驗是臃腫複雜,效能差。 ABP vNext 我從0.5版本開始使用,2018年底我就在一家外企專案中匯入了ABP vNext,後面還有好幾個客戶專案也是匯入了ABP vNext。ABP vNext 採用敏捷的開發模式,每個月釋出一個版本。 最初的0.5版本時,底層的模組化等基礎框架已經具備可用性,所以那時候採用的ABP vNext的模式和騰飛後面給大家介紹的使用方式是一致的。 2019年11月在上海舉辦的首屆中國dotnet開發者峰會上也預約了2位講師介紹ABP vNext相關內容,其中土牛(土耳其大牛)簡單介紹Abp.io,分享對.NET Core和ABP框架的看法值得大家回顧一下:
還有另外一位講師粱士偉講的《下一代ASP.NET Core開源應用程式框架》,現在他是全職開發ABP vNext的國內開發者,在國內遠端工作,拿美元工資。目前在國內有兩位全職的ABP vNext開源開發者。
說起ABP vNext就不得不和老的aspnetboilerplate 進行比較。 ABP vNext 和 aspnetboilerplate 關係類似.NET Core和 .NET Framework的關係,ABP vNext是在aspnetboilerplate 專案多年經驗的基礎上針對.NET Core的特性重寫的聚焦於微服務的模組化框架。在我開始使用ABP vNext專案之前,我也在github上建立了一個整合.NET 社群開源專案的膠水程式碼專案NanoFabric,後面我再具體介紹這個專案的具體情況。2018年底我離職創業後不久我就發現了ABP vNext這個專案,他們還有一個專業的團隊在開發,我也就融入了這個ABP vNext社群, ABP vNext 在模組化軟體開發方面達到了新的層次,非常類似於樂高這樣搭積木體系, 我現在開發的大量專案都是才作用這種模組化的搭積木體系來進行,可以單體也可以微服務,非常的靈活,重用性方面也非常好,結合ABP vNext的商業版,可以做到從前端到後端的模組化重用。
我們開發軟體的時候都希望能夠使用快速開發框架來幫我們加快開發速度,也就是可重用的應用程式開發框架,對於這樣的一個可重用的應用程式框架並不簡單,從開發體驗方面,開發框架的不斷保持更新,完善的檔案支援,開發人員的培訓支援等方面都需要做出非常大努力。ABP vNext 也是這樣的一個可重用的應用程式框架。 在.NET社群裡一直有聲音是期望有一個Spring Boot這樣的專案,現在我可以告訴大家ABP vNext 可以媲美Spring Boot這樣的專案, ABP vNext 融合了大量.NET社群的開源專案,讓你在開發專案的過程中選擇不同的開源專案組合起來,大大降低你使用相關開源專案的門檻,最明顯的例子就是IdentityServer4, IdentityServer4是一個OpenID Connect 規範實現的開源框架,它還無法做到開箱即用這樣的一個層度,那麼ABP vNext 將IdentityServer4封裝成一個IdentityServer模組,你就可以做到開箱即用。
上面給大家介紹ABP 是什麼,前面也提到了aspnetboilerplate 體驗也並不好,為什麼我選擇使用ABP vNext。大家都在尋找一個好用的業務開發框架,這種開源業務開發框架也很多,大家都知道我們國內開發者一起組織發展的https://github.com/dotnetcore ,在這個社群裡已經有好幾個功能完善的應用開發框架,比如https://github.com/dotnetcore/Util,https://github.com/dotnetcore/OSharp,https://github.com/dotnetcore/WTM。這些開發框架我都沒有選擇的原因在於我的關注點在於微服務開發框架,基於k8s 的雲原生應用開發是未來的趨勢,去年我也一直在推廣.NET Core在k8s 執行, 我們的很多公司的團隊都很小,有的只有3-4個人,大的有幾百號人。我們要以雲原生的方式來開發應用,如何在不同規模的團隊之間平衡,如何在小團隊時採用單體架構,當團隊規模擴大後優雅的拆分成微服務架構,還有SaaS 在雲原生環境下的架構挑戰等。這幾個方面ABP vNext 都很好的解決了,上面提到幾個框架沒有很好的解決微服務場景下的應用開發框架,只做到了單體開發的模組化。
大家看到了ppt上這個專案NanoFabric,這個專案始於2017.2.2,這期間我有做過一次簡單分享,2018年10月份我就把它設定為只讀狀態,後面我就沒有繼續更新了,從此之後我就把這個專案的相關內容轉為使用ABP vNext,可以看到這個專案的star還在增長,說明有很多同學還在關注這個專案,有很多同學私下找我聊的時候我都是推薦他們使用ABP vNext,今年年出又發現了一新的組織https://github.com/easyabp ,因此我也加入了這一組織,現在我們有6位同學,主要是ABP 官方之外的使用ABP 的同學組成,大部分是國內使用ABP vNext的同學,也有國外社群,歡迎大家參與這個組織的發展,目標是幫助大家更容易的使用ABP vNext。今年年初的時候ABP vNext已經發布了2.0版本,已經比較成熟了,因此我也特意在這個專案的介紹上留下了這麼一段話,推薦大家轉到使用ABP vNext。
我已經使用ABP vNext將近2年時間,ABP vNext 目前在github的star 也超過了4000, ABP vNext相對於aspnetboilerplate 使用門檻相對提高,同時ABP Zero也很成熟,對應的就是ABP商業版 https://commercial.abp.io/, 粱桐銘同學搞的52ABP 也是有聲有色。 類似於52ABP的ABP的本地化內容也是我們Easyabp 社群組織讓大家更好的使用,比如對微信,支付寶,阿里雲,騰訊雲等本地資源的適配,在easyabp 裡有一個倉庫 https://github.com/EasyAbp/awesome-abp 彙集了abp的相關資源。 同時Easyabp 提供了類似於ABP 商業版的Abp suite工具,輔助我們快速開發應用。ABP vNext 現在也是我公司的應用開發框架,我公司網站上也有一個專門介紹ABP vNext的頁面 http://www.weyhd.com/abpvnext
今年年初我給騰飛介紹ABP vNext, 他開始接觸 Abp VNext的時候,就被它優雅的模組化和元件化設計吸引了。以前的Abp給人的感覺臃腫,現在Abp提供的多個功能你都可以在使用的時候自己選擇組合。基於橫切關注點的設計思路,可以很好的使用Abp所提供的一些基礎模組 。上半年騰飛給一些企業做過關於Abp的培訓,所接觸到的一些中小企業,包括我現在所在的企業研發團隊在80人以內都很難有足夠的能力去研發一套如何功能完整且穩定快速開發框架。與其自己投入大量的人力和時間造輪子,為什麼不選擇一套成熟穩定的開源產品呢? 因此他還特意錄製一個系列的視訊課程,放在dotnet課堂,歡迎大家一起來評估學習。