论Mono的意义

原创 2004年08月26日 23:00:00
下面这一段话是我一个朋友飞刀在我的BLOG上给我的留言:

“目前的Asp.net 2.0已经将WEB与Mobile统一起来,想必Mono必定又得重新跟随,一堆的Adapter就够烦的了。 而微软、IBM的终极目标,如果我没有猜错的话,是将GUI、WEB、Mobile的开发统一起来,这个难度很大,没有M$的直接支持,估计Mono很难一直撑下去。 
Asp.net 2.0号称支持230种设备,就目前这样的情况,Mono有这种实力去搞这种累死人的事情? 
而且微软每次变化都很大,主版跳跃很快,1.1了直接就2.0,Mono要做Linux中的.Net必定要跟随着,这种“跟风”,用得人都很累,更不要说照着模仿做了。 
而且我不看好的原因在于,以后的大一统,GUI与WEB,Mobile的大一统,这是一个耗人力物力的事情,没有像M$与IBM这样大集团不惜成本的支持,很难办到,支持Mono的Novell还是小了点。”


在这段话里,他认为Mono是一个没有意义和前途的项目,最主要的原因是Mono跟不上Microsoft的对.Net的更新速度(这里其实要补充一下,在Mono的开发计划中对.Net 2.0的完整支持是2005年第2季度,而.Net 2.0正式版也要到2005年才会发售也就是说Mono并不会比.Net慢多少。其实现在在Mono的安装目录中已经可以看到支持泛型的测试版C#编译器)。

他可能想到了当年C++开发工具大战的时候,Borland C++因为操作系统上的原因,在技术上一直比Microsoft慢半拍,导致被淘汰的历史。其实,他犯的一个最大的错误是没有认识清楚Mono的定位,Mono开发出来并不是要和.Net竞争,要取代.Net,而是作为.Net的补充而存在。理解这一点非常重要。Linux的桌面环境远远比不过Windows,而且要赶上Windows是非常难的,是不是可以说开发Linux的桌面没有任何意义?可能大部分人都不会这么认为,Linux至少可以给用户带来另外一种选择,有时候用户并不希望选择最好最先进的,他可能希望能选择最便宜的,正如Mono,他并不是像Borland C++一样是收费的,他可以为你提供完全免费和开源的.Net运行环境,也许这个环境不如Microsoft的先进,方便,但是却便宜,还开源。假如你的预算比较少,而且喜欢开源,又喜欢使用先进的技术,那么Mono你提供了这样一个选择。

这是对客户的意义。

如果说是竞争者,Mono的对手应该是Java,因为假如用户决定要使用Linux平台来构建企业级的应用的话,除了JAVA一般是没有选择。但是现在好了,作为一个比JAVA更先进,更开放,更自由的技术,Mono的出现打破了Java的垄断,Mono的出现将.Net的技术优势带到了Linux /Unix/MacOS平台,Java同时也失去了最后的一个胜过.Net的优势:跨平台。(也许有人认为还有一个比较成熟的优点,但是其实同时也失去了活力,看看对Web Service和泛型等的勉强支持吧,成熟的潜台词是快死了)

想想这样的情景,当竞标时,JAVA解决方案提供商在台上猛吹一通,哪怕在他们所列举的产品的十个优点中,有八个是Linux的,而你也不用像往常那样为Windows做辩护,你可以先告诉他们,你的产品也可以跨平台在Linux上运行,然后再来告诉他们盲目的追求开源其实对企业来说没有任何意义这个事实,这样会更加有说服力。

即使是当我们的客户拼命叫嚷着Windows病毒多,漏洞多,不安全,不开源的时候,我们的.Net开发人员照样可以使用平时很熟悉的,强大的Visual Studio .Net开发工具高效率的完成开发工作后,直接将应用部署到Linux或者Unix平台,而不是跟以前一样无可奈何的放弃。

这些是对开发者的意义。

Unity3D -- Mono为何能跨平台?聊聊CIL(MSIL)

前言: 其实小匹夫在U3D的开发中一直对U3D的跨平台能力很好奇。到底是什么原理使得U3D可以跨平台呢?后来发现了Mono的作用,并进一步了解到了CIL的存在。所以,作为一个对Unity3D跨平...
  • honey199396
  • honey199396
  • 2016年09月01日 11:27
  • 1707

在Windows上编译mono

There are two ways of building Mono on Windows, both do require a Cygwin setup which provides some t...
  • x_studying
  • x_studying
  • 2016年05月01日 23:52
  • 1489

Mono入门教程(二)--------------Mono的Windows调试环境搭建

前言本教程针对已经搭建好了Mono开发环境,并且已经在C++环境下运行mono的开发者准备。解决开发者联合调试C#业务逻辑代码的需求。环境搭建系统环境:Windows7 Mono版本:4.4 依赖编...
  • zouwei678
  • zouwei678
  • 2017年02月07日 14:29
  • 1995

交叉编译Mono

1. 安装scratchbox     (1) 添加软件源:              sudo vim /etc/apt/sources.list                  最...
  • sy_liuzuo
  • sy_liuzuo
  • 2013年03月30日 21:24
  • 2837

编译unity-mono( 写给超级初学者的朋友)

为什么要编译mono?相比看到这篇文章的朋友应该都不需要再多问为什么,那么为了呼应标题,笔者还是想再简明扼要的阐述一下,以便不知道干啥的朋友还可以知道要干啥. unity生成的apk包,实际上就是一个...
  • qq_22393417
  • qq_22393417
  • 2016年12月02日 17:38
  • 4498

Unity 3D Android对dll加密和重编译mono源码进行解密

为防止Unity 3D的dll代码被反编译,可对其进行加密,然后在libmono.so中解密,重编译后代码便可正常运行。步骤如下: 1、对dll加密: 用VS建立控制台应用程序,将要加密的dll放...
  • yxq408576080
  • yxq408576080
  • 2015年08月19日 13:39
  • 2291

linux下安装mono

CentOS是一个基于RHEL的Linux发行版,其目的是为了提供一套免费与自由的企业等级Linux发行版。CentOS的名称来自于「Community ENTerprise Operating Sy...
  • guoyuqi0554
  • guoyuqi0554
  • 2014年05月06日 15:20
  • 11509

Unity优化大全(十)之 Memory - Mono的托管内存

前言:       前段时间总结了下Memory 的 Unity内部内存的优化,现在来谈谈优化Mono的托管内存之后会不断完善。 进入主题      Mono的托管内存的优化主要是代...
  • U3D_YSJ
  • U3D_YSJ
  • 2015年08月29日 22:48
  • 3630

使用linux交叉编译mono

mono是一个跨平台的C#解决方案。 mono官方免费提供了linux,windows,mac 平台的mono sdk,但是对于安卓和iphone平台是收费项目。 最近在研究将mono作为虚幻脚本,对...
  • x_studying
  • x_studying
  • 2015年08月11日 16:59
  • 1415

Linux下的mono开发环境搭建(日志)

Linux mono 开发环境 搭建 net core vscode
  • RoadToTheExpert
  • RoadToTheExpert
  • 2016年09月08日 10:33
  • 1800
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:论Mono的意义
举报原因:
原因补充:

(最多只允许输入30个字)