微软.NET平台与开发体系结构日程.NET开发的底层框架应用程序体系结构应用程序开发实践什么是.NETFramework?是一组技术为互联网和分布式应用程序开发提供一种新的开发平台简化应用程序开发和部署为WebService提供一种标准平台改善系统和应用程序之间的交互性和集成性使应用程序对任何设备都能够进行访问.NET应用程序类型WindowsForm应用程序WindowsForm控件WindowsService应用程序ASP.NETWeb应用程序WebService.NetFramework的设计基于如下目标简化开发(Simplifydevelopment)简单快速,屏蔽底层细节统一的编程模式(Unifyprogrammingmodels)跨语言和应用类型使用公认的互联网国际标准RichXML,standardprotocols,stateless更加容易地部署,运行和维护Forcomponents,versioning,availability对Web标准的支持.NETFramework支持HTML,XML,SOAP,XSLT,XPathWebservices使互联网上不同设备能够交互现有的远程协议–DCOM,CORBA,RMI–都不能很好地使用于互联网使用松耦合的RPC机制–SOAPXML的支持很深地扎根在.NETFramework里Data,Remoting,Serialization,documentation,config.NETFramework的组成部分公共语言运行时(CommonLanguageRuntime)(CLR)适用所有语言的公共类型系统(CommonTypeSystem)多语言互用(可以相互继承和调用)丰富的运行时环境丰富的类库基本类库(Baseclasslibraries),ADO.NET和XMLWindowsFormsWeb应用平台ASP.NET丰富的交互式网页强有力的WebServicesOperatingSystems.NET平台开发人员发展历程操作系统应用服务实现开发工具支持.NETEnterpriseServers.NETFramework.NETBuildingBlockServicesVisualStudio.NET操作系统公共语言运行时统一的API(类库)支持编程语言结构操作系统公共语言运行时基本类库ADO.NET和XMLASP.NETWebForm,Web服务MobileInternetToolkitWindowsForm公共语言规范(CLS)VBC++C#J#…VisualStudio.NET.NETFramework体系结构The.NET的演变历史在COM之前,应用程序是完全分开的实体,它们之间只有很少或没有任何集成关系应用代码和数据结构The.NET的演变历史COM提供了组件集成的方法.但是,每个组件必须提供细节复杂的管道接口,对象不能直接交互.The.NET的演变历史使用.NETFramework的公共语言运行时(CLR),组件都建立在一个共同的底层基础上.不再需要管道的繁琐细节,对象可以直接交互。公共语言运行时(CommonLanguageRuntime)管理运行代码确认类型的安全性提供垃圾收集,错误处理对半信任代码的访问安全控制提供通用类型系统(commontypesystem)数值类型(integer,float,userdefined,etc)引用类型(Objects,Interfaces)公共语言规范(CommonLanguageSpecification)提供跨语言的支持,包括统一的异常处理和跨语言调试提供访问系统资源的功能包括WindowsAPI和COMInterOP服务基类库支持线程支持COM编组类型检查器异常处理器安全引擎调试引擎IL到本机代码的翻译器代码管理器垃圾收集器类加载器Assembly编译和执行源代码语言编译编译在安装或函数/方法第一次被调用时执行即时编译(JITCompiler)本机代码NativeCode中间代码元数据Metadata(元数据)ILManagedcodeResourcesexample.DLL公共语言运行时程序集(Assemblies)公共语言运行时元数据(Metadata)简化编程模式的关键自动生成与中间代码一起存在可执行文件里(.dll或.exe)使用现有的PE/COFF格式遵从现有的扩展机制用二进制的方式存储可以与XMLSchema互相转化可以与COMtypelibraries互相转化元数据里包含了些什么?对部署单元程序集(assembly)的描述标识:名字、版本、地域/文化、公钥标记输出哪些类型它依赖于哪些其他的程序集需要运行的安全许可对类型的描述名字、可视性、基类、实现的接口成员(方法、域、属性、事件、嵌套类型)其他特性用户自定义的编译器定义的Framework定义的指向元数据中对导出类型的描述ClassesBaseclassesImplementedinterfacesDatamembersMethodsNameVersionCulture对程序集的描述OtherassembliesSecurityPermissionsExportedTypes公共语言运行时清单(manifest)强壮、安全的执行环境自动内存管理所有不再使用的对象会被系统自动注销异常处理统一的错误处理类类型安全没有不安全的调用和未初始化的变量简化的安装和部署不再需要注册表Side-by-side执行方式映射为本地二进制码Ngen.exe统一的编程模式WindowsAPI.NETFramework不论什么语言和编程模式都是用一样的APIASP代码嵌套在HTML页面中MFC/ATL强大,相对复杂VBForms快速开发工具统一的编程API.NETFramework类库SystemGlobalizationDiagnosticsConfigurationCollectionsResourcesReflectionNetIOThreadingTextServiceProcessSecurityRuntimeInteropServicesRemotingSerializationSystem.DataCommonOleDbSQLTypesSqlClientSystem.WebConfigurationSessionStateCachingSecurityServicesDescriptionDiscoveryProtocolsUIHtmlControlsWebControlsSystem.XmlXPathXSLTSerializationSystem.DrawingImagingDrawing2DTextPrintingSystem.Windows.FormsDesignComponentModel传统的开发HWNDhwndMain=CreateWindowEx(0,MainWinClass,MainWindow,WS_OVERLAPPEDWINDOW|WS_HSCROLL|WS_VSCROLL,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,(HWND)NULL,(HMENU)NULL,hInstance,NULL);ShowWindow(hwndMain,SW_SHOWDEFAULT);UpdateWindow(hwndMain);WindowsAPIFramework下的开发Dimform1AsNewForm()form1.Text=MainWindowform1.Show()VB.NETFormform1=newForm();form1.Text=MainWindow;form1.Show();C#.NET多语言的一个世界APLCobolEiffelFortranPascalPerlPythonAdaCC++C#HaskellJavaJScriptVisualBasicMercuryMLOzObjectiveCamlOberonSmalltalkScheme超过20种语言同一个开发环境同一套体系框架同一样调试方式J#RPGMondrianComponentPascalDelphi无缝集成把.NETclasses当作COMobjects来用不需要额外的开发工作COMobjects可以被引进(import)NorefcountingorCOMAPIneeded.Net类可以使用COM+服务Transactions,Objectpooling,etc…方便地调用系统函数Nomarshaling(列集)forcommoncasesCLR简化了开发过程完全消除了COM的繁琐底层细节再也不用…RegistrationGUIDs.IDLfilesHRESULTsIUnknownAddRef/ReleaseCoCreateInstance=自我描述的组件,直接xcopy=层次化的名字空间(namespace)=原代码直接到元数据(METADATA)=结构化的异常处理=rootobjectclass=垃圾回收(garbagecollector)=”new”操作符多语言开发内建的对象系统只要选择喜欢的语言使用即可不需要学习更多的规则或API先进的多语言互用功能跨语言继承,异常处理目前支持20多种语言VB,C++,C#,Java,JScript,Perl,COBOL功能强大的工具调试器等可以跨语言工作更简单的部署不需要在registry里注册代码完全可以自我描述只要把应用程序xcopy到目录下即可执行没有负面影响的安装(Zero-impactinstall)安装一个应用程序不会影响别的应用程序不同版本的应用可以同时运行各种版本的应用程序可以同时存在数据andXMLADO.NET非连接数据集(DataSet)–内存中的关系型表FillfrommanagedprovidersorXML连接托管提供器(ManagedProviders)Stream-levelaccesstodatasourcesFastestwaytogetdataoutofSQLSystem.Xml非常好的标准支持100%兼容W3C标准XSLT1.0,XPath1.0,XSD1.0,DOM2.0为原始数据解析和XSLT提供了非常好的吞吐能力WindowsForms丰富的Windows应用程序把VBForms,MFCandWFC的精华集成在一起提供了先进的功能可视化的Forms继承先进的图形支持–GDI+很容易地访问Win32®API不需要安装、注册或GUIDs安全代码访问安全配置基于角色的安全WebForms为WebServices而建的.NETFramework简单、安全、现代、多语言、面向对象、内置的XML丰富的类库一致性、全面性ASP.NET是很好的Web开发平台基于控件的网页,直观的WebServices快速、可扩充、可靠、便利日程.NET开发的底层框架应用程序体系结构应用程序开发实践DNA与.NET体系结构比较.NET表示层业务逻辑层数据层CLRWebService.NETAssemblyADO.NET(支持COM+服务例如:事务)WindowsDNAWeb表单服务器端控件代码/页面分开ASP.NETIISSQLServerOracleDB/2,etc.COMASPandIISInlineASPVBScript/JScriptVB/VCADO(CanuseCOM+Services;e.g.transactions)SQLServerOracleDB/2,etc..Net应用程序体系结构1WebClientsD