本系列笔记为读《.NET大局观》 David chappell著 荣耀 译 的笔记
shine tian看书
.NET是一个施用与一系列技术上的商标
Web services是.NET技术中的一个核心技术
.NET Framework ,包括通用语言运行居(CommonLanguage Runtime ,CLR) 和.NET 框架类库(.NET Framework class library)
CLR 是建造一系列应用程序的标准基础,
.NETFramework 类库则是为许多基于CLR的应用程序提供的一个开发环境,这类技术有
ASP.NET 最新一代ASP(ActiveServer Pages)技术
ADO.NET 操作数据库的技术
等等
使用.NET框架(并依此而依赖CLR)建立的软件,通常被称为托管代码,一个应用程序可以单单使用托管代码进行构建,完全依赖于CLR以及.NET框架类库的相关部分,一个应用程序也可以联合使用托管代码与普通的非托管代码进行构建,必要的时候有两者进行互作用。
这种代码通常是面向对象的,它所创建和使用的对象通常称为托管对象。一个托管对象可以使用(甚至继承)另一个托管对象—即使这两个对象是以不同的语言编写的。
鉴于CLR所扮演的基础角色,彻底理解.NET框架必须以透彻理解此运行时环境为起点
以前没有.NET的时候,微软环境的应用程序开发人员依赖一套称为windows DNA的技术(这种技术包括组件对象模型COM·等),虽然windows DNA环境允许开发人员使用个不同类型的编程语言,但每种语言都有自己的各自不同的特点,而且差异不小,这种差异导致需要使用多种语言开发的人员面临困难重重,通过接口,数据类型及不同软件交互的其他方面的公共约定,COM有效的解开这个复杂环境绑在一起的一个绳索。
现在,通过提供一个可以所有语言使用的通用基础,.NET框架大大减轻了windows开发人员的负担,构建于.NET框架上的应用程序不必面对COM需要面对的许多问题
因此,COM所提供的不同语言之间的胶水不再有用武之地。
CLR 为建造在其上的语言定义出了一套通用语义,至于语法,CLR无任何限制,一门语言看起来该是什么样子,是否包括大括号或者分号其他东西,完全是由那么语言来定夺。
除了标准的数据类型,CLR还提供了一些基础服务,这些服务包括:
垃圾回收
元数据标准格式:每一个类型的信息都存储在该类型的编译的代码后面
一个用以组织编译后代码的通用格式,称为程序集
不论任何语言,所有托管代码都被编译成MSIL(微软中间语言),而非特定于机器的相关二进制码,MSIL是一套与CPU无关的指令集,用来执行诸如装载和存储信息,调用方法之类的典型动作
在机器上安装一个.NET框架应用程序,意味着将“内含MSIL而非特定机器相关的二进制码”的磁盘文件拷贝上去,当应用程序被运行起来时,MSIL会在运行前被转换成本地代码
每一个应用程序的每一个方法在第一次被调用的时候才被编译,由于只在运行时才被编译,因此这种方法又被称为及时编译(just in time compilation -----JIT)
还有一个值得注意的地方,任何构建在CLR上面的语言都应该表现出与其他CLR语言大致相同的性能。
任何人一旦打算在NET Framework上开发应用程序,一开始的最大任务是学会使用这个库类所提供的诸多服务,不是说要所有都学,而是自由选择先关的事务并专注其中
构建WEB应用程序:ASP.NET
数据库访问ADO.NET
.NET框架还支持一种叫做并行(side-by-side)执行的选项,这个选项不仅允许同时运行相同应用程序的不同版本,而且骄傲允许.NET框架自身多个版本同时运行,这使得企业组织向新版.NET框架进发之际,无需变动运行.NET较早发行版的已有应用程序
Mono提供.NET程序所需的安全的非微软替代方案
Visual studio是一个产品家族
除了C++以外,无法使用通用语言创建传统独立的二进制可执行代码。
C#比较有意思的特性:
单继承
子类能够重写父类的虚方法
支持异常处理
利用.NET框架类库实现完备的多线程功能
允许直接在C#中定义接口
支持属性properties和事件event
支持特性attributes 允许通过向源代码插入关键字而实现事务支持(transaction support)和web service
垃圾回收机制
支持泛型
允许编写“直接访问特定内存地址的代码”,这种东西有时候被称为“非安全代码”