读《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.net c#.net vb.net ado.net 等一系列桌面、web编程、数据库技术。 要学好.net 首先你要搞清楚.net体系各个运行环境\技术之间的关系。 然后你搞清楚你自己的学习方向和技术偏向。 .NET就是微软的用来实现XML,Web Services,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框架中中间语言(Intermediate Language)的缩写。使用.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/ 。