Framework各版本区别.ppt_第1页
Framework各版本区别.ppt_第2页
Framework各版本区别.ppt_第3页
Framework各版本区别.ppt_第4页
Framework各版本区别.ppt_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Lets Talk About .NET,欧美事业部 曹盛,目录,1.反射 2.委托 3.事件 4. .net各版本之间的区别 4.1 .NET Framework 1.1 4.2 .NET Framework 2.0 4.3 .NET Framework 3.0 4.4 .NET Framework 3.5 4.5 .NET Framework 3.5 SP1 4.6 .NET Framework 4.0,反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型的成员,包括方法、属性、事件,以及构造函数等。 应用程序结构分为应用程序域程序集模块类型成员几个层次,公共语言运行库加载器管理应用程序域,这种管理包括将每个程序集加载到相应的应用程序域以及控制每个程序集中类型层次结构的内存布局。 程序集包含模块,而模块包含类型,类型又包含成员,反射则提供了封装程序集、模块和类型的对象。,反射获取和加载程序集System.Reflection.Assembly,使用反射来获取程序集常用的有以下几种方法: 获取AppDomain 中包含的所有程序集 调用AppDomain 类的属性currentDomain 的GetAssemblies 方法将返回一个由System.Reflection.Assembly元素组成的数组,示例如下: foreach (Assembly assem in Appdomain.currentDomain.GetAssemblies() 加载单个程序集,System.Reflecton.Assembly 类型为加载一个程序集,提供了以下方法: Load方法:例如: Assembly aAssembly= System.Reflecton.Assembly.Load(“PetShop.SQLServerDAL“); LoadFrom 方法:例如:Assembly a = System.Reflecton.Assembly.LoadFrom( “ReflectSample.exe“);,反射获取类型System.Type,使用反射来获取类型常用的有以下几种方法: 使用typeof运算符获取类型的 System.Type 对象, 如: System.Type type = typeof(int); System.Type type = typeof(HelloWorld); / HelloWorld是自定义的类名 通过类型实例,使用方法 GetType获取类型的 System.Type 对象,如: int intA = 10; System.Type type = intA.GetType(); 获取程序集所包含的所有类型 使用程序集实例的GetTypes方法可以获取程序集所包含的所有类型,如: Assembly a = Assembly.LoadFrom (“ReflectSample.exe“); Type mytypes = a.GetTypes( ); /从程序集获取所有数据类型,反射创建类型的成员,以下介绍几个用于类型成员的类: ConstructorInfo类用于类型的构造函数,使用ConstructorInfo可以获取以下信息:构造函数的名称、参数、访问修饰符和实现详细信息等。使用Type的GetConstructors或GetConstructor方法来创建特定的构造函数ConstructorInfo对象。 ConstructorInfo p = typeof(t).GetConstructors(); for (int i=0;ip.Length;i+) Console.WriteLine(pi.IsStatic); MethodInfo类用于类型的方法成员,使用MethodInfo获取以下信息:方法的名称、返回类型、参数、访问修饰符和实现详细信息等。使用Type的GetMethods或GetMethod方法来获取MethodInfo对象。,反射创建类型的成员,使用 FieldInfo 获取以下信息:字段的名称、访问修饰符和实现详细信息等;并获取或设置字段值。使用Type的GetField 等方法来获取FieldInfo对象。 使用 EventInfo获取以下信息:事件的名称、事件处理程序数据类型、自定义属性、声明类型和反射类型等;并添加或移除事件处理程序。使用Type的GetEvent等方法来获取EventInfo对象。 使用 PropertyInfo 获取以下信息:属性的名称、数据类型、声明类型、反射类型和只读或可写状态等;并获取或设置属性值。使用Type的GetProperty等方法来获取PropertyInfo对象。,反射创建类型的实例,通过反射创建类型的实例常用的有以下几种方法: 使用System.Activator的CreateInstance方法创建类型的实例。例如: Object obj = Activator.CreateInstance(type); /type是一个类型对象 Assembly对象的CreateInstance实例方法,如: PetShop.IDAL.Iproduct myProduct= (PetShop.IDAL.IProduct) aAssembly.CreateInstance(“PetShop.SQLServerDAL.Product“); 可以将反射程序集与创建类型的实例合并如下,这是常用的方法,代码如下: PetShop.IDAL.Iproduct myProduct= (PetShop.IDAL.IProduct) Assembly.Load( “PetShop.SQLServerDAL“).CreateInstance(“PetShop.SQLServerDAL.Product“);,反射调用类型实例的方法,使用反射调用类型实例的方法有以下几种方式: 使用System.type的对象 t 调用 InvokeMember方法来调用一个类型的实例方法。如: String s = (String) t.InvokeMember(“ToString“, BindingFlags.DeclaredOnly |BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.InvokeMethod, null, obj, null); 使用System.reflection.MethodInfo的Invoke方法来调用一个类型的实例方法。如: MethodInfo msayhello = 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) 通用事件处理者委托 delegate void EventHandler (object sender, EventArgs e) 2) 计算1k+2k+nk的委托 delegate int PowerSum(int n) 3) 特点:不需要定义成员 4) 基类:MulticastDelegate、Delegate,委托应用:函数回调(Callback),定时器类型 System.Threading.Timer() System.Threading.TimerCallback(object obj) / 委托 定时回调 TimerCallback cb = new TimeCallback(TimeClick); Timer timer = new Timer(cb, null, 0, 500); void TimeClick(object state) Console.WriteLine(“time click”); ,匿名委托、委托推断与泛型委托,匿名委托:在委托()中内联方式创建方法 TimerCallBack cb = new TimerCallback ( delegate(object state) Console.WriteLine(“time click”); ); 委托推断:不创建委托对象,直接调用函数 泛型委托:委托是类,同样可以有泛型,事件,事件 事件是类在发生其关注的事情时用来提供通知的一种方式。 事件具有以下特点: 事件是用来通知对象需要执行某种操作的方式。 事件通常用在图形用户界面中。 事件通常使用委托事件处理程序进行声明。 事件可以调用匿名方法来替代委托。,使用事件,使用事件步骤是:声明事件委托类型定义、引发事件类定义和接受事件类订阅事件。 声明事件委托类型 事件和方法一样具有签名,签名包括名称和参数列表。事件的签名通过委托类型来定义,因此首先为事件声明一个委托,如: public delegate void ChangedEventHandler(object sender, EventArgs e); 在事件发送类中添加事件,需要使用event关键字,并提供委托类型和事件名称。例如: public event ChangedEventHandler Changed;,使用事件,引发事件类定义 若要引发事件,类可以调用委托,并传递所有与事件有关的参数。然后,委托调用已添加到该事件的所有处理程序。例如下面代码中:Changed(this, e);,使用事件,public class ListWithChangedEvent : ArrayList/一个每次列表更改时发送通知的类 / 事件,每当列表元素更改时,客户端可利用该事件获得通知。 public event ChangedEventHandler Changed; protected virtual void OnChanged(EventArgs e) /每当列表更改时调用Changed事件 if (Changed != null) /确保该事件不为空 Changed(this, e); /调用Changed事件 / 重写可更改列表的Add方法;在每个重写后调用事件 public override int Add(object value) int i = base.Add(value); /调用基类ArrayList的Add方法 OnChanged(EventArgs.Empty); /触发Changed事件 return i; ,订阅事件,class EventListener private ListWithChangedEvent List; public EventListener(ListWithChangedEvent list) List = list; / 将“ListChanged”添加到“List”中的 Changed 事件。 List.Changed += new ChangedEventHandler(ListChanged); / 每当列表更改时就会进行以下调用。 private void ListChanged(object sender, EventArgs e) Console.WriteLine(“事件触发“); public void Detach() / 分离事件并删除列表 List.Changed -= new ChangedEventHandler(ListChanged); List = null; ,使用事件,在类Test主函数Main()中创建引发事件类实例和接受事件类实例,代码如下: class Test / 测试 ListWithChangedEvent 类。 public static void Main() / 创建新列表,引发事件类实例。 ListWithChangedEvent list = new ListWithChangedEvent(); / 创建一个类,用于侦听列表的更改事件。 EventListener listener = new EventListener(list); list.Add(“item 1“);/ 在列表中添加项。触发事件显示“事件触发“ listener.Detach();/ 分离事件,之后不再处理事件. list.Add(“item 2“);/ 在列表中添加项。不显示“事件触发“ ,.net各版本之间的区别,1.0 1.1 安全方面的升级; 自带对ODBC Oracle的支持; 支持Ipv6 1.1 2.0 非.net应用程序可管理.net应用实例 大量API升级 2.0 3.0 WPF WCF(SOA支持的安全的WebService框架) WF CardSpace(SSO),.net各版本之间的区别 II,3.0 3.5 添加LINQ支持(用c#或者VB使用相同语法查询DB/XML) 利用ASP.net Ajax创建更丰富的web交互 用于生成WCF服务的全新Web协议支持(Ajax json etc.) 类库中升级新类 3.5 3.5SP1 (重要升级) ASP.NET动态数据和Ajax附加功能 对SQL Server 2008的数据提供程序支持 改进WPF性能 改进WCF相互操作性支持 4.0主要是增加了并行开发的支持,提供了独立安全的企业开发平台,版本关系图,版本解析,根据版本的发布情况可得: .NET Framework 3.5 = 3.0 + 3.0sp1 .NET Framework 3.0 = 2.0 + 2.0sp1 + WPF + WCF + WF .NET Framework 1.0 1.1 2.0 彼此完全独立 对于其中的任何一个版本来说,无论是否安装其他版本,自己都可以独立的存在 兼容性 具有高度的向后兼容性支持 只有1.1版本向后先前兼容,2.0版本不向前兼容 对于提高安全性、功能性的更改也可能会引发兼容问题,.NET Framework 1.1版本,1、ASP.NET移动控件 2、ADO.NET的改动 添加System.Data.Odbc命名空间 新增System.Data.OracleClient命名空间供Oracle使用 DataReader对象公开HasRows属性,判断是否有返回行 Connection对象具有EnlistDistributedTransaction,可以在分布式事务中启动手动登记。 3、并发执行 .NET Framework 1.1版本支持并行执行。 4、.NET Framework安全性的改动 5、.NET Framework中的IPv6支持,.NET Framework 2.0版本,- 公共语言运行库 (CLR)。 - 对泛型类型和方法的支持。 - 基类库 - ADO.NET - ASP.NET - windows 窗体 - Web 服务 - C#、Visual Basic、C+ 和 J# 的编译器 - 64位平台支持 - 访问控制列表支持 - 缓存的编程空间 - FTP支持,CLR,CLR(公共语言运行库)和java虚拟机一样也是一个运行时环境,它负责资源管理(内存分配和垃圾收集),并保证应用和底层操作系统之间必要的分离。 CLR将监视形形色色的常见编程错误,许多年来这些错误一直是软件故障的主要根源,其中包括:访问数组元素越界,访问未分配的内存空间,由于数据体积过大而导致的内存溢出,等等。,对泛型类型和方法的支持,通过参数化类型来实现在同一份代码上操作多种数据类型。泛型编程是一种编程范式,它利用“参数化类型”将类型抽象化,从而实现更为灵活的复用。 类型参数使得类和方法将一个或多个类型的指定推迟到声明并实例化该类或方法的时候。,泛型,class MyStack private T store; private int size; public MyStack() store = new T10; size = 0; public void Push(T x) storesize+ = x; public T Pop() return store-size; class Test static public void Main() MyStack x = new MyStack(); 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 对象模型,.NET Framework数据提供程序的核心对象,DataSet,使用 ADO.NET 访问数据,DataSet对象模型,DataSet对象是支持ADO.NET的断开式、分布式数据方案的核心对象。它可以用于多个不同的数据源,可以用于XML数据,也可以用于管理应用程序本地的数据。DataSet表示包括相关表、约束和表间关系在内的整个数据集。下图描述了DataSet对象模型。,Connection对象概述,在ADO.NET中,使用以下Connection对象来创建和管理数据库连接。 SqlConnection:用于管理与SQL Server 7.0版或更高版本的连接。 OleDbConnection:用于管理与可通过OLE DB访问的任何数据存储区的连接。 OdbcConnection:用于管理与通过使用连接字符串或ODBC数据源名称(DSN)创建的数据源的连接。 OracleConnection:用于管理与Oracle数据库的连接。 接Access数据库: OleDbConnection objConnection=new OleDbConnection(strConnection); 连接SQL Server数据库: SqlConnection objConnection=new SqlConnection(strConnection); 其中参数cnectionString给出用于打开数据库的连接字符串。若未指定该参数,则必须首先设置Connection对象的ConnectionString属性,然后才能打开数据连接。,Command对象概述,Command类的构造函数: SqlCommand myCommand = new SqlCommand ( cmdText, conn ) myOleDbCommand myCommand = new OleDbCommand( cmdText, conn ) 其中参数cmdText给出查询的文本。conn指定一个Connection对象,表示与指定数据库的连接。 Command对象的常用属性 CommandText CommandTimeout CommandType Connection Parameters Transaction UpdatedRowSource Command对象的常用方法 Cancel() CreateParameter() ExecuteReader() ExecuteScalar() Prepare() ResetCommandTimeout() ExecuteNonQuery 在Visual Studio .NET中,可以使用Command控件来创建命令对象,使用DataReader对象读取数据,创建DataReader对象 SqlDataReader reader = cmd.ExecuteReader(); OleDbDataReader reader=cmd.ExecuteReader(); DataReader对象的常用属性 FieldCount HasRows IsClosed Item(index, name) RecordsAffected DataReader对象的常用方法 Close() GetBoolean( ordinal ) GetDataTypeName( index ) GetFieldType( index ) GetName( index ) GetOrdinal( name ) GetSchemaTable() GetValue( ordinal ) GetValues( values ) IsDBNull(ordinal) NextResult() Read(),DataAdapter 对象模型,使用DataAdapter对象访问数据,DataAdapter类的构造函数 SqlDataAdapter sda = new SqlDataAdapter() OleDbDataAdapter thisAdapter=new OleDbDataAdapter( selectCommandText, _ selectConnection); DataAdapter对象的主要属性 DeleteCommand InsertCommand SelectCommand UpdateCommand DataAdapter对象的常用方法 Dispose() Fill( dataSet, srcTable ) DataAdapter的主要事件 FillError RowUpdated RowUpdating,ASP.NET,ASP 是一项微软公司的技术,是一种使嵌入网页中的脚本可由因特网服务器执行的服务器端脚本技术。 通用语言的基本库,消息机制,数据接口的处理都能无缝的整合到ASP.net的Web应用中。 ASP.NET 是一个已编译的、基于 .NET 的环境,把基于通用语言的程序在服务器上运行。将程序在服务器端首次运行时进行编译,且可以用任何与 .NET 兼容的语言(包括 VB.NET、C# 和 JScript .NET.)创作应用程序。 ASP.NET 可以无缝地与 WYSIWYG HTML 编译器和其他编程工具一起工作。这不仅使得 Web 开发更加方便,而且还能提供这些工具必须提供的所有优点。,windows 窗体,简单来说:winforms 和 的脚本都是基与c# winforms是做客户端软件, 是基与网络开发的 Visual C#是微软公司.Net FrameWork框架中的一个重要组成部分,也是微软公司极力推荐的新一代程序开发语言。 .Net 为开发WinForm的应用程序提供了丰富的Class Library(类库)。,创建 WinForms应用程序,基础核心命名空间,提供了大量绘图工具的访问权限,ArrayList、BitArray、Hashtable、Stack、 StringCollection 和 StringTable 类,using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace WindowsApplication3 public partial class Form1 : Form public Form1() InitializeComponent(); ,提供了大量绘图工具的访问权限,基础核心命名空间,ArrayList、BitArray、Hashtable、Stack、StringCollection 和 StringTable 类,大量窗体和控件,从 System.Windows.Forms.Form 派生,Visual Studio .NET 生成的代码,创建 WinForms应用程序,partial class Form1 / / 必需的设计器变量。 / private System.ComponentModel.IContainer components = null;,构造函数调用 InitializeComponent() 方法,#region Windows 窗体设计器生成的代码 / / 设计器支持所需的方法 - 不要 / 使用代码编辑器修改此方法的内容。 / private void InitializeComponent() this.SuspendLayout(); / / Form1 / this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(333, 266); this.Name = “Form1“; this.Text = “Form1“; this.ResumeLayout(false); #endregion,项目的容器,创建 WinForms应用程序,/ / 清理所有正在使用的资源。 / / 如果应释放托管资源,为 true;否则为 false。 protected override void Dispose(bool disposing) if (disposing ,释放系统资源,创建 WinForms应用程序,static class Program / / 应用程序的主入口点。 / STAThread static void Main() Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1(); ,程序的主入口点,Web 服务,Web Service是微软主推的一种跨平台的分布式应用程序。他使用SOAP协议通讯,用XML封装数据,所以是跨平台的。任何客户端只要按照WebService发布的格式发送数据就都可以得到结果。,Web Service的特点,Web Service可看成是一个可复用的Web应用程序组件 Web Service是平台无关的 Web Service是自说明的 可以使用一种统一的机制来在互联网上查找Web Service,Web Service到底是如何“转”起来的?,Web Service 驻留于Web Server中 使用UDDI机制查找符合要求的Web Service 网络中的机器通过SOAP协议进行通讯,使用Web Service,跨网络调用Web Service的内部机理,所有这些工作,Visual Studio已帮助人们完成。,.NET Framework3.0,windows Presentation Foundation (WPF)。 提供更佳的用户体验,用来开发Windows Forms程序以及流览器应用程序 windows Communications Foundation (WCF)。 提供SOA(面向服务的软件构架)支持的安全的网络服务(Web Service)框架。 windows Workflow Foundation (WF)。 提供一个设计与发展工作流程导向(Workflow-oriented)应用程序基 础支持的应用程序接口。,.NET Framework 3.5,1 、 Ajax的支持 ScriptManager控件和UpdatePanel控件 .NET Framework 3.5 改进了对支持 AJAX 的网站的开发支持。ASP.NET 支持使用一组新的服务器控件和 API 进行以服务器为中心的 AJAX 开发。 (API) Microsoft Ajax Library ASP.NET 还支持使用名为 Microsoft AJAX Library 的新客户端库进行以客户端为中心的 AJAX 开发。,.NET Framework 3.5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论