社群討論:開源能否拯救.NET?

infoq發表於2014-12-02

  近日,微軟開源了 .NET,其目的是要將自己的生態核心從 Windows 轉向 Azure 雲端,並建立起一個執行良好的生態圈(包括軟體、硬體)。同時,微軟還欲向 Android 平臺滲透並撼動 Java 伺服器端開發的地位。另外,對於開發者而言,微軟開源了 .NET 也算是建立了一個 Java 平臺的開源替代平臺。微軟的願景是美好的,但是能否撼動 Java 的地位,並建立起自己的良好生態圈還是個未知數,至少需要時間去驗證。

  首先,微軟已錯過了開源的最佳時機。Java 由 Sun Microsystems 公司於 1995 年 5 月推出,它還得到了 JCPApache 基金會、Oracle、IBM、Google、SAP 等眾多歷開源組織、公司以及非組織個人的支援,並貢獻了大量的功能元件和開源專案。歷經將近 20 年的發展,Java 平臺已經穩坐伺服器端開發的寶座,幾乎處於不可撼動的地位。而微軟於 2000 年才推出了與 Java 競爭的 .NET 平臺和 C# 程式語言,且侷限在微軟作業系統體系下執行,還缺少第三方組織、公司的支援。微軟相關負責人表示,微軟將 .NET 開源的決定並不是心血來潮,而是醞釀了幾年的結果。可見,微軟的確錯過了開源的最佳時機。

  來自 RedHat 的 Arun Gupta 評論到:

微軟開源 .NET 的意圖是好的,不過,.NET 要真正成為 Java 的一種替代或威脅,仍然需要好幾年的時間。

  其次,良好生態圈的形成不是一件簡單的事情,開源 .NET 只是建立生態圈的第一步。任何開源專案要想取得成功,構建一個開源社群是非常關鍵的一個條件,但是構建一個開源社群不是一朝一夕的事情。尤其在接受外部貢 獻程式碼方面,微軟還規定了兩個原則,第一個是路線圖原則,該規則規定所有專案都應專注於各自的領域,為保持其專注性和動向,大部分工作都要符合產品的路線 圖。第二個是程式碼質量原則,該規則規定外部人員所提交程式碼的質量應該達到微軟員工的同等水平(包括正確的設計、架構、足夠的測試覆蓋等),並遵循微軟的編 碼風格。這兩個原則儘管保證了軟體的質量,但是同時也約束了貢獻者,也許會把一些貢獻者拒之門外。

  來自記憶體網格公司 Hazelcast 的市場部和開發關係部副總裁 Miko Matsumura 評論到:

  微軟的開源舉措只是在正確方向邁出了第一步,要想完全得到社群的支援,還需要很長的路要走,畢竟 Java 已經開源了八年。

  第三方公司的支援也是建立生態圈的關鍵條件,Google、IBM、SAP、RedHat 等大公司和眾多中小公司多數以 Java 為主要開發語言,很多新系統以及歷史遺留系統也是由 Java 編寫,如果要他們轉向 .NET 的可能性不大,或者需要很長的時間。

  最後,Linux 已贏得了伺服器市場的優勢地位,而 .NET 要取代 Java 作為 Linux 服務端開發語言,還有一些問題需要解決和驗證。首先是網路庫方面,.NET 的網路庫基於 IOCP,而 Linux 基於 epoll,移植後效能效果如何很難確定。其次是資料庫方面,此前,.NET 的資料庫大多是配合 SQL Server 使用,要改成MySQL、PostgreSQL 等開源資料庫,ADO 和 MySQL、PostgreSQL 等在 Linux 下的效能如何有待驗證,以及和 Redis、Memcached 等 NoSQL 資料庫等的相容性也不確定。

  多年以來,由於 .NET 依附於 Windows 平臺,無法與 Java 在跨平臺環境中進行競爭。再加上近年來隨著移動網際網路和雲端計算的蓬勃發展,微軟在開發者社群的人氣一路走低,最近開始流行的 Linux 伺服器上的容器化雲端計算開發技術,微軟也開始落伍了。

  微軟宣佈開源 .NET 的舉措能否挽回已落後的局面,就只能拭目以待了。

  作者 李士窯 來自: InfoQ

相關文章