Mono与微软的.Net之争?

今天在CSDN的BLOG上看到了MONO,原来你是水中月,觉得作者有点偏颇,于是写下自己的观点。

我觉得我和楼主相比,经验显然没有楼主多,不过,我还是想说说我的看法。 

首先说说.net 

很显然,.net只是一个概念,而microsoft .net framework则是这个概念的一个实现,也就是一个产品。那么.net 最大、最好的概念是什么?那就是任何经过编译后,符合.net 规范的程序,都可以在符合.net规范的虚拟机上运行,而microsoft .net framework无疑就是一个很好的实现。那么,既然微软有这么好的一个东西(我们暂且认为.net非常好吧),她为什么不握在自己的手里,而开放出来? 

的确,楼主说对了,微软一直没有任何产品进入Linux/Unix以及其它OS(除了Mac)的领域,那么微软开放.net规范的目的就是为了进入那些领域?其实,这个目的只能算是微软的一个小目的。我们再回过头来看看.net的最大好处是什么。假设某个人PA用Java语言编写了一个程序,他想和一个用C语言的人PB讨论这个程序,而且他还想让PB看看这个程序的运行效果,但是他们在地球的两个角落里,他们只能通过email或视频通讯。那么他们该如何做呢?PA发送一个email给PB,其中有程序的源代码和编译好后的二进制文件。然后PB在本地运行,然后根据看到的东西再和PA讨论。当然,这是一种理想的状态,更多情况下,我们不得不发现,PB的机器上并没有安装Java的虚拟机,或者只安装了微软的Java虚拟机,而PA的程序使用了不符合微软的Java虚拟机的API,所以程序运行不起来。那么,有没有更好的办法?我想这就是.net的目的。无论是PA也好,PC也好,甚至PD到PN,他们也许都使用不同的语言,但是他们都不需要PB有他们的语言的环境,当然,他们都必须使用符合.net规范的虚拟机,但是他们都可以在自己熟悉的语言环境中编写程序。 
而我们在假设,在网络的某一个地方,有这么一台主机,它能让这些程序在它上面运行,而且在托管的安全环境下做某些操作,那么所有的人都可以直接的看到最后的程序结果。 

上面就是我认为为什么微软开放.net规范的真正原因。微软需要一个大同的环境来给.net发展,而不是和Java一样,只有一家可以编写虚拟机,这也就是我在上面一直都说“符合.net规范的虚拟机”的原因。今天我们有了两个虚拟机,一个是MS的,一个就是Mono。这也是Mono倍受瞩目的原因,当然,目前它只是MS的虚拟机的简单模仿,但是,没有人敢保证,将来它是否还是简单的模仿。 

将来,我们是否还只有两个虚拟机,也没有人敢保证。因为相信已经开始有人在为其它的OS做虚拟机,或者也有人开始在windows平台上重写一个虚拟机,而这些虚拟机都能让所有符合.net规范的程序在上面运行,不受语言的限制。 

为什么会或将会有这么多人愿意写开源的.net虚拟机? 

我再谈谈我对开源的Mono看法。 

开源一直对我来说,不是简单的开放源代码,而是将技术开放,将思想开放,让技术和思想在当前领域或一个新的领域继续生存和发展。所以,我认为,Mono不是简单的复制MS .net。而是 .net在另一个领域的扩展,但是它又不属于MS。 

Mono在Linux平台上实现了95%的WindowsForm,实现了90%的数据访问和XML支持,但是这些都没有MS.Net的任何代码,除了相同的API(API相同,只是为了更好的从Windows系统移植)。所以Mono是伟大的,它被另一群非MS.Net的工程师们开发出来,而能运行MS.NET的程序,还能让自己的程序在MS.NET上运行,这已经在开始.Net的宏大计划。 

在现在,我们看到了开源的庞大的力量,它正在蚕食MS的市场,但是,为什么MS不反对Mono? 

这一点楼主也说对了,那就是Mono没有实现企业级功能。那么Mono究竟没有实现那些功能? 
1、Mono环境中没有实现类似COM+、COM的功能 
2、Mono环境中没有消息队列,消息传送的功能 
3。Mono对XML、数据访问的处理效率依然比较低,达不到企业应用要求 

而以上的三点,都是微软从未开放过的,也就是说,Mono必须自己另劈蹊径,开发一个适合Linux的企业级运行环境。 

所以,微软并不反对Mono。Mono目前依然是试验室的产物。但是将来是否会呢? 

我认为不会。因为微软开放.net规范还有另一个目的,哪就是增强不同的硬件、系统、设备之间的互操作性。而微软掌握的是标准。纵然你实现了企业级功能,纵然你编写了效率更高的编译器,你所遵循的都是MS的标准,你无非是为他的产品增加了一个新的功能而已。 

现在,很多人都希望KDE或者GONE或者Java Desktop System能成为Linux的桌面系统,甚至有组织在做Linux的桌面系统标准。但是Avalon要来了,Avalon是建立在MS.Net标准之上的,基于新的DirectX的。很难保证,一个Avalon for Linux会不会出现在世界上。 

毛主席有句话说的好(大致意思):反对你的是敌人,那一天不反对你了,和你在一起了,就不是敌人了。 

原文地址:https://www.cnblogs.com/iaxes/p/38476.html