[Day30] C# MVC 實際撰寫後之我的想法 - C#&AspNetCore

在此先說明一下,大概花了一個月製作了了一套商品出貨訂單系統的Side Project。
儲存庫:https://github.com/yuhsiang237/Order-System
影片網址:https://www.youtube.com/watch?v=nSk6OZjhDMY

所以這文章內容會包含很多我與之前的製作系統經驗的分享。

首先,MVC現在已經算是很主流的網站架構了,我在之前有使用過Laravel、ASP.NET Core MVC這兩套框架來設計系統,因此在整體的觀感上因為設計模式是有共同的出發點,所以上手難度是差不多,甚至說是無痛換上的感覺。因此,依照這個推論,如果仍有下個世代的框架出來,也是標榜MVC那也夠無痛接手,頂多就是學一些基礎語法糖而已。

而專案內通常有少部分會寫到演算法,我目前處理過最複雜演算法就是BFS,主要是要產生訂單的子代、父代,並且將畫圖產生出來,就是一張圖論的圖。這算是我在專案裡面處理過最複雜的結構。
這是我的演算法筆記用的存庫,遇到一些算法需求會整理上去。
https://github.com/yuhsiang237/AlgorithmStudy

而MVC基本上跟演算法無關。他只是給你一套共同認知的地基,讓你能夠跟其他人有共同基礎去打造事物,這有什麼好處呢?能夠增加維護性,因為在沒基礎下,需要知道整體脈絡怎麼寫必須去翻舊的程式碼,算是一部分技術債,而MVC則把這技術債降低,讓你能夠比較無痛的降低學習成本,有點像是一套彼此知道的內功,學會就能打天下。

再來我說說Laravel與ASP.NET Core MVC的差異。

在除錯上,C#有著地表最強IDE Visual Studio撐腰,所以除錯非常容易,只要中斷點下去跑一次八成就知道要改哪裡了。Laravel則需要肉眼DEBUG,或是自己插Return返回點。

在撰寫速度上,C#需要編譯時間,Laravel是直譯語言則不需要所以會快一些。但如果考量到C#便利的中斷點,那最後把時間拉長我認為是C#會是優勝。

在型別上,C#屬於強型別,每屬性有特定的類型,能夠讓自己很清楚知道要塞什麼數值。而Laravel則是弱型別,宣告是用$var所以大專案下來可能會不知道哪個是哪個變數,可能會造成數值塞錯報錯。

在直譯與編譯上,C#需要編譯才能知道撰寫成功與否,Laravel則是要當場跑才知道。如果C#可以成功編譯,那可能上線只會有邏輯錯誤;Laravel則是需要當場去試錯才比較可能知道問題。

在開發速度上,C# MVC有一套框架給你但並不給你便利的內建系統,如Seed塞值、資料庫遷移、內建Redius、等等。而Laravel則是全都給你了,所以你就只要寫邏輯就好。

在版本升級上,C# MVC基礎就View Model Controller所以升級版本只要考量套件問題,相容就沒問題,而現在ASP.NET Core仍然是用基礎寫法寫就能無痛升級。Laravel則是要考量目錄變動,因為它幫你內建很多功能,每個版本的寫法也不太相同。

在資料結構上,C#內建超多的資料結構,如List、Array、Directory、Hashset…幾乎是C++的STL演算法有的他都全包還擴增,而Laravel則是沒有,需要自己找套件包或自己寫,在處理複雜資料時就會稍微辛苦一點。

在其他領域應用上,C#能夠開發網頁、桌面程式、library、windows、linux(asp.net core)。而Laravel則是只能開發網頁。

總結

這是我對於這兩套MVC的差異理解,但總體來說還是看自己需求,以目前來看未來我會選擇C# MVC,因為在維護上方便許多、在台灣工作環境相對友善(?)。而更重要的是需求分析、設計模式、演算法方面,因此目前可能會往這邊走XD。
總之,哪種方法能夠讓我花最少成本大概就是它了,畢竟寫程式某種意義就是避免浪費時間。