通用语言架构

科技工作者之家  |   2020-11-17 18:20

通用语言架构(Common Language Infrastructure,CLI)是一个开放的技术规范。它是由微软联合惠普以及英特尔于2000年向ECMA倡议的。通用语言架构定义了构成.NET Framework基础结构的可执行码以及代码的运行时环境的规范,它定义了一个语言无关的跨体系结构的运行环境,这使得开发者可以用规范内定义的各种高级语言来开发软件,并且无需修正即可将软件运行在不同的计算机体系结构上。

简介技术规范是指为实现一定的技术目的技术标准,保证试验或生产有秩序地进行而具体规定的约束劳动者如何合理使用劳动工具和劳动对象的行为准则。通用语言架构(CLI),也称通用语言基础架构,是一个计算机软件开发技术规范,包含通用类型系统(Common Type System, CTS)、元数据系统(Metadata)、通用语言规范(Common Language Specification, CLS)、虚拟执行系统(Virtual Execution System, VES)、通用中间语言(Common Intermediate Language, CIL)、框架(Framework)。适合CLI规范的程序都是编译成通用中间语言,之后在执行过程中被虚拟执行系统的即时编译技术编译为机器码从而执行。通用语言运行平台(Common Language Runtime,简称CLR)是微软为他们的.NET的虚拟机所选用的名称。它是微软对通用语言架构(CLI)的实现版本,它定义了一个代码运行的环境。CLR运行一种称为通用中间语言的字节码,这个是微软的通用中间语言实现版本。CLR运行在微软的视窗操作系统上。查看通用语言架构可以找到该规格的实现版本列表。其中有一些版本是运行在非Windows的操作系统中。

有关内容通用类型系统 (Common Type System) 定义了运行期引擎如果使用程序中的数据类型,以及如何配置数据在存储器中的一种标准,依照此种标准所撰写的编程语言,都可以在同一个运行期引擎中使用,因此它是跨语言支持的重要部分,亦即匹配 CTS 规范的编程语言所撰写出的程序,都可以在 CLR 中使用。CTS与CLI规格都是由微软所发展,已标准化为 ECMA 335 标准:“Common Language Infrastructure (CLI) Partitions I to VI.”,并且由 Microsoft 在 .NET Framework 中完全的实现。CTS 的功能:创建一个可协助跨语言集成、类型安全与代码的高性能运行的框架规范。提供可在许多编程语言中完全实现的面向对象模型。定义编程语言必须遵行,以帮助在不同的编程语言中所实现的对象能够与其他编程语言交互的规则。CTS 也定义了确保由不同编程语言所定义的数据类型能与其他编程语言交互的规则。

CTS 定义了两种类型:实值类型 (Value-type)。实值类型直接包含数据,而且实值类型的运行个体 (Instance) 不是在堆栈上配置,就是在结构中内嵌 (Inline) 配置。实值类型可为内置 (由运行阶段实现)、用户定义或枚举类型 (Enumeration)。引用类型 (Reference-type)。存储变量存储器地址的引用,并且在堆积 (Heap) 上配置。引用类型可为自我描述类型、指针类型 (Pointer Type) 或接口类型 (Interface Type)。引用类型的类型可从自我描述类型的值判断出来。自我描述类型可再分为数组和类别类型。类别类型包括用户定义类型、Boxed 实值类型和委派。

虚拟运行系统 (Virtual Execution System) 是一个可执行受管理代码 (Managed Code) 的运行环境,它提供了运行受管理代码所需要的内置数据类型 (data type) 以及假定的机器类型与状态设置、流程控制与异常处理等参数。它提供了 MSIL 程序指令所需要的支持。

通用中间语言(Common Intermediate Language,简称CIL,发音为"sill"或"kill")是一种属于通用语言架构和.NET框架的低阶(lowest-level)的人类可读的编程语言。目标为.NET框架的语言被编译成CIL,然后汇编成字节码。CIL类似一个面向对象的组合语言,并且它是完全基于堆栈的。它运行在虚拟机上,其主要的语言有C#、Visual Basic .NET(VB.NET)、C++/CLI以及J#。

框架(software framework),通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。是一种微体系结构,为特定领域内的软件系统提供未完全实现的模板,它可以是一个将要被扩展或(和)复用的子系统1。

框架的功能类似于基础设施,与具体的软件应用无关,但是提供并实现最为基础的软件架构和体系。软件开发者通常依据特定的框架实现更为复杂的商业运用和业务逻辑。这样的软件应用可以在支持同一种框架的软件系统中运行。简而言之,框架就是制定一套规范或者规则(思想),大家(程序员)在该规范或者规则(思想)下工作。或者说使用别人搭好的舞台来做编剧和表演。

对通用语言架构的实现.NET框架(.NET Framework)是由微软开发,一个致力于敏捷软件开发(Agile software development)、快速应用开发(Rapid application development)、平台无关性和网络透明化的软件框架。.NET是微软为2000年代对服务器和桌面型软件工程迈出的第一步。.NET包含许多有助于互联网和内部网应用迅捷开发的技术。.NET框架是微软公司继Windows DNA之后的新开发平台。.NET框架是以一种采用系统虚拟机运行的编程平台,以通用语言运行库(Common Language Runtime)为基础,支持多种语言(C#、F#、VB.NET、C++、Python等)的开发。.NET也为应用程序接口(API)提供了新功能和开发工具。这些革新使得程序设计员可以同时进行Windows应用软件和网络应用软件以及组件和服务(web服务)的开发。.NET提供了一个新的反射性的且面向对象编程编程接口。.NET设计得足够通用化从而使许多不同高级语言都得以被汇集。

Microsoft Silverlight是微软所发展的Web前端应用程序开发解决方案,是微软丰富型互联网应用程序(Rich Internet Application)策略的主要应用程序开发平台之一,以浏览器的外挂组件方式提供Web应用程序中多媒体(含影音流与音效流)与高度交互性前端应用程序的解决方案,同时它也是微软UX(用户体验)策略中的一环,也是微软试图将美术设计和程序开发人员的工作明确切分与协同合作发展应用程序的尝试之一(另一个为WPF)。

Microsoft XNA ("XNA's Not Acronymed"),完全支持托管代码的运行环境,由微软提供用以帮助计算机游戏开发、计算机软件开发及管理的一些工具。XNA把游戏设计员从“反复刻版编程”中解放出来[2],还把游戏开发上的所有需要结合到一个系统之中。

本词条内容贡献者为:

王慧维 - 副研究员 - 西南大学