一. 什么是 .NET?
根据微软的定义:.NET is a“revolutionary new platform,built on open Internet protocols and standards,with tools and services that meld computing and communications in new ways”,即:.NET = 新平台 + 标准协议 + 统一开发工具。
.NET代表一个集合,一个环境,一个可以作为平台支持下一代Internet的可编程结构。 最终目的是让用户在任何地方、任何时间,以及利用任何设备都能访问所需的信息、文件和程序。它为Internet网络和分布式应用程序的开发提供一个新的开发平台。 简化应用程序的开发和部署,为构建Web Service提供一个标准平台,改善系统和应用程序之间的交互性和集成性。使应用程序对任何设备都能够进行访问。
.NET平台主要包括四个部分的内容:低层操作系统、.Net企业服务器、.Net框架和集成开发工具Visual Studio.Net。
- 低层操作系统
微软借助在桌面操作系统的领导地位,把windows系列操作系统拿入到.Net平台中。
目前Windows2000、WindowsXP、Windows2003支持.Net平台。
- .Net企业服务器
.Net平台提供了系列服务器供企业使用:
- Exchange 2000 Server:Exchange 不是单纯的Email Server,它更是一套不折不扣的信息平台。
- SQL Server 2000:SQL Server 提供完善数据处理功能。包含数据挖掘,XML的直接Internet支持。
- BizTalk Server 2000: 用于企业间交换商务信息,它利用XML作为企业内部及企业间文档传输的数据格式,可以屏蔽平台、 操作系统不同的差异,使商业系统的集成成为可能。
- Commerce Server 2000用于快速创建在线电子商务。
- Mobile Information Server为移动信息解服务器提供可靠而且具有伸缩性的平台。
- .Net框架
.Net FrameWork类似于JVM(虚拟机),他是微软Web Services的引擎。我们习惯的叫做.NET框架,同时我们写的C#,VB.NET,等程序必须在.Net框架上运 行。.Net框架主要包括公共语言运行库(Common Language Runtime CLR)和.Net框架类库(FCL)。
- 集成开发工具Visual Studio.Net
微软将她的全部开发工具都集成在Visual Studio.Net中,在Visual Studio.Net中可以用C#语言、C++语言、Basc语言、J#语言开发。可以开发桌面应用程序、Web应用程序、智能设备应用程序等。
二. 什么是C#
在微软.Net平台上,C#语言是开发的主要语言。C# 是由Microsoft开发的一种新型编程语言,它是从C和C++ 中派生出来的,因此具有C++的功能。由于是Microsoft公司的产品,它又同VB一样简单。对于web开发而言,C#类似Java开发语言,同时又具有Delphi的一些优点。所以Microsoft宣称:C#是开发.NET框架应用程序的最好语言。
.NET平台将 C#作为其固有语言,重温了许多Java的技术规则。C#中也有一个虚拟机,叫做公用语言运行环境(CLR),它的对象也具有同样的层次。但是 C#的设计意图是要使用全部的Win32 API甚至更多。由于C#与 Windows的体系结构相似,因此 C# 很容易被开发人员所熟悉。
三、什么是ASP.NET
ASP.NET是建立在公共语言运行库上的编程框架,可用于在服务器上生成功能强大的 Web 应用程序。与以前的Web开发模型相比,ASP.NET 提供了数个重要的优点:
- 增强的性能。ASP.NET 是在服务器上运行的编译好的公共语言运行库代码。与被解释的前辈不同,ASP.NET 可利用早期绑定、实时编译、本机优化和盒外缓存服务。这相当于在编写代码行之前便显著提高了性能。
- 世界级的工具支持:ASP.NET 框架补充了 Visual Studio 集成开发环境中的大量工具箱和设计器。WYSIWYG 编辑、拖放服务器控件和自动部署只是这个强大的工具所提供功能中的少数几种。
- 威力和灵活性:由于 ASP.NET 基于公共语言运行库,因此 Web 应用程序开发人员可以利用整个平台的威力和灵活性。.NET 框架类库、消息处理和数据访问解决方案都可从 Web 无缝访问。ASP.NET也与语言无关,所以可以选择最适合应用程序的语言,或者跨多种语言的分割应用程序。另外,公共语言运行库的交互性保证在迁移到 ASP.NET 时保留基于 COM 的开发中的现有投资。
- 简易性:ASP.NET 使执行常见任务变得容易,从简单的窗体提交和客户端身份验证到部署和站点配置。例如,ASP.NET页框架使您可以将应用程序逻辑与表示代码清楚地分开用户界面,在类似 Visual Basic 的简单窗体处理模型中处理事件。另外,公共语言运行库利用托管代码服务(如自动引用计数和垃圾回收)简化了开发。
- 可管理性:ASP.NET 采用基于文本的分层配置系统,简化了将设置应用于服务器环境和 Web 应用程序。由于配置信息是以纯文本形式存储的,因此可以在没有本地管理工具帮助的情况下应用新设置。此“零本地管理”哲学也扩展到了 ASP.NET 框架应用程序的部署。只需将必要的文件复制到服务器,即可将 ASP.NET 框架应用程序部署到服务器。不需要重新启动服务器,即使是在部署或替换运行的编译代码时。
- 可缩放性和可用性。ASP.NET 在设计时考虑了可缩放性,增加了专门用于在聚集环境和多处理器环境中提高性能的功能。另外,进程受到 ASP.NET 运行库的密切监视和管理,以便当进程行为不正常(泄漏、死锁)时,可就地创建新进程,以帮助保持应用程序始终可用于处理请求。
- 自定义性和扩展性:ASP.NET 随附了一个设计周到的结构,使开发人员可以在适当的级别“插入”代码。实际上,可以用自己编写的自定义组件扩展或替换 ASP.NET 运行库的任何子组件。实现自定义身份验证或状态服务变得更容易。
- 安全性:借助内置的 Windows 身份验证和基于每个应用程序的配置,可以保证应用程序的安全。
四、 何谓runtime
运行时(Runtime)就是程序启动的运行时状态,也可以说是在一个系统中运行的程序的状态。是不是比较拗口。
在一些程序语言中,特定的可再用的程序或“运行时”被编译成或打包成“运行库”(Runtime Library),这些运行时可以被其他程序链接或被其他任何的程序所再利用。实时运行库,该库里面一般包含程序调用的一些函数原型和说明.
The runtime is when a program is running (or being executable), that is, when you start a program running in a computer, it is runtime for that program. In some programming languages, certain reusable programs or "runtime" are built and packaged as a "runtime library." These routines can be linked to and used by any program when it is run
五、 CLR的功能
NEt提供了一个运行时环境,叫做公用语言运行时,它管理着代码的执行,并使得开发过程变得更加简单。这是一种可操控的执行环境,其功能通过编译器与其它工具共同展现,你的代码将受益于这一环境。依靠一种以运行时为目标的(指完全支持运行时环境的)编译器所开发的代码叫做可操控代码。它得益于可操控环境的各种特性:跨语言集成、跨语言异常处理、增强的安全性、版本处理与开发支持、简单的组件交互模型以及调试服务。为了使运行时环境能够向可操控代码提供服务,语言编译器需要产生一种元数据,它将提供在你使用语言中的类型、成员、引用的信息。元数据与代码一起存储,每个可加载的CLR映像均包含了元数据。运行时环境使用元数据定位并载入类,在内存中展开对象实例,解决方法调用,产生本地代码,强制执行安全性,并建立运行时环境的边界。
运行时环境自动处理对象的展开与引用,当它们不再使用时负责它们的释放。被运行时环境进行这样的生命周期管理的对象被称为可操控代码。自动内存管理消除了内存溢出,同时也解决了其它一些常见的语法错误。如果你的代码是可操控的,你仍然可以在需要的时候使用非可控代码,或者在你的.NET应用中同时使用可控与非可控代码。由于语言编译器支持他们自己的类型,比如一些原始类型,你可能并不总是知道(也不必知道)你的数据是否是可控的。
CLR使设计跨语言的组件与应用变得更加容易。以不同语言设计的对象能够彼此间进行通信,并且它们的行为能够紧密地综合与协调。举个例子,你定义了一个类,然后可以在另一种不同的语言中从该类中派生了一个类或者调用它其中的一个方法。你也可以向另一种语言中类的方法传递该类的一个实例。这种跨语言的集成之所以可能,因为以运行时间为目标的语言编译器与工具使用一种运行时间所定义的公用类型系统,他们遵守运行时的规则(公用语言规范)来定义新的类型,生成、使用、保持并绑定类型。
作为元数据的一部分,所有可控组件携带了关于它们所依赖的组件与资源的信息。运行时环境使用这些信息来保证你的组件或应用具有需要的所有东西的特定版本,其结果是你的代码将不会因为版本冲突而崩溃。注册信息与状态数据不再保存在难以建立与维护的注册表中,你所定义的类型及附属信息作为元数据被保存,这使得复制与移动组件的复杂程度得到降低。
编译工具用他们自己的方式向开发人员展现CLR的功能。这意味着运行时间的一些特性可能在不同的语言中表现形式将会有所不同。你怎样体验运行时的特性将取决于你所使用的语言,比如说,如果你是一位VB开发人员,你可能注意到在运行时环境的帮助下,VB语言比以前具有更多的面向对象的特性。
六、 何谓intermediate language(IL)
所有的.Net语言编译器都生成它。这是编译器生成的二进制代码的公共标准,是CLR执行的语言。CLR也定义存储程序集的元数据的格式,这表示不管使用什么语言编写,所有的程序集都共享存储元数据的公其格式。
七、 何谓 Just In Time Complile
JIT是Just in time compilation的缩写, 是一种利用在运行时将字节码(Bytecode)翻译为机器码(Machine code),并保存在内存中, 在后续的运行中直接调用机器码, 从而改善字节码编译语言性能的技术。
八、 什么是配件(assembly)
一个配件有时候是指一个EXE或者DLL文件, 实际上是一个应用程序(就是指带有主程序入口点的模块)或者一个库文件. 但是配件实际上可以是由一个或者多个文件组成(dlls, exes, html等等), 代表一组资源, 以及类型的定义和实现的集合. 一个配件也可以包含对其它配件的引用. 所有这些资源、类型和引用都在一个列表(manifest)中描述。这个manifest也是配件的一部分,所以配件是一个自我描述的,不需要其它附加的部件对其描述!
配件的另一个重要特性是,它是.Net环境下类型标识的一部分,也可以说是基本单位。因为,区分一个类型的标识就是包含这个类型的配件名字加上类型名本身。举个例子,配件A定义了类型T, 配件B也定义了同名类型T,但是.Net把这两个类型认为是不同的类型。
注意,不要把配件(assembly)和名字空间(namespace)混淆起来。其实,名字空间仅仅是用来把类型名用树的形式组织起来的手段。对于运行是环境来讲,类型名就是类型名,和名字空间一点关系都没有。
总之,记住配件名加上类型名唯一标识一个运行时类型。
另外,配件也是.Net框架用于安全策略的基本单位,许多安全策略都是基于配件的。