平常经常提到.NET平台,Java平台。但是要具体说点东西出来,好像又不甚了解。今天特意找了一本书看了一下,做一个小小的总结。
新一代网络计算模式的技术特征是:WWW+HTTP+JAVA,由这3项技术支持的网络计算具备两个要素:
- 开发的软构件随处可移,是平台无关的。
- 有一个统一表达、描述信息的标准协议,解决异构系统间的通信问题,实现真正的网络计算。
微软公司在2000年6月发布了下一代网络计划(NGWS)——Microsoft .NET。这为开发商进行网络计算应用提供了两个强有力的技术支持,即上述的两个要求(.NET虚拟机和C#语言)。
.NET平台由5个部分组成:
- Windows.NET:即可运行.NET程序的操作系统。
- .NET Enterprise Servers: 这是微软公司推出的进行企业集成和管理所有基于web的各种服务器应用的系列产品。
- .NET Framework: 这是.NET的核心部分,提供了建立和运行.NET应用程序所需要的编辑、编译等核心服务。
- Visual Studio .NET:不用多说了吧,就是IDE可视化集成开发环境。
- .NET Web服务构件:要保证.NET能够正常运行,需要提供一些公用性Web服务,包括身份认证、发送信息、个性化服务、系统化存储、日历、目录等。.NET Web服务构件可以从任何支持SOAP的平台上访问。
接下来着重介绍.NETFramework
.NET Framework实际上是运行在windows系列操作系统上的一个系统应用程序。采用一种全新的网络计算机模式,通过标准的Internet协议如XML和SOAP等,解决了异构平台上的分布式松耦合计算问题。
.NET Framework包括以下组件:
- 公共语言运行时(CLR)
- 基础类库(BCL)
- 数据库访问组件(ADO.NET和XML)
- 基于ASP.NET编程框架的网络服务(Web Service)和网络表单(Web Form)
- windows桌面应用界面编程组件(WinForm)
CLR:公共语言运行时是.NET框架的最底层,是一个软件引擎,用于加载应用程序、检查错误、进行安全许可认证、执行和清空内存。运行时分为3种:纯静态环境(如Fortran)、基于堆栈环境(如C、C++、Pascal)和纯动态环境(如SmallTalk、Java)。CLR是属于纯动态运行时的一种,它的主要组成部分是虚拟执行引擎VEE(Virtual Execution Enging)。
CTS:公共类型系统,为了实现语言的互用性,采用标准化数据类型和标准化应用程序格式。标准化应用程序格式是指,.NET拥有自己的(微软中间语言)MSIL、元数据和清单的汇编。所有的.NET语言的编译器都生成这种格式。通过从元数据中提取出有关的MSIL的信息,编译器、调试器和协调器等工具可以分析处理任何一种源程序设计语言的数据。
CLR工作原理:写了很多,不如来一张图轻松一下。
源代码可以使用多种语言编写,然后用.NET编译器编译此代码,编译器输出的不是可执行代码,而是一种特殊的伪代码,这些伪代码被称为MSIL代码,他就是应用程序的汇编文件。
为了加载一个应用程序,CLR使用汇编的清单确定应用程序所需要汇编的正确版本。然后CLR检查应用程序的全部汇编。当需要运行程序时,CLR的即时编译器JIT再把相应的MSIL翻译为可执行代码。
CLR可以监控翻译代码的运行,并且定期清空应用程序释放的内存(使用GC机制)。
什么是元数据?
元数据就是“数据的数据”,它包括对CLR保存的每个元素的描述信息。这些元素包括汇编、类型、方法、属性、执行引擎以及另一个组件的调用数据等。运行时利用这些信息进行操作,如调试和垃圾回收。
托管与非托管代码?
.NET的托管代码是指符合CLR运行规范,能受控于CLR下的内存管理、线程管理、远程管理、代码强制安全类型的代码。非托管代码指对内存、文件、数据库等非托管资源进行操作的代码,它们通常不受控于CLR的代码管理规范,是不安全代码。
暂时就到这里吧,基本已经涵盖了.NET平台的工作机制了。各位码友,欢迎一起交流。