既然.NET平台如此優秀,為什麼微軟不推廣到Linux、Mac等平台上?

據我了解.NET平台及其之上的C#語言非常優秀,要超過Qt、Java,為什麼微軟不推廣到Linux、Mac等平台上呢?現在只有一個Mono第三方項目盲人摸象般的將.NET框架移植到其他平台,效率比Windows下差不少。微軟自己移植的話會好很多吧,那樣.NET和C#肯定大火。


老問題新回答:

首先微軟以前就有通過Silverlight把.NET技術推廣到Mac OS X上,同時還贊助Mono團隊實現Moonlight推廣到Linux上。

然後,從「現在」(2014年底之後)的角度看,微軟的新策略是通過把.NET開源來將.NET推廣到Linux和Mac OS X上。

.NET Foundation

[CLR] 關於微軟開源.NET與其中的CoreCLR


題主還是圖樣,.Net/C#第一時間就open source了,MS還發布過一個官方的FreeBSD移植版,這個open source版也幾乎是第一時間就移植到了各種Linux上,不過當年大家都沒什麼興趣,都忙著去搞Java了,到頭來發現Oracle還不如MS……

如果題主對這些十幾年前的歷史有興趣,可以去搜一下rotor、SSCLI、DotGNU,然後你就會發現門戶之見有多蠢。


以前是伺服器為王時代。比如說,要假設一個稍微大一點的http://Asp.Net的網站,基本上要購買一些伺服器。買了伺服器就要購買windows server。所以.Net必須運行在windows上,否則的話,憑c#的開發效率和Linux的免費,沒人會買windows server的。

現在不同了,現在是雲計算年代,微軟投了很多錢在Azure上,也取得了很好的收益。傳統的購買伺服器裝操作系統模式已經不存在,在雲平台上,Linux和windows server的成本幾乎是差不多的。所以,微軟的戰略就改變了,讓.Net在Linux市場去翻雲覆雨,看看能不能帶動移動領域的增長。


不兼容Linux 的時候有人說它太封閉,兼容Linux 的時候也有人說.net混得不行了要依賴Linux 翻身。反正無論走哪一步都有各種噴子出來亂噴,吃力不討好的事情,連傻瓜都不會做。

何況現在ms和xamrain合作,前途相對光明,就無謂另闢新徑讓人烙下詬病。

最後Mono不是盲人摸象,至少.net是源代碼開放的,不懂的時候可以看看怎麼回事。

以上!


利益!

微軟一直都有自己的一套基於Windows的生態系統,它沒有任何動力去為其它平台提供解決方案,因為Windows之前幾十年都是作為它的現金牛存在的,它沒有必要去幫助別的平台發展。所以,雖然.Net設計的時候是跨平台的,但是這麼多年,在Linux上基本上沒什麼發展。(任何東西的發展,都必須有資金和利益,在Linux上做.Net既沒有利益,也沒有資金,結果可想而知)

但是,在移動時代,Android+iOS佔據了整個市場,微軟其實早幾年就該大力開發.Net跨平台,但是微軟一直希望Windows Phone能在移動市場上佔據一席之地,所以一直不願意去這麼做。新的CEO上台之後,意識到在Mobile這一塊,短期內不可能在OS上打敗Google, Apple,那麼這意味著逐漸失去開發者(已經在發生了,你看知乎上微軟技術有多少人關注,Android/iOS有多少人關注就知道了),那微軟整個生態系統就會崩潰,所以它開始大力推廣.Net跨平台,畢竟微軟在開發SDK, IDE方面還是有一定優勢的,Visual Studio還是很強大的。而.Net跨平台,就可以保住微軟現有的生態系統,微軟還可以推Univeral App, 這樣如果成功的話,公司用.Net開發應用, 給Android/iOS開發的時候,順帶也給Windows Phone開發,解決了Windows Phone沒有App所以沒有用戶,沒有用戶所以沒有人給他開發App的問題。

再加上這這些Open Source大行其道,各個大公司都在支持Open Source (我個人認為未來不擁抱Open Source的技術公司,都可能會死去),微軟讓.Net開源並支持Linux也算是順應時代潮流吧。


有mono和xamarin呀,Microsoft好像還是參與合作了。

http://www.mono-project.com/

http://xamarin.com/

Rumor: Is Microsoft about to buy Xamarin? http://www.zdnet.com/is-microsoft-about-to-buy-xamarin-7000027434/


2014 年 11 月 12 日,微軟官方宣布 .Net Core 開源,並將代碼託管在 Github,在提到從自己的 CodePlex 遷移到 Github 的原因時,原博文這樣說:

As a principle, we don』t want to ask the community to come to where we are. Instead, we want to go where the community already is.

可以看出,微軟對開源社區釋放了很大的善意,並且同時,推出了免費的針對個人的 Visual Studio 2013 Community 版本,相比於之前免費的 Express 版本,提供了全功能,只是在授權協議上做了針對個人用戶的限制:

Visual Studio Community 2013 is a new edition that enables you to unleash the full power of Visual Studio to develop cross-platform solutions. Create apps in one unified IDE. Get Visual Studio extensions that incorporate new languages, features, and development tools into this IDE.

如果聯繫 2014 年 4 月初微軟提出的 .Net Native,可以將 C# 開發的代碼編譯為原生機器碼,提供接近於 C++ 程序的運行性能。這個功能僅限於針對 Windows Store 的應用,但考慮到 Windows 8 的普及以及即將發布的 Windows 10,應用程序發布的官方渠道就是 Windows Store,而且結合基於 MVVM 的 WPF 框架,隨著硬碟空間不斷增大以及帶寬增大帶來的網速提高,用戶對應用程序大小敏感度下降,那我們可以想像這樣的場景:

  • Windows 平台應用程序使用 WPF 開發,提供優秀的界面交互。
  • 使用 C# 進行開發,提高開發效率。
  • 使用 .Net Native 進行編譯並發布,保證運行效率。
  • .Net Core 開源後,可以預期可以出現很多第三方的優秀庫,解決特定領域的問題,開發者的選擇更多,社區更活躍。

而且,從微軟在宣布 .Net Core 開源的同時發布的 Visual Studio 2015 Preview 來看,.Net 已經大步邁向跨平台,VS2015 已經集成了 LLVM 和 Clang 編譯器支持開發跨平台的應用。微軟推薦使用 Xamarin,可以使用 C# 在 Visual Studio 中開發 iOS,Android 以及 Windows 平台的應用,那麼需要支持多個移動平台的 App 開發者來說,有下面的優勢:

  • App 核心邏輯可以使用相同的代碼模塊,針對不同的平台設計不同的界面,提高代碼重用性、可維護性以及可擴展性,縮短開發周期。

至於 .Net 框架上的 http://ASP.NET vNext 以及 MVC,還需要看微軟將 .Net Framework 移植到 Linux 系統之後的性能。作為開發者,我們肯定願意麵對問題的時候有多個優秀可選項,所以對於微軟 2014 年的一系列調整,我們應該歡迎和讚賞,並期待接下來更多的驚喜。

mono 和 .NET Framework 相比性能慢很多嗎? - 編程 問題下面 戴路 給了一個性能測試的結果:

http://benchmarksgame.alioth.debian.org/u64q/benchmark.php?test=alllang=csharplang2=javadata=u64q


微軟已經把.Net推廣到Mac和Linux了,這是微軟提供的Linux和Mac OS X版本的.Net Core下載

coreclr/get-dotnetcore-dnx-linux.md at master · dotnet/coreclr · GitHub

coreclr/get-dotnetcore-dnx-osx.md at master · dotnet/coreclr · GitHub

最多只能說沒有把WPF推廣到Mac和Linux而已。


.NET的目標是「統一和簡化windows開發」,就是說最終目的是促進windows發展,而非促進.NET本身發展

.NET戰略並不是為了打敗linux下的JAVA來的,微軟希望在windows上創造一個JAVA,從而加快和強化windows平台發展

mono已經得到微軟官方承認,但是mono的方向已經變了,現在mono的目標是朝這移動化開發(Xamarin公司)發展,已經不做http://ASP.NET了

.NET出linux版,只能減少windows銷量,微軟減免授權費正是希望提高銷量,有怎麼會用這種方式減少windows銷量呢?


至少在以前的時代,Windows是微軟的命根子,所有其他產品都不能損害Windows的利益。所以關鍵的問題是,DotNet在其他平台的發展壯大對Windows有什麼好處?不過新的CEO好像不這麼想了。


正在做


2016-5-16 .net core正式發布rc2版,在6月末將會推出rtm版,.net core可以跨mac,linux,windows三大操作系統。

構建在.net core 之上的http://asp.net core也一起推出。並且推出了適合linux操作系統的cli命令行,詳情請參考http://dot.net網址。

在雲的時代,微軟關注點已經不再是賣了多少windows的key。而是讓很多企業選擇微軟雲。而微軟提供一門跨平台的.net實現,並且全力維護,是正確的選擇。


一些人口中美帝的三權分立,皿煮,人權這麼好,為什麼不推廣到全世界?

美帝:我儘力了,奈何其他國家變數太多,不能完美本地化。


出力不討好


開源的事情微軟都在做,畢竟好多明星項目,最大的金主就是微軟 。 但我感覺微軟實在太摳了,好技術都自己用,從來不拿出來分享。比如一直好奇的M#到底是個神馬東東。。


mono 不是 .net 的開源版本嗎?


其實對於程序員而言,多學一門O-C JAVA無所謂的


推薦閱讀:

TAG:NET | C# | 跨平台 | Mono |