1、.NETFramework,.NET概述根据微软的定义:.NETisarevolutionarynewplatform,builtonopenInternetprotocolsandstandards,withtoolsandservicesthatmeldcomputingandcommunicationsinnewways.即:.NET=新平台+标准协议+统一开发工具,1.1.1.NETFramework,.NETFramework,开发工具,客户端,用户体验,ASP.NETWeb应用程序,XMLWebService,数据库服务器,.NETFramework,1.1.1.NETFramew
2、ork,.NETFramework,.什么是.NET框架Microsoft.NET框架是生成、部署和运行Web服务及应用程序的平台。它提供了一个生产率高且基于标准的多语言环境,用于将现有投资与下一代应用程序和服务集成,同时提供了解决Internet规模应用程序的部署和操作难题的灵活性。.NET框架由三个主要部分组成:公共语言运行时(CLR)、统一类库的分层集合和称为ASP.NET的ActiveServerPages组件化版本。,1.1.1.NETFramework,.NETFramework组件,Win32,公共语言运行库(CLR),.NETFramework基础类库,ADO.NET和XML,
3、XMLWebService,用户界面,VisualBasic,C+,C#,ASP.NET,Perl,Python,1.1.3.NETFramework组件,.NETFramework环境,.NET系统结构,公共语言运行时(CLR)是.NET框架应用程序的执行引擎。代码管理(加载和执行)应用程序内存隔离类型安全验证IL到本机代码的转换元数据(增强的类型信息)访问为托管对象管理内存强制代码访问安全异常处理,包括跨语言异常托管代码、COM对象和现有DLL(非托管代码和数据)之间的互操作自动进行对象布局对开发人员服务(配置、调试等)的支持,.NET解决的问题,现有技术存在的问题应用程序之间、设备之间的
4、通信非常困难大部分应用程序不支持多平台和多客户端程序员必须花费大量时间编写底层代码以实现多平台和多客户端支持为提高稳定性和减少工作量,不得不缩小应用程序的应用范围,1.1.2.NET解决的问题,.NET解决的问题,.NETFramework的解决方案公共语言运行库XML工业标准和XMLWebService公共语言运行库实现语言独立性和设备独立性完成大量的底层操作XML工业标准实现不同设备,如个人电脑、蜂窝式电话等的无缝数据通信,1.1.2.NET解决的问题,.NETFramework组件,1.1.3.NETFramework组件,ASP.NET和用户界面位于语言层之下ASP.NET和用户界面构
5、建于公共语言运行库可以使用任何基于.NET的开发语言开发ASP.NETWeb应用程序和Windows应用程序所用的语言使用统一的Windows窗体和Web窗体模型,使用.NETFramework的优点,基于公认的互联网标准和规范HTML、XML、HTTP、SOAP、XSLT、Xpath统一的编程模型编程模型的演变.NET类可被所有基于.NET的开发语言重用同一段代码可被不同类型的应用程序重用,1.1.4使用.NETFramework的优点,使用.NETFramework的优点,层次式的命名空间.NET以命名空间和类的形式组织代码易于扩展的类通过继承扩展现有的类跨语言继承和扩展类语言无关,1.1
6、.4使用.NETFramework的优点,.NET开发工具VisualStudio.NET,VisualStudio.NET,Windows窗体开发工具,Web窗体开发工具,错误处理,数据访问,多语言支持,Web服务开发工具,开发,调试,部署,设计,1.1.5.NET开发工具VisualStudio.NET,ASP.NET,新一代的、灵活性更强的ASP可以访问服务器资源的动态网页技术访问服务器数据库读写服务器文件利用服务器集成的安全机制两项关键技术支持Web窗体和XMLWebServiceWeb窗体是ASP.NET的基础XMLWebService支持高度分布式Web应用程序的开发,1.2.1A
7、SP.NET,ASP.NET,浏览器独立性不依赖于客户端脚本与客户端浏览器、操作系统无关语言独立性可以使用任何基于.NET的开发语言开发ASP.NET应用程序,1.2.1ASP.NET,C语言编译过程,源程序f.c,目标程序f.o,可执行目标程序f.exe,库函数和其他目标程序,编译,Java编译执行过程,ASP.NET,所有managedcode(受控代码)首先被编译为MSIL,然后在运行前转换为原生代码(nativecode),编译(Compilation),运行(Execution),SourceCode,MSILandMatadata,LanguageCompiler,NativeCo
8、de,JITCompiler,安装前或任何函式第一次被呼叫前,以任何语言编写出来的受控代码(managedcode),经过编译后都会产生MSIL和描述那些MSIL的metadata(元数据),DLLorEXE,MSILCodeForClassX,MSILCodeForClassZ,MSILCodeForClassY,Compiler(C#,VB.NET,etc.),MetadataforClassesX,YandZ,ClassXClassYClassZ,这是一个模块,其中包含文件内每一种types的metadata,Module(DLLorEXE),Method1,Method1,Method
9、1,ClassesXMetadata,MSILCodeForClassX,Method2,Method3,MSILCodeForClassY,Method2,Method3,Method4,ClassesYMetadata,ClassesZMetadata,MSILCodeForClassZ,Method2,app1.dll,一个装配件通常就是一个DLL,但也可能不止一个文件,Manifest(清单),CodeForClassX,CodeForClassX,CodeForClassX,MetadataforClassX,YandZ,App2.dll,装配件(Assembly)B,Manifes
10、t(清单),CodeForClassP,CodeForClassQ,MetadataforClassPandQ,CodeForClassR,MetadataforClassR,装配件(Assembly)A,App3.dll,当classZ的method1第一次被调用时,JIT编译器被调用,将method1的MSIL编译为原生代码(nativecode),ClassX,JITCompiler,ClassY,ClassZ,Method1,Method2,Method3,MSILCode,NativeCode,Method1,Method2,Method3,Method4,Method1,Metho
11、d2,1,调用函数,2,编译为MISLcode,3,产生nativecode,当classY的method4被调用时,JIT编译器再一次将method的MSIL编译为原生代码(nativecode),ClassX,JITCompiler,ClassY,ClassZ,Method1,Method2,Method3,MSILCode,NativeCode,Method1,Method2,Method3,Method4,Method1,Method2,6,产生nativecode,4,调用函数,编译为MISLcode,5,当classZ的method1再次被调用时,就不再需要编译了,ClassX,J
12、ITCompiler,ClassY,ClassZ,Method1,Method2,Method3,MSILCode,NativeCode,Method1,Method2,Method3,Method4,Method1,Method2,8,调用下一个函数,7,调用函数,ASP.NETWeb应用程序,XML数据,数据库,Internet,Page1.aspx,Page2.aspx,Web服务,组件,Web窗体,代码隐藏文件,global.asax,Web.config,machine.config,ASP.NETWeb服务器,输出缓存,客户端,1.2.2ASP.NETWeb应用程序,用户界面,用户界面逻辑代码,Web服务器配置文件,Web应用程序配置文件,使用Web服务传送和接收数据,输出缓存加快网页访问速度,.NETFramework和Java环境,1.1.3.NETFramework组件,.NETFramework和Java环境,1.1.3.NETFramework组件,