.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());
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 类之间的拆分。

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

  1. framework各版本新特性(为面试准备)

    菜鸟D估计描述这些新特性的文章都是烂大街的货色,之所以拿出来分(e)享(xin)一下,有两个原因:1.当年面试的时候有人问到,我不知道该怎么回答:2.项目需要发布了,但是考虑到framework的版本 ...

  2. 精进不休 .NET 4.5 (12) - ADO.NET Entity Framework 6.0 新特性, WCF Data Services 5.6 新特性

    [索引页][源码下载] 精进不休 .NET 4.5 (12) - ADO.NET Entity Framework 6.0 新特性, WCF Data Services 5.6 新特性 作者:weba ...

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

    Atitit.c# .net 3.5 4.0 各个版本新特性战略规划总结 1. --------------.Net Framework版本同CLR版本的关系1 2. paip.----------- ...

  4. 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. ---------- ...

  5. C# 语言历史版本特性(C# 1.0到C# 7.1汇总更新) C#各版本新特性 C#版本和.NET版本以及VS版本的对应关系

    C# 语言历史版本特性(C# 1.0到C# 7.1汇总更新) 2017年08月06日 11:53:13 阅读数:6705 历史版本 C#作为微软2000年以后.NET平台开发的当家语言,发展至今具有1 ...

  6. Atitit opencv版本新特性attilax总结

    Atitit opencv版本新特性attilax总结 1.1. :OpenCV 3.0 发布,史上功能最全,速度最快的版1 1.2. 应用领域2 1.3. OPENCV2.4.3改进 2.4.2就有 ...

  7. Atitit mac os 版本 新特性 attilax大总结

    Atitit mac os 版本 新特性 attilax大总结 1. Macos概述1 2. 早期2 2.1. Macintosh OS (系统 1.0)  1984年2 2.2. Mac OS 7. ...

  8. IOS第三天-新浪微博 - 版本新特性,OAuth授权认证

    *********版本新特性 #import "HWNewfeatureViewController.h" #import "HWTabBarViewController ...

  9. 【开源】OSharp3.3框架解说系列:重新开源及3.3版本新特性

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

随机推荐

  1. maven常用技巧

    安装Maven后我们会在用户目录下发现.m2 文件夹.默认情况下,该文件夹下放置了Maven本地仓库.m2/repository.所有的Maven构件(artifact)都被存储到该仓库中,以方便重用 ...

  2. Azure Backup 简介

    ViswanathTata云 +Enterprise 项目经理 AzureBackup是 Azure恢复服务的一部分,在安全高效的环境中对上传到 Azure的数据提供简单可靠的管理和保护.Azur ...

  3. 关于ButterKnife 8.1.0使用遇到的问题

    ButterKnife注解方式 和eventbus 差不多 都很好用 @OnClick(R.id.button) void onButtonClick() { //TODO implement Toa ...

  4. 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。

    从10G开始,Oracle提供了一个较为轻量级的客户包,叫做Instant Client. 将它安装好后,就不用再安装庞大的Oracle Client了. 这样一来,只要客户端下载Instant Cl ...

  5. Content-Type伪装 - 将jsp伪装成css

    一.前期理论准备 1)目的:  在jsp中动态生成css语句,然后输出给浏览器解析.渲染. 2)浏览器解析文件的依据:  页面加载后,浏览器会发起各个请求去下载各种资源.  比如下载css文件,然后根 ...

  6. JZ2440开发笔记(5)——通过按键点亮LED

    在JZ2440中,点亮LED就是给LED的控制位设置为输出,数据位设置为低电平,而通过按键点亮LED,就需要将按键对应的控制位设置为输出. 下面是JZ2440的3个LED电路图: 下面是JZ2440的 ...

  7. Class.forName()数据库驱动

    在学习jdbc中,用到Class.forName(驱动);,当时学习的时候知道Class.forName就是加载一个类到虚拟机,在加载一个类的时候,这个类的信息会被放到一个方法区,一个CLass 在J ...

  8. vijosP1016 北京2008的挂钟

    vijosP1016 北京2008的挂钟 题目链接:https://vijos.org/p/1016 [思路] Dfs. 对操作搜索更加优秀,所以采用搜索每一个操作的使用次数,因为操作数为4则相当于没 ...

  9. Redis 数据库结构设计

    Redis设计参考资料: http://my.oschina.net/fsmwhx/blog/152130 http://my.oschina.net/1123581321/blog/164288 h ...

  10. Go Slices: usage and internals

    Introduction Go's slice type provides a convenient and efficient means of working with sequences of ...