读<.net大局观>笔记(一)

最近刚由图书馆借来此书一看,立即被其吸引。因此决定将阅读过程中,发现的好东西存起来,以备自己以后回忆或供他人参考。

 

.NET标签现今主要指的是:

1 .net框架,发布于2002年,包括通用语言运行时(CLR).NET框架类库(FCL)CLR主要为构建应用程序提供标准的基础设施,FCL则是提供了一堆标准类及其他类型,供开发者调用。

2 Visual Studio 一种用于快速创建各种.net框架应用程序的集成开发环境(IDE),它支持的语言包括C#VB C++以及J#(VS2008中已取消对J#的支持)

PS.net在早期(2000)的时候,是贴满了Microsoft的众多产品:SQL Server BizTalk Server .net My Services(貌似已废了),甚至有谣传将来某个时候会发布windows.NET &Office.NET,最后发展到今天终成以上两样。

 

CLR中的CTS提供一套通用数据类型:

整数(integers),字符串(string),类(class),接口(interface)…..以及继承机制等语义。但对语法并无具体限制。还有包括一些基础服务:

垃圾回收器(GC),自动释放不再被引用的托管对象。

元数据(Metadata)标准格式,每一个类型的信息都存储在该类型编译后的代码里头.

 程序集(assemblies),用于组织编译后的代码的通用格式。

C#的编译器是csc.exe VBvbc.exe C++/CLI则是cl.exe

他们通常位于C:\Windows\Microsoft.NET\Framework\v2.0.50727\目录下,

首先使用他们对应的编译器将源代码编译成MSIL和元数据,并且放在一起。最后程序运行之前,再通过即时编译(JIT)器编译成本地CPU可识别的机器码。默认情况下,每一个应用程序中的每一个方法都是在第一次被调用的时候才被编译。

FCL包括以下多项

asp.net:用于创建基本浏览器的应用程序。

Windows Forms:用于创建Windows图形用户界面程序。

Web Services:用于创建利用webservices与其他应用程序通讯的应用程序。

Enterprise Services:提供分布式事务、对象实例控制,以及其他可以构建可靠的、可伸缩的应用程序的服务。

ADO.NET:集中于访问关系型数据库中的数据。

还有其他包括安全服务、处理XML文档、与旧windows应用程序互操作的机制。。。

.net比较于java 平台,只是对应项,并无具体参数

asp.net VS jspwinforms VS swingweb services VS JAX-WSEnterprise Services VS EJBado.net VS jdbc c# VS java

当然java是跨平台的,移植性更好,但是与系统的紧密性也变弱了,这点我无法看出。

.net则是专注于windows系统,著名的.net平台之“非微软生产“的mono项目虽然也能跨平台,然而对于企业来说,却并不是一个首选。

 

第二章

CLR里面定义了一种类型叫做通用类型系统(CTS),CTS中的每一个类型不是值类型(value type)就是引用类型(reference type)

值类型(int char double byte struct)都是继承自ValueType,而ValueType则是继承自System.Object

引用类型(class interface string array)则是直接继承自Object

要理解值类型和引用类型的区别,首先要理解它们是如何被分配到内存中的,其实主要有两种分配方式:堆栈(stack)和堆(heap)

Add()方法中声明了一个int i=4; 则只有调用了Add()方法时,该变量才会被分配在堆栈中的一个地址(0x0006f)上供使用,当Add()方法结束时,该地址则被自动释放(我认为这个应该不是GC干的)
posted @ 2009-11-18 11:07  os340223  阅读(317)  评论(0编辑  收藏  举报