读《C#高级编程》第1章 .Net机构体系笔记
网红的话:爸爸说我将来会是一个牛逼的程序员,因为我有一个梦,虽然脑壳笨但
是做事情很能坚持。
本章主要是了解.Net的结构,都是一些概念,并没有可操作的代码。但是这些概念
有联系,但深刻理解必须要有全局思维和实践基础。
目录:
C#与.Net的关系
公共语言运行库(CLR)
中间语言
程序集
.NET Framework类
名称空间(命名空间):避免类名冲突的一种方式。
用C#创建.Net应用程序(介绍一堆产品概念)
C#在.Net企业体系结构中的重用(介绍.Net的优势:组件冲突少、快速访问数据库
、多功能的基类、易编写窗体界面)
1、什么是C#?
C#(读作:C sharp)只是一种面向对象语言,用于生成面向.Net环境的代码,它本
身不是.Net的一部分。.Net支持的一些特性,C#并不支持。而C#语言支持的另一种
特性,.Net却不支持。
注意:要求紧急和高性能时,C或C++这些接近机械码的语言更适用。
2、什么是.Net?
网友说:
dotNet=.net 他是一个框架,一个开发运行环境。 .net 包括 asp.netc#.net
vb.net ado.net 等一系列桌面、web编程、数据库技术。 要学好.net 首先你要搞
清楚.net体系各个运行环境\技术之间的关系。 然后你搞清楚你自己的学习方向和
技术偏向。
.NET就是微软的用来实现XML,WebServices,SOA(面向服务的体系结构service-
oriented architecture)和敏捷性的技术。对技术人员,想真正了解什么是.NET,
必须先了解.NET技术出现的原因和它想解决的问题,必须先了解为什么他们需要
XML,Web Services 和 SOA。技术人员一般将微软看成一个平台厂商。微软搭建技术
平台,而技术人员在这个技术平台之上创建应用系统。
从这个角度,.NET也可以如下来定义:.NET是微软的新一代技术平台,为敏捷商务
构建互联互通的应用系统,这些系统是基于标准的,联通的,适应变化的,稳定的
和高性能的。从技术的角度,一个.NET应用是一个运行于.NET Framework之上的应
用程序。(更精确的说,一个.NET应用是一个使用.NET Framework类库来编写,并
运行于公共语言运行时 Common Language Runtime之上的应用程序。)如果一个应
用程序跟.NET Framework无关,它就不能叫做.NET程序。比如,仅仅使用了XML并不
就是.NET应用,仅仅使用SOAP SDK调用一个Web Service也不是.NET应用。
2公共语言运行库是啥?
(CLR,Common Language Runtime)和Java虚拟机一样也是一个运行时环境,是一个
可由多种编程语言使用的运行环境。CLR的核心功能包括:内存管理(如垃圾回收)
、程序集加载、安全性、异常处理和线程同步,可由面向CLR的所有语言使用。并保
证应用和底层操作系统之间必要的分离。CLR是.NET Framework的主要执行引擎。
http://baike.so.com/doc/5446388-5684755.html
优点:平台无关性(理论上)、提高性能、语言的互操作性。
通常将CLR控制下运行的代码叫做托管代码。
3、什么是中间语言?
IL是.NET框架中中间语言(IntermediateLanguage)的缩写。使用.NET框架提供的
编译器可以直接将源程序编译为.exe或.dll文件,但此时编译出来的程序代码并不
是CPU能直接执行的机器代码,而是一种中间语言IL的代码。特性:平台无关性、高
性能、语言的互操作性。
4.什么是程序集
程序集是.Net应用程序的部署单元。.Net应用程序包含一个或多个程序集。通常扩
展名是exe或dll的.Net可执行程序称为程序集。程序集与本地dll或exe的区别:它
们的扩展名虽然相同,但是.Net程序集包含元数据,这些元数据描述了程序集中定
义的所有类型及其成员的信息,即方法、属性、事件、字段。
元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data about
data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数
据、资源查找、文件记录等功能。元数据算是一种电子式目录,为了达到编制目录
的目的,必须在描述并收藏数据的内容或特色,进而达成协助数据检索的目的。
5什么是.NET Framework类
.Net基类似一个丰富的托管代码类集合,它可以完成以前用于WindowAPI来完成的绝
大多数任务,它沿用中间语言的对象模型,基于单一继承性。可以使用任何使用
的.Net基类实例化对象,也可以从他们派生出自己的类。
6 API是什么?
应用程序接口是一组数量上千、极其复杂的函数和副程序,可让程序员做很多任务
作,譬如"读取文件"、"显示菜单"、"在视窗中显示网页"等等。操作系统的API可用
来分配存储器或读取文件。许多系统应用程序借由API接口来实现,像是图形系统、
数据库、网络Web服务,甚至是联机游戏。
API之主要目的是提供应用程序与开发人员以访问一组例程的能力,而又无需访问源
码,或理解内部工作机制的细节。提供API所定义的功能的软件称作此API的实现。
API是一种接口,故而是一种抽象。
http://baike.so.com/doc/1026230-1085327.html
7什么是DLL?
一般来说,DLL 是一种磁盘文件,以.dll、.DRV、.fon、.SYS 和许多以 .EXE 为扩
展名的系统文件都可以是 DLL。它由全局数据、服务函数和资源组成,在运行时被
系统加载到调用进程的虚拟空间中,成为调用进程的一部分。如果与其它 DLL 之间
没有冲突,该文件通常映射到进程虚拟空间的同一地址上。DLL 模块中包含各种导
出函数,用于向外界提供服务。DLL 可以有自己的数据段,但没有自己的堆栈,使
用与调用它的应用程序相同的堆栈模式;一个 DLL 在内存中只有一个实例;DLL 实
现了代码封装性;DLL 的编制与具体的编程语言及编译器无关。
http://baike.so.com/doc/6836455-7053686.html
DLL与API是啥?
http://blog.sina.com.cn/s/blog_65ef990c01010kiv.html
8、COM组件
COM是开发软件组件的一种方法。组件实际上是一些小的二进制可执行程序,它们可
以给应用程序,操作系统以及其他组件提供服务。开发自定义的COM组件就如同开发
动态的,面向对象的API。多个COM对象可以连接起来形成应用程序或组件系统。并
且组件可以在运行时刻,在不被重新链接或编译应用程序的情况下被卸下或替换掉
。Microsoft的许多技术,如ActiveX, DirectX以及OLE等都是基于COM而建立起来的
。并且Microsoft的开发人员也大量使用COM组件来定制他们的应用程序及操作系统
。书籍《COM技术内幕》
http://baike.so.com/doc/5446626-5684993.html
9堆和栈
特点:堆:先进先出,栈:先进后出。
1.对栈而言,栈中的新加数据项放在其他数据的顶部,移除时你也只能移除最顶部
的数据(不能越位获取)。
2.对堆而言,数据项位置没有固定的顺序。你可以以任何顺序插入和删除,因为他
们没有“顶部”数据这一概念。
http://kb.cnblogs.com/page/501239/
。