2000年微软正式推出.net战略平台,凭借强大的开发环境ide—visual studio和对多种编程语言的支持(包括vb,vc++,c#,f#)和丰富的开发交流社区及易用的windows 服务器环境而迅速走红,甚至独领风骚,可以与java平起平坐。但是java素有一处编写处处运行的优势,而.net似乎是为windows系统量身打造,无法实现跨平台,也就是开发的应用无法运行在linux之上。引来开源社区的一片骂声,很多企业纷纷采用了相对开源免费的java php等,虽然实现跨平台这对微软来讲小菜一碟,但是从其自身的发展战略考虑微软是不会主动去实现。当然他本身也不反对开源社区的开发者自己去把.net的应用搬到linux上去,mono就是这样诞生的而且已经很成熟了,甚至得到了微软的资金支持。
Mono简介
创始人Miguel de Icaza,2001年7月19日的O'Reilly大会创建了的开源项目Mono
Mono于2004年7月30日发布了1.0版本。
Mono 是一个由Novell 公司主持的项目(现在有Xamarin公司提供支持)。该项目的目标是创建一系列符合ECMA 标准(Ecma-334 和Ecma-335)的.NET 工具,包括C# 编译器和共通语言执行平台。以及Mono所指定的第三方类库。用户还可以将Mono运行时(runtime)嵌入到应用程序中,使得程序的打包和发布更为简便。此外,Mono提供了一个IDE,一个调试器,还有一个文档浏览器。
与微软的.NET Framework 不同,Mono 项目不仅可以运行于Windows 系统上,还可以运行于Linux,FreeBSD,Unix,Mac OS X 和Solaris。简单来讲是一种基于.NET Framework的开放源代码跨平台的解决方案。
Mono可以开发linux下的asp.net项目和winform项目包括最新的mvc项目,wp7应用等等甚至可以开发ios应用和android应用当然这全部是基于.net的C#语言。
Mono环境搭建(部分来自网络搜集)
官方网站: http://www.mono-project.com
你可以选择下载Linux(通用安装版本,支持SUSE和Red Hat)、Windows和OS X下的不同版本。你可以下载全部的源代码并对其进行编译(如果你的平台不支持以上三种版本,这将是唯一的办法),或者是直接下载合适的安装包。
Linux环境下的安装包括多个单独的文件,这些文件同Mono平台的不同方面功能相关。这里是Mono针对SUSE的部分软件包:
* mono-devel-1.0.6-1.ximian.9.1.i586.rpm—Mono核心包和C#编译器
* mono-core-1.0.6-1.ximian.9.1.i586.rpm—Mono核心运行时
* mono-data-1.0.6-1.ximian.9.1.i586.rpm—数据库核心
列表中的每一个文件都是RPM(Red Hat Package Manager)文件。这些文件需要在Linux环境下使用rpm命令行工具进行安装。例如,使用如下命令就可以安装Mono运行时:
rpm – i mono-core-1.0.6-1.ximian.9.1.i586.rpm
在安装结束之后,你需要立即将相关目录添加到系统目录中去,这样就可以无需指定完整路径来使用相关命令。在Windows下你需要通过控制面板来实现,Linux中则是使用PATH命令。注意安装时,配置命令尽量要带路径参数./configure --prefix=/usr,以免以后出现奇怪的问题安装完毕后,使用mono -V测试mono是否安装成功
如果你希望重新编译安装 Mono ,则可以先输入: make distclean ,
然后按照刚才的顺序输入: ./configure , make , make install.
卸载 Mono,只要输入 make uninstall ,就会自动的删除所有安装的可执行程序和脚本。
Ubuntu下搭建Mono+Asp.net MVC+Nginx+MySql环境 可以参考这里:
http://blog.163.com/bqj123@126/blog/static/28351334201010943641936/
腾讯开放平台也有提供linux下的mono部署环境,可以体验哈安装的过程。
当然mono环境配置好后还需要安装配置nginx或者apache服务器和数据库常用的是mysql和sqllite。
Mono的开发工具及web服务器
Mono 的开发工具 MonoDevelop和微软的visual studio
Mono的web服务器类似iis,Jexus是一款运行于linux、freeBSD等平台的以支持ASP.NET/PHP为主要特征的高性能WEB服务器重要的完全基于mono.
Nginx一款linux下的专业服务器高性能高并发,现已经替代apache成为
Php的首选。
Mono的运行机制
Mono是如何实现跨平台的,原来Mono 虚拟机包含一个实时编译引擎,该引擎可用于如下处理器:x86,SPARC,PowerPC,ARM,S390(32位模式和64位模式),x86-64,IA64 和64位模式的 SPARC。该虚拟机可以将代码实时编译或者预先编译到原生代码。对于那些没有列出来的系统,则使用的是代码解释器。
Mono学习社区
Mono在中国还未流行,原因是因为中国的盗版windows,并且微软也是睁一只眼闭一只眼睛,不过大型的公司想用开源免费的.net的实现,那么mono是不二的选择
http://www.gotmono.com/ 它能够为你排除故障提供很好的参考。
http://linux.j66.net/ 国内唯一的.net linux技术社区。国
http://www.imono.cc/ 专注mono开源项目的博客论坛。
Mono的发展(信息来源网络搜集)
2011年Mono的主要里程碑有:
二月——Mono 2.10增加了大量新特性,包括对Google本地客户端的支持,新的分析工具,对F#更好的支持以及对ASP.NET MVC 3的支持。
三月——发布了MonoMac 1.0。
四月——Mono For Android Debuts发布。
五月——Novell(去年被Attachmate接管)解雇了整个Mono开发团队。Xamarin组建。
七月——SUSE与Xamarin签署协议,为所有与Mono相关的知识产权以及开源的mono项目提供了持久的许可。Xamarin将继续为现有的企业级Mono客户提供支持,并开始销售基于Mono的产品,包括流行的MonoTouch for iOS和Mono for Android。
八月——Xamarin负责开发的第一版Mono,即Mono2.10.3发布,它为Mac OSX Lion提供支持,并对WCF做出改善,修复了垃圾回收器的缺陷。
十月——微软构建了Kinectimals for iOS,开始尝试Mono。
十一月——Sony发布了基于Mono构建的Play Station Suite。Phalanger 3.0基于Mono的支持发布,不再需要C++/CLI编译器。
十二月——CXXI为Mono提供了更好的C++互操作性。
其它有意义的开发工作:
Unity及其3D游戏引擎平台已经基于Mono构建,组件变得越来越流行。
MonoDevelop的版本从2.4提高到2.8。
Mono的应用
mono+linux+Jexus+.net 已经可以搭建很稳定的应用了,www.haokaimen.com这个就是架构在此之上,速度性能都不错!
另外京东商城虽然主要是.net在windows下的实现,但也有在mono下的应用。
当当网也有mono下.net的应用。
所以如果担心windows的授权费用问题,1 你可以选择盗版呵呵 2 你完全可以选择用开源免费的稳定的mono来开发你的linux下的.net应用。
现在iphone和android都很火爆,很重要的原因就是他们的应用软件多,而作为微软的开发者大多都是C#,只能开发wp7手机的应用,就目前看来wp7 mango已经发布,相信随着不断的完善肯定会有不少市场份额, 另外mono这样一个开源的框架,可以编写linux下的asp.net项目和asp.net mvc项目和桌面应用和sl应用及wp7手机应用, 可以编写Iphone,ipad应用也就是monotouch,还可以编写android应用就是monodroid,当然同样可以编写windows下的相关应用。 重要的是他们都是用C#编写,这样一来.net程序员就可以借助mono这个好东西,编写其他平台的应用, 并可以提交到市场上,供别人下载,赚取美元! 哈哈!
目前已经有一本书讲解monotouch<<编写iphone应用--iphone高级编程,使用monotouch/net,C#>>;本人已经买,讲的很好.
我想很多人会java,很多人会C#, 但是会object-c的估计不多, 那C#可以用monotouch开发Iphone( 当然性能没有原生的obj-c高),我想这也是一个很大的机会,何不试试~~~
当然mono也要生存就需要资金,在linux下的.net相关的全部免费使用(微软保留对.net的授权),但是对于ios和android的开发框架是需要收费的。
具体的关于如何开发应用,本人也是初试, 不过 博客园老赵 已经有文章介绍过了,下面就是
http://dotnet.cnblogs.com/page/78974/
http://dotnet.cnblogs.com/page/78975/
http://dotnet.cnblogs.com/page/78976/
可以参考,共同学习吧!!
说到mono的发展,并不是太顺利, 希望更多关注开源社区的开发者,给与mono更多的支持和关注!http://xamarin.com/官方网站。