.NET

.NET由来

90年代,使用微软平台的Windows编程分化为许多分支,大多数程序员使用Visual Basic、C、C++,一些程序员在使用纯Win32 API,大多数人在
使用MFC(Microsoft Foundation Class,微软基础类库)。其他人转向COM(Component Object Model,组件对象模型)
所有的这些技术都有自己的问题。纯Win32 API不是面向对象的,而且使用它的工作量比使用MFC的更大。MFC是面向对象的,但是它却不一致,并且
逐渐变得陈旧。COM虽然概念简单,单它的世纪代码复杂,并且需要很多丑陋的、不雅的底层基础代码
所以需要一个一致的,面向对象的开发框架,于是诞生了.NET

.NET框架的组成

  • 执行环境:CLR(Common Language Runtime,公共语言运行库),CLR在运行时管理程序的执行,包括以下内容:
    内存管理和垃圾收集
    代码安全验证
    代码执行、线程管理及异常处理
  • 服务框架:Services Framework
  • 上层的两类应用模板:传统的Windows应用程序(Win Forms)模板和基于ASP NET的面向WEB的网络应用程序模板(Web Forms和Web Services)

.NET特点:

  • 面向对象的开发环境
  • 自动垃圾收集
    CLR有一项服务称为GC(Garbage Colector,垃圾收集器),它能为你自动管理内存
  • 互操作性
    .NET框架专门考虑了不同的.NET语言、操作系统或Win32 DLL和COM之间的互操作性
    .NET提供一种称为平台调用(Platform Invoke,P/Invoke)的特性,允许.NET的代码调用并使用非.NET的代码
  • 不需要COM
  • 简化的部署
  • 类型安全性
  • 基础类
    .NET框架提供了一个庞大的基础类库,很自然的,它被称为基础类(Base Class Library,BCL),有时称为框架类库(Framework Class Library ,FCL)

编译成CIL

.NET语言的编译接受源代码文件,并生成名为程序集的输出文件

  • 程序集要么是可执行的,要么是DLL 程序集里的代码并不是本机代码,而是一种名称为CIL(Common Intermediate
    Language,公共中间语言)的中间语言
  • 程序集包含的信息
    * 程序的CIL
    * 程序中使用的类型的元数据
    * 对其他程序集引用的元数据

编译成本机代码并执行
程序的CIL直到它被调用运行时才会被编译成本机代码,在运行时,CLR执行下面的步骤
- 检查程序集的安全特性
- 在内存中分配空间
- 把程序集中的可执行代码发送给实施(Just-in-Time,JIT)编译器,把其中的一部分编译成本机代码
托管代码:为.NET框架编写的代码称为托管代码(managed code),需要CLR
非托管代码:不在CLR控制之下运行的代码,比如Win32 C/C++ DLL,称为非托管代码(unmanaged code)

CLR
.NET框架的核心组件是CLR,它在操作系统的顶层,负责管理程序的执行
* 自动垃圾收集
* 安全和认证
* 通过访问BCL得到广泛的编程功能,包括如Web服务和数据库服务之类的功能

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章