- .NET Framework 简介
- .NET Framework应用程序工作原理
- C#概念及其与.NET Framework关系
- .NET Framework简介
Microsoft .NET Framework是用于Windows的新托管代码编程模型。它将强大的功能与新技术结合起来,用于构建具有视觉上引人注目的用户体验的应用程序,实现跨技术边界的无缝通信,并且能支持各种业务流程。
- .NET 版本信息:
版本 |
CLR版本 |
完整版本号 |
发行日期 |
Visual Studio |
Windows 默认安装 |
1.0 |
1.0 |
1.0.3705.0 |
2002/2/13 |
Visual Studio .NET 2002 |
Windows XP Media Center Edition |
Windows XP Tablet PC Edition |
|||||
1.1 |
1.1 |
1.1.4322.573 |
2003/4/24 |
Visual Studio .NET 2003 |
Windows Server 2003 |
2.0 |
2.0 |
2.0.50727.42 |
2005/11/7 |
Visual Studio 2005 |
|
3.0 |
2.0 |
3.0.4506.30 |
2006/11/6 |
Windows Vista |
|
Windows Server 2008 |
|||||
3.5 |
2.0 |
3.5.21022.8 |
2007/11/19 |
Visual Studio 2008 |
Windows 7 |
Windows Server 2008 R2 |
|||||
4.0 |
4.0 |
4.0.30319.1 |
2010/4/12 |
Visual Studio 2010 |
|
4.5 |
4.0 |
4.5.40805 |
2012/2/20 |
Visual Studio 2012 RC |
Windows 8 RP |
Windows Server 8 RC |
- .NET Framework工作原理
- CIL和JIT:
在编译使用.NET Framework库的代码时,不是立即创建专用于操作系统的本机代码,而是把代码编译为通用的中间语言(CIL)代码,这些代码并非专门用于任何一种操作系统,也并非专门用于C#。其他的.NET语言也可以在第一阶段编译为这种语言。
显然,要执行应用程序,必须完成更多的工作,这是Just-In-Time(JIT)编译器的任务,它把CIL编译为专用于OS和目标及其结构的本机代码。这样OS才能执行应用程序。
2. 程序集:
在编译应用程序时,所创建的CIL代码存储在一个程序集中。程序集包括可执行的应用程序文件(这些文件可以直接在Windows上运行,不需要其他程序,其扩展名是.exe)和其他应用程序使用的库(其扩展名是.dll)。
除了包含CIL外,程序集还包含元信息(即程序集中包含的数据的信息,也称为元数据)和可选资源(CIL使用的其他数据,例如,声音文件或图片)。元信息允许程序集是完全自描述的。不需要其他信息就可以使用程序集。这样,部署应用程序就非常简单了,只需要把文件复制到远程计算机上的目录下即可。通常,我们把那些可重用的代码放在所有应用程序都可以访问的地方。在.NET Framework中,这个地方是全局程序集缓存(Global Assembly Cache,GAC),我们只需要把包含代码的程序集放在该缓存对应的位置即可。
3. 托管代码:
在将代码编译为CIL,再用JIT编译器将它编译为本机代码后,CLR的任务还没有全部完成,还需要管理正在执行的用.NET Framework编写的代码(这个执行代码的阶段通常称为运行时,RunTime)。即CLR管理着应用程序,其方式是管理内存、处理安全性以及允许进行跨语言调试等。相反,不受CLR控制运行的应用程序属于非托管类型,某些语言如C++可以用于编写这类应用程序,例如,访问操作系统的低级功能。但是在C#中,只能编写在托管环境下运行的代码。我们将使用CLR托管功能,让.NET自己与操作系统进行交互。
4. 垃圾回收:
托管代码最重要的一个功能是垃圾回收。这种.NET方法可以确保应用程序不再使用某些内存时,就会完全释放这些资源。.NET垃圾回收会定期检查计算机内存,从中删除不再需要的内容。它不设置时间帧,可能一秒钟内会进行上千次的检查,也可能几秒钟才检查一次,或者随时进行检查,但一定会进行检查。
在编程时,如果需要许多内存才能运行的代码应自己执行这样的检查,而不是坐等垃圾回收。
- C#概念及其与.NET Framework关系
- C#语言:
C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。
2. C#与.NET关系:
C#只是.NET开发的一种语言。