社区讨论:开源能否拯救.NET?
作者 李士窑
近日,微软开源了 .NET,其目的是要将自己的生态核心从 Windows 转向 Azure 云端,并建立起一个运行良好的生态圈(包括软件、硬件)。同时,微软还欲向 Android 平台渗透并撼动 Java 服务器端开发的地位。另外,对于开发者而言,微软开源了 .NET 也算是创建了一个 Java 平台的开源替代平台。微软的愿景是美好的,但是能否撼动 Java 的地位,并建立起自己的良好生态圈还是个未知数,至少需要时间去验证。
首先,微软已错过了开源的最佳时机。Java 由 Sun Microsystems 公司于 1995 年 5 月推出,它还得到了 JCP、Apache 基金会、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 的举措能否挽回已落后的局面,就只能拭目以待了。
感谢郭蕾对本文的审校。