如何用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框架
 
  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, 一年出三個版本
  3. 常用瀏覽器基本每6周就發布一個新版本, 請欣賞下圖:

     

    軟件更新如此之快, 導致向前兼容性變得很差, 比如:
  1. Angular 1和Angular 2區別巨大,完全是不同兩個框架。
  2. Angular 6的Rxjs不兼容Angular5
  3. Angular 7的表單丟棄部分舊版本支持
  4. ABP 3.8 UserManager類去掉CreateIdentityAsync()導致大量代碼要重寫
  5. ABP經常會有Breaking Changes
也就是說, 2018年和1998年不一樣啦, 每次升級都有可能導致程序跑不通了, 要改代碼甚至要重寫大量代碼.
這也是Nuget和NPM存在意義之一.
 
所以不要升級項目, 不要在舊項目上用abp, 因為不但可能要重寫大量代碼, 甚至因為對abp不熟, 連應該怎樣重寫都不會.
然后通過微服務分隔項目, 在小的新項目上用abp, 從而避免新舊版本不兼容的災難.
 
本節文章可能會嚇到不少同學, 然而整個行業都是如此, 只要你還在編程屆, 想拿高薪, 你必須面對這個事實. F117都退役了, 現在換F35了, 新時代的武器有新時代的玩法.
 
所以有同學問ABP團隊現在正在開發新的ABP, ABP vNext, 你怎么看? 我覺得正常! 我們只能適應它.不過ABP vNext還沒正式發布, 就算正式發布也得需要一段時間去填坑, 所以不推薦用在正式項目中.
 
一句話做為本節文章的結尾吧: 快馬配弓箭, 飛機配導彈, 不要開着飛機卻拿着弓箭去和敵人開戰. 

https://github.com/aspnetboilerplate/aspnetboilerplate/releases


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM