2016-02-18補充 ASP.NET 5已更名為ASP.NET Core 1.0



圖片來源

羊年開工第一天,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#,長痛不如短痛,跟上主流日子較輕鬆。

【2015-05-09更新】微軟於4/24宣佈,在全力用C#把跨平台ASP.NET 5拼上線後,收到眾多希望ASP.NET支援VB的呼聲,故決定ASP.NET 5將會在開發工具及跨平台執行環境上都支援VB。

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)。拒絕面對環境改變,不想學習新技能,難保不變成困在最後一塊浮冰上的北極熊… 共勉之。


Comments

# by 霧隱虎

〝別了,VB.NET 〞這段我不能認同,不知道是否專指中文?外文書籍及網站還是有列出VB.NET的寫法

# by Jeffrey

to 霧隱虎, 我同意你的看法,書籍的例子在中文書市場較明顯。英文書整體市場較大,有一定比例的使用者就足以支撐書藉出版。 基於微軟RD以及開發社群的主力成員幾乎都以C#為主,就長遠來看,愈來愈多的原始碼與範例是用C#撰寫這個趨勢只會更明顯,會變成若行有餘力後用工具翻譯一份給VB.NET社群參考,優先順序會不如C#(就像先有原文書,之後才有中文翻譯書),因此第一手的資料會以C#居多,例如:ASP.NET官網的4.5 WebForm教學就只有C#版( http://www.asp.net/web-forms/overview/getting-started/getting-started-with-aspnet-45-web-forms/introduction-and-overview )。 這讓VB.NET開發者較感挫折,沒有VB6或VBScript背景的.NET初學者要挑選語言,VB.NET不具語法熟悉優勢,範例資源又相對較少,我想長期下來VB.NET與C#的消長會更明顯。 <strike>而我覺得最關鍵性一點是.NET已確定會走向跨平台,C#在非Windows平台有mono相挺,VB.NET吃了大虧,是我認定之後二者差距愈來愈大的主因。</strike>更正:http://www.mono-project.com/docs/about-mono/languages/visualbasic/ 以上個人拙見。

# by 胡忠晞

MS 每次的升級都像是要我們向舊專案告別,新舊不相容,要使用新的工具,舊專案不是改寫就是放棄。

# by wellxion

to Jeffrey, WebForm被淘汰我認同,老實說到現在為止還有在改進的WebControl元件都是第三方廠商,這對於老是維護外包用基礎元件所寫網站的小弟來說,簡直超痛苦(跪地。 另外VB.NET也許會不再是主流,也許會變成C#的配角,但是不至於被淘汰掉(至少近幾年不至於吧....。會有C#資較這麼多的原因,也跟微軟這幾年的開源跟拓展平台政策有關,與其選擇跟WINDOWS核心綁死死的VB,還不如選擇C#這個跟JAVA一樣具有類似特性的語言,這點可以從今年微軟的動作看的出來(個人覺得與其說有MONO相挺還不如說是羊肥了,是時候了XDD)。

# by Jeffrey

to 胡忠晞, 不可否認,你說的是事實,ASP.NET5也好,Angular2也好,都讓開發者錯愕。自己寫過Framework,每次要做大版本更新也總陷入「相容性考慮得愈多,就愈難向前邁進」的掙扎… 最後只能有所割捨(我想到星際效應裡為了向前推進被一節一節丟棄的太空艙),如果能兩全其美,開發團隊不是虐待狂也不是要故意造孽,多是基於時程、資源、效益下的抉擇,畢竟不相容要付出被罵及可能失去支持者的代價。 被人幹譙的Breaking Change寫多了,我對這種情況也漸漸看開,也多了幾分體諒 :P

# by Jeffrey

to wellxion,我不認為WebForm及VB.NET有立即被淘汰的危險,但二者應無法擺脫「老兵不死,逐漸凋零」的命運。接觸.NET後,一直覺得它很有本錢被推向跨平台,只可惜先前微軟或許有產品策略考量,Mono只靠社群燃燒熱情支撐,缺乏官方背書,讓.NET走不出Windows。如今.NET走向跨平台,是我期盼且樂見的方向。

# by 蟹老闆

我覺得不用太慌張,微軟的東西常常改東改西,最後又會改回來或是放棄。 被陰的例子太多了...

# by 蟹老闆

我覺得不用太慌張,微軟的東西常常改東改西,最後又會改回來或是放棄。 被陰的例子太多了...

# by ChrisTorng

可跨 Windows 我還有疑問。 http://stackoverflow.com/questions/27760455/upgrade-mvc5-project-to-mvc6 說 MVC5 專案將無法直接升級 MVC6,http://stackoverflow.com/questions/28934499/can-current-rtmed-asp-net-mvc-5-project-run-on-net-core-to-run-in-linux 中還沒有明確答案說目前 MVC5 專案是否可於 Linux 上執行...如果不行,非得用 MVC6 大幅重寫的話,那就...問題大了... 另 WebForm 是否可在 Linux 上執行我也沒看到明確答案...

# by Jeffrey

to ChrisTorng, 可參考這篇:http://www.dotblogs.com.tw/gelis/archive/2015/02/25/150569.aspx ASP.NET 5大幅改寫架構,改在KRE執行,可以輕易移到Linux執行,而ASP.NET 5只支援MVC6。要將MVC5搬到Linux上並非不可能,但沒有官方支援,得自己想辦法(幾乎算是Hacking吧)且工程可觀。我認為如果真要在Linux跑,用MVC6改寫已是工程較少的策略。(畢竟是從綁平台跳到跨平台,很難無痛) 至於WebForm,由於它跟System.Web綁得太緊太深,目前ASP.NET 5不支援(KRE中沒有System.Web),未來會不會有?似乎沒人把話說死,但我認為可能性很低。

# by Hate VB.NET

我對VB.NET真是反感至極,語法這麼冗長不論寫或看都很不方便,它的存在只是讓那些曾經寫過VB或VBScript的人不用重新學習新語言而能夠開發.NET而已,確實,在公司很明顯看到用VB.NET都是一些年紀較大或對技術沒有熱忱的人。

# by mis2000lab

黑暗執行緒前輩此文一發,我從昨天到今天,接到好多初學者來信(畢竟晚輩主打初學者市場)。每位初學者都是這樣問「Web Form已死」??.....我這兩天回答了好多這樣的擔心問題 :-) 如果前些日子翻譯的文章屬實的話,詳見 ASP.NET 5概觀 -- http://www.dotblogs.com.tw/mis2000lab/archive/2014/12/03/aspnet_5_overview_webform_46.aspx ASP.NET 5本來就不包含Web Form。如果您要走跨平台,這次開放原始碼的MVC、EF、WebAPI等等,可以搭配"精簡的" .NET Core核心在其他OS上運作。 而舊版的軟體(含Web Form、或是舊版MVC)則需安裝 "完整版" .NET Framework來運作。 不管誰死誰活,走IT這行業,唯有「變」才是不變的真理。學無止境! 黑暗執行緒講的對,「學習及適應需要投入力氣時間,沒有人喜歡改變,沒有人想砍掉重練,但時代趨勢誰都無法阻擋,要存活只能不斷調整因應,融入潮流。」 我會建議「初學者」:在您手上什麼都空空的時候,選定一項技術(語言)好好打好基礎,將來用這樣的基礎去發揚光大。而不要在還沒有基礎的時候,每天"追星"、"選邊站",被版本的演進搞的人心惶惶,而忘了學習與打底才是自己本務! 還記得這些問題嗎? VB與C#哪種語言好? 該學Java還是 .NET ? ......這些問題真的對自己的學習與打底,沒有實質的幫助。只是引來更多慌張,耽擱自己而已。 因為很重要,我想再說一遍 不管誰死誰活,走IT這行業,唯有「變」才是不變的真理。學無止境! 技術的生死,我們無法掌握,畢竟我們只是技術的"用戶"(用它們來寫程式)。我們能作的就是不斷地學、不斷地強化自己,讓自己「有能力」可以跟上。 直接買新技術的書來學、來評估,對自己有幫助! 擔憂害怕、選邊站,這些資訊焦慮症,對自己(尤其是手上空空的初學者)沒幫助

# by mis2000lab

今天下午翻譯的作品,與大家分享 :-) [中文翻譯] ASP.NET 5 簡介 (Introducing ASP.NET 5,原作ScottGu 2015/2/13) http://www.dotblogs.com.tw/mis2000lab/archive/2015/03/11/aspnet_5_introduce_scottgu_20150223.aspx

# by Jeffrey

to mis2000lab,感謝分享。

# by 霧隱虎

@ Hate: 我不認同您所說VB語法這麼冗長不論寫或看都很不方便,霧隱虎我是VB起家,後學習C#,平時若心有餘力,每當寫完C# code 會順便寫VB code,如同魯夫發現新大陸的冒險精神般,都會有新奇的內容。 @ Jeffrey: 確實「老兵不死,逐漸凋零」,WebForm已經是成熟產品,隨著時空變遷,MSFT逐漸的走向開放,許多非ASP.NET的 Solution也逐漸的整合,身為後端工程師,也應主動瞭解ASP.NET執行環境而非拒絕。

# by wellxion

To Jeffrey, WebForm跟VB .NET的確不會很快被淘汰沒錯,可惜這兩樣跟windows綁太死了,而且後援疲乏,除非有熱心社群成為復活的後援,不然微軟勢必不會再放入更多心力在上面,不然以目前變遷速度,被淘汰的就是微軟了...。 To 胡忠晞, 對於一個成熟系統來說的確是個大災難,所以這次微軟也是採用並行的方式維護兩個版本的framework,就看需求有無必要升級了,但是這次改的幅度大到好痛啊XDDD。 To mis2000lab, 感謝翻譯分享;其實我覺得不管學哪套語言,最重要的還是要會吸收核心概念,這樣不管轉換哪套語言都能節省很多學習成本,這是被逼著.net和JAVA雙修的小弟心得...

# by Maxi

學習需要時間,研究要求課程,實習能夠超時,2.0的程式也可以使用標籤語言和邏輯語言,所以看到專案,能應用程式選擇多,就有更多人投入,多工服務的個人電腦,和綠星計劃平台。

# by Aurora

想跟Jeffery大請教一個問題,小弟我正在學習MVC,進而接觸Jquery,目前才正上手而已... 突然看到這篇文章...換成AngularJS,真是有如晴天霹靂,猶如黃河江水滔滔不絕(喂!) 小弟不才...請問這代表微軟要捨棄jquery,還是說兩者可以並存呢? <<非常資淺的小嫩嫩軟體工程師>> 是說Web Form還是有存在價值啦~~ 因為不少企業都還是只願意用 Web Form啦 要改簡直是要她們的命 XD

# by Jeffrey

to Aurora, AngularJS 1.x並不依賴jQuery,它內建了一個迷你版jqLite在沒有jQuery時可以頂著用。這意味著NG 1.x內部依賴jQuery函式做事,但即使沒有include jQuery,他也能靠jqLite運作,但就不能使用jQuery一堆好用的函式。(註:NG2拿掉了jqLite,但仍支援jQuery)。 Angular並不打算(也不可能)幹掉jQuery,jQuery的優勢也不因Angular出現消失,二者擅長領域不同,Angular提供MVVM/MVC框架,jQuery則是處理DOM的神器。以寫NG自訂元素為例,免不了要修改DOM、處理DOM事件,對我來說,要是沒有jQuery,李枝安抓鬼? 除非你有其他替代選項,要做好前端工作,jQuery還是順手好用的好兵器,值得投資時間學習。 相信我,WebForm還會活很久很久很久,只是逐漸淍零沒落,可發揮空間愈來愈少...

# by Aurora

to Jeffery大大 原來如此,既然擅長領域也不同,看來是可以互相搭配的。 假日剛好找了一下AngularJS相關資料,也在W3School把玩了一下,發現真的也是滿實用的!!當然還只是初淺的,有機會看來真的是需要好好研究研究~~ 不過AJS的連動效果實在是太讓我驚豔,尤其沒多就前剛好結束一個案子,內容是要在網頁上呈現有點像是EXCEL那種表格上計算的連動效果,雖然jQuery很好用了,但是做起來還真的是要命.... 可惜那時候還不認識AJS,不然應該會很好解決!!(菸~ 但還真是要推 >>>> 要是沒有jQuery,李枝安抓鬼? 話說,Jeffery大大有沒有考慮要再做個邊學邊做AngularJS系列呢?! 哈哈~

# by david

談到MVC ,也不得不提到Entity framework,EF7後就只有Code only的開發模式了,潮流檔不住,就需順應潮流了……

# by Geo douglas

ASP.NET 5 – C# Support And Also Visual Basic

# by Jeffrey

to Geo douglas, 謝謝回饋,已補充於本文。

# by 路人假

請問如果要在windows os上跑asp.net,這樣web server有哪些不錯的組合?支援穩定度? 謝謝

# by Jeffrey

to 路人假, 如果要在Windows上跑ASP.NET,使用IIS應該還是最好的選擇,支援及功能最完整。

# by Paris Qian Sen

有必要這麼哀怨么?程序猿掌握多門語言,學習多種技術不是很正常的事情么?都2015年了還在抱怨 VB 和 WebForm?我覺得這些不是早就該淘汰的技術么?

# by C#必敗

哈 2019再來看 笑了 VB.net 淘汰了C#

Post a comment


37 + 33 =