.Net Framework 各个版本新特性总结 (一)

.Net Framework 4.5 新特性

最近面试时又看到有问.Net Framework 新特性的问题,一时被问到了。平时也是拿起来就用,新版本出来了,新特性也就是瞄一眼,也没去仔细查看。这次干脆花点时间总(翻)结(译)一下各个版本相比上一版本带来的新特性。主要参考来源是MSDN,一下是原文链接:

Reference: https://msdn.microsoft.com/en-us/library/ms171868(v=vs.110).aspx#core

嗯,我们就从4.5开始。

目录 Table Of Content

1. 核心新特性和改进 《本文》

2. 托管扩展框架

3. 异步文件操作

4. 工具

5. 并行计算

6.网站

7. 网络编程

8.WPF

9.WCF

10. WF

11.可移植类库

1. 核心特性和改进

1) . 在安装Framework 4.5的时候减少了系统重启的需要。应为4.5 安装时需要替换4.0的部分文件,所以要求这些文件在安装时可被替换(可写)。4.5引入了一个重启管理器(Restart Manager),它可以检测到正在运行的4.0的程序,并尝试关闭这些程序(会有提示框让用户确认要关闭的程序),以此来避免重启系统。但是有是一些程序不能或不应该关闭的,那就还是需要重启系统。

如果你要发布自己的程序并自带Framework 安装包(Chained Instaler),也可以通过设置命令行选项的方式,让用户在安装你的程序包是出现.Framework自带的关闭程序提示框。

参考: https://msdn.microsoft.com/en-us/library/hh527997(v=vs.110).aspx

PS: 这个新特性似乎用处不大,在开发环境重不重启系统无关紧要,重启的时候还可以趁机看看头条。生产环境的话,又不是100%不需重启,似乎并没有起到什么大作用。

2).  在64位系统上支持超过2GB的大数组。但是要是有此特性需要在配置文件中设置  gcAllowVeryLargeObjects 配置项:

<configuration>
  <runtime>
    <gcAllowVeryLargeObjects enabled="true" />
  </runtime>
</configuration>

PS:没用过这么大的数组,什么场景会用到这么大的数组呢?

3). 开始支持服务器的后台垃圾回收。从4.0开始有后台垃圾回收,但是只支持工作台(WorkStation)环境。4.5开始支持服务器。 垃圾回收会自我调节一适应不同的场景。我们可以根据工作量的特点。通过修改配置文件的设置来设定垃圾回收的类型。目前CLR提供了两种垃圾回收的类型:工作台和服务器。

工作台垃圾回收适用于各种客户端工作台以及独立PC.它是 配置文件中<runtime>/ <gcserver> 的默认设置。它可以以并发或非并发模式运行。并发模式下垃圾回收和托管主线程同时运行。从4.0开始,后台垃圾回收替代了并发垃圾回收。

服务器垃圾回收适用于高吞吐和扩展的服务器应用程序。服务器垃圾回收可以是非并发或后台。

对于后台垃圾回收,它会在一个单独的线程中执行,而且只在2代堆上执行垃圾回收。

在0和1代(ephemeral generations)的对象是使用前台垃圾回收(Foreground Garbage colletion), 前台垃圾回收启动时,后台垃圾回收线程和程序主线程都会挂起直到回收结束再恢复。

Reference: https://msdn.microsoft.com/en-us/library/ee787088(v=vs.110).aspx#background_garbage_collection

4).在多核处理器系统上,可以支持后台JIT 编译,以提升程序启动速度。

Reference: https://msdn.microsoft.com/en-us/library/system.runtime.profileoptimization(v=vs.110).aspx

5).可以设置正则表达式引擎的超时时间。以前版本中是没有超时时间的。这个时间可以单独在创建是设置在Regex对象上或设置在AppDomain 中应用于所有的Regex对象。默认值是Regex.InfiniteMatchTimeout, 无超时。

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      AppDomain domain = AppDomain.CurrentDomain;
      // Set a timeout interval of 2 seconds.
      domain.SetData("REGEX_DEFAULT_MATCH_TIMEOUT", TimeSpan.FromSeconds(2));
      Object timeout = domain.GetData("REGEX_DEFAULT_MATCH_TIMEOUT");
      Console.WriteLine("Default regex match timeout: {0}",
                         timeout == null ? "<null>" : timeout);

      Regex rgx = new Regex("[aeiouy]");
      Console.WriteLine("Regular expression pattern: {0}", rgx.ToString());
      Console.WriteLine("Timeout interval for this regex: {0} seconds",
                        rgx.MatchTimeout.TotalSeconds);
   }
}
// The example displays the following output:
//       Default regex match timeout: 00:00:02
//       Regular expression pattern: [aeiouy]
//       Timeout interval for this regex: 2 seconds

Reference:https://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.matchtimeout(v=vs.110).aspx

6).可以为AppDomain 设置默认Culture.

Reference: https://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo(v=vs.110).aspx

7).控制台Console 支持UTF-16 编码。

8).在字符串的排序和比较是支持不同文化版本的编码.

9).读取资源时有更好的性能。

10).改进Zip压缩,减少了压缩后文件的大小。

11).可自定义一个反射上下文,覆盖默认的反射行为。反射上下文的作用就是在提供一种在运行时修改被反射类型的成员或方法的属性(Attribute).比如加一个源代码中没有属性,或者去掉一个源代码中有的属性。这样利用反射获取类型成员或方法的属性时就获取的是自定义的属性。

Reference:https://msdn.microsoft.com/en-us/library/system.reflection.context.customreflectioncontext(v=vs.110).aspx

12).当类System.Globalization.IdnMapping 在Win8上使用是,支持2008版本的IDNA(Internationalized Domain Names in Applications).类System.Globalization.IdnMapping  是支持非ASCII编码的因特网域名。

Reference: https://msdn.microsoft.com/en-us/library/system.globalization.idnmapping(v=vs.110).aspx

13).当.Net Framework 运行在Win8上时,字符串的比较会代理给实现了Unicode 6.0的操作系统。如果在其他平台上运行,.Net Framework 使用它自己的字符串比较,是基于Unicode5.X 。

14).可基于应用程序域计算字符串的哈希码。

15).类型反射支持Type 和 TypeInfo 类之间的拆分。

时间: 2024-12-20 21:23:09

.Net Framework 各个版本新特性总结 (一)的相关文章

c# .net 3.5 4.0 4.5 5.0 6.0各个版本新特性战略规划总结【转载】

引用:http://blog.csdn.net/attilax/article/details/42014327 c# .net 3.5 4.0 各个版本新特性战略规划总结 1. --------------.Net Framework版本同CLR版本的关系1 2. paip.------------SDK2.0功能-------------2 2.1. 泛型:2 3. --------------sdk3.0  增加了以下功能..2 3.1. LINQ 3 4.  ----------sdk4

Atitit.c# .net 3.5 4.0 各个版本新特性战略规划总结

Atitit.c# .net 3.5 4.0 各个版本新特性战略规划总结 1. --------------.Net Framework版本同CLR版本的关系 1 2. paip.------------SDK2.0功能------------- 2 2.1. 泛型: 2 3. --------------sdk3.0  增加了以下功能.. 2 3.1. LINQ 3 4.  ----------sdk4.0 新加功能------------ 3 5. ].Net4.5的五项强大新特性 3 5.

TypeScript系列1-1.5版本新特性

1. 简介 随着PC端快速向移动端迁移,移动(体验)优先的概念也越来越响.由于ReactJS目前移动端仅仅支持iOS,因此移动端Web开发框架只能选择: AngularJS/Angula2 + Ionic框架 + Cordova.想要学习好Angula2以及阅读其代码, 就必须了解和学习TypeScript,也因此需要学习好ES6以及Web Component.近期将开始学习TypeScript语言. 下面先看看TypeScript语言的发展: 鉴于JavaScript这种脚本语言很难应用于大规

NET Framework 4.5新特性 (三)64位平台支持大于2 GB大小的数组

64位平台.NET Framework数组限制不能超过2GB大小.这种限制对于需要使用到大型矩阵和向量计算的工作人员来说,是一个非常大问题. 无论RAM容量有多大有多少,一旦你使用大型矩阵和向量计算工作的时候,经常会抛出一个System.OutOfMemoryException异常,如下图所示: 参考程序 class Program { private static void Main(string[] args) { int arrysize = 150000000; var large=ne

Atitit..jdk&#160;java&#160;各版本新特性&#160;1.0&#160;1.1&#160;1.2&#160;1.3&#160;1.4&#160;1.5(5.0)&#160;1.6(6.0)&#160;7.0&#160;8.0&#160;9.0&#160;attilax&#160;大总结

Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结 1.1. Java的编年史2 1.2. Java版本:JDK 1.02 1.3. Java版本:JDK 1.13 1.4. Java版本:JDK 1.2 (Java 2)4 1.4.1. 1999年5 1.4.2. 2000年5 1.5. Java版本:JDK 1.35 1.5.1. 2001年6 1.5.2. 2002年7

Atitit.jquery 版本新特性attilax总结

Atitit.jquery 版本新特性attilax总结 1. Jq1.4 1 2. 1.5 1 3. 1.6 3 4. Jq1.7 3 ⒉提升了事件委派时的性能有了大幅度的提升,尤其是在ie7下: 4 ⒊更好的在 ie 6/7/8 上支持 html5: 4 ⒋切换动画更加直观: 4 ⒌匿名模块定义 awd 4 ⒍jQuery.Deferred 4 ⒎jQuery.isNumeric() 4 5. Jq1.8 5 5.1. jQuery 1.8 5 5.1.1. 可定制 5 5.1.2. 自动生

JDK各版本新特性总结

JDK各版本新特性总结 JDK 1.7 新特性  1.switch中可以使用string字符串了 2.<>的运用, List<String> tempList = new ArrayList<>(); 即泛型实例化类型自动推断 3.语法上支持集合,而不一定是数组 final List<Integer> piDigits = [ 1,2,3,4,5,8 ]; 对Java集合(Collections)的增强支持,摒弃了Java集合接口的实现类,如:ArrayLi

iOS程序实现程序的版本新特性显示功能

每个程序都会多个版本,每个版本的功能会进一步优化或调整,将这些功能简明扼要的展示给急于尝鲜的用户,这就是版本新特性的功能. 程序第一次安装或升级之后的第一次启动,都会出现三到四页功能介绍页面,划屏浏览,然后才是正式进入程序.同版本的程序二次启动则没有这些介绍页.这就是版 本新特性现实界面. 如何实现这个功能呢? 需求:第一次安装或版本升级,显示新特性:同版本第二次进入,不显示新特性. 分析:程序启动会显示不同界面,就是window加载的根控制器rootViewController是不相同的.如何

NET Framework 4.5新特性 (一) 数据库的连接加密保护。

NET Framework 4.5 ado.net数据库连接支持使用SecureString内存流方式保密文本.  一旦使用这类操作,文本加密是私有不能共享的,并在不再需要时从计算机内存中删除.  SecureString此类不能被继承. 下面做了一些演示 private void Login_Click(object sender, EventArgs e) { //登录参数 string userName = Username.Text; SecureString password = se