上个星期看到了.NET 4.0框架退休日期逐渐临近文章,发现自己一直在使用NET FrameWork,身为一个NET程序员,里面大概的区别自己还是知道的,但是自己要说出个所以然来了,发现还是有点力不从心,当时关于这几个版本之间的有很多,目前很多地方都只是写到了4.5,关于4.5.1,4.5.2这两个版本提及的还是非常少的,相对来说,自己写这篇文章也就没有回锅肉的嫌疑,正文开始吧:
DotNet Framework
.NET Framework由微软开发的一个致力于敏捷软件开发(Agile software development)、快速应用开发(Rapid application development)、平台无关性和网络透明化的软件开发平台。.NET是微软为下一个十年对服务器和桌面型软件工程迈出的第一步。.NET包含许多有助于互联网和内部网应用迅捷开发的技术。
.NET框架是微软公司继Windows DNA之后的新开发平台。.NET框架是以一种采用系统虚拟机运行的编程平台,以通用语言运行库(Common Language Runtime)为基础,支持多种语言(C#、VB、C++、Python等)的开发。
.NET也为应用程序接口(API)提供了新功能和开发工具。这些革新使得程序设计员可以同时进行Windows应用软件和网络应用软件以及组件和服务(web服务)的开发。.NET提供了一个新的反射性的且面向对象程序设计编程接口。.NET设计得足够通用化从而使许多不同高级语言都得以被汇集。
DotNet Framework版本的进化史(CLR 1)
1.0
1.0发布于2002年是NET最早的一个版本,是第一个微软Visual Studio .NET的发行版的一部分(Visual Studio .NET 2002)。可以以一个独立且可重新分发的包的形式或在一个软件发展工具包集中被获得,不能安装在用户操作系统和服务器操作系统上。
CLR:1.0
操作系统(安装):无
服务器操作系统(安装):无
1.1
1.1是对1.0框架的升级版本,发行于2003年,比1.0晚了一年,包含在Visual Studio 2003中。 相对于1.0版本的改进: 自带了对mobile asp .net控件的支持,安全方面使Windows窗体代码以可靠的行为运行,从而可以在Internet环境内安全运行,并且加入了ASP .NET应用程序的代码安全访问功能。自带了对ODBC和Oracle数据库的支持。同时新增了.NET Compact Framework技术,用于智能设备(例如Pocket PC或者SmartPhone)。增加了对IPv6的支持,变更了大量的API。
CLR:1.1
操作系统(安装):无
服务器操作系统(安装):Window Server 2003
DotNet Framework版本的进化史(CLR 2)
2.0
很多人都怀念的一个框架,.NET框架 2.0的组件都包含在 Visual Studio 2005和SQL Server 2005里面。首次实现了对64位平台的支持,在的很多程序所用到的功能基本上2.0都提供了技术支持,这个框架被众多的怀念也不是没有道理的.
WinForm
做过WinForm开发的应该对这个DataGridView 控件不会陌生,它是2.0为Winform提供的一个表格控件,为了更好的操作数据。窗体中加载网页提供的WebBrowser控件, 分割窗体提供的SplitContainer 控件,为解决后台费很长时间的(图像下载或者数据库事务 )提供的BackgroundWorker 组件.
ASP.NET
2.0 版本的ASP.NET 已经得到很大的改进,大多数常见 Web 应用程序开箱都可以找到。建立网站和网页并维持其运行比以前变得更加简单,而且使用的代码比以前更少。这样提高了程序员的开发效率,同时也降低了做Donet的程序员基础知识相对薄弱一点。母版页,ViewState,缓存(Cache)新功能加入了ASP.NET体系,控件方面也加入用于显示和编辑数据的 GridView((GridView 控件取代了以前版本的 ASP.NET 中的 DataGrid 控件))、DetailsView、FormView 控件。
ADO.NET
ADO.NET 中的新功能包括对用户定义类型 (UDT)、异步数据库操作、XML 数据类型、大值类型和快照隔离的支持,以及对允许应用程序通过 SQL Server 2005 支持多活动结果集 (MARS) 的新属性的支持.
2.0支持FTP,增强了I/O读写,SMTP支持,提供了新的 XSL 转换 (XSLT) 处理器,Web服务等功能,有几个功能需要稍微提一下:
COM Interop 服务增强功能
- 操作系统维护有限数量的句柄,这些句柄用来引用关键操作系统资源。新的 SafeHandle 和 CriticalHandle 类及其专用派生类提供了对操作系统句柄进行操作的安全可靠的方式。
- 对封送处理的改进使得与本机代码交互操作更加容易。对互操作封送拆收器的两种增强功能满足了最常见的两种用户要求:将本机函数指针包装到委托中的能力以及在结构内部封送固定大小的结构数组的能力。
- 对于常见调用类型,不同应用程序域中的应用程序之间的调用性能速度更快。
- 类型库导入程序 (Tlbimp.exe) 和类型库导出程序 (Tlbexp.exe) 的新开关消除了对注册表解析类型库引用的依赖性。此增强对于创建可靠的生成环境非常重要。
调试器显示属性
可以控制当调试应用程序时 Visual Studio 显示类或成员的方式,调试器的显示属性功能使您能够标识要在调试器中显示的最有用的信息(对于现在来说是很正常不过的一个事情)
调试器编辑并继续支持
编辑并继续
NET Framework 2.0 重新引入了“编辑并继续”功能,该功能使在 Visual Studio 中调试应用程序的用户能够在以中断模式执行的同时更改源代码。在应用对源代码所做的编辑之后,用户可以继续执行代码并观察效果。而且,“编辑并继续”功能在 Visual Studio 所支持的任何编程语言中都可用。
CLR:2.0
操作系统(安装):无
服务器操作系统(安装):Window Server 2003,Window Server 2008 SP2,Window Server 2008 R2 SP1
3.0
.NET框架 3.0 发布日期2006/11/21,曾用名“WinFX”。加入了适应未来软件发展方向的4个框架:
Windows Presentation Foundation(WPF):提供更佳的用户体验,用来开发Windows Forms程序以及流览器应用程序,主要是用于表现层UI.(跟Winform有点类似,但不一样)
Windows Communication Foundation(WCF):提供SOA(面向服务的软件构架)支持的安全的网络服务(Web Service)框架,主要解决 程序之间的通信问题.
Windows Workflow Foundation(WF):提供一个设计与发展工作流程导向(Workflow-oriented)应用程序基础支持的应用程序接口,主要是控制程序之间的逻辑转换。
Windows CardSpace:提供一个SSO的解决方案,每个用户都有各自的CardSpace。(没用过,不是很了解)
按照微软的这个设计思路,WPF用于UI表现,WCF用于程序之间的通信,WF用于程序之间的逻辑控制,这样程序员什么都不用愁了,事实是大家基本上最后悔用到其中的一两个.
.NET框架 3.0 SP1随.NET框架 3.5同时发行,.NET框架 3.0 SP2随.NET框架 3.5 SP1同时发行。
CLR:2.0
操作系统(安装):Vista(内置)
服务器操作系统(安装):Window Server 2003,Window Server 2008 SP2(内置),Window Server 2008 R2 SP1(内置)
3.5
该版本随Visual Studio 2008一起发布,现在还具有很强大的生命力,功能相对2.0增加了不少:
ASP.NET
新增了ListView 数据控件和LinqDataSource 控件,ListView 数据控件用于显示数据,类似于 DataList 和 Repeater 控件。与这两种控件不同的是,ListView 控件支持编辑、插入和删除操作,还支持排序和分页操作。分页功能是由新的 DataPager 控件为 ListView 提供的。(初学的时候用过,已经很久没用),LinqDataSource 控件通过 ASP.NET 数据源控件结构公开语言集成查询 (LINQ).
支持基于服务器的 AJAX 开发的服务器控件。这些控件包括 ScriptManager、UpdatePanel、UpdateProgress 和 Timer 控件。通过这些控件,使用很少客户端脚本,甚至不使用客户端脚本,就可以创建丰富的客户端行为(例如,部分页呈现和在异步回发过程中显示更新进度)。
LINQ
语言集成查询 (LINQ) 是 Visual Studio 2008 和 .NET Framework 3.5 中的新功能。LINQ 将强大的查询功能扩展到 C# 和 Visual Basic 的语言语法中,并采用标准的、易于学习的查询模式。可以对此技术进行扩展以支持几乎任何类型的数据存储。.NET Framework 3.5 包含 LINQ 提供程序程序集,这些程序集支持使用 LINQ 来查询 .NET Framework 集合、SQL Server 数据库、ADO.NET 数据集和 XML 文档(LINQ to Object、LINQ to ADO .NET以及LINQ to XML表达式目录树Expression Tree)。
.NET Framework 3.5 统一了 Windows Workflow Foundation (WF) 和 Windows Communication Foundation (WCF) 框架,以便可以使用 WF 作为一种创作 WCF 服务的方式或将现有 WF 工作流作为服务公开。.NET Framework 3.5 还引入了对 WCF 服务的支持,这些服务使用 WF 持久模型来保存服务的状态信息。这些持久性服务将其状态信息保存在应用程序层上,以便在取消然后重新创建会话时,可以从持久存储区中重新加载该服务的状态信息。可以创建基于 ASP.NET (.asmx) 和 WCF 的 Web 服务,.NET Framework 3.5 版 还与 IIS 7.0 集成。
同时,.NET框架 3.5自动包含.NET框架 2.0 SP1以及.NET框架 3.0 SP1,用于为这两个版本提供安全性修复,以及少量新增的类库(如System.DateTimeOffest)。
CLR:2.0
操作系统(安装):Vista,Window 7(内置),Window 8(内置),Window 8.1(内置)
服务器操作系统(安装):Window Server 2003,Window Server 2008 SP2,Window Server 2008 R2 SP1(内置),Window Server 2012,Window Server 2012 R2
DotNet Framework版本的进化史(CLR 4)
4.0
ASP.NET
- 核心服务,包括可用来扩展缓存的新 API、支持对会话状态的数据进行压缩以及新的应用程序预加载管理器(自动启动功能)。
- Web 窗体,包括对 ASP.NET 路由的更集中化支持、对 Web 标准的增强支持、更新的浏览器支持、数据控件的新功能以及视图状态管理的新功能,新增了 Chart 控件。
- MVC,包括视图的新帮助器方法、对分区的 MVC 应用程序的支持以及异步控制器。
- Microsoft Ajax,包括对 Microsoft Ajax 库中的基于客户端的 Ajax 应用程序的附加支持。
- Visual Web Developer,包括改进的 JScript IntelliSense、针对 HTML 和 ASP.NET 标记的新的自动完成代码段和增强的 CSS 兼容性。
WPF
- 新增 Calendar、DataGrid 和 DatePicker控件,VisualStateManager 支持更改控件的状态。。
- 利用触控和操作,可以创建在 Windows 7 上同时接收来自多个触控的输入的应用程序;图形和动画支持布局舍入、像素着色器版本 3.0、缓存合成和缓动函数;
- 文本改进了文本呈现,并支持在文本框中自定义插入符号的颜色和选定内容的颜色;InputBinding 的 Command 属性、动态对象和 Text 属性支持绑定。
- XAML 浏览器应用程序 (XBAP) 支持与网页通信,并且支持完全信任部署。
WCF
- 基于配置的激活:取消了对具有 .svc 文件的要求。
- System.Web.Routing 集成:通过允许使用无扩展 URL,更好地控制服务的 URL。
- 多个 IIS 网站绑定支持:允许在同一网站上具有多个使用相同协议的基址。
- 路由服务:允许基于内容路由消息。
- 工作流服务:通过提供用于发送和接收消息的活动、基于内容关联消息的功能以及工作流服务主机来集成 WCF 和 WF。
WCF REST
- Web HTTP 缓存:允许缓存 Web HTTP 服务响应。
- Web HTTP 格式支持:允许动态确定服务操作做出响应的最佳格式。
- Web HTTP 服务帮助页:提供 Web HTTP 服务的自动帮助页,此页与 WCF 服务帮助页类似。
- Web HTTP 错误处理:允许 Web HTTP 服务以与操作相同的格式返回错误信息。
- Web HTTP 跨域 JavaScript 支持:允许使用 JSON Padding (JSONP)。
WF
- 改进的工作流活动模型:Activity 类提供工作流行为的基本抽象。
- 各种复合活动选项:工作流可从以传统的流控制结构为模型的新建流控制活动(如 Flowchart、TryCatch 和 Switch
)受益。 - 显式活动数据模型:用于存储或移动数据的新增选项包括变量和方向参数。
- 增强的宿主、持久性和跟踪选项:宿主增强包括更多的运行工作流选项,使用 Persist 活动的显式保持,保持而不进行卸载,使用非持久区域阻止保持,使用宿主中的环境事务,将跟踪信息记录到事件日志,以及使用 Bookmark 对象继续挂起的工作流。
ADO.NET
ADO.NET 提供了一些用于 Entity Framework 的新功能,其中包括持久性未知对象、LINQ 查询中的函数以及自定义对象层代码生成。
CLR:4
操作系统(安装):Vista,Window 7
服务器操作系统(安装):Window Server 2003,Window Server 2008 SP2,Window Server 2008 R2 SP1
4.5
框架每次升级的时候基本上就是为前面的设计的失误或者根据开发人员实际开发中常用的东西封装,不过4.5最大的亮点就是支持移动开发,开发Window Phone应用,为有的人带来了机遇,更多的人则被掉里面去在慢慢的往外爬,其他功能也进行了变更,具体的新增功能可参考:http://msdn.microsoft.com/zh-cn/library/ms171868(v=vs.110).aspx
CLR:4
操作系统(安装):Vista,Window 7,Window 8(内置)
服务器操作系统(安装):Window Server 2008 SP2,Window Server 2008 R2 SP1,Window Server 2012
4.5.1
EF 和 ADO.NET 现在对连接失败的情况容错性更好,比如以前连接服务器的时候,服务器突然挂了,直接抛异常,新框架中一旦网络连接得以恢复,应用程序就会监测到它,并继续之前的工作。
ASP.NET 应用现在可以自动挂起了。实际运行的 ASP.NET 工作进程(worker process)将被挂起为可随时唤醒的状态,这能够节省 90% 的启动时间。当应用程序处于空闲状态一段时间后,它将会被分页到磁盘,一旦某个请求到来或是完成,它将被唤醒。可以在 IIS 配置中将 Time-out Action 这一项设置为“挂起”以实现这一功能。
CLR:4
操作系统(安装):Vista,Window 7,Window 8,Window 8.1(内置)
服务器操作系统(安装):Window Server 2008 SP2,Window Server 2008 R2 SP1,Window Server 2012 ,Window Server 2012 R2(内置)
详情可参考:http://blogs.msdn.com/b/dotnet/archive/2013/06/26/announcing-the-net-framework-4-5-1-preview.aspx
4.5.2
ASP.NET 网络应用提供了新的API。新HttpResponse,AddOnSendingHeaders和HttpResponseBase。AddOnSendingHeaders方法检查和修改响应头和状态码响应客户端程序的清酒,用来代替方法PreSendRequestHeaders和PreSendRequestContent方法。
调整在Windows窗体控件。可以使用系统DPI设置调整组件以下额外的控件(例如,在组合框的下拉箭头):
可选特性,在配置文件中设置EnableWindowsFormsHighDpiAutoResizing:
12 "EnableWindowsFormsHighDpiAutoResizing" value="true" /> 3
CLR:4
操作系统(安装):Vista,Window 7,Window 8,Window 8.1
服务器操作系统(安装):Window Server 2008 SP2,Window Server 2008 R2 SP1,Window Server 2012 ,Window Server 2012 R2
最后用一张图来总结一下吧(网络图片):
基本上Dotnet FrameWork每个版本都可以写成一大篇文章,本文难免有理解不到位,或者理解错误的地方,如果不当,请各位多多包涵,理性指出~
http://msdn.microsoft.com/en-us/library/bb822049(v=vs.110).aspx