在Windows平台下使用MONO

 

原文:http://www.cnblogs.com/warensoft/archive/2010/06/18/1760081.html

MONO已经发布了好几年了,为.NET技术跨平台技术提供了真正的实现,但是对大多数.NET开发人员来讲MONO最重要的意义是能够实现在Windows下开发出应用程序,并且在其他操作系统下运行。本文会提及以下几内容:

l         对于MONO的理解

l         MONO的跨平台技术

l         如何在Windows下安装MONO

l         Windows下的MONO 的开发环境

 如果大家有什么问题可以给我发Email:warensoft@163.com

1.        MONO的理解

很多人会问,MONO到底是什么,要解释这个问题,我们要先从.NET技术能够跨平台的原理说起,首先看看下面的结构图:

首先,.NET平台支持多种语言,MS为了解决不同语言之间数据类型兼容问题,在CLR中提供了MSIL机制(微软中间语言),不论是哪种语言,它们的数据类型都会被转化为中间语言。

其次,程序员们会发现,在.NET应用程序(WinFormASP.NET)第一次运行的时候会比较慢,这是因为在CLR中存在一个名为JIT的工具(Just In Time Compiler,即时编译器),JIT会将中间语言编译为对应平台的本地代码,以提高运行速度。

通过上面的分析,我们可以发现,想让.NET能跨平台,取决于JIT是否能够将MSIL解释成对应平台的本地代码,即:不同的平台需要安装不同的CLR虽然,.NET可以跨平台的概念是由MS提出来的,但是MS只提供了一个Windows的实现,即:CLR,其实平台的CLR产品MS并没有开发。

因此,所谓的MONO其实就是第三方开发的,功能等同于CLR的一个.NET RunTimeMONO提供了不同平台的JIT实现。

2.        MONO的跨平台技术

MONO中兼容绝大部分CLR功能,但是运行效率不如CLR快(建议在Windows平台上使用CLR,而不是MONO),因此,绝大多数在Windows下开发的应用程序可以移植到其他操作平台上。

虽然MONO兼容大多数CLR功能,但是在MONO下直接开发基于Form(不是WinForm)的功能时,MONOIDE却不支持WinForm的设计,MONO建议的界面环境是GTK#或者是GNOME,开发模式大体上和WinForm相同。

另外,为了能够实现ASP.NET的跨平台,MONO提供了MONO_MODE Web服务器,以支持ASP.NET的运行。

为了实现.NET应用程序(WinFormASP.NET)的跨平台功能,有以下几点建议:

l           在应用程序里最好不要使用PINVOKE的平台调用技术,因为调用Win32DLL在其他平台上是不可行的,另外,直接调用自己编写的C/C++DLL在其他平台也不一定能运行。

l           如果程序中出现路径表达字符串中,尽量采用动态获取方式,或者是可配置方式,这是因为在不同的操作平台下,路径表达的方式是不同的。

3.        如何在Windows下安装MONO

MONO的官方网站是:http://www.mono-project.com/Main_Page,在主页上为大家提供了三个功能区,1,下载MONO的运行时,2.下载MONOIDE3.Visual Studio中集成的MONO工具(付费)。

用户首先要下载在Windows平台下的MONO运行时,如下图所示:

然后下载Windows下的MONO开发环境:MONO Develop,如下图所示:

将以上两个程序分别安装到Windows上,就可以进行MONO开发了。

4.        Windows下的MONO开发环境

MonoDevelop开发环境基本结构和VS差不多,当然功能远不及VS好用,其打开的界面如下图所示:

在这里我们打开一个用VS2008WinForm程序,如下图所示:

我们可以发现并没有WinForm的设计器。

下面可以直接运行该程序,如下图所示:

我们会发现这个应用程序除了图标是一个“猴子”外,别的也没有什么和VS做的程序不同,这是因为MONO Develop默认是会用CLR来解释.NET应用程序的,我们可以修改一下配置,让他使用MONO来解释,打开“Edit-Preferences-.NET RunTime,并将MONO设置为默认的.NET RunTime,如下图所示:

然后我们再来运行刚才的应用程序,如下图所示:

这个窗口的样式和CLR解释出来的样式,还是有点区别的,看起来有点怪

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值