關於.NET Framework / ASP.NET這條路

.NET Framework歷史版本及功能,第6點是我自己整理。
  1. .NET Framework 1.0
  2. .NET Framework 1.1
  3. .NET Framework 2.0
    CLR + Windows forms + Web Services + ASP.NET
  4. .NET Framework 3.0
    .NET Framework 2.0 + WCF + WF + WPF + CardSpace
  5. .NET Framework 3.5
    .NET Framework 3.0 + LINQ + AJAX + REST
  6. .NET Framework 4.0
    .NET Framework 3.5 + Entity Framework + ASP.NET MVC + Parallel
先說結論,再說故事。

結論

通常第一版都是實驗性質或有很大的改進空間,不管是多好的東西都一樣。從第二版開始,似乎是個不錯的開始。

故事1--.NET Framework 2.0


現在的資訊爆炸,但這些資訊你可以不看。但就資訊技術人員而言,技術更新的速度才是一大挑戰,以前一個技術能讓你十年有飯吃,現在一個技術能讓你三年有飯吃就很不錯了,技術更新的速度讓人「怕怕的」,我實在很敬佩那些永遠走在資訊前端的前輩,有著過人的領悟力與學習力。

話說從前,我是學習Visual Basic 6與ASP,為什學這兩樣?也沒有什麼特別的原因,學校教什麼,我們就學什麼,而且從Visual Basic 6接ASP(VB Script)還很順,所以在使用ASP上還算順手。

後來,微軟登高一呼:「我們要進入.NET的世界!」然後推出了.NET Framework 1.0,那時的ASP由2.0到3.0,ASP 3.0之後微軟也很明確表示,ASP不再更新維護了,因為微軟要全力推「.NET」這個…產品嗎?概念嗎?程式語言嗎?反正那時候認為是新一代的ASP就是了。

我還很認真的去買書來看,結果一個月後我就放棄了,那ASP.NET 1.0是什麼鬼東西,看不懂,結果我又回到ASP的身邊,反正工作上也只用的到ASP,會不會ASP.NET也不影響工作。

一段時間又過去了,突然發現,怎麼大家又在推「ASP.NET 2.0」,而且這一次好像又不一樣了,Survey之後發現,.NET Framework 2.0是個全新的改版,不同於.NET Framework 1.0 / 1.1,而且微軟似乎也發現開發人員的辛苦,承諾未來的改版會使用「積木式」方式來改版,就是說,你學了.NET Framework 2.0的東西,拿到.NET Framework 3.0 / 3.5 / 4.0上一樣都可以使用,讓你不會天天做打掉重練的工作。就是這一點,讓我試著相信它,開始學習著ASP.NET 2.0。

另外在.NET Framework 2.0還有一項重要事,那就是開發工具的完備,那是在.NET Framework 1.0 / 1.1所沒有的。在.NET Framework 2.0有Visual Studio 2005 / 2008兩個版本,我學ASP.NET 2.0時已經是Visual Studio 2008版本,就Visual Studio 2008來開發ASP.NET 2.0而言,還蠻快樂的。

[Key Point 1].NET Framework → .NET Framework 2.0

故事2--LINQ to SQL


時間飛快,在學習.NET Framework 2.0不久,.NET Framwork 3.0推出,3.0還沒有什麼感覺,又不久之後,馬上再推出.NET Framework 3.5,這個3.5版的推出又是一個高潮 ,因為它提供了幾個重要的元素「LINQ + AJAX + REST」,其中最紅的就是LINQ(Language-Integrated Query),LINQ是個統稱,內容幾項重要的技術內容LINQ to Object、LINQ to ADO.NET(LINQ to DataSet、LINQ to SQL)、LINQ to XML、LINQ to Entities。

如果有學LINQ,我相信其中的LINQ to SQL會是你的一項主力。不過,就在2008一篇「Update on LINQ to SQL and LINQ to Entities Roadmap」的微軟官方文章,給所有有學LINQ to SQL的人一顆炸彈,他們的一句「他們會很認真的聽取 LINQ to SQL 社群的聲音,然後好好的來加強我們的 Entity Framework 產品」嚇死了一堆人。

很明顯,他們將主力放在Entity Framework上面(可看成LINQ to Entities這一項),那LINQ to SQL呢?在.NET Framework 4.0有做一些錯誤修正,但請注意,他們已經很明顯未來會不斷加強的是Entity Framework,目前在.NET Framework 4.0裡的是Entity Framework 4.0,現在已經有Entity Framework 4.1版本可以下載安裝使用。

[Key Point 2] LINQ to SQL → LINQ to Entities → Entity Famework

故事3--Web Service


在ASP.NET 2.0時,提供了一個很棒的Web Services服務,也就是說,我可以把相關Function透過伺服器分享出來,分享給網路上其他需要的人使用。使用者只要引用我的Web Services,就可以立即擁有我所提供的服務。

Web Services好是好,但也是有一些問題,所以Microsoft在.NET Framework 3.5又提出了一個 REST,董大偉老師有篇介紹 REST 文章,可以知一二。

[Key Point 3] Web Service → REST

故事4-- ASP.NET MVC 2.0


在Visual Studio 2008 + .NET Framework 3.5時,微軟還推出了一個很重要的Web技術,即ASP.NET MVC 1.0,老實說,ASP.NET MVC 1.0我連碰都沒碰過,但我碰了ASP.NET MVC 2.0。ASP.NET MVC 2.0對我而言,感覺又回到寫ASP,再強調一下,是「感覺」,不是「回到寫ASP」,什麼感覺,是一種「操之在我」的感覺,但靈活度是ASP及ASP.NET完全比不上的感覺。

ASP.NET Web Form入門而言,實在好學好用,但當你要深入一些時,會發現就沒那怎容易,當你想把你的魔手伸的越深入,你就會發現Web Form的控制項越複雜。但一切一切問題在ASP.NET MVC身上都沒有,因為它根本沒有控制項!

不過想要學習、使用ASP.NET MVC,就我個人認為,不是件簡單的事,因為有許多觀念必須先行建立,物件導向程式設計、Visual Basic 9/10語法熟悉度、LINQ、.NET Framework Class…這些都會了,再學習ASP.NET MVC會比較輕鬆,不然走一步算一步是比較辛苦點。

最近,ASP.NET MVC 3又正式推出,在ASP.NET MVC 3裡有一個重點Razor View Engine,Razor是一個新的View Engine,在我們撰寫ASP.NET MVC 3時,它提供了更簡潔的語法。不過馬上就有人指出,使用Razor怪怪的,因為它會破壞MVC的規則,將Controller的內容放到View裡。但Razor也讓我們在撰寫View提供了很好的規範,不會整個畫面裡都是<% ~ %>的符號。

Razor最早是與另一套微軟免費入門網頁開發軟體WebMatrix所採用,後來可能覺的很不錯,所以在ASP.NET MVC 3.0也加入了Razor的支援。所以到了ASP.NET MVC 3.0你可以選擇使用<% ~ %>的Visual Basic語法,也可以使用Razor的@Code ~ End Code或@ViewData()之類的語法。

[Key Point 4] ASP.NET MVC 1.0 →  ASP.NET MVC 2.0 / 3.0, Razor View Engine

整理一下Key Point

  1. [Key Point 1] .NET Framework 1.0 → .NET Framework 2.0
  2. [Key Point 2] LINQ to SQL → LINQ to Entities
  3. [Key Point 3] Web Services → REST
  4. [Key Point 4] Web Form → ASP.NET MVC
每個技術背景都有故事,在.NET Framework的裡的每個進步,都是為了解決一些前一代的一些問題或提供更好的解決方案。我們不能怪微軟說,為什麼說放就放,說改就改,而是要去思考及了解前因後果,當然不是每件事的回答或解釋都讓開發人員滿意。

由以上來看,.NET Framework到目前為止,所推出的第一代技術都會被第二代技術替代,其實這是必然的結果,只是改的太兇,苦的是這是程式開發人員。但我們在每一項新技術推出之時,每篇文章、專欄、ABC大會、XYZ研討會…你都只會聽到「優點」,但我在意的是「缺點」呢?例如,這一篇「對Entity Framework Performance 抱怨以及建議」,說明Entity Framework 1.0版實在不怎麼樣,但現在的Entity Framework 4.0到是沒聽到這種聲音了,原因前提過了,Entity Framework是現在的主力。而缺點,通常會在一段時間,實際使用於專案上之後,才會出現。

如果你現在才要進入.NET Framework的世界,我個人是建議,如果是那種「最新」的技術,有精力再去研究,如果是第二版之後改進的技術,通常是可以上場見世面了。了解每一項技術所提供的優點及缺點,所以當我聽完優點後,會靜一靜,等等看市場上有沒有其他聲音。以上是我個人就我在.NET Framework/ASP.NET的學習上的驗經談。我的時間、精力有限,所以在.NET Framework/ASP.NET這條路,我是選擇走「老二哲學」。

Reference:

4 則留言:

  1. 微軟東西越推越多,分支也越來越多,PG也會越來越累,但不是每個人都是千手觀音,什麼都會,Entity Framework是主力,也只是對於sql server是好用的,其他的db是很難去享受他的好,很多的企業的資料庫也還在用sybase ,informix, 老舊的oracle,所以這些是不可能可以用到那麼新的技術,只能說微軟是資訊發展的推手,但也是讓我們這些pg追到很喘的殺手,個人感想

    回覆刪除
  2. Dear
    "只能說微軟是資訊發展的推手,但也是讓我們這些pg追到很喘的殺手"
    實在說的太棒了,給你個讚。

    我有時候在想,是不是怕我們太「閒」,然後跑去做壞事,所以一直推新技術,讓我們無力分身,Document看都看不完,想一想,我一輩子花最多時間看的書居然是MSDN,自己都覺的不應該及好笑!

    回覆刪除
  3. 同學,你也是很利害啊!一直在鑽研ms的東西,不過我已經是有點厭倦了,追不完的,當你覺得學到一個程度後,覺得差不多了,ms就會再出更多新的讓你左右為難,例如silverlight,從以前到現在,南部這邊在用的也沒幾家,版本一直昇,舊的一直丟,mvc現在也是,覺得微的東西前二代都是在搞笑的,碰只會讓自己覺一鼻子灰,累到後面後,會說,他X的!怎麼又不能用了,追不完的微軟,有你的..

    回覆刪除
  4. 厭倦,我也有過。
    你也不是還在MS SQL努力中。
    很難離得開MS,所以「追」之前會想清楚。

    回覆刪除

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。