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

  • 相关阅读:
    amd
    富文本编辑器
    css module
    uc浏览器调试
    mysql利用sql语句将查询结果导出
    自启程序为何自启失败?
    nginx4层代理ssh服务
    创建SFTP用户并指定访问目录 Linux
    01月04日17:15:40 学习进度笔记
    01月04日10:39:23总结
  • 原文地址:https://www.cnblogs.com/warensoft/p/1760081.html
Copyright © 2011-2022 走看看