1. 程式人生 > >如何用ABP框架快速完成專案(4) - 如何正確使用ABP?

如何用ABP框架快速完成專案(4) - 如何正確使用ABP?

正如我在< 如何用ABP框架快速完成專案(2) - 快的定義!>提到的, 很多同學在使用ABP中遇到很多問題, 花了很多時間和精力, 然而從最根本的角度和方向上來看這些問題應該是不存在。 這些問題如果你正確使用了ABP是根本不會遇到這些問題的.   那麼如何正確使用ABP呢? 首先我們要與時俱進,既然選擇了ABP,其他同時代的技術和思想也要一併選擇. 舉個例子, 我們既然選擇了飛機, 就要把導彈也選上, 不要開著飛機然後用弓箭去和敵人開戰.   那麼同時代和ABP這架飛機匹配的武器有啥呢?
  1. .NET core和Angular/Vue等SPA框架
  2. 微服務
  3. BDD/TDD
  4. DevOps
其中DDD因為和ABP本身綁在一起, 所以就不單列了.   我們先從第一個說起, .net core和Angular/Vue等SPA框架   ABP有四大類版本:
  1. ASP.NET MVC 5.x + MPA
  2. ASP.NET MVC 5.x + AngularJS
  3. ASP.NET Core 2.x + MPA
  4. ASP.NET Core 2.x + Angular/Vue.js
  其中我用過第一個
ASP.NET
 MVC 5.x + MPA和第四個 ASP.NET Core 2.x + Angular, 目前正在使用 ASP.NET Core 2.x + Angular 為什麼我不再使用 ASP.NET MVC 5.x版本? 因為:
  1. ABP vNext已經明確不支援.NET, 不支援Asp.NET MVC 5.x, Entity Framework 6
  2. 微軟也不再更新ASP.NET MVC 5.x, 全部重心都放在ASP.NET Core
  3. Google自己都拋棄了AngularJS
那麼為啥不使用 ASP.NET
 Core 2.x + MPA呢? 因為:
  1. 我本人從來沒有編譯通過過.NET Core + MPA版本, 看來ABP對這個版本支援力度很小.
  2. 時代趨勢是前後端分離, 流行SPA, SPA不但可以在網頁端跑還能在PC端(Electorn)和移動端(Ionic)上跑.
  注: 之前有同學使用 ASP.NET MVC 5.x + MPA入門, 花了一個上午都沒有跑起來, 原因就是和我從來沒有編譯通過過.NET Core + MPA版本一樣, ABP對這個版本支援力度很小了. 甚至沒編譯通過都敢Release.   微服務和BDD\TDD還有DevOps會在後面章節詳細講, 所以這裡就跳過了.   然後現在是2018年了, 就不要用1998年的軟體開發思維啦. 所以:
  1. 不要升級專案。不要在舊專案上用abp
  2. 通過微服務分隔專案,在小的新專案上用abp
  1998年的時候, 我們開發軟體很期待dll新版本,一有dll新版本就升級.  因為那時候車馬很慢,書信很遠, 一生只夠愛一個人, windows/office兩三年才釋出一個新版本, 以年為單位 現在基本所有技術都6個月釋出一個新版本, 以月為單位, 比如我所用的技術:
  1. 去年今日, 用的是Activiti 5, 現在用7, 一年出兩個版本
  2. 去年今日, 用的是Angular 4, 現在用7, 一年出三個版本
更新如此之快, 導致向前相容性變得很差, 比如:
  1. Angular 1和Angular 2區別巨大,完全是不同兩個框架。
  2. Angular 6的Rxjs不相容Angular5
  3. Angular 7的表單丟棄部分舊版本支援
  4. ABP 3.8 UserManager類去掉CreateIdentityAsync()導致大量程式碼要重寫
  5. ABP經常會有Breaking Changes: https://github.com/aspnetboilerplate/module-zero-forsaken/releases
也就是說, 2018年和1998年不一樣啦, 每次升級都有可能導致程式跑不通了, 要改程式碼甚至要重寫大量程式碼. 這也是Nuget和NPM存在意義之一.   所以不要升級專案, 不要在舊專案上用abp, 因為不但可能要重寫大量程式碼, 甚至因為對abp不熟, 連應該怎樣重寫都不會. 然後通過微服務分隔專案, 在小的新專案上用abp, 從而避免新舊版本不相容的災難.   本節文章可能會嚇到不少同學, 然而整個行業都是如此, 只要你還在程式設計屆, 想拿高薪, 你必須面對這個事實. F117都退役了, 現在換F35了, 新時代的武器有新時代的玩法.   所以有同學問ABP團隊現在正在開發新的ABP, ABP vNext, 你怎麼看? 我覺得正常! 我們只能適應它.不過ABP vNext還沒正式釋出, 就算正式釋出也得需要一段時間去填坑, 所以不推薦用在正式專案中.   一句話做為本節文章的結尾吧: 快馬配弓箭, 飛機配導彈, 不要開著飛機卻拿著弓箭去和敵人開戰.