第一部分 CLR 基础

本部分共分为三章讲述

1.CLR的执行模型

2.生成、打包、部署和管理应用程序及类型

3.共享程序集和强命名程序集

里面涉及了很多手动执行和了解的内容,因为看书经常是趁着地铁上的时间,所以实践比较少,故了解的也不是很透彻,这篇总结,就先以理解到基础概念串联一下吧。

 

 

基于.NET的CLR

首先了解一个基于window操作系统编程的过程,大致经历过以下几个阶段:

  1. 纯Win32API:不是面向对象的
  2. MCF(Microsoft Foundation Class)微软基础类库:是面向对象,但它却不一致,并逐渐变得陈旧
  3. COM(Component Object Model)组件对象模型:概念简单,实际代码复杂

以上三种均主要是针对桌面程序,而不是Internet进行开发。

由于计算机技术不断的进步吧,.Net应运而生。以上的几种开发方式,本人从业以来有偶尔用过一些,但也只是极少数情况下,比如将界面钉在桌面上之类的,都是因在.NET中不好实现,从网上找解决方式的时候,查到先辈的经验。

                       

 

.NET框架由三部分组成

1.CLR(Common Language Runtime)公共语言运行时(库),也是这本书主要阐述的

 

内容包括:

基础类库支持:支持运行BCL提供的大量类型

线程支持:支持线程操作

COM适配器:支持与COM交互

类型检测:保证类型安全

异常管理:优雅的异常处理机制

安全引擎(服务):——不清楚体现在哪里?

调试引擎:强大的调试机制

JIT编译器:将中间语言编译成本机代码

代码管理:――不清楚体现在哪里?

垃圾收集:内存垃圾回收机制

类加载器:类型加载机制

内存管理:帮助开辟内存等的管理

反射服务:除类型内部加载外的反射加载方式

 

2.BCL(Basic Class Library)基类库,其它的不说,开发的时候,引用system命名空间下的那些内容,都是这儿的。此处引自一篇博客里面的描述,区别基类库与框架类库(Framework Class Library)的区别,有助于理解:其实和我们每天都要打交道的就是FCL了,BCL是FCL的一个子集.BCL中包含了与编译器以及CIL语言关系紧密的核心类,以及常见开发任务中都会用到的类型。而FCL包含的内容很多,服务于一种应用场景的子类库就可以写一本书了...从功能上看,可以将FCL框架类库划分为以下几层:

最内一层,由BCL的大部分组成,主要作用是对.NET框架,.NET运行时以及CIL语言本身进行支持,例如基元类型,集合类型,线程处理,应用程序域,运行时,安全性,互操作等。

中间一层,包含了对操作系统功能的封装,例如文件系统,网络连接,图形图像,XML操作等。

最外一层,包含各种类型的应用程序,例如Window Forms,Asp.NET,WPF,WCF,WF等。

 

3.编程工具,Visual Studio开发环境是目前最好用的编辑程工具了,没有之一,说起来,个人喜欢.NET开发,也是和这个脱不了关系的。严格来说,.NET只包括上面的两项。

 

 

.NET Framework CLI(Common Language Infrastructure)公共语言基础结构

主要提两项:

1.公共类型系统CTS(Common Type System)

.NET之所以能够跨语言,该公共与下一公共是实现的一个保障。

--CTS规定,一个类型包括以下几项成员

字段:用来存储数据。

方法:针对数据执行的操作。

属性:可以看作是以上两种的结合,形成的一种固定写法。

事件:通知机制,特殊的代理。

--CTS规定了它的访问可见性

privte

fmily

family and assembly

ssembly

family or assembly

public

这些看起来和C#代码的有些写法不太一样,这是针对不同的语言做了处理的目的。准确来说应该是对上层各种语言进行了汇总提取处理。

--CTS还为类型继承、虚方法、对象生存周期等定义了相应的规则。

--CTS规定,所有类型最终必须从System.Object类型继承。

2.公共语言规范CLS(Common Language Specification)

 公共言语规范是各种语言的一个交集

提炼CLS的规则。在CLR中,一个类型的每个成员要么是一个字段(数据),要么是一个方法(行为)。这意味着每一种编程语言都必须能访问字段和调用方法。这些字段和方法通过特殊或者通用的方式来使用。为了方便进行编程,语言通常提供了额外的抽象,对这些常见的编程模式进行简化。例如,语言可能公开枚举、数据、属性、索引器、委托、事件、构造器、析构器、操作符重载、转换操作符等概念。编译器在源代码中遇到上述任何一种构造,必须将其转换成字段和方法,使CLR和其他任何编程语言能够访问这些构造。

posted on 2018-04-07 20:58  走调的钢琴  阅读(165)  评论(0)    收藏  举报