.NET的平台无关性

在本章结束前,简单说一下.NET平台的平台无关性。令许多程序员惊讶的是,.NET程序集可以在非微软操作系统(如Mac OS X、各种版本的Linux和Solaris)上开发和执行。要理解它是怎么做到的,需要掌握在.NET领域中的另外一个缩写词CLI(公共语言基础设施)。 当微软发布C#语言和.NET平台时,也发布了一整套正式的文档来说明C#和CIL语言的语法及语义、.NET程序集格式、核心.NET命名空间以及假定的.NET运行时引擎的结构(叫做虚拟执行系统,即VES)。 让我们感到高兴的是,这些文档已经提交到ECMA,并被ECMA批准成为官方的国际标准(http://www.ecma- international.org)。这些规范包括: ECMA-334,C#语言规范; ECMA-335,公共语言基础设施(CLI)。 它们可以使第三方组织在各种操作系统和处理器上构造不同的.NET平台发行版,理解到这一点,这些文档的重要性就显而易见了。ECMA-335也许是这两个规范中更"有内容"的一个,它分为5部分,如表1-4所示。 表1-4 CLI的划分 ECMA-335的划分 含 义 部分I:架构 描述了整个CLI的架构,包括CTS和CLS的 规则以及.NET运行时引擎的机制 部分II:元数据 描述了.NET元数据的细节 部分III:CIL 描述了CIL代码的语法和语义 32 部分IV:库 在较高层次概述了必须由.NET发行版支持 的最少的和最完整的类库 部分V:附录 其他内容,如关于类库设计指南和CIL编译器实现的细节 需要注意,部分IV(库)仅仅定义了最基本的命名空间集,这些命名空间表示了一个CIL发行版应有的核心服务(集合、控制台I/O、文件I/O、线程、反射、网络访问、核心安全需求、XML处理等)。CLI没有定义用于Web开发(ASP.NET)、数据库访问(ADO.NET)或桌面图形用户界面(GUI)应用开发(Windows Forms/WPF)的命名空间。 令人高兴的是,为了提供具有完整功能的、产品级的开发平台,主流的.NET版本都扩展了CLI库,加入了与微软ASP.NET、ADO.NET和Windows Forms兼容的等效功能。目前,CLI实现有两个主要的流派(除了微软提供的针对Windows的实现之外)。虽然本书专注于使用微软.NET建立.NET应用程序,但仍在表1-5中提供了Mono和Portable.NET项目的相关信息。 表1-5 开源.NET版本 发 行 版 作 用 http://www.mono-project.com Mono项目是一个CLI的开源版, 针对各种版本Linux(如SuSE、Fedora等) 以及Win32和Mac OS X http://www.dotgnu.org Portable.NET是另外一个CLI的开源版本, 运行在很多操作系统上。Portable.NET 的目的是在尽可能多的操作系统上运行 (Win32、AIX、BeOS、Mac OS X、Solaris、 所有主要的Linux发行版本,等等) Mono和Portable.NET都提供符合ECMA标准的C#编译器、.NET运行时引擎、代码示例、说明文档和许多与微软的.NET Framework 3.5 SDK功能相当的开发工具。此外,Mono和Portable. NET都有VB.NET、Java和C编译器。 说明 附录B介绍了如何使用Mono创建跨平台.NET应用程序。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值