zoukankan      html  css  js  c++  java
  • 在Windows平台下使用MONO

    Windows平台下使用MONO

    warensoft 中科院计算所培训中心


    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解释出来的样式,还是有点区别的,看起来有点怪。

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

  • 相关阅读:
    To select the file to upload we can use the standard HTML input control of type
    Cascading Menu Script using Javascript Explained
    网站首页head区代码规范
    轻松掌握 Java 泛型
    JDK 5.0 中的泛型类型学习
    如何在firefox下获取下列框选中option的text
    是同步方法还是 synchronized 代码? 详解多线程同步规则
    javascript select option对象总结
    Select的动态取值(Text,value),添加,删除。兼容IE,FireFox
    javascript在ie和firefox下的一些差异
  • 原文地址:https://www.cnblogs.com/warensoft/p/1760081.html
Copyright © 2011-2022 走看看