圖片來源
羊年開工第一天,Stephen Walther在部落格發表一篇新文章:ASP.NET 5及MVC6的十大變革,雖然大部分文章所提的,我先前就陸續看過或心裡有數,但全部聚在一起還是挺震憾。如果你現在有涉及ASP.NET專案開發,不管用的是WebForm、MVC、ASHX、WebService還是WCF,這次ASP.NET 5的改變象徵ASP.NET及.NET路線上的調整,此一發展方向遲早會影響大家的專案規劃、學習方向、公司策略,甚至職涯發展,即使有些變化(甚至該說是危機)還要好幾年才會降臨,但提早掌握情勢押對寶做好準備總是好事。這篇文章以一個寫了十幾年ASP.NET的老鳥觀點,整理我覺得影響較劇,應該提早因應的重點。若用更積極的態度,大家可依據自身條件,甚至該想想是不是已到「現在不改變,將來就會後悔」的關鍵時刻?
再會了,WebForm
我相信WebForm仍是當前ASP.NET專案的主力,市佔率遠勝ASP.NET MVC,但殘酷的事實擺在眼前,MVC、HTML5才是明日之星!這幾年WebForm開發者應已隱約感受每次新版發表對WebForm的著墨愈來愈少(但多少還是有),直到這次,ASP.NET 5完全看不到對WebForm的改革創新,即便VS2015(甚至再下一版的Visaul Studio)仍可編譯維護WebForm專案,但可以預見的劇情發展是:愈來愈多的新功能只支援MVC、Web API,WebForm不再改版進步,接著,WebControl元件廠商停止推出新版強化,漸漸中止技術支援,市場愈來愈難找到熟悉WebForm的人才(就算找得到也不會是新鮮的肝,你懂的… XD),寫WebForm專案的同學會像今天還在寫ASP的同學,需要強大心理素質面對冷言冷語:「現在都流行科技新貴,你怎麼還在做菜頭粿?」
以上預言要全部實現還有點遙遠(在本公司存活超過十年仍頭好壯壯沒人敢動的ASP表示:安啦,還早得很!) 但WebForm這條路,註定會愈走愈寂寞,愈走愈冷,WebService、SVC也會是相同處境。可預期在HTML5已成主流的今天,依賴PostBack運作的WebForm,難以整合最新的前端技術,做不出「目前最流行的網頁效果」,愈來愈難贏得使用者與開發者青睞,終究得退出江湖。
如果你現在工作主力仍在WebForm,行有餘力花點時間學習了解ASP.NET MVC/Web API這些新東西,保證是不會後悔的投資。
別了,VB.NET
當年從ASP VBScript/VB6 COM轉到.NET,曾一度為該選VB.NET還是C#猶豫,如今,可正式確認我押對寶了。(即使沒押對,之後幾年也會投靠C#吧!光看網路Sample Code比例就該知道)
這些年來,寫VB.NET的人愈來愈少。早些年,電腦書還得C#/VB.NET範例程式碼並陳,甚至為VB.NET及C#各出一本。而今新出版的電腦書裡已不見VB.NET範例,在網路上找到的文章VB.NET也近乎絕跡。
ASP.NET 5已不再提供VB.NET版專案範本(至少RTM前是如此,未來會不會透過Package加入支援不得而知。參考),如果你對VB.NET跟ASP.NET 5二者的堅持都強到「Over My Dead Body」,還是可能純手工用VB.NET打造ASP.NET 5網站,並容我致上最高敬意。
我想VB.NET會跟WebForm一樣,進入使用者愈來愈少,市場變小投入研發資源跟著變少的循環,進而走入歷史,手上仍有VB.NET專案的朋友可以考慮Telerik Code Converter之類工具,擇日將VB.NET轉成C#,長痛不如短痛,跟上主流日子較輕鬆。
AngularJS扶正
原本曾為ASP.NET 4專案先發陣容的Knockout,在這場KO vs NG較勁裡已確定敗下陣來(猶如當年ASP.NET AJAX vs JQuery的翻版,微軟終究得擁抱開發社群的主流選擇),Angular取代成為ASP.NET 5專案的先發一軍,Visual Studio 2015還提供建立AngularJS Module、Controller、Directive、Factory的項目模版,並整合了Grunt方便批次壓縮、打包Angular Script,在Visual Studio使用Angular將會享受更多便利。
另外,用Visual Studio寫Angluar程式,放著強大的TypeScript不用是暴殄天物。最近幾天有則大消息:TypeScript將正式成為Angular 2.0的開發語言(NG2.0改版幅度之大,足讓NG開發人員倒抽一口冷氣,且不支援NG1.x直接升級,基本上只能砍掉重練!但這又是另一篇故事了),想搭乘Angular 2.0列車,Visual Studio + TypeScript像張商務車票,可讓你舒適抵達目的地,好語言,不學嗎?
現在再回首,當初寫SPA專案決定由KO轉向NG是對的,未來可望繼續享受Visual Studio的強大支援。(謎之聲:尚書大人還真是機靈,在下佩服…)
擺脫Windows的束縛
過去ASP.NET跟IIS/Windows一直被緊緊綁在一起,這點在.NET開放原始碼後已完全改觀。而ASP.NET 5起,專案可選擇針對不同平台編譯,ASP.NET網站可輕易搬到Windows以外的平台(Mac、Linux甚至名片大小的樹莓派迷你電腦)執行。
基於成本考量,傳統架設大型網站主機群(Web Farm)多選擇Linux作業系統,過去ASP.NET面對這類情境就只能直接領便當。ASP.NET 5起就不同了,同樣的ASP.NET程式放在Windows、Mac或Linux都可照常執行,正式進入跨平台時代。
對於原有ASP.NET開發者,此一改變背後的挑戰除了學習ASP.NET 5新架構外,也要開始熟悉Windows以外的作業系統,學習怎麼用SSH/Telnet連上Linux下指令、查問題,如何用SCP/FTP從Windows上傳檔案到Linux主機,又有更多新東西要學囉!
結語
學習及適應需要投入力氣時間,沒有人喜歡改變,沒有人想砍掉重練,但時代趨勢誰都無法阻擋,要存活只能不斷調整因應,融入潮流。就算你厭煩一天到晚砍掉重練,氣餒到想改賣香雞排,也得想想顧客的喜好會一直改變,口味一成不變加上競爭激烈,只怕也撐不了幾年(說不定還沒WebForm撐得久 XD)。拒絕面對環境改變,不想學習新技能,難保不變成困在最後一塊浮冰上的北極熊… 共勉之。