Framework各版本区别.ppt

上传人:max****ui 文档编号:6346192 上传时间:2020-02-23 格式:PPT 页数:63 大小:1.42MB
返回 下载 相关 举报
Framework各版本区别.ppt_第1页
第1页 / 共63页
Framework各版本区别.ppt_第2页
第2页 / 共63页
Framework各版本区别.ppt_第3页
第3页 / 共63页
点击查看更多>>
资源描述
Let sTalkAbout NET 欧美事业部曹盛 目录 1 反射2 委托3 事件各版本之间的区别4 1 NETFramework1 14 2 NETFramework2 04 3 NETFramework3 04 4 NETFramework3 54 5 NETFramework3 5SP14 6 NETFramework4 0 反射 反射 Reflection 是 NET中的重要机制 通过放射 可以在运行时获得 NET中每一个类型的成员 包括方法 属性 事件 以及构造函数等 应用程序结构分为应用程序域 程序集 模块 类型 成员几个层次 公共语言运行库加载器管理应用程序域 这种管理包括将每个程序集加载到相应的应用程序域以及控制每个程序集中类型层次结构的内存布局 程序集包含模块 而模块包含类型 类型又包含成员 反射则提供了封装程序集 模块和类型的对象 反射获取和加载程序集System Reflection Assembly 使用反射来获取程序集常用的有以下几种方法 获取AppDomain中包含的所有程序集调用AppDomain类的属性currentDomain的GetAssemblies方法将返回一个由System Reflection Assembly元素组成的数组 示例如下 foreach AssemblyasseminAppdomain currentDomain GetAssemblies 加载单个程序集 System Reflecton Assembly类型为加载一个程序集 提供了以下方法 Load方法 例如 AssemblyaAssembly System Reflecton Assembly Load PetShop SQLServerDAL LoadFrom方法 例如 Assemblya System Reflecton Assembly LoadFrom ReflectSample exe 反射获取类型System Type 使用反射来获取类型常用的有以下几种方法 使用typeof运算符获取类型的System Type对象 如 System Typetype typeof int System Typetype typeof HelloWorld HelloWorld是自定义的类名通过类型实例 使用方法GetType获取类型的System Type对象 如 intintA 10 System Typetype intA GetType 获取程序集所包含的所有类型使用程序集实例的GetTypes方法可以获取程序集所包含的所有类型 如 Assemblya Assembly LoadFrom ReflectSample exe Type mytypes a GetTypes 从程序集获取所有数据类型 反射创建类型的成员 以下介绍几个用于类型成员的类 ConstructorInfo类用于类型的构造函数 使用ConstructorInfo可以获取以下信息 构造函数的名称 参数 访问修饰符和实现详细信息等 使用Type的GetConstructors或GetConstructor方法来创建特定的构造函数ConstructorInfo对象 ConstructorInfo p typeof t GetConstructors for inti 0 i p Length i Console WriteLine p i IsStatic MethodInfo类用于类型的方法成员 使用MethodInfo获取以下信息 方法的名称 返回类型 参数 访问修饰符和实现详细信息等 使用Type的GetMethods或GetMethod方法来获取MethodInfo对象 反射创建类型的成员 使用FieldInfo获取以下信息 字段的名称 访问修饰符和实现详细信息等 并获取或设置字段值 使用Type的GetField等方法来获取FieldInfo对象 使用EventInfo获取以下信息 事件的名称 事件处理程序数据类型 自定义属性 声明类型和反射类型等 并添加或移除事件处理程序 使用Type的GetEvent等方法来获取EventInfo对象 使用PropertyInfo获取以下信息 属性的名称 数据类型 声明类型 反射类型和只读或可写状态等 并获取或设置属性值 使用Type的GetProperty等方法来获取PropertyInfo对象 反射创建类型的实例 通过反射创建类型的实例常用的有以下几种方法 使用System Activator的CreateInstance方法创建类型的实例 例如 Objectobj Activator CreateInstance type type是一个类型对象Assembly对象的CreateInstance实例方法 如 PetShop IDAL IproductmyProduct PetShop IDAL IProduct aAssembly CreateInstance PetShop SQLServerDAL Product 可以将反射程序集与创建类型的实例合并如下 这是常用的方法 代码如下 PetShop IDAL IproductmyProduct PetShop IDAL IProduct Assembly Load PetShop SQLServerDAL CreateInstance PetShop SQLServerDAL Product 反射调用类型实例的方法 使用反射调用类型实例的方法有以下几种方式 使用System type的对象t调用InvokeMember方法来调用一个类型的实例方法 如 Strings String t InvokeMember ToString BindingFlags DeclaredOnly BindingFlags Public BindingFlags NonPublic BindingFlags Instance BindingFlags InvokeMethod null obj null 使用System reflection MethodInfo的Invoke方法来调用一个类型的实例方法 如 MethodInfomsayhello ht GetMethod SayHello 获取SayHello方法msayhello Invoke obj null 调用HelloWorld实例obj的SayHello方法 委托 委托委托技术是 NET引入的一种重要技术 使用委托可以实现对象行为的动态绑定 从而提高设计的灵活性 NET运行库支持称为 委托 的引用类型 其作用类似于C 中的函数指针 所有委托都从System Delegate继承而来并且有一个调用列表 这是在调用委托时所执行方法的一个链接列表 可以使用的委托Cimbine及Remove方法在其调用列表中添加和移除方法 若要调用委托 可使用Invoke方法 或者使用BeginInvoke和EndInvoke方法异步调用委托 委托类的实现由运行库提供 而不由用户代码提供 委托 委托适用于那种在某些语言中需要用函数指针来解决的情况 但是与函数指针不同 它是面向对象和类型安全的 委托声明定义一个类 它是从System Delegate类派生的类 委托实例封装了一个调用列表 其中列出了一个或多个方法 每个方法称为一个可调用实体 委托实例的一个有用的属性是它既不知道 也不关心其封装方法所属类的详细信息 对它来说最重要的是这些方法与该委托的类型兼容 定义和使用委托分为声明 实例化和调用3个步骤 NET委托声明及特点 1 通用事件处理者委托delegatevoidEventHandler objectsender EventArgse 2 计算1k 2k nk的委托delegateintPowerSum intn 3 特点 不需要定义成员4 基类 MulticastDelegate Delegate 委托应用 函数回调 Callback 定时器类型System Threading Timer System Threading TimerCallback objectobj 委托定时回调TimerCallbackcb newTimeCallback TimeClick Timertimer newTimer cb null 0 500 voidTimeClick objectstate Console WriteLine timeclick 匿名委托 委托推断与泛型委托 匿名委托 在委托 中内联方式创建方法TimerCallBackcb newTimerCallback delegate objectstate Console WriteLine timeclick 委托推断 不创建委托对象 直接调用函数泛型委托 委托是类 同样可以有泛型 事件 事件事件是类在发生其关注的事情时用来提供通知的一种方式 事件具有以下特点 事件是用来通知对象需要执行某种操作的方式 事件通常用在图形用户界面中 事件通常使用委托事件处理程序进行声明 事件可以调用匿名方法来替代委托 使用事件 使用事件步骤是 声明事件委托类型定义 引发事件类定义和接受事件类订阅事件 声明事件委托类型事件和方法一样具有签名 签名包括名称和参数列表 事件的签名通过委托类型来定义 因此首先为事件声明一个委托 如 publicdelegatevoidChangedEventHandler objectsender EventArgse 在事件发送类中添加事件 需要使用event关键字 并提供委托类型和事件名称 例如 publiceventChangedEventHandlerChanged 使用事件 引发事件类定义若要引发事件 类可以调用委托 并传递所有与事件有关的参数 然后 委托调用已添加到该事件的所有处理程序 例如下面代码中 Changed this e 使用事件 publicclassListWithChangedEvent ArrayList 一个每次列表更改时发送通知的类 事件 每当列表元素更改时 客户端可利用该事件获得通知 publiceventChangedEventHandlerChanged protectedvirtualvoidOnChanged EventArgse 每当列表更改时调用Changed事件 if Changed null 确保该事件不为空Changed this e 调用Changed事件 重写可更改列表的Add方法 在每个重写后调用事件publicoverrideintAdd objectvalue inti base Add value 调用基类ArrayList的Add方法OnChanged EventArgs Empty 触发Changed事件returni 订阅事件 classEventListener privateListWithChangedEventList publicEventListener ListWithChangedEventlist List list 将 ListChanged 添加到 List 中的Changed事件 List Changed newChangedEventHandler ListChanged 每当列表更改时就会进行以下调用 privatevoidListChanged objectsender EventArgse Console WriteLine 事件触发 publicvoidDetach 分离事件并删除列表List Changed newChangedEventHandler ListChanged List null 使用事件 在类Test主函数Main 中创建引发事件类实例和接受事件类实例 代码如下 classTest 测试ListWithChangedEvent类 publicstaticvoidMain 创建新列表 引发事件类实例 ListWithChangedEventlist newListWithChangedEvent 创建一个类 用于侦听列表的更改事件 EventListenerlistener newEventListener list list Add item1 在列表中添加项 触发事件显示 事件触发 listener Detach 分离事件 之后不再处理事件 list Add item2 在列表中添加项 不显示 事件触发 net各版本之间的区别 1 01 1安全方面的升级 自带对ODBCOracle的支持 支持Ipv61 12 0非 net应用程序可管理 net应用实例大量API升级2 03 0WPFWCF SOA支持的安全的WebService框架 WFCardSpace SSO net各版本之间的区别II 3 03 5添加LINQ支持 用c 或者VB使用相同语法查询DB XML 利用ASP netAjax创建更丰富的web交互用于生成WCF服务的全新Web协议支持 Ajaxjsonetc 类库中升级新类3 53 5SP1 重要升级 ASP NET动态数据和Ajax附加功能对SQLServer2008的数据提供程序支持改进WPF性能改进WCF相互操作性支持4 0主要是增加了并行开发的支持 提供了独立安全的企业开发平台 版本关系图 版本解析 根据版本的发布情况可得 NETFramework3 5 3 0 3 0sp1 NETFramework3 0 2 0 2 0sp1 WPF WCF WF NETFramework1 01 12 0彼此完全独立对于其中的任何一个版本来说 无论是否安装其他版本 自己都可以独立的存在兼容性具有高度的向后兼容性支持只有1 1版本向后先前兼容 2 0版本不向前兼容对于提高安全性 功能性的更改也可能会引发兼容问题 NETFramework1 1版本 1 ASP NET移动控件2 ADO NET的改动添加System Data Odbc命名空间新增System Data OracleClient命名空间供Oracle使用DataReader对象公开HasRows属性 判断是否有返回行Connection对象具有EnlistDistributedTransaction 可以在分布式事务中启动手动登记 3 并发执行 NETFramework1 1版本支持并行执行 4 NETFramework安全性的改动5 NETFramework中的IPv6支持 NETFramework2 0版本 公共语言运行库 CLR 对泛型类型和方法的支持 基类库 ADO NET ASP NET windows窗体 Web服务 C VisualBasic C 和J 的编译器 64位平台支持 访问控制列表支持 缓存的编程空间 FTP支持 CLR CLR 公共语言运行库 和java虚拟机一样也是一个运行时环境 它负责资源管理 内存分配和垃圾收集 并保证应用和底层操作系统之间必要的分离 CLR将监视形形色色的常见编程错误 许多年来这些错误一直是软件故障的主要根源 其中包括 访问数组元素越界 访问未分配的内存空间 由于数据体积过大而导致的内存溢出 等等 对泛型类型和方法的支持 通过参数化类型来实现在同一份代码上操作多种数据类型 泛型编程是一种编程范式 它利用 参数化类型 将类型抽象化 从而实现更为灵活的复用 类型参数使得类和方法将一个或多个类型的指定推迟到声明并实例化该类或方法的时候 泛型 classMyStack privateT store privateintsize publicMyStack store newT 10 size 0 publicvoidPush Tx store size x publicTPop returnstore size classTest staticpublicvoidMain MyStackx newMyStack x Push 17 泛型概述 泛型的主要特点 使用泛型类型可以最大限度地重用代码 保护类型的安全以及提高性能 泛型最常见的用途是创建集合类 NET框架类库的System Collections Generic命名空间包含新的泛型集合类如List泛型类 可以创建自己的泛型接口 泛型类 泛型方法 泛型事件和泛型委托 关于泛型数据类型中使用的类型的信息可在运行时通过反射获取 基类库 BCL 基类库 代表了 NET框架的核心 不管人们开发何种应用程序 BCL总是作为构建其他所有功能的起点 核心基类库的作用是完成框架的通用性开发而必须的基础类和常用工具类等 包含有 Think Core核心类库包 Think Db数据库类库包 Think Exception异常处理类库包 Think Template内置模板引擎类库包 Think Util系统工具类库包 ADO NET ADO NET是一组用于和数据源进行交互的面向对象类库 ADO NET允许和不同类型的数据源以及数据库进行交互 在ASP NET应用程序中可以使用ADO NET来连接到这些数据源 并实现数据的检索 添加 更新和删除 ADO NET对象模型 ADO NET对象模型 NETFramework数据提供程序的核心对象 DataSet 使用ADO NET访问数据 DataSet对象模型 DataSet对象是支持ADO NET的断开式 分布式数据方案的核心对象 它可以用于多个不同的数据源 可以用于XML数据 也可以用于管理应用程序本地的数据 DataSet表示包括相关表 约束和表间关系在内的整个数据集 下图描述了DataSet对象模型 Connection对象概述 在ADO NET中 使用以下Connection对象来创建和管理数据库连接 SqlConnection 用于管理与SQLServer7 0版或更高版本的连接 OleDbConnection 用于管理与可通过OLEDB访问的任何数据存储区的连接 OdbcConnection 用于管理与通过使用连接字符串或ODBC数据源名称 DSN 创建的数据源的连接 OracleConnection 用于管理与Oracle数据库的连接 接Access数据库 OleDbConnectionobjConnection newOleDbConnection strConnection 连接SQLServer数据库 SqlConnectionobjConnection newSqlConnection strConnection 其中参数cnectionString给出用于打开数据库的连接字符串 若未指定该参数 则必须首先设置Connection对象的ConnectionString属性 然后才能打开数据连接 Command对象概述 Command类的构造函数 SqlCommandmyCommand newSqlCommand cmdText conn myOleDbCommandmyCommand newOleDbCommand cmdText conn 其中参数cmdText给出查询的文本 conn指定一个Connection对象 表示与指定数据库的连接 Command对象的常用属性CommandTextCommandTimeoutCommandTypeConnectionParametersTransactionUpdatedRowSourceCommand对象的常用方法Cancel CreateParameter ExecuteReader ExecuteScalar Prepare ResetCommandTimeout ExecuteNonQuery在VisualStudio NET中 可以使用Command控件来创建命令对象 使用DataReader对象读取数据 创建DataReader对象SqlDataReaderreader cmd ExecuteReader OleDbDataReaderreader cmd ExecuteReader DataReader对象的常用属性FieldCountHasRowsIsClosedItem index name RecordsAffectedDataReader对象的常用方法Close GetBoolean ordinal GetDataTypeName index GetFieldType index GetName index GetOrdinal name GetSchemaTable GetValue ordinal GetValues values IsDBNull ordinal NextResult Read DataAdapter对象模型 使用DataAdapter对象访问数据 DataAdapter类的构造函数SqlDataAdaptersda newSqlDataAdapter OleDbDataAdapterthisAdapter newOleDbDataAdapter selectCommandText selectConnection DataAdapter对象的主要属性DeleteCommandInsertCommandSelectCommandUpdateCommandDataAdapter对象的常用方法Dispose Fill dataSet srcTable DataAdapter的主要事件FillErrorRowUpdatedRowUpdating ASP NET ASP是一项微软公司的技术 是一种使嵌入网页中的脚本可由因特网服务器执行的服务器端脚本技术 通用语言的基本库 消息机制 数据接口的处理都能无缝的整合到ASP net的Web应用中 ASP NET是一个已编译的 基于 NET的环境 把基于通用语言的程序在服务器上运行 将程序在服务器端首次运行时进行编译 且可以用任何与 NET兼容的语言 包括VB NET C 和JScript NET 创作应用程序 ASP NET可以无缝地与WYSIWYGHTML编译器和其他编程工具一起工作 这不仅使得Web开发更加方便 而且还能提供这些工具必须提供的所有优点 windows窗体 简单来说 winforms和的脚本都是基与c winforms是做客户端软件 是基与网络开发的VisualC 是微软公司 NetFrameWork框架中的一个重要组成部分 也是微软公司极力推荐的新一代程序开发语言 Net为开发WinForm的应用程序提供了丰富的ClassLibrary 类库 创建WinForms应用程序 基础核心命名空间 提供了大量绘图工具的访问权限 ArrayList BitArray Hashtable Stack StringCollection和StringTable类 usingSystem usingSystem Collections Generic usingSystem ComponentModel usingSystem Data usingSystem Drawing usingSystem Text usingSystem Windows Forms namespaceWindowsApplication3 publicpartialclassForm1 Form publicForm1 InitializeComponent 提供了大量绘图工具的访问权限 基础核心命名空间 ArrayList BitArray Hashtable Stack StringCollection和StringTable类 大量窗体和控件 从System Windows Forms Form派生 VisualStudio NET生成的代码 创建WinForms应用程序 partialclassForm1 必需的设计器变量 privateSystem ComponentModel IContainercomponents null 构造函数调用InitializeComponent 方法 regionWindows窗体设计器生成的代码 设计器支持所需的方法 不要 使用代码编辑器修改此方法的内容 privatevoidInitializeComponent this SuspendLayout Form1 this AutoScaleDimensions newSystem Drawing SizeF 6F 12F this AutoScaleMode System Windows Forms AutoScaleMode Font this ClientSize newSystem Drawing Size 333 266 this Name Form1 this Text Form1 this ResumeLayout false endregion 项目的容器 创建WinForms应用程序 清理所有正在使用的资源 如果应释放托管资源 为true 否则为false protectedoverridevoidDispose booldisposing if disposing 释放系统资源 创建WinForms应用程序 staticclassProgram 应用程序的主入口点 STAThread staticvoidMain Application EnableVisualStyles Application SetCompatibleTextRenderingDefault false Application Run newForm1 程序的主入口点 Web服务 WebService是微软主推的一种跨平台的分布式应用程序 他使用SOAP协议通讯 用XML封装数据 所以是跨平台的 任何客户端只要按照WebService发布的格式发送数据就都可以得到结果 WebService的特点 WebService可看成是一个可复用的Web应用程序组件WebService是平台无关的WebService是自说明的可以使用一种统一的机制来在互联网上查找WebService WebService到底是如何 转 起来的 WebService驻留于WebServer中使用UDDI机制查找符合要求的WebService网络中的机器通过SOAP协议进行通讯 使用WebService 跨网络调用WebService的内部机理 所有这些工作 VisualStudio已帮助人们完成 NETFramework3 0 windowsPresentationFoundation WPF 提供更佳的用户体验 用来开发WindowsForms程序以及流览器应用程序windowsCommunicationsFoundation WCF 提供SOA 面向服务的软件构架 支持的安全的网络服务 WebService 框架 windowsWorkflowFoundation WF 提供一个设计与发展工作流程导向 Workflow oriented 应用程序基础支持的应用程序接口 NETFramework3 5 1 Ajax的支持ScriptManager控件和UpdatePanel控件 NETFramework3 5改进了对支持AJAX的网站的开发支持 ASP NET支持使用一组新的服务器控件和API进行以服务器为中心的AJAX开发 API MicrosoftAjaxLibraryASP NET还支持使用名为MicrosoftAJAXLibrary的新客户端库进行以客户端为中心的AJAX开发 NETFramework3 5 2 LINQ提供支持LINQ支持 包括LINQtoObject LINQtoADO NET以及LINQtoXML表达式目录树 ExpressionTree 用于为Lambda表达式提供支持与语言集成查询 LINQ 和数据感知紧密集成 3 数据控件ListView是一个可高度自定义的控件 使用模板和样式 该控件还支持编辑 插入和删除操作以及排序和分页功能 一个名为DataPager的新控件为ListView提供了分页功能 NETFramework3 5 4 I O和管道管道提供在同一台计算机上或网络中任意其他windows计算机上运行的任何进程之间的进程间通信 5 垃圾回收 GCSettings类和GC类 GCSettings类具有一个新的LatencyMode属性 可用来调整垃圾回收器侵入应用程序的时间 GC类具有一个新的Collect Int32 GCCollectionMode 方法重载 可用来调整强制垃圾回收的行为 6 线程处理新的ReaderWriterLockSlim类提供明显优于ReaderWriterLock的性能 可与lock语句相当 NETFramework3 5SP1 MVC模型 用M表示 模型是负责表现底层数据库模式的业务对象 容纳MVC应用程序的数据 状态视图 用V表示 视图指的是应用程序的UI 在ASP NETMVC应用程序中 它通常就是一个 aspx和 ascx文件 控制器 用C表示 控制器是ASP NETMVC框架应用程序的核心 它负责给客户端呈现适当的视图 执行相关的行为方法 从模型获取数据 然后填充到视图 或从视图获取数据 然后更新模型等 NETFramework3 5SP1 Web应用程序的MVC概念图 NETFramework3 5SP1 Mvc的优点 低耦合性高重用性和可适应性较低的生命周期成本快速的部署与项目分工可维护性有利于软件工程化管理 Mvc的缺点 系统性概念不容易完全理解不同框架对mvc的具体实现不同需要转变程序设计的思想增加文件数 NETFramework3 5SP1 DynamicDataASP NET动态数据 它提供了丰富的框架 从而使用户可以快速进行数据驱动的开发 而无需编写代码 EntityFramework实体框架是从现有的一套ADO NET数据访问技术发展而来的 DataServicesADO NETDataServicesFramework由满足以下条件的模式和库组合而成 支持将数据公开为一项基于REST 具象状态传输 的灵活数据服务 企业网络内部或整个互联网上的Web客户端都可以使用该服务 NETFramework4 0 1 改进JavaScript用户界面模板和Ajax中数据的绑定功能2 WPF在WPF中增加Windows7多触控 ribbon控制 任务栏扩展功能支持 在WPF中增加Surface2 0SDK支持 新的业务线控制 包括图表控制 智能编辑 数据网格 以及其他能够提高 建立数据中心的应用程序 的开发者经验的控制 Questionandanswer
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!