zoukankan
html css js c++ java
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会不会出现在世界上。
毛主席有句话说的好(大致意思):反对你的是敌人,那一天不反对你了,和你在一起了,就不是敌人了。
查看全文
相关阅读:
Atitit..组件化事件化的编程模型(2)Web datagridview 服务器端控件的实现原理and总结
Atitit.dwr3 不能显示错误详细信息的解决方案,控件显示错误详细信息的解决方案 java .net php
Atitit.实现继承的原理and方法java javascript .net c# php ...
Atitit. 解压缩zip文件 的实现最佳实践 java c# .net php
Atitit..文件上传组件选型and最佳实践总结(2)断点续传
atitit.web的动态include 跟变量传递 java .net php
Atitit. BigConfirmTips 控件 大数据量提示确认控件的原理and总结O9
Atitit.guice3 ioc 最佳实践 o9o
Atitit.hybrid混合型应用 浏览器插件,控件的实现方式 浏览器运行本地程序的解决方案大的总结提升用户体验and开发效率..
atitit.提升开发效率使用服务器控件生命周期 asp.net 11个阶段 java jsf 的6个阶段比较
原文地址:https://www.cnblogs.com/iaxes/p/38476.html
最新文章
2000多变一
读取外部xml
分享jQuery瀑布流的插件和案例、几款jquery瀑布流插件、jquery瀑布流下载
php反射类
SQL to MongoDB Mapping Chart
CodeIgniter中设计一个全局exception hook
PHP JQUERY JSON 实现瀑布流
php常用函数
Chrome浏览器开发者扩展工具:Postman REST Client 在线测试rest api 或者普通http web m模拟接口的最佳工具。
PHP中array
热门文章
SQL to Aggregation Framework Mapping Chart
PHP 为你提供一个叫__toString() 的函数,你可以用它来返回表示对象的字符串信息,而且一旦定义它,打印命令将调用它并打印出返回的字符串。
Atitit..文件上传组件选型and最佳实践总结(3)断点续传控件的实现
atitit. 浏览器插件 控件 applet 的部署,签名总结 浏览器 插件 控件 的签名安全机制o9o
Atitit.javascript 实现类的方式原理大总结
Atitit.auto complete 自动完成控件的实现总结
Atitit. .net c# web 跟客户端winform 的ui控件结构比较
atitit.404错误的排查流程总结vOa6
atitit. web 在线文件管理器最佳实践(1) elFinder 的使用流程解决之道 。打开浏览服务器文件夹java .net php
atitit. applet 浏览器插件 控件 的环境,开发,提示总结o9o
Copyright © 2011-2022 走看看