发布日期: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. ViewPager+Fragment实现滑动显示,且Fragment里面又放Fragment+viewPager

    思路:新建一个Activity,且这个Activity要继承FragementActivity,在Activity的布局文件中放入了一个viewPager,为了效果好看,还做了个导航,使得ViewPa ...

  2. minihttp http://www.acme.com/software/mini_httpd/

    1.安装mini_httpd 1.1把下载的mini_httpd-1.19.tar.gz拷贝到根目录   1.2 解压tar -xvfzmini_httpd-1.19.tar.gz ,会在根目录产生一 ...

  3. windows phone 8.1 HttpWebRequest 请求服务器

    public string SendGetRequest(string baseurl, string parameters) { string parassb = parameters; ) { b ...

  4. RSA和DES------加密和解密类

    public class CryptogramUtil { //******************************************************************** ...

  5. 5.防止FPGA设计中综合后的信号被优化

    随着FPGA设计复杂程度越来越高,芯片内部逻辑分析功能显得越来越重要.硬件层次上的逻辑分析仪价格十分昂贵,而且操作比较复杂.目前,FPGA芯片的两大供应商都为自己的FPGA芯片提供了软件层面上的逻辑分 ...

  6. 2.Modelsim打开时出现的Error

    Modelsim之error “unable to check out a viewer license necessary for use of the modelsim graph.Vsim is ...

  7. 在VS2010中ActiveX控件注册方法,使用regsvr32命令

    上一篇小编展示了如何设置VS2010自带的ActiveX控件的容器测试程序,现在为大家演示一下如何注册ActiveX控件. 首先简单了解一下ActiveX控件的知识,ActiveX控件:简单来说,就是 ...

  8. c++中头文件include规则浅析[译]

    英文原文地址 在开发大型的软件项目时,头文件需要得到恰当的管理,甚至在c中也会面临这种问题,当我们用c++开发时,头文件的管理会变得更复杂,更加耗费我们的时间去管理,下面我将讲一些包含规则来简化这个苦 ...

  9. Android -- Layout布局文件里的android:layout_height等属性为什么会不起作用?

    有的时候,我们配置好的布局文件,在加载完成添加到我们的Activity中后发现,并没有安装我们设置的属性来布局,比如我们设置了android:layout_marginTop="100dip ...

  10. 水王ID

    题目: 三人行设计了一个灌水论坛.信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻该“水王”发帖数目超过了帖子数目的一半. 如果你 ...