Framework 4.0 CTP版发布一个多月了,在此期间稍有闲暇就打开来试试,尝试一下这个新东东。总体感觉微软现在技术大爆炸,一下子往F4里塞了好多东西,有的确实不错, 不过有的还是感觉有点粗糙,还经不起实战考验。那以下我会简单和大家过一遍这个新的框架,一起来聊聊F4的前景。
简单回顾下历史,F1.1其实是个试验品,.Net Framework真正走向成熟其实从F2开始的,之后的F3,F3.5其实都是基于F2的扩充,我个人感觉应该定义为F2.1,F2.2。没想到微软喜欢搞大跃进,随便加点东西就变个新版本。
F3+F3SP1除了修正了一些F2的bug之外,主要的扩展是加了3W框架,分别是WPF,WCF,WWF。
F3.5和F3类似,在修正之前的Bug之外,主要的扩展是:LINQ,WF,WCF,Add-in(今后会被MEF替代)
F3.5SP1,又添了几个新东东:MVC,Dynamic Data,Entity Framework,Data Services等
当然这里面我们也不能忽略了F3在语言上进行的改进,例如Linq,Lambda,扩展函数,var类型的使用等等。
不过说实在的,真正在实际项目中。。除了C#,除了WCF有使用过以外,其他的W组件几乎都和我无缘。即使是曾经有段时间对Linq-to-Sql 很感兴趣的时候,结果突然一声噩耗,ADO.NET开发组不打算开发了。。让我心理顿时又凉了半截。所以F3,F3.5在我眼里。。其实就是加了一大坨没 啥实际用处的东东。。
那我们看看F4又给我们带来了什么?让我们来看看微软给F4规划的新蓝图:
对比了一下F3.5的蓝图,我们可以发现4.0新加的东西: Velocity,Dynamic Language,MEF,Parallel Extensions。
Velocity:
这是微软提供的分布式缓存解决方案,已经有CTP版了。之前看过Terry Lee兄对Velocity的介绍,总的感觉就是用起来好麻烦。因为之前这块我一直是使用memcached的,而且memcached是经过像 facebook这样的大网站考验的,而且还兼容各种平台。所以微软想靠Velocity搞定memcached,我感觉还是要走很长一段路的。
不过有个不错的地方,就是我发现Velocity有个tag功能,这个对实现key的批量清理是很有用的,算的上Velocity的一个亮点。当然 memcached的批量清理,如果对客户端做下封装也是可以实现的,具体可以参考我的随笔中关于memcached部分的介绍,嘿嘿,打个小广告。
Dynamic Language:
如果追溯微软之前最风靡的动态语言应该算是ASP了,不过后来出来.Net之后微软又走上了老路。。搞得每次更新,都要重新编译dll上传。。好麻 烦。传统式语言对并发、扩展本身支持不够好,对程序员素质要求高,开发效率低等诸多因素,迫使一部分人重新审视其他编程范 式,Erlang,Python,Ruby这些语言得到了关注。F4里面新加入了F#,IronPython,IronRuby等新的动态语言,应该是 F4跨出的很重要的一步。从感情上,我最支持的是IronPython,毕竟之前用Python用的太爽了,哈哈,如果能在.Net上也用上 Python,是件多完美的事情啊。不过我估计微软还是比较指望F#的,作为DL的主打产品。简单的了解了一下,感觉他在语言的简洁,封装,易用性方面都 是有很不错的表现。不过毕竟是新的语言,就像当年C#一样,也是需要漫长的时间考验,希望F#一路走好。
MEF:
说实在的,我不知道MEF的定位是什么。如果定位是DI/IOC容器,那企业库或者castle照理说都有实现了,又何必再搞一个呢? 后来仔细翻了一些文档,了解到MEF有个新特性,就是通过Contract实现DI操作,从某种程度上进一步进行了解耦。估计MEF会从这方面作为一个突 破口,在将来的版本中有更好的表现。一句话,别再拿个DI/IOC容器来忽悠我们了。
Parallel Extensions:
好东西啊~这块一直是我梦寐以求的东西,特别是现在机器都是多核的,如果写个程序,不能充分发挥多核的性能,那真是暴殓天物,白买了那么多cpu了。不过现在CTP版本还是一些比较简单的并行操作,在数据同步方面还是需要加强,希望之后的版本会给我们带来更大的惊喜。
当然除了新加入的东西之外,F4还对很多组件做了改进,像MVC,Entity Framework,Linq-to-Sql(虽然蓝图是吧LtS列进去了,但最终能不能F4的18人大名单,还要观察观察),ASP.NET AJAX,Dynamic Data,WPF等等。多得眼睛都看花了。。但里面有多少是真正好的,还有待考察。。
总体感觉,F4带来的新东西还是惊喜大于失望。不过也提醒大家,不是所有的东西都是好的,有的东西看上去很美,其实并不咋的,所以我们还是需要带着批判的眼光来观察F4。以上只是笔者的经验感受,又写的不对的地方,还请多多指正。