NET Framework:就是微软Web Services 引擎
有许多程序设计师和使用者非常渴望有一个完善而且透明清楚的基础架构来建立Web Services(因特网服务)NET Framework 就是为了这个需求而提供的基础架构NET Framework 提供了应用程序模型及关键技术让开发人员容易以原有的技术来产生布署并可以继续发展具有高安全高稳定并具高延展的Web Services对于NET Framework 而言所有的组件都可以成为Web ServicesWeb Services 只不过是另一种型态的组件罢了微软将COM 的优点整合进来它可以不用像COM 那么严谨的来栓锁两个对象NET Framework 以松散的方式来栓锁Web Services 这种型态的组件这样的结果让开发人员非常容易的发展出强而有力的Web 服务组件提高了整体的安全及可靠性并且大大的增加系统的延展性
NET Framework:由三个部分组成
NET Framework 的目的就是要让建立Web Services 以及因特网应用程序的工作变的简单NET Framework 包括了三大部分:第一个部分是Common Language Runtime(CLR所有NET 程序语言公用的执行时期组件)第二部分是共享对象类别库(提供所有NET 程序语言所需要的基本对象)第三个部分是重新以组件的方式写成的ASPNET(旧版本则是以aspdll提供ASP 网页所需要的对象)
Common Language Runtime(CLR)架构在操作系统的服务上它负责应用程序实际的执行满足所有的应用程序的需求;例如内存管理处理安全问题整合不同的程序语言等等Runtime供了许多帮助程序写作的简化以及应用程序的部署并同时加强程序稳定可靠的一些服务不过程序设计师实际上不会被Runtime 所影响因为他们所面对的是架构在CLR 上面的共享对象类别库这个共享对象类别库可以被任何程序语言所使用在这个类别中包含了以建构Web 为基础的应用程序模型提供以架构Web 服务与Web 应用程序为目标的组件及服务这个就是我们要讨论的ASPNET
Common Language Runtime(CLR)
想要执行由某种特定程序语言所开发出来的程序计算机内部必需装置这种特定程序语言的执行时期(Runtime)组件才可以例如想要执行以VB 所撰写的程序计算机内就必须有安装VB的Runtime (msvbvmdll)才可执行;而其它诸如由Java 或是VC++ 等的程序语言所写成的软件也是需要Runtime 组件才能执行为什么Runtime 组件如此重要?这是因为Runtime组件内部有该种程序语言所需要的一些核心功能例如提供该种语言所需要的基本函式及对象等等;所以当程序在执行时会动态的连结到Runtime 组件取得所需要的功能但是不同的程序语言所需要的Runtime 不一样所以会造成程序设计师在开发时的困难另外在浏览网页时如果该网页有包含有类似以VB 这种程序语言所开发的ActiveX 控件时除该控件会被下载外如果使用者没有安装VB 的Runtime 组件那么执行起来会发生些问题所以为了要解决上述的问题NET Framework 在发展时设计了让所有NET 的程序语言共同使用的Runtime 组件这个组件的名称就叫做Common Language Runtime(CLR)CLR 是一个高效率的执行引擎程序代码的执行是由Runtime 所管理Runtime 负责的工作有产生对象方法(methods对象所能执行的动作称之)的呼叫等等Runtime 也可以提供程序代码一些额外的服务我们把要透过CLR 的控制才能执行的程序代码称为Managed Code
Intermediate Language 及Just In Time 编译器
在了解CLR 所扮演的角色后我们要介绍IL(Intermediate Language)以及JIT(Just In Time)编译器旧版的ASP 是以直译的方式一行一行的执行程序所以如果网页程序太复杂或是浏览人数变多或是服务器负载变重其执行的效率可想而知ASPNET 为了改善执行的效率以及让程序将来可跨平台执行所以便设计了IL 以及JIT 编译器IL 这种架构非常接近机器码可以非常有效率的透过JIT 编译器转换为机器码;而透过JIT 编译器所编译出来的机器码还是被CLR 所管理IL 含有许多广泛的指令不但包括对象的加载排序初始以及方法呼叫的指令(关于对象方法等第三章有详细的讨论)而且还有算数暨逻辑运算流程控制直接内存存取以及例外处理的指令不过因为每个CPU 的架构都不一样所以IL 不能够直接执行;必需透过JIT 编译器先转换成被CPU 所认识的指令后才可执行只要有支持该种CPU 架构的JIT 编译器就可以把IL 编译成可以在该CPU 架构上执行的机器码这意味着IL 透过各种JIT编译器将可以跨平台而IL 这种格式又非常接近机器码直接由这种格式透过JIT 编译器编译成机器码的速度又非常的快所以第一次执行aspx 网页时需要编译成IL 效率较差外尔后只要aspx 网页没有异动过就只要从IL 透过JIT 编译器编译成机器码就可以执行效率当然比以前的ASP 网页以直译器来执行的效率提升许多编译成IL 也有另外一个好处那就是只要该种程序语言可以被编译成IL就可以由JIT 编译器编译执行所以不管该组件用VBC#Java 或其它语言所写成的都可以被结合在一起使用;这个结合组件的动作称为组装(Assembly)
组件Assemblies
组件就是组成NET 应用程序的任何元素可能来自于NET Framework 对象类别库中的基础对象或是我们自行开发的对象我们利用这些组件来开发NET 应用程序最后将这些组件进行组合的动作使用这些组件将我们的应用程序制作成执行文件(EXE)或是动态连结函式库(DLL)