[你必须知道的.NET]第三十一回,深入.NET 4.0之,从“新”展望
发布日期: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,所以看官尽情各取所需吧:
- Visual Studio 2010 in MSDN
- What's New in Visual Studio 2010
- What's New in the .NET Framework 4
- .NET Framework 4 Beta 1
- Visual Studio 2010 Samples
- Visual Studio 2010 and .NET Framework 4 Training Kit
- Visual Studio 2010 Videos
- .NET Framework 4 Videos
- Visual Studio 2010 Beta 1 Walkthroughs
因为是[你必须知道的.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
在数据方面主要还是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为基础,任何后续更新造成的可能不同,我将尽力完善。
参考文献
- Visual Studio 2010 in MSDN
- What's New in Visual Studio 2010
- What's New in the .NET Framework 4
- .NET Framework 4 Beta 1
- Visual Studio 2010 Samples
- Visual Studio 2010 and .NET Framework 4 Training Kit
- Visual Studio 2010 Videos
- .NET Framework 4 Videos
- Visual Studio 2010 Beta 1 Walkthroughs
[你必须知道的.NET]第三十一回,深入.NET 4.0之,从“新”展望的更多相关文章
- [你必须知道的.NET]第三十回:.NET十年(下)
发布日期:2009.05.11 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. /// <summary> /// 本文部分内容,已 ...
- [你必须知道的.NET]第三十三回,深入.NET 4.0之,Lazy<T>点滴
发布日期:2009.10.29 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. 对象的创建方式,始终代表了软件工业的生产力方向,代表了先进软件技 ...
- [你必须知道的.NET]第三十五回,判断dll是debug还是release,这是个问题
发布日期:2009.12.29 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. 问题的提出 晚上翻着群里的聊天,发现一个有趣的问题:如何通过编码 ...
- [你必须知道的.NET]第二十五回:认识元数据和IL(中)
发布日期:2009.02.25 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. 说在,开篇之前 书接上回[第二十四回:认识元数据和IL(上)], ...
- [你必须知道的.NET]第二十九回:.NET十年(上)
发布日期:2009.05.08 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. /// <summary> /// 本文部分内容,已 ...
- [你必须知道的.NET]第二十四回:认识元数据和IL(上)
发布日期:2009.02.24 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. 说在,开篇之前 很早就有说说Metadata(元数据)和IL(中 ...
- [你必须知道的.NET]第二十六回:认识元数据和IL(下)
发布日期:2009.03.04 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. 说在,开篇之前 书接上回: 第二十四回:认识元数据和IL(上), ...
- [你必须知道的.NET]第三十二回,,深入.NET 4.0之,Tuple一二
发布日期:2009.06.01 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. Tuple,是函数式编程的概念之一,早见于Elang.F#等动态 ...
- [你必须知道的.NET]第三十四回,object成员,不见了!
发布日期:2009.10.30 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. 在.NET世界了,object是公认的造物主,其麾下的7大成员, ...
随机推荐
- 编译原理之lex,yacc学习
写在前面的几句废话 最近在项目的过程中接触了lex 和 yacc,他们可以帮助我们来实现自己的领域语言.最典型的应用就是可以帮助我们来实现自定义测试脚本的执行器.但是,这里也有一个限制,就是测试脚本要 ...
- Java之NIO传输数据
NIO可谓陈词旧调,不值一提. 但之前都是泛泛而谈, 现在深入应用才知道秘诀所在. 对于SocketChannel有read()与write(),但由于"非阻塞IO"本质, 这二个 ...
- 用Swift重写公司OC项目(Day2)--创建OC与Swift的桥接文件,进而调用OC类库
昨天把项目中的图标以及启动转场图片弄好了,那么今天,我们可以开始慢慢进入到程序的编写当中了. 由于swift较新,所以类库还不够完善,但是不用担心,苹果早就出了解决方案,那就是使用桥接文件,通过桥接文 ...
- 浅谈.NET中闭包
什么是闭包 闭包可以从而三个维度来说明.在编程语言领域,闭包是指由函数以及与函数相关的上下文环境组合而成的实体.通过闭包,函数与其上下文变量之间建立起关联关系,上下文变量的状态可以在函数的多次调用过程 ...
- Linux android开发环境问题:Unexcepted exception:cannot run program "android-sdk-linux/platfor-tools/adb" :err=2,No such file or directory.
出现这个问题的原因: 我的linux是64位 ,而adb目前只有32位的,所以要安装运行32的环境. 不同的linux系统需要安装的不同: 我的Centos 解决方案如下 其他linux操作系统(参 ...
- run.do 文件编写说明
#停止仿真quit -sim#清除信息.main clear #建立物理路径libvlib ./lib/#建立物理路径work_avlib ./lib/work_a/#映射逻辑库至物理路径vmap b ...
- VS2010出现灾难性错误的解决办法
VS2010出现灾难性错误的解决办法 之前本人利用VS2010 在编写一个基于对话框的程序的时候,要在对话框类C-.DLG中添加函数,右键点击类向导,此时界面上弹出一个消息框,告知出现灾难性事故, ...
- NSNumber、NSValue、NSDate、NSObject
注:OC中数组和字典只能存储OC对象不能存放基本数据类型. NSNumber NSNumber可以用来把一个基本数据类型包装成一个NSNumber类型的对象. NSNumber *number = [ ...
- mysql 5.7 64位 解压版安装
64位操作系统最好安装64位的mysql数据库,充分利用内存的寻址能力,对于windows而言,mysql官网只提供了32位的MSI安装程序,因为在windows下安装64位的mysql,选择解压版安 ...
- 如何维护SSH安全
遇到两次,一次是公司服务器搭建好后,有人尝试ssh暴力破解,auth.log不停出现错误提示 还有买的米国vps,很荣幸地遭到来自波兰的ssh破解尝试 不得不重视ssh的安全 方法: 修改sshd_c ...