.NET的一点历史故事:擦肩而过的机遇
Sun 公司曾經借由 SunOS/Solaris 這個 UNIX 操作系統,SPARC 硬件平臺和 Java 語言建立了一個商業帝國。Sun 工作站應該是很多資深業界大佬們偶爾還會拿來回憶的一個經典產品。不過時間進入二十一世紀第一個十年的中段,它已經在競爭對手的輪番進攻下顯出了頹勢。作為最后一搏,當時的管理層采納了開放源代碼這個方式,希望學習網景公司孕育 Mozilla/Firefox 的經驗來扭轉乾坤。于是2005年,它宣布了 OpenSolaris 項目,開源自己的操作系統,并在2006年11月13日,更近一步將自己核心資產 Java 平臺開源,并采用 GPL 這個非常嚴格的授權協議。雖然這些努力并沒有完全解決 Sun 公司的經營困難,它最終被甲骨文收購,但是開放+開源的 Java 平臺確實在之后的十幾年中頂住了新型語言的沖擊,既然是 IT 業界廣泛采用的主要技術。與之相比,微軟一家主導并且完全綁定在 Windows 平臺的 .NET 技術,在二十一世紀的發展過程中卻是從平淡無奇開始的。
2002年2月13日發布了 .NET Framework 1.0 和 Visual Studio .NET 2002 之后,微軟將研發資源同時投到了多個領域,希望在廣度和深度上追上 Java 的腳步。這些投資在后來的三年內逐步提升了 .NET 平臺的開發靈活性,也補上了一些缺環,但是是否符合用戶的需要則必須另說了。
第一個重要升級是2003年4月3日,微軟發布了Visual Studio .NET 2003 和 .NET Framework 1.1。這個版本帶來了一些新的特性,但是明顯比較平淡:
IP v6支持
ODBC 和甲骨文數據庫支持
配合 Windows CE 開發的 Compact Framework
ASP.NET 對于移動瀏覽器的支持
在2007年 iPhone 發布之前,J2ME 和 Windows CE 的競爭只能說是小孩打架。所以這次升級更多的是配合微軟 Windows Server 2003 的發布。畢竟 Windows Server 2003 是微軟第一個內置 .NET Framework 的 Windows 發布版本。
下一個重要升級就拖到了2005年11月7號的 .NET Framework 2.0 和 Visual Studio 2005。從這里開始,.NET 開始慢慢在廣度上追上 Java,比如加入官方構建工具 MSBuild,官方測試框架 MSTest,加入64位支持,同時在深度上開始超越 Java,比如在 CLR/MSIL 層面實現真正的泛型。同時微軟開始發布適合嵌入式系統使用的Micro Framework。
有了這個關鍵的版本做基礎,微軟后面連續發布了 .NET Framework 3.0 (2006年11月6日) 和 3.5 (2007年11月19日),終于在廣度上再進一步,加入 WPF、WCF、WF 和 EF,ASP.NET 開始支持 AJAX。在深度方面,.NET 開始引入 LINQ 機制,使得數據庫操作可以不使用 SQL 等查詢語言,而是在 C# 等語言層面直接集成。
在 Java 開源之前,微軟也做出了一些積極行動,比如
2004年4月5日在 SourceForge 開源了 WiX 工具
2006年6月正式上線了 CodePlex 開源托管平臺
2006年11月2日和 Novell 公司達成了一系列開源軟件相關的合作(Novell 公司當時是 Mono 項目的領導者,所以這些合作對于 Mono 團隊有很大幫助)
但是它一直沒有在是否開源 .NET 平臺問題上做出決定。這些當然我們事后來看都是可以理解的,因為
微軟公司的創始人 Bill Gates 領導了商業軟件革命,使得軟件有版權這一理念深入人心,并且建立了自己的微軟帝國,同時也促使了其他商業軟件公司成長壯大。
開源軟件運動對于商業軟件公司具有潛在威脅,而大型商業軟件公司選擇開源自己產品的案例不多(網景、IBM和Sun走在了時代的前列)。
微軟公司內部對于如何運作開源項目,如何把開源代碼作為競爭手段缺乏了解,所以遲疑不決。
但是當時沒有追隨 Java 開源的熱潮去做 .NET 平臺的開源,對于微軟來說還是棋差一招。等它八年后意識到必須走開源這條路的時候,IT 世界的版圖已經完全不同了。
相關文章:
.NET 的一點歷史往事:和 Java 的恩怨
.NET的一點歷史故事:招兵買馬和聚義山林
原文地址:http://weibo.com/ttarticle/p/show?id=2309404102499094119132
.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注
總結
以上是生活随笔為你收集整理的.NET的一点历史故事:擦肩而过的机遇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Akka系列---什么是Actor
- 下一篇: 浅析如何在Nancy中生成API文档