热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

.NET4新特性介绍

一、应用程序兼容性和部署除了一些在安全、标准遵从、正确性、可靠性及性能等方面的改进之外,.NET4与基于早期.NET版本构建的应用程序高度兼容。.NET4并不会自动使

 一、应用程序兼容性和部署

  除了一些在安全、标准遵从、正确性、可靠性及性能等方面的改进之外,.NET4与基于早期.NET版本构建的应用程序高度兼容。

  .NET4并不会自动使用当前版本的公共语言运行库来运行使用早期版本的.NET构建的应用程序。为了在.NET4下运行以前的应用程序,你必须使用在您的Visual Studio项目的属性中指定的目标.NET版本重新编译您的应用程序,或者在应用程序的配置文件中使用元素来指定支持的运行时刻库。

  二、内核新功能及改进

   (一)诊断和性能

  早期版本的.NET并没有提供一种方法来确定一个特定的应用程序域是否正在影响其他应用程序域,因为操作系统的API及相关工具(如Windows任务管理器)都被精确设计到进程级。从.NET4开始,你可以在每一个应用程序域中获取处理器及内存的使用估测信息。

  您可以监控每一个应用程序域的CPU和内存使用情况。可以通过托管和本机宿主API以及Windows事件跟踪(ETW)来进行应用程序域资源的监控。当启用此功能后,它能够在进程的整个生命周期过程中收集所有应用程序域的统计信息。有关此主题,你也可以参考新属性AppDomain.MonitoringIsEnabled的介绍。

  现在,您可以为了诊断目的而访问ETW事件以提高性能。

  (二)垃圾收集

  .NET4支持后台垃圾收集。此功能取代了以前版本中的并行垃圾收集,从而提供更好的系统性能。

  (三)代码契约

代码契约功能允许你指定那些仅通过方法或类型的签名尚不能描述的契约信息。新命名空间System.Diagnostics.Contracts中包含的类提供了一种独立于语言的方法并使用前置条件、后置条件和对象不变量等形式来表达编码假设。这些契约通过运行时检查能够改进测试,支持静态契约校验,并支持文档生成。

  (四)仅使用设计时互操作程序集

  如今,你不再需要携带主互操作程序集(PIA)来部署与COM对象互操作的应用程序。在.NET4中,编译器可以从互操作程序集中嵌入类型信息,而且能够仅选择那些应用程序(例如,一个插件)实际使用的类型。类型安全由公共语言运行时来保障。

  (五)动态语言运行时

  动态语言运行时(DLR)是一个新的运行时环境,它把一组针对动态语言的服务添加到CLR中。DLR使开发运行于.NET上的动态语言更加容易,而且有利于把动态特性添加到静态类型的语言中。为了支持DLR,.NET中添加了一个新的命名空间System.Dynamic。

  通过引入新的描述控制流的类型,例如System.Linq.Expressions.LoopExpression和System.Linq.Expressions.TryExpression,表达式树功能被进一步扩展。注意,这些新的类型仅为动态语言运行时(DLR)所使用,而不能够由LINQ使用。

下面示例:C#调用python代码

static void Main(string[] args)

{

Action action = () => Console.WriteLine("Hello World");

ScriptRuntime runtime = Python.CreateRuntime();

dynamic script = runtime.UseFile("script.py");

dynamic decorator = script.decorator(action);

decorator.execute();

}

}

}

在创建的工程的bin\debug目录下,添加script.py.代码如下,一个很简单的wrapper,仅供验证之用。

def wrapper(function):

def inner(self):

print "Decorator... "

return function(self)

return inner

class decorator(object):

def __init__(self, function):

self.action = function

@wrapper

def execute(self):

self.action()

  (六)协变与反变

  有几种泛型接口和委托现在支持协变与反变功能。

  (七)BigInteger和复数

  新的System.Numerics.BigInteger结构是一个任意精度的整数数据类型,它支持所有标准的整数运算,其中包括位操作。BigInteger可以用于任何.NET语言中。此外,一些新的.NET语言(如F#和IronPython)都已内置了对此结构的支持。

  新的System.Numerics.Complex结构用于描述一个复数,而且支持复数的算术运算和三角运算。

  (八)元组

  .NET4引入了System.Tuple类,用于创建包含结构化数据的元组对象。另外,还提供了泛型元组类以便支持具有1至8个组件的元组。为了支持有9个或更多组件的元组对象,提供了一个泛型元组类,此类使用7个类型参数,而第8个参数可以是任何的元组类型。

  (九)文件系统枚举功能方面的改进

  .NET4又增加了新的文件枚举方法,从而进一步提高访问巨型文件目录或遍历大文件的应用程序的性能。

  (十)内存映射文件

  .NET现在支持内存映射文件。你可以使用内存映射文件来编辑非常大的文件,还可以为进程间通信创建共享内存。

  (十一)64位操作系统与进程

  您可以使用Environment.Is64BitOperatingSystem和Environment.Is64BitProcess属性来标识64位的操作系统和进程。

  当你打开基键时,您可以使用Microsoft.Win32.RegistryView枚举来指定一个32位或64位的注册表视图。

  三、托管扩展框架

  托管扩展性框架(MEF)是.NET4中的一个新库,帮助您构建可扩展的和可组合式应用程序。MEF可以让您指定在一个应用程序中的扩展点,给其他扩展的应用程序提供服务,以及创建可扩展应用程序所使用的部件等。MEF还支持很容易地基于元数据搜索到可用的部件,而无需为这些部件加载相应的程序集。

  四、并行计算

.NET 4针对编写多线程和异步代码引入了一个新的编程模式,从而极大地简化了应用程序和库开发者的编程。此新的模式可以使开发人员以一种自然的方式来编写高效的,良好粒度的,可扩展的并行代码,而不必直接使用线程或线程池等。新的System.Threading.Tasks命名空间和其他相关类型支持这种新模式。并行LINQ(PLINQ),作为LINQ to Objects的一种并行实现,能够通过声明性语法支持类似的功能。

代码示例:

//并行化的Linq,只需杂集合类型后加上.AsParallel()

var q = from p in people.AsParallel()

where p.Name == queryInfo.Name &&

p.State == queryInfo.State &&

p.Year >= yearStart &&

p.Year <&#61; yearEnd

orderby p.Year ascending

select p;

//并行化的for

Parallel.For(0, 16, i &#61;>

{

Console.WriteLine("TID&#61;{0}, i&#61;{1}",

Thread.CurrentThread.ManagedThreadId,

i);

});

  五、网络编程

  网络编程方面的改进包括以下内容&#xff1a;

  针对Windows身份验证的安全改进体现在几个类中&#xff0c;包括System.Net.HttpWebRequest&#xff0c;System.Net.HttpListener&#xff0c;System.Net.Mail.SmtpClient&#xff0c;System.Net.Security.SslStream和 System.Net.Security.NegotiateStream。在Windows 7和Windows Server 2008 R2中运行的应用程序可以使用扩展保护功能。

  六、Web开发

  ASP.NET版本4在以下几个方面引入了一些新特点&#xff1a;

  核心服务&#xff0c;包括一个新的允许您扩展缓存的API&#xff0c;支持压缩会话状态数据和一个新的应用程序预加载管理器(自动启动功能)。

  Web窗体方面&#xff0c;其中包括为ASP.NET路由提供的更加集成化的支持&#xff0c;对Web标准的增强支持&#xff0c;更新的浏览器支持&#xff0c;为数据控件增加了一些新功能&#xff0c;以及为视图状态管理增加了一些新的功能。

  Web窗体控件方面&#xff0c;提供了一个新的图表控件。

  MVC框架方面&#xff0c;包括针对视图的新的辅助方法&#xff0c;对分区的MVC应用程序的支持&#xff0c;并提供了异步控制器。

  动态数据方面&#xff0c;包括针对现有Web应用程序的支持&#xff0c;全对多对多关系和继承的支持&#xff0c;对字段模板和属性的支持&#xff0c;以及增强的数据过滤功能。

  在Microsoft AJAX库中增加了针对客户端中心型Ajax应用程序的额外支持。

  Visual Web Developer中&#xff0c;包括了改进的针对JScript的智能感知支持&#xff0c;针对HTML和ASP.NET标记的新的自动完整代码片段支持&#xff0c;以及增强的CSS兼容性支持。

  部署方面&#xff0c;为自动化的典型的部署任务增加了新的支持工具。

  多目标方面&#xff0c;包括针对无法在.NET的目标版本中可用功能的更好的过滤支持。

  七、客户端开发

  Windows Presentation Foundation

  在.NET4中&#xff0c;Windows Presentation Foundation(WPF)在许多方面都发生了变化并进行了改进&#xff0c;包括控件、图形和XAML等等。

  八、数据

  (一)ADO.NET

  ADO.NET的实体框架中提供了新功能&#xff0c;包括持久化透明对象(Persistence-Ignorant Objects&#xff0c;译者注&#xff1a;这种对象具有不必事先在DBMS中建立实体信息就可以利用实体框架的DDL生成功能将POCO对象结构转换成实体信息结构以存入信息库中的能力。)&#xff0c;在LINQ查询功能和自定义对象层代码生成等。有关该内容的更多的信息&#xff0c;请参阅《ADO.NET新特征》。

  (二)动态数据

  对于ASP.NET 4来说&#xff0c;动态数据支持得到进一步增强&#xff0c;从而给你以更强大的功能快速建立数据驱动的网站。这包括以下内容&#xff1a;

  基于在数据模型定义的约束的自动验证功能。

  通过使用已成为动态数据项目的一部分的字段模板&#xff0c;能够方便地改变在GridView和DetailsView控件中针对相应字段生成的标记。

  九、通信和工作流

Windows通信基础(WCF)实现了消息管理方面的增强并提供与Windows工作流基础(WF)的无缝集成。WF提供的改进体现在性能、可扩展性、工作流建模以及一个更新的可视化设计器等方面。

转:https://www.cnblogs.com/wshark/archive/2011/05/12/2044254.html



推荐阅读
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 解决.net项目中未注册“microsoft.ACE.oledb.12.0”提供程序的方法
    在开发.net项目中,通过microsoft.ACE.oledb读取excel文件信息时,报错“未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序”。本文提供了解决这个问题的方法,包括错误描述和代码示例。通过注册提供程序和修改连接字符串,可以成功读取excel文件信息。 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • EPPlus绘制刻度线的方法及示例代码
    本文介绍了使用EPPlus绘制刻度线的方法,并提供了示例代码。通过ExcelPackage类和List对象,可以实现在Excel中绘制刻度线的功能。具体的方法和示例代码在文章中进行了详细的介绍和演示。 ... [详细]
  • Commit1ced2a7433ea8937a1b260ea65d708f32ca7c95eintroduceda+Clonetraitboundtom ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
author-avatar
wb91cmy
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有