dnzwpc

什么是.NET Framework

.NET Framework是微软为用不同语言开发、在不同平台下运行的应用程序以及XML web服务提供的平台(病句,就意会吧)。这种跨平台和跨语言功能的实现与.NET Framework的组成和编译方法有关。

 

.NET Framework主要由这几部分组成:公共语言运行库(Common Language Runtime CLR)、.NET框架类库(.NET Framework Class Library)、ASP.NET(好像还有ADO.NET)。

 

公共语言运行库:Runtime译为环境吧。它为一些任务提供服务,如集成不同语言开发的组件、跨语言错误处理、安全处理、管理对象的储存和释放等。开发语言源代码被编译到CLR中执行,CLR运行的代码叫托管代码(managed code,它自动包含元数据(描述数据的数据,包括数据类型、成员、引用以及加载类和调用类中方法时所需要的信息)。每个CLR的代码存在程序集(assembly)中,成为可移植、可执行(PE,Portable executable)文件(扩展名为.exe.dll)都包含代码和元数据。.NET Framework编译的托管代码符合公共语言规范(Common Language Specification CLS),所有符合CLS的代码可以移植兼容。

 

.NET框架类库:包含了所有的类和接口。功能类似于原来windowsAPI,用于应用程序与操作系统的交互。但传统的API有两个主要问题,首先,它不是面向对象的;其次它是一个C(C++)库。所以,不能保证每种语言都能方便地使用它。所有.NET的源码都会向下编译成托管代码(中间语言Intermediate Language),这种不能直接在目标系统执行的中间语言代码还需要通过JITJust-In-Time)编译器转换为本地代码。JIT编译器工作时,根据托管代码调用.NET框架类库中的接口和类,生成本地代码。

 

ASP.NET:活动服务器页面。.NET中和大一部分改进是针对web开发的。ASP.NET可以编译任何一种.NET语言编写的应用程序。这样就利用CLR和托管代码的优点,为Web窗体和Web服务提供Windows应用程序一样的调试支持。

 

ADO.NET:数据库对象模型,允许程序员使用标准对象从任意数据源引用数据。此外,.NET Framework也可和扩展标记语言紧密结合在一起。XML是跨平台存储和传输数据的工业标准格式。

 

整理一下,一段.NET语言源代码是这样在计算机上完成其功能的:在不同平台编辑的源码(托管源代码),被遵循CLS的语言编译器翻译成中间语言(IL,中间语言一个重要革新在于它不仅仅是一个低级的、独立机器的对象代码。实际上,许多面向对象的功能——类、封装性和数据隐藏、多态和继承——都被内置到IL中,所以可以把它看作一种面向对象的汇编语言类型)。IL是一组独立于平台的指令,它和元数据形成PE文件,一个或多个PE文件(.exe.dll文件)加上描述信息(可实现程序集的完全自我描述,不需windows注册表等的支持),组成了程序集。程序集是生成程序的基本单位。当程序运行时,实时编译器将IL转换为指定机器的本机代码。

 

讨论

1、所有语言都在.NET环境下,先编译成中间语言,然后引用同样的类和接口,生成机器码,那是否还会保持各自语言的特点呢?比如说vb的解释执行,C++的高效性。

2、搜到关于.NET实时性问题:

.NET的其实影响实时性的不仅仅是运行速度,还有稳定性(对时间的稳定性) 单单从运行速度下讲,.NET的效率应当能满足绝大多数的实时应用,比如响应时间在100ms内的系统。 但是稳定性,是我们要考虑的一个问题。因为.NET内存在垃圾收集, 第一不知道垃圾收集发生的时间、第二不知道垃圾收集会持续都长时间。还有就是Assembly的装载所需要花费的时间。因为.NETassembly是动态装载的。另外,JIT的效率。.NET不是解释执行,而是通过JIT编译成机器码执行。那么何时进行Jit就又是不可确定的因素了。考虑.NET的实时性问题,如果解决了这样的一系列影响稳定性的问题就可以了。

 

3、关于非托管代码和非兼容CLS函数:MS VC++ 中,托管代码可与非托管代码并存,即使在同一程序中也允许托管代码可与非托管代码并存。非托管代码执行在CLR控制之外(比如,一些.NET成员函数都被标记为不与CLS兼容,也就是说可能不能从其他语言对它们进行访问)。它们之间有什么联系吗?

发表于 2006-03-14 01:21  期待  阅读(731)  评论(0编辑  收藏  举报
 

分类:

技术点:

相关文章:

  • 2021-10-17
  • 2021-10-17
  • 2021-11-30
  • 2021-10-27
  • 2021-10-17
  • 2021-12-10
  • 2021-11-02
猜你喜欢
  • 2021-10-17
  • 2021-10-17
  • 2021-10-17
  • 2021-10-17
  • 2021-10-17
  • 2021-10-17
  • 2021-10-17
相关资源
相似解决方案