文档章节

.NET Framework跨平台和跨语言主要特征

TTLeo
 TTLeo
发布于 2014/09/16 21:52
字数 940
阅读 82
收藏 0

    尽管Java率先实现了“一次编码、到处运行”的目标,但在借鉴、消化和市场化方面,微软后来居上,凭借Windows的广泛使用,.NET Framework似乎走得更远。概括起来,.NET Framework有两大主要特征:跨平台、跨语言。
   
    1.跨平台
   
    在每台计算机上安装。NET Framework后,一次编写的。NET应用程序就可以跨操作系统平台和硬件环境执行NET中实现这一功能的原理和Java差不多,.NET Framework的作用就好比是Java的虚拟机。
   
    .NET应用程序跨平台的原理可以用图1-13来解释。图中虚线部分为。NET Framework的内容。
   
    采用某种熟悉的语言编写完毕的。NET源程序被。NET Framework中该语言的编译器编译成PE(Portable Executable,可移植可执行)文件,这个以。EXE或者。DLL为扩展名的文件是与计算机操作系统和硬件环境无关的中间语言代码文件,称为 MSIL(MS Intermediate Language)代码文件。PE文件主要包括两部分,IL代码和元数据。元数据是描述PE文件内容的含义的数据。
   
    当在某个具体的计算机上要执行编译后的PE文件时,.NET Framework调用“Just-In-Time”(即时)编译器,在。NET Framework类库的支持下,结合具体的操作系统和硬件环境,编译成最终的可执行代码。
   
    .NET Framework中提供了两个编译器。一个编译器是每门程序语言的编译器,这个编译器编译后的代码只是与硬件环境无关的中间代码MSIL.每台计算机上安装的“Just-In-Time”编译器最后完成与具体的硬件环境有关的可执行代码的编译。
   
    因此,程序员在编写。NET程序时,无论采用什么样的平台进行开发,最后都可以在。NET Framework的支持下移植到其他不同的平台上。而代码的移植和运行都是由。NET Framework自动完成的。
   
    提示:如果把。NET Framework理解为Java虚拟机的功能,那么MSIL文件就好比是Java的字节码文件。
   
    2.跨语言
   
    如果是单纯的跨平台,那么。NET Framework无非是借鉴Java的概念而已。实际上,.NET Framework更让程序员欣喜的是其跨语言的特性。
   
    设想一下这样的场景:在一个软件公司中,开发人员各有自己偏爱的语言,而且每种语言其最擅长的开发领域也不尽相同,比如,VB的易学易用、VC对底层函数的功能调用等。在。NET Framework出现之前,这些不同语言直接的程序是很难集成和互相访问的。
   
    .NET Framework中设计了一个通用语言系统(Common Language System,CLS),定义了很多标准的数据类型,.NET Framework支持的所有高级语言都必须同时支持该系统对数据类型的定义。
   
    在编译成MSIL代码的同时,各种高级语言自身的数据类型都被转换成了CLS系统中的标准数据类型,比如,VB.NET中定义的Integer数据类型被 转换成了System.Int32数据类型,C#中的int类型也被转换成了System.Int32数据类型。这样不同语言的变量就可以相互交换信息 了,这就是。NET Framework支持混合语言编程的基本原理。                    

本文转载自:http://www.educity.cn/develop/496998.html

TTLeo
粉丝 0
博文 15
码字总数 5650
作品 0
太原
私信 提问
Hprose for .NET 1.4.0 发布

这是 Hprose for .NET 发布的第一个稳定版本,本次发布内容如下: 支持除 .NET Micro Framework 以外的所有 .NET 框架版本,其中包含: .NET Framework 1.0 ~ 4.5.1 .NET CompactFramework 1...

andot
2015/05/29
1K
4
Hprose for Go 2.0.0 发布,微服务首选引擎

Hprose 2.0 for Golang 终于发布了。这是一个里程碑版本,针对开发者进行了多项改进。 Hprose 2.0 for Golang 新增了许多特征: 更快更稳定的序列化。 增加了数据推送的支持。 oneway 调用支...

andot
2016/10/31
4.1K
18
Hprose for Objective-C/Swift 1.4.3 发布

Hprose for Objective-C/Swift 1.4.2 发布,本次更新主要修正了内存泄漏的问题。 Hprose 是高性能远程对象服务引擎(High Performance Remote Object Service Engine)的缩写。 它是一个先进...

andot
2015/06/09
1K
4
Hprose for Objective-C/Swift 1.4.2 发布

Hprose for Objective-C/Swift 1.4.2 发布,本次更新主要增加了对 CocoaPods 的支持。增加了 HproseContext。 Hprose 是高性能远程对象服务引擎(High Performance Remote Object Service En...

andot
2015/05/29
1K
5
Tatala RPC 0.3.0 更新,RPC 中间件

Tatala RPC 0.3.0 更新,主要改进: 用zookeeper注册服务,实现负载均衡和故障转移 用Maven管理整个项目 增加NORETURN返回类型,实现了客户端单向调用 在设置被调用类时,可以用类对象代替包...

zijan
2015/09/20
641
0

没有更多内容

加载失败,请刷新页面

加载更多

读书笔记:深入理解ES6 (五)

第五章 解构:使数据访问更便捷 第1节 为什么使用解构功能?   在ES5中,开发者们从对象、数组中获取特定数据并赋值给变量,编写了很多看起来同质化的代码。例如: 1 let options = {2 ...

张森ZS
18分钟前
17
0
CentOS7 yum方式安装MySQL5.7

在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB。 1 下载并安装MySQL官方的 Yum Repository [root@localho...

roockee
26分钟前
13
0
Allegro三种自定义设置快捷键的方法

Allegro自定义设置快捷键的三种方法: 1、在Allegro PCB editor 命令窗口直接定义 2、通过修改用户变量env文件来设置快捷键 3、定义笔画为快捷键 1、在Allegro PCB editor 命令窗口直接定义 ...

demyar
31分钟前
15
0
如何做一张能让人眼前一亮的大屏?

作为在职场驰骋的社会人,提到数据可视化大家应该都不陌生了。数据可视化的作用也不用我多说,主要是利用图形化手段,更清晰直观地将数据展示。多层次、交互式的可视化分析能够方便决策者理解...

朕想上头条
31分钟前
8
0
TL138/1808/6748-EthEVM开发板硬件CPU、FLASH、RAM

TL138/1808/6748-EthEVM是广州创龙基于SOM-TL138/1808/6748核心板开发的一款开发板,具有三个网络接口。由于SOM-TL138/1808/6748核心板管脚兼容,所以此三个核心板共用同一个底板。开发板采用...

Tronlong创龙
36分钟前
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部