
.NET Framework概要.docx
3页NET Framework 概要.NET Framework:就是微软WebServices 引擎有很多程序设计师和使用者,格外渴望有一个完善而且透亮清楚的根底架构,来建立WebServices(因特网效劳)NET Framework 就是为了这个需求,而供给的根底架构 .NET Framework 供给了应用程序模型及关键技术,让开发人员简洁以原有的技术来产生、布署, 并可以连续进展具有高平安、高稳定,并具高延展的 Web Services对于.NET Framework 而言,全部的组件都可以成为 Web Services,Web Services 只不过是另一种形态的组件罢了微软将 COM 的优点整合进来,它可以不用像 COM 那么严谨的来栓锁两个对象, .NET Framework 以松散的方式来栓锁 Web Services 这种形态的组件这样的结果让开发人员格外简洁的进展出强而有力的 Web 效劳组件,提高了整体的平安及牢靠性,并且大大的增加系统的延展性NET Framework 由三个局部组成.NET Framework 的目的就是让建立 Web Services以及因特网应用程序的工作变的简洁,.NET Framework 包括了三大局部:第一个部重量 Common Language Runtime〔CLR,全部.NET 程序语言的根本对象〕,第三个局部是重新以组件的方式写成的 ASP.NET(旧版本那么是以 asp.dll供给 ASP 网页所需要的对象)。
Common Language Runtime(CLR)架构在操作系统的效劳上,它负责应用程序实际的执行,满足全部的应用程序的需求;例如内存治理、处理平安问题、整合不同的程序语言等等Runtime 供给了很多挂念程序写作的简化,以及应用程序的部署并同时加强程序稳定牢靠的一些效劳不过程序设计师实际上不会被 Runtime 所影响,由于他们所面对的是架构在 CLR 上面的共享对象类别库,这个共享对象类别库可以被任何程序语言所使用在这个类别中包含了以建构Web 为根底的应用程序模型,供给以架构 Web 效劳与 Web 应用程序为目标的组件及效劳, 这个就是我们要争辩的 ASP.NETCommon Language Runtime(CLR)想要执行由某种特定的程序语言所开发出来的程序,计算机内部必需装置这种特定程序语言 的执行时期(Runtime)组件才可以例如想要执行以 VB 所编写的程序,计算机内部就必需有安装 VB 的 Runtime 组件(msvbvm.dll)才可执行;而其他诸如有 Java 或 VC++等得程序语言所写成的软件,也是需要 Runtime 组件才能执行为什么 Runtime 组件如此重要?这是由于Runtime 组件内部有该种程序语言所需要的一些核心功能,例如供给当种语言所需要的根本函式及对象等等;所以当程序在执行时会动态的连接到 Runtime 组件,取得所需要的功能。
但是不同的程序语言所需要的 Runtime 不一样,所以会造成程序设计师在开发时的困难另外在扫瞄网页时,假设该网页有包含类似以 VB 这种程序语言所开发的 ActiveX 控件时,除该控件会被下载外,假设使用者没有安装 VB 的 Runtime 组件,那么执行起来会发生些问题所以为了要解决上述的问题,.NET Framework 在进展时,设计了让全部.NET 的程序语言共同使用的 Runtime 组件,这个组件的名称就叫做 Common Language Runtime(CLR)CLR 是一个高效率的执行引擎,程序代码的执行是由 Runtiem 所治理,Runtime 负责的工作有产生对象、方法(methods,对象所能执行的动作)的呼叫等等,Runtime 也可以供给程序代码一些额外的效劳我们把要透过 CLR 的把握,才能执行的程序代码称为 Managed CodeIntermediate Language 及 Just In Time 编译器在了解 CLR 所扮演的角色后,我们要介绍IL(Intermediate Language)以及 JIT(Just In Time)编译器。
旧版的 ASP 是以直译的方式一行一行的执行程序,所以假设网页程序太简单或是扫瞄人数变多,或是效劳器负载变重,其执行的效率可想而知ASP.NET 为了改善执行的效率, 以及让程序将来可跨平台执行,所以便设计了 IL 以及 JIT 编译器IL 这种架构格外接近机器码,可以格外有效率的透过 JIT 编译器转换为机器码;而透过 JIT 编译器所编译出来的机器码还是被 CLR 所治理IL 含有很多广泛的指令,不但包括对象的加载、排序、初始、以及方法呼叫的指令,而且还有算数暨规律运算、流程控室、直接内存存取,以及例外处理指令不过由于每个 CPU 的架构都不一样,所以 IL 不能够直接执行;必需透过 JIT 编译器先转换成被 CPU 所生疏的指令后才可执行只要有支持该种 CPU 架构的 JIT 编译器,就可以吧 IL 编译成可以在该 CPU 架构上执行的机器码,这意味着 IL 透过各种 JIT 编译器将可以跨平台而IL 这种格式又格外接近机器码,直接由这种格式透过 JIT 编译器编译成机器码的速度又格外的快,所以第一次执行 aspx 网页时需要编译成 IL 效率较差外,此后只要 aspx 网页没有异动过,就只要从 IL 透过 JIT 编译器编译执行。
所以不管该组件用 VB、C#、Java 或其他语言所写成的,都可以被结合在一起使用;这个结合组件的动作成为组装〔Assembly〕组件 Assemblies组件就是组成.NET 应用程序的任何元素,可能来自于.NET Framework 对象类别库中的根底对象,或是我们自行开发的对象我们利用这些组件来开发.NET 应用程序,最终将这些组件进展组合的动作,使用这些组件将我们的应用程序制作成执行文件〔EXE〕或是动态连结函式库〔DLL〕NET 共享对象类别库在.NET Framework 消灭之前,使用 VisualC++的程序设计师使用 MFC〔Microsoft Foundation Classes〕对象类别库来写程序,而 Visual Basic 的程序设计师那么使用 VBF〔VIsual Basic Framework〕现在.NET Framework 将这些对象库整合并统一,设计了一个让全部程序语言共享的对象类别库这样一来程序设计师不需要再学习多种对象模型或是对象类别库,就可以做到跨语言的对象继承、错误处理以及除错由于不管是VB.NET 或是 C#等程序语言所使用的对象类别库都一样,所以程序设计师就可以自由的选择他们所偏好使用的程序语言。
NET 供给了一个让.NET 全部程序语言使用的共享对象类别库,这个对象类别库供给了几组统一、对象导向、构造化以及可扩大的对象类别库,帮助程序设计师快速的开发软件共享对象类别库中供给了很多对象,包括集合、IO、数据形态等等,也供给一些对象类别可以存取操作系统效劳,例如绘图、讯息、网络、执行绪与数据存取等等程序设计师可以直接建立.NET 共享对象类别库供给的对象,也可以呼叫共享对象类别库的功能,或者藉由继承某个对象的功能来扩大自己建立的对象共享对象类别库ASP.NET 是共享对象类别库中的一员,ASP.NET 供给了一个 Web 应用程序模型这模型供给了一些窗体、控件及根底架构,让程序设计师简洁建立 Web 应用程序ASP.NET 供给了一些对应 HTML 元素〔例如按钮、清单盒等〕的 HTML 控件〔HTMLControls〕以及功能更强的Web 控件〔WebControls〕;这些控件在效劳器端执行,然后在客户端的扫瞄器以HTML 元素的方式显示这种 HTML 控件在效劳器端以对象导向的方式被程控,让程序设计师享受到对象导向程序写作的优点,简化程序的简单性使用者接口感应ASP.NET 另外一个重要的功能,是这些控件被设计成可以适应客户端,同样的一页可以被扩大的客户端平台扫瞄。
换句话说, Web 网页会侦测客户端所需的格式供给适合的网页:供给应行动 WML,力量较差的扫瞄器供给 HTML3.2,而 IE5.5 那么供给 DHTMLWeb ServicesASP.NET 也可让程序设计师把软件做成效劳〔Service Software,在效劳器中以供给效劳的方式所存在的应用程序〕的方式执行Web Services 是一种可以使用在因特网的程序规律,和传统的应用程序可以使用操作系统供给的功能一样,以因特网为根底的应用程序也可以利用WebServices 来增加本身的功能要解决应用程序间的整合,以及把程序做成效劳程序的方法,就是使用 Web Services〔网站效劳,在网站中供给效劳〕Web Services 供给简洁、弹性, 并以标准模块的方法来建立透过因特网工作的应用软件因特网应用程序可以将 Web Services 在不管是否不同平台、不同程序语言所开发,以及不管新旧的情形下轻松的做整合利用 ASP.NET 的新功能可以简洁的将企业法那么写成 Web 效劳组件,这时 ASP.NET 所供给的一些根底架构就负责透过 SOAP 或是 XML 等标准通讯协议来使用这些效劳组件。
了解 CLR 实际的运作对.NET Framework 有个概念之后,我们在来了解 CLR 实际的动作:1. 首先程序代码先由编译器编译成 IL,同时相关联数据会由相关数据引擎〔Metadata Engine〕产生2. 这时候假设有不同的语言所编译成的 IL 或机器码,连接器〔Linker〕就可以将它连结进来, 并产生包还 IL 的 EXE 或 DLL,编译器的功能在这里就算完成了3. 这时当程序在执行的时候,就是 CLR 执行工作的时候程序中假设有任何使用到 .NET Framework 共享对象类别库的程序代码时,会被对象类别加载器〔Class Loader〕载入并合并这时候被合并的程序代码在 JIT 编译器执行之前可以透过查验器〔Verifier〕来检查型别平安 4.最有由 JIT 编译器把程序代码编译成可以被 CLR 所治理的机器码便可执行。












