微軟為什麼要做 .NET?

是為了解決用戶什麼問題?

是為了解決開發人員什麼問題?

是為了解決微軟自己自身什麼問題?


1995年問世的Java揭示了PC的機能已經進入了可以用10倍的性能開銷換取10倍的開發便捷性的時代。對於極度看重Windows平台應用數量的微軟來說,這是毫無疑問的未來。所以就有了Visual J++和後來的.NET

----

題外話:

由於Anders Hejlsberg的卓越設計,.NET陣營對Java陣營的實力對比在2006年前後達到頂峰:由於.NET 3.0是個巨大的飛躍(Java陣營至今都沒有同等水平的內置的解決方案)加上又有SQL Server、Biztalk Server、Sharepoint Server以及一大堆微軟推出的專門用來支持二次開發的應用伺服器,.NET幾乎要在企業軟體開發領域一統江山,幾乎要徹底邊緣化Java。那時上線的StackOverflow也是選擇了當時最有前途的.NET技術。可是後來發生了好幾件事,歷史又有了轉折:

  1. Sun宣布Java開源(爭取到了大量怕被私有技術鎖定的用戶,尤其是Linux用戶)
  2. Vista失敗(用戶開始對微軟失去信心)
  3. Google Map(AJAX技術)標誌著Web應用進入2.0時代。大量企業軟體轉向Web前端而不是WPF/Winforms
  4. Apple超級大翻身,OSX成為了矽谷程序員首選作業平台。有史以來第一次有公司在微軟的正面戰場打敗了微軟。很多人意識到完全去微軟化是可能的
  5. Python、Ruby等腳本語言進入高速增長期

Windows/.NET平台開始了漫長的下坡路...


微軟最初的.Net戰略,同現在的.Net不是一個概念,這是妥協的結果。

微軟希望通過.Net來解決開發人員的問題,鞏固平台優勢,進而解決自己的問題。

在企業級應用上,微軟下了比較大的力氣,.Net目前主要是服務於這一領域。

如果微軟沒有.Net,就有可能面臨oracle因google在android上使用java,而向其索賠20億美元這類官司。


這是我的理解:)

我們看看在.NET誕生前,微軟為Windows平台的開發人員提供的是什麼技術:

1、win32平台

VC、VB、MFC

記得那時有句話:「真正的程序員用VC、聰明的程序員用Delphi」。

這句話說明的是Borland公司的Delphi(obj pascal+VCL)的抽象層次要高於VC+MFC,所以對程序員更友好,而又比VB更強大。微軟提供的技術無論從語言還是類庫,都比較「裸」。

2、Wince(Mobile)平台

embedded vc

與Win32差不多

3、Web

ASP(使用腳本語言VBScript)

那麼同時期的其他公司提供的開發平台是怎樣的:

在客戶端可以選用的有Borland的技術、也可以選擇跨平台的QT。我覺得都要比MFC更先進。

在Web開發上隨著95年Java的誕生,之後有了Servlet、JSP以及各種框架的誕生,使得ASP已經落後很多了。而且在富客戶端上還有Flash。

所以微軟需要一個大一統的新方案來改變客戶端、服務端的編程模型的落後的局面,而這時候在Borland工作的安德斯海參伯格(Delphi的創造者)極力主張放棄Delphi而轉向Java平台,這與公司CEO產生了分歧。比爾蓋茨這時重金把他挖了過來,負責.NET這個戰略平台的研發,所以可以看到.NET平台和Delphi、Java技術的很多相像的地方。可以說微軟和海森伯格互相成就了對方。他們的結合產生了這個意義重大的平台。後來的JSF、seam等技術又有借鑒http://ASP.NET的地方。而http://ASP.NET MVC、silverlight又和Struts、flash差不多。可以說Java、.NET這兩個生態在互相影響,這至少說明了他們已經在一個高度上了。

有了.NET這個平台後,至少有了這幾個好處:

1、整個開發平台拔高了一個層次(抽象層次)

2、PC、Mobile、Web的編程模型統一了

3、有了一個像JVM一樣的託管環境,程序不再那麼容易出錯,移植也方便了

4、順帶解決了一些老舊的問題:DLL hell、COM等,但也提供了向下兼容的技術:平台調用

所以.NET是非做不可的。


.net的用處其實完全可以從今天微軟的布局看出來。winrt看起來不像.net吧,對象模型和metadata都是用.net的spec,完全一致。Silverlight和Metro都用的WPF的設計,連開發工具blend expression都是統一的。最近又在推進phone和metro的API的統一了。

在面向不同領域的平台上寫程序想一次編譯到處運行是不現實的,因為你這樣做無法在所有平台上發揮最好的效果。儘管.net距離完美的目標還有很遠,但是至少微軟的做法做到了讓你的知識可以跨平台,絕大多數代碼都可以共享而不用重寫。


簡單點說,就為了拉攏程序員,你建個系統,總要有人在上面掛程序吧?

假如微軟沒有.net 而是被其他語言在自家系統上替代了,結果就是微軟會很被動,在release操作系統的時候要看別的語言的臉色,因為人家用戶基數大,如果不兼容要被罵死,但他自己有語言支持就不同了,當然也會被罵,但是自己能改啊。


關鍵是為了程序員在他的平台上開發程序變的容易,所以才請了Anders這種大神,程序語言,編譯器,開發工具,一萬多個庫,一起搞了,可惜搞的再好還是抵不過免費


用戶沒有問題要解決,用戶只關心應用程序的界面是否好看,速度是否快,至於是MFC還是.Net做的,無所謂;

絕大多數開發人員並不需要C++來開發Windows應用程序,太底層了,效率太低了,需要.Net來做好桌面開發,但.Net的UI設計並不好,比Apple差遠了;.Net應用於伺服器端最大的限制是Windows這個平台本身不穩定,作為伺服器比Unix/Linux差遠了。

微軟自己的問題很多,無法用一個.Net解決,最近他們不是又搞了一個WinRT來一統Windows API么?


也為了考慮到微軟有眾多c++開發者 PS: visual studio太TMD好用了


樓主問了三個問題,其實吧,微軟主要是要解決自己的問題:不做.net,微軟很可能會死——java逼的。1995年面世的java到2000年左右時如日中天,java的一次編寫到處運行,明顯會動搖windows的根基,於是不得不搞出.net戰略。起初對於.net戰略,微軟內部也是混亂的,連windows都要命名為http://windows.net,直到後來才只保留現在的.net平台。10多年過去了,事實證明.net戰略還是成功抑制了java的發展維護了windows的根基,可惜,在移動端卻沒站住陣腳,先入卻沒抓住優勢,導致今天的windows搖搖欲墜。


讓你丫的告我,直接掏你老底。最近已經煩透了的蓋茨心裡暗恨。


推薦閱讀:

頂尖即時戰略遊戲選手對戰術的理解在專業軍事院校的戰術教研室專家眼裡是個什麼水準?
如何看待歐洲各國出軍艦攔截難民?
常用的分析方法及模型有哪些?
青年毛澤東是如何培養出日後的戰略思維能力的 ?
絕大部分諮詢公司只為客戶制定戰略而不管執行,那麼有哪些優秀的系統性戰略執行方法?有執行方面的好書嗎?

TAG:微軟Microsoft | 戰略 | NET |