发布日期:2009.05.22 作者:Anytao 
© 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处。

/// <summary>
/// 本文开始,将以《.NET 4.0深入》为主线,开始一段体验.NET 4.0的激动旅程。
/// </summary>

总体来说,这是一篇介绍性的文章,不会涉及过多技术细节和研究过程。但是,作为拉开序幕的第一页,本文以提纲挈领的方式展开对.NET 4.0的初次体验。从What’s new的角度,开始我对.NET 4.0新特性的探索之旅。既然是介绍,那么首先给出导航式的链接是必要而必须的,因为一篇小小的篇幅却是难以交代全面What’s new in details,所以看官尽情各取所需吧:

因为是[你必须知道的.NET]子系列,所以在此我只关注2010发布之后伴随.NET 4.0的新特性,总结起来主要包括以下几个方面:

  • CLR (Common Language Runtime)
  • DLR (Dynamic Language Runtime)
  • C# and VB .NET
  • Web and Networking
  • Basic class libraries(BCL)
  • Data
  • Client
  • Web
  • Communications

所以,对what’s new的解读,我将分为两个大的部分来诠释:

  • Hot Focus,热点解读。对新特性中值得期待和关注的技术点进行一点整理,因为太多太多了,所以学会抽丝拨茧才是正确之道,在Hot Focus中我们首先对亮点进行一番认知。同时,Hot Focus内容体系也将是为了《深入.NET 4.0》子系列探索的方向和大纲。
  • Full View,.NET 4.0全景图。把概念涉及到各个新增的方面,由此对.NET4.0有个全面和基本的了解。

Hot Focus

在我看来,值得Hot Focus的主要包括以下几个方面:

  • CLR & DLR
  • C#
  • Web
  • Cloud
  • Data
  • F#

下面进行一一分解。

CLR 4.0

是的,不用怀疑,CLR 4.0来了,从CLR 2.0一跃升级到CLR 4.0,我们对新建项目进行反编译,即可从Manifest中获取当前CLR的版本信息,例如:

可见没有重量级的新成员,.NET产品组是不敢贸然为新生儿挂上如此响亮的封号。那么这个分量足够的新家伙到底是谁呢?

答案是:

  • DLR(Dynamic Language Runtime),动态语言运行时,提供了对动态语言在CLR级别的支持。
  • Parallel Computing,并行计算,在多核时代,并行计算已经不可避免。新的平台下,对于并行的支持也随之而来,我们不需要在直接对线程进行管理,Parallel和Task类,当然还有PLINQ(Parallel LINQ)都将闪亮登场。
  • GC,GC也有新变化,我们拭目以待。
  • Convariance and Contravariance,逆变与协变,解决了泛型继承的某些问题,算是一场迟来的完善。
  • Interoperability,互操作将不依赖于原有的RIAs,新的CLR确保了类型安全操作。
  • Lazy Initialization,在未来的日子,通过System.Lazy<T>来为你的实例提供延迟初始化成为可能,这将意味着你的类型可以在实际需要的时候才进行实例化操作、分配内存空间,对性能的控制达到了新的高度。
  • In-Process Side-by-Side Execution,In-Process Side-by-Side hosting解决了不同版本应用在CLR 4.0平台下运行的问题,我们以后详细讨论。

除此之外,还包括:

  • Security
  • ETW Events
  • Code Contracts
  • Profiling

所有的概念,我们都将随后品味。那是因为,所有的概念都是重量级的。

C# 4.0

C# 4.0主要引入了以下程序元素:

  • Office Programmability
  • Dynamic
  • Covariance and Contravariance
  • Type Equivalence

关于.NET 4.0和C# 4.0的若干概念,我在[[你必须知道的.NET]第三十回:.NET十年(下)]已经进行过介绍性的演示与探讨,大家不妨一睹为快。

ASP .NET 4.0

What's New in ASP.NET and Web Development

对于Web开发而言, ASP .NET 4.0从3.5开始就已经提供了很多未集成的新东西,其中包括了类似于MVC在内的很多了不起的改变。所以,对于.NET 4.0而言,我们对于Web开发的贡献,在于对过去的整理和再生,值得关注的内容主要包括:

  • MVC,虽然VS2010 Beta1还没有将MVC Framework整合在内,但是微软承诺在Beta2中我们就可以看到新的MVC身影。
  • Dynamic Data,对,早已领略了如何一分钟之内开发一个增删改查式的动态站点,在ASP .NET 4.0中实现数据驱动的Web开发更加Powerful了。
  • Web Form,在ASP .NET 4.0传统的Web Form开发被注入了更多的新特性,我们可以像MVC Application那样无缝的使用ASP .NET Routing,对于数据源提供了Filtering支持,更多的View state控制,还有好多好多。。。
  • EntityDataSource Control,支持基于Entity Framework的数据绑定控制。

还有很多,详见What's New in ASP.NET and Web Development

Data

What's New in ADO.NET

在数据方面主要还是ADO .NET Entity Framework的增强和Expression Tree的更多支持。EF主要体现在以下方面:

  • Persistence-Ignorant Objects,这个特性是令人欢欣鼓舞的,在新的EF框架下,EF实体类和非EF实体类都应用EF提供的数据支持,这将意味着原有的数据模型也可以畅享EF了。
  • Deferred Loading of Related Objects,如果你没有体会过原来EF处理延迟加载使用的方式时:
if (!user.RoleReference.IsLoaded)
{
user.RoleReference.Load();
}

是很难理解,这一新特性为代码优化给出了机会。

  • Functions in LINQ to Entities Queries,一切皆LINQ的时代,这点也不奇怪。
  • Customized Object Layer Code Generation,为EF数据设计器提供了自动生成代码的可配置向导,更加人性化的选择。
  • 还包括:Complex Type Support、Naming Service、Improved Model Brower Funcationality。

另外,对于Expression Tree,控制了几个新的类型支持,例如 LoopExpression 和TryExpression

BCL

基础类库的更新,是每次.NET版本更新的重要内容,.NET 4.0中基础类库的新增内容,同样惊为天人。在此我仅列举几个重要的更新,更多的内容参考MSDN。

  • Collections

    • BigInterger
    • SortedSet<T>
    • Tuples
  • I/O
    • File System Enumeration
    • Memory-Mapped Files
    • Isolated Storage
    • Compression
  • Exception
  • Reflection
  • 64-bit
  • Application Domain Resource Monitoring
  • Threading
  • Unified Model for Cancellation
  • Thread-Safe Collection
  • Synchronization Primitives
  • 。。。
  • 。。。
  • 很多很多,我们的策略显然是随用随取。

Cloud

云计算将不可避免的到来,在.NET 4.0平台下,Azure Service应用将眼花缭乱,但是可以肯定的是开发模式更加简化,大量的问题需要时间在以后,我们到时再来掂量一二。

F#

一个对我全新而又有足够吸引力的新语言,以后再说吧:-)

Full View

除了以上的重点内容,作为.NET 4.0大家族的一部分,还有很多很多令人兴奋的新东西加入进来,令我们叹息一切太多太快的同时,又带来一丝丝惊喜和心动。废话少说,对其进行一番简单的整理:

  • MEF
  • WPF
  • WCF 4.0
  • WF 4.0
  • Appliction Server(代号Dublin)

结论

.NET 4.0来了,在这个夏天。在蚊子和啤酒相伴的深夜,我将继续[你必须知道的.NET] 系列的完善,将自己对于.NET 4.0新特性的探索形成[深入.NET 4.0]这样一个子系列。同样是一如既往的将角度把握在语言和平台本质的探索,可能的角度上,最佳实践式的应用和国外最新论调的共享同样是这一新生力量关注的话题。好戏才刚开始,我们继续在路上。

注:你必须知道的.NET, .NET 4.0子系列以VS2010 Beta1和.NET 4.0 Beta1为基础,任何后续更新造成的可能不同,我将尽力完善。

参考文献

[你必须知道的.NET]第三十一回,深入.NET 4.0之,从“新”展望的更多相关文章

  1. [你必须知道的.NET]第三十回:.NET十年(下)

    发布日期:2009.05.11 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. /// <summary> /// 本文部分内容,已 ...

  2. [你必须知道的.NET]第三十三回,深入.NET 4.0之,Lazy<T>点滴

    发布日期:2009.10.29 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. 对象的创建方式,始终代表了软件工业的生产力方向,代表了先进软件技 ...

  3. [你必须知道的.NET]第三十五回,判断dll是debug还是release,这是个问题

    发布日期:2009.12.29 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. 问题的提出 晚上翻着群里的聊天,发现一个有趣的问题:如何通过编码 ...

  4. [你必须知道的.NET]第二十五回:认识元数据和IL(中)

    发布日期:2009.02.25 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. 说在,开篇之前 书接上回[第二十四回:认识元数据和IL(上)], ...

  5. [你必须知道的.NET]第二十九回:.NET十年(上)

    发布日期:2009.05.08 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. /// <summary> /// 本文部分内容,已 ...

  6. [你必须知道的.NET]第二十四回:认识元数据和IL(上)

    发布日期:2009.02.24 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. 说在,开篇之前 很早就有说说Metadata(元数据)和IL(中 ...

  7. [你必须知道的.NET]第二十六回:认识元数据和IL(下)

    发布日期:2009.03.04 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. 说在,开篇之前 书接上回: 第二十四回:认识元数据和IL(上), ...

  8. [你必须知道的.NET]第三十二回,,深入.NET 4.0之,Tuple一二

    发布日期:2009.06.01 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. Tuple,是函数式编程的概念之一,早见于Elang.F#等动态 ...

  9. [你必须知道的.NET]第三十四回,object成员,不见了!

    发布日期:2009.10.30 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. 在.NET世界了,object是公认的造物主,其麾下的7大成员, ...

随机推荐

  1. hdu 1303 Doubles

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1303 Doubles Description As part of an arithmetic com ...

  2. mac media server

    近日在mac osx基于开源组件nginx-rtmp-module架设了一台默认的media server,以下是过程笔记 下载https://github.com/arut/nginx-rtmp-m ...

  3. C#类型的转换:Converter<TInput, TOutput> 委托的使用

    Converter<TInput, TOutput> 委托 表示将对象从一种类型转换为另一种类型的方法. 此委托由 Array 类的 ConvertAll<TInput, TOutp ...

  4. 开发一个App的成本是多少?

    英文出处:savvyapps.欢迎加入翻译小组. 在最近的一个会议上,一个叫Bob的老顾客引用了<App Savvy>(<放飞App:移动产品经理实战指南>)中探讨研发一个io ...

  5. MVC4.0 实现单一Action返回多种结果

    在开发过程中,我们往往会遇到这种情况.例如:展示学生的详细信息页面,加载学生的详细信息局部视图,异步请求学生的详细信息Json数据等等. 一般情况下,我们会写三个不同的action来支撑前台数据的调用 ...

  6. GNU make 总结 (三)

    一.makefile 变量 makefile中的变量名是大小写敏感的,例如”foo”和”Foo”是两个不同的变量.通常情况下,对于一般变量,我们可以使用小写形式,而对于参数变量,采用全大写形式.当我们 ...

  7. Java类初始化顺序问题

    main -> (静态变量.静态代码块) ->main函数体 -> (类变量.初始化块.实例化引用的类) -> 构造函数 初始化块与实例化引用的类 的调用顺序 按程序的编写上下 ...

  8. 64位Windows2003下如何正确发布VesnData.Net(VDN)

    64位windows2003下发布VDN,按照正常的步骤会出现:试图加载格式不正确的程序. (异常来自 HRESULT:0x8007000B)的错误. 按照下面的步骤进行处理: 1.如果安装了64位F ...

  9. 消息点击事件的响应链---hitTest:withEvent:方法

    *当用户点击屏幕时,会产生一个触摸事件,系统会将触摸事件加入到 UIApplication管理事件队里中 *UIApplication 会从事件队列中取出最前面的事件进行分发以便处理,通常,先发送事件 ...

  10. xml基础学习笔记02

    接着上次的xml笔记01 ,记录一下如何DOM创建xml 一.由于没有特意来写博客,都是在程序中用注释的方法记录笔记,整理过来难免格式错误,排版什么的,大家好事看不懂就仔细看给出的代码加上注释,一定会 ...