迎接新一轮的技术进步浪潮
——《.NET 4.0并行计算技术基础》系列文章结束语
历时一个半月,“.NET 4.0并行计算技术基础”系列文章终于贴完了,希望这一系列的文章能对广大程序员们了解这一崭新的技术领域有所帮助。下面列出了本系列文章的完整链接清单:
“.NET 4.0并行计算技术基础(1)”
“.NET 4.0并行计算技术基础(2)”
“.NET 4.0并行计算技术基础(3)”
“.NET 4.0并行计算技术基础(4)”
“.NET 4.0并行计算技术基础(5)”
“.NET 4.0并行计算技术基础(6)”
“.NET 4.0并行计算技术基础(7)”
“.NET 4.0并行计算技术基础(8)”
“.NET 4.0并行计算技术基础(9)”
“.NET 4.0并行计算技术基础(10)”
“.NET 4.0并行计算技术基础(11)”
“.NET 4.0并行计算技术基础(12)”
为了方便大家阅读,我将所有文章汇总并转为了PDF文档,连同所有示例源码一道打包,上传到了CSDN下载频道,其链接为:
“.NET 4.0并行计算技术基础”系列文章及源代码
(http://download.csdn.net/source/1769413)
需要指出:软件技术各领域间往往具有复杂的关联,像本系列文章所介绍的“并行计算”技术,如果您没有掌握.NET多线程开发的基本技术,则这系列文章所介绍的技术“跳越性”过大,不易看懂。然而,这系列文章仅是我写的新书《面向对象的艺术——.NET Framework 4.0技术剖析与应用》(暂名)中的一章,当读者看到完整的书时,您可在此书中找到所有相关联技术的详细介绍,我会在每章的开头以“导读”的形式介绍这些相关联的技术,使读者可以在阅读特定章节所介绍的技术之前先扫清必要的“障碍”。
在这里我要强调一下版权问题。这一系列文章是我的新书《面向对象的艺术——.NET Framework 4.0技术剖析与应用》中的一章(呵呵,这是“CTP”版,连“BETA”版都不是,“最终发布版”会有很大变化),因此,任何人不能将此系列文章中的文字和示例用于出版自己的技术著作,或者将其用于以盈利为目的的商业培训,否则,我和出版社将追究相关人的法律责任。但出于知识共享与交流目的的转贴和转载是欢迎的,我也很希望能得到读者反馈的宝贵意见。
下面谈一下《面向对象的艺术——.NET Framework 4.0技术剖析与应用》一书的写作与出版事宜。
我很高兴这本书能得到电子工业出版社博文视点周筠女士的重视,将由她带领的团队来组织策划此书的出版工作。周筠女士和她带领的团队组织出版的《深入浅出MFC(第2版)》、《代码大全(第2版)》、《编程之美》等都深受读者欢迎。我的这本新书的出版工作能由她和她的团队承担,我深怀期待,同时也给了自己巨大的压力,如果这本书写不好,实在是说不过去。
据微软公司发布的公告:.NET 4.0和Visual Studio 2010将于明年3月发布,目前,这本书刚刚写了不到四分之一,针对的是BETA1版本(BETA2版本刚于2009年10月22日向公众开放下载链接,我还没来得及深入体验),我计划在.NET 4.0正式发布前完成本书主体内容的写作,然后根据.NET 4.0正式版本,修正所有与BETA版本相关的内容,因此,乐观地估计,新书计划在明年5、6月份正式上市。但计划不如变化快,我唯一能有把握的是:我一定会全力以赴地把这本书写好。
我在写作本书的过程中,对.NET 4.0的基类库进行了较深入的探究,书中介绍的许多技术内幕的源头直接来自于微软.NET Framework开发小组及开发者本人的BLOG,并经过了我本人的验证、分析、总结和提炼,同时我还开发了相应的实例对技术要点进行直观的展示。
需要提醒的是,这不是一本初学者可以看的书,但对于那些本身就有一定的开发经验,又想比较深入地了解.NET Framework技术内幕,了解.NET最新技术进展的读者,本书是适合的。
我期望能为读者奉上一桌色香味俱全的技术大餐。
随着我对.NET技术的了解不断地拓展和深入,对.NET的惊叹之情日益加深,与些同时,对开发这一平台的软件技术精英们也充满敬意。我认为,.NET是一群达到世界一流水准的软件设计师和工程师们的群体智慧结晶。
不妨看一下.NET自出生以来的成长之路:
2002年,.NET 1.0正式版的首次发布虽具有“开创性”的意义,但从技术角度而言,这一新的技术平台还很不完善,2003年发布的.NET 1.1是首个比较成熟的产品。
2005年发布的.NET 2.0是.NET历史上一个非常重要的版本,正是在这个版本中,.NET从编程语言到基类库,都有大的更新,也正是从.NET 2.0开始,.NET成为了一个成熟稳定的开发平台,业界开始大规模地开发基于.NET的软件项目。
伴随着Vista的发布,.NET 3.0于2006年底登场,.NET 3.0原封不动地将.NET 2.0的所有东西继承了下来,只是在外围添加了几个重要的技术扩展,使WPF、WCF、WF这三个重要的技术领域成为.NET家族的正式成员,然而,如同微软早期的许多技术一样,.NET 3.0中的WPF、WCF和WF并非一个成熟稳定的版本,因此,.NET 3.0的推广并不成功,而它的“兄弟”——Vista(直接集成.NET 3.0)也“同病相怜”,共同遭受到了从开发者到普通用户的冷遇。微软公司对此想必也心知肚明,所以才有Window 7的“决战天下”。那么,Windows 7能否打个翻身仗?就我使用Window 7 预发布版的使用体验来看,它比Vista强太多了,可能会吸引一大批原先的XP用户升级到Windows 7。另外,VS2010要想顺畅地跑起来,最优的环境就是Windows 7。我还是看好Windows 7的。
正如.NET 1.1版相对于1.0版一样,2007年发布的.NET 3.5可以看成是.NET 3.0的稳定版本,它引发了业界的又一次大规模的技术升级之路,各软件企业都开始基于.NET 3.5使用Visual Studio 2008开发新项目。
微软稍后于2008年发布的.NET 3.5 SP1并不引人注目,它只是“悄悄地”对基类库进行了一点改进,增加了一些组件和功能,而最底层仍然沿用.NET 2.0以来的CLR。
我没有调查国内企业.NET技术的实际应用情况,粗略估计大多数企业可能都在2.0与3.5这两个.NET主版本上开发,相信比较令大家郁闷的是,.NET 3.5我们都还没有摸熟,.NET 4.0又来了!
技术的更新速度过快,不论是个人还是企业,都是件头痛的事。不过,我想微软也有苦衷,面对这么多的挑战与竞争,不进则退,抱残守缺意味着自动退出历史舞台。另外,软件技术发展本身有自己的客观规律,从计算机硬件和计算机网络等大环境的总体发展现状上看,软件技术本身已驶入一条“高速公路”,正在持续加速地发展,此趋势不可阻挡,顺之者昌、逆之者亡。
我从2002年开始跟踪.NET技术,一直追到2009年的.NET 4.0 BTEA1版,基本上对.NET 4.0中的各个新技术都有了一个粗浅的了解,就我的感觉,.NET 4.0将成为.NET技术发展史中最重要的版本之一,它实际上预示着一轮新的技术浪潮的到来!
.NET 4.0带来了一大批的新技术,甚至直接将.NET 2.0以来都未曾改变的CLR都升级到了4.0,在其中添加了一个“动态语言运行时(DLR)”,变化之大,为.NET 先期版本所未见。
.NET 4.0所带来的新东西让人眼花缭乱,我个人认为,所有的这些新东西都反映了微软公司对于软件技术未来发展趋势的一个基本估计。这个估计可以用一句话来概括:
在软件技术领域,未来将是并行计算与SOA大行于世的时代!
朋友们想必已经从我在博客上贴出的“.NET 4.0并行计算技术基础”系列文章中系统了解了.NET基类库中对并行计算的支持。我这里就不重复了,需要补充的是,.NET编程家族中的新成员——F#,其主要应用领域也是并行计算,由此可见微软对于并行计算的投入有多少!这也提醒我们,现在是关注“并行计算”的时候了。
另一个需要强调的是SOA。
在.NET 4.0中,用于开发基于SOA的分布式系统的主打技术——WCF功能得到大幅度地增强。WCF最重要的特点是它将软件系统功能抽象为服务,使用XML来描述这些服务,并且使这些服务的调用可以跨越网络。未来的软件开发方式,将由“组装组件”发展为“组装服务”。为了适应各种不同的应用场景,WCF的架构设计得非常灵活,每一部分都可以定制,但有一利必有一弊,WCF最大的问题是架构过于复杂,学习曲线相当陡,绝对是.NET技术平台中最难掌握的技术领域之一。我个人认为WCF这个技术尽管复杂,但实在太牛太酷了,因此,这个技术领域将是我新书中的一个重点内容,我会用相当多的篇幅来介绍它。
还有一个非常值得关注的是微软的工作流技术(WF),WF的基本理念是“业务处理逻辑的重用”,期望能够以设计流程图的方式来设计软件。这与经典的OOAD思想相比,似乎是对“结构化开发”方法的一种回归,当然,这是一种更高层次的回归,这也说明了技术的发展实际上采用了一种“螺旋式”的上升模式。
WF4相对于WF3,几乎是脱胎换骨的改造,在此,我建议所有正在研究与应用WF技术的朋友,放弃WF3吧!这意味着业界基于原有的WF3编程模型开发出来的项目将居于一个很“尴尬”的境地。
我原先一直抱着这样的一个疑问:
微软在.NET 4.0中跳越式地从根本上“重写”WF3.0的基础架构,冒着这么大的风险,值得吗?
但在我比较系统地了解了WF4的编程模型之后,不得不承认,新的编程模型更好更自然!我估计国内企业直接基于WF3开发的项目不多,没有什么历史包袱,因此,我已决定在新书中不再介绍WF3的编程模型,也建议业界朋友在开发新的与工作流技术相关的项目时,不妨直接基于WF4开发。
WF要想得到真正的应用,其可视化设计器非常关键,在VS2010 BETA1中,WF设计器是最让人痛苦不堪的部分,BUG无处不在。我估计微软自己也忍受不了了,所以,在BETA2中,原有的WF设计器给整个替换掉了,比BETA1好用太多了,但仍然使用起来不够方便。
从总体上说,我觉得WF4技术远未达到功能完备的程度,还不成熟,基于它开发关键业务要慎重。我想,什么时候这个设计器能达到Visio绘图的水平,并且大大增强其与其他技术的集成特性,WF才会在实践中的得到广泛应用。
在Web领域,Silverlight 3正式成为Visual Studio的成员,这没有任何意外之处。Silverlight让Web页面设计效率大增,页面设计师不再需要与CSS打交道,也不会再有痛苦的浏览器兼容性问题。Silverlight技术的最大优越性在于它全新的编程模型,它的许多代码在客户端执行,可以充分利用客户端硬件的计算能力,完成许多使用JavaScript不能实现的功能,比如创建线程,打开Socket等,Silverlight最让人高兴的是可以使用C#和VB.NET等进行全面向对象的开发,其方式与标准的.NET桌面应用程序一致,远离了让许多程序员“咬牙切齿”地“痛恨”的JavaScript。
Silverlight3有一个很引人注目的特性,它可以脱离浏览器运行。这一特性很引人深思,这实际上是为手机等移动设备访问Silverlight应用程序打开了大门,因为不再需要浏览器这一中间层,从而大大方便了在这些设备上跑Silverlight应用程序。
Silverlight与Flash的竞争日趋激烈,谁能胜出?或者,两者都会被以后出现的新技术所淘汰?这些问题,有谁能知道呢?
在微软平台之上,从种种迹象看,基于XAML的技术有“一统天下”的趋势。比如,WPF是XAML的,Silverlight是XAML的,WF4是XAML的,甚至连Visual Studio本身也用基于XAML的WPF重写了,这意味着没风光几天的Windows Form,就象它的难兄难弟.NET Remoting一样,将慢慢地退场。
Windows Form给WPF革了命,而.NET Remoting给WCF革了命。
但在基于WPF技术开发出来的Visual Studio 2010 BETA1版本中,我实在没发现WPF给我带来了任何的惊喜,相反,VS2010运行速度的缓慢和巨多的BUG经常导致本身崩溃,时常考验着我的耐性,让我非常怀念基于传统技术开发的VS2008。
2009年10月22日,微软向公众开放了Visual Studio 2010 Beta2的下载链接,我迫不急待地下载并安装了其Ultimate版,运行并体验了一把,首先是启动的LOGO变了,变成了波浪型的启动画面,呵呵,这一改动意味深长,微软向软件工程师们提示:新一轮的技术浪潮已经到来!
在写作本文时,我还未来得及全面深入地体验Visual Studio 2010 Beta2,然而从初步的使用体验来看,其速度、稳定性都是BETA1所不能比的。看来,WPF还是给VS2010注入了新的活力。
配合着.NET 4.0,微软还推出了Azure这个云计算平台,并将对云计算的支持直接融入到Visual Studio 2010中,“云计算”让软件工程师可以编程访问保存了“海量信息”的“全球数据信息平台”,这将是一件非常酷的事,这能让软件开发者可以很容易地开发出拥有“前所未有”的强大信息处理能力的软件系统。人们已不再从理论上探讨“云计算”,而是直接开发真实的“云计算”系统。理论已走向实践,而实践将会提出更多的现实需求,推动相关理论的进一步完善。
我深刻地感觉一个基于服务开发的新时代正在走来,同时也为新时代的程序员们叹息:大家活得都太累了!永远有学不完的新技术,一不小心,就落伍了。
我出于对技术强烈的兴趣,一直专注于微软平台的技术,有十多年了,如果要我谈谈自己对微软这一公司的感受,我只能说:微软公司太强了。你看看这一家公司近40年来一直居于雄霸江湖的领袖地位,能占胜各种各样对手的一次次的挑战,不服不行!
让我佩服的是微软这么大的公司居然能一直保持着在技术上不断进取的精神,从.NET 1.0开始不停步地走到.NET 4.0,不断地推出新的版本,每个版本都有让人惊喜的变化,一个占据着垄断地位的跨国公司能不断地超越自己,真不容易。
相比之下,中国的软件企业就太差劲了,也许我孤陋寡闻,我真没听说过有哪家中国软件企业这些年来有过什么大的创新,相反,我看到象联想之类公司满足于赚卖电脑产品的那点钱,腾讯和阿里巴巴等有相当实力也很赚钱的互联网公司好象也没做什么事,反而让人感觉他们总觉得“钱”还不够多,整天关注的是如何更好更快更多地在互联网上圈钱,百度似乎好一点,但仅仅在国内有点优势,走不出家门,想发展成为微软和Google之类的世界一流企业,希望好象也不大。
其实,一个公司想成长为世界一流的企业,仅有钱是远远不够的,还需要有一种追求卓越与勇于引领潮流的精神。
中国现有很有钱了,据说已是世界第3大的经济实体,看看我们的“让老外目瞪口呆”的奥运会开幕式,看看“气势恢宏”而又“次序井然”的国庆60周年大阅兵,你就知道了。我们花钱如流水,就是要创建一个“盛世景观”,满足一下自己的虚荣心。
在中国,最有钱的公司恐怕非那些大型的居于垄断地位的国企莫属,它们可谓财大气粗,但它们都在干什么呢?
我看他们都在想着如何更好更快地捞钱。
以老百姓最关注产业之一——房地产业为例,2009年以来,国内频现“地王”,推动房地产市场畸形发展,房价涨疯了,而在高房价的幕后,一些大型国企的身影若隐若现。
房地产如此暴利,开发商捞了这么多钱,还嫌不够,反而玩起了“偷工减料”这些不入流的勾当。这点我就不说了,比如勇于“杀身成仁”的上海“楼倒倒”,又如一敲墙就碎的北京限价房“墙脆脆”,还有北京某小区砸死了一名小女孩的用“胶水粘贴”的壁挂炉,……,上百度谷歌必应一搜,尽是这类“奇闻”。
比之房地产业,国内软件企业总体上比房地产开发企业好多了,毕竟再差也没到被国民千夫所指的程度,这算是一个安慰吧。
我想,不管是在IT业还是其他的行业,中国的企业为什么总长不大?为什么不能成长为世界一流的企业?中国企业缺钱吗?非也!
道理很简单:只想着捞钱,甚至可以为达此目的而不择手段的企业还能长大?世上有这个天理吗?
还是回到清静一些的软件技术开发与教育领域,谈谈我自己吧。
我在大学里当个教书匠,一直都在关注并跟踪着软件技术的进展,自知鲁钝,不敢涉猎过广,就将精力集中于.NET平台。钻研之余,略有所获,略有所感。知识要分享才能创造价值,所以我花费了大量的时间写作技术文章和书籍,希望能“以最高的效率将最新的技术传播出去”。
本人才疏学浅,于计算机科学研究上一无所成,实事求是,我想与其当个三流的所谓“研究者”,每年发几篇不痛不痒的“垃圾”论文,还不如力争成为一名优秀的技术作家,多多少少还可以做些有价值有意义的事。
从我过去作品出版后收到的读者来信中,我看到一本书可以帮助许多的人,而中国也太缺写作态度认真的优秀技术书籍了,粗制滥造地拼凑出来的书倒不少。
诺大个中国大陆,十多亿人口,数百万(可能上千万)IT从业者,你从中能数得出有几名优秀的技术书籍作者?
吾虽不才,但期望能写出对得住自己也对得住读者的书,如果自己所有的努力能对国内技术书籍水平的提升有那么一点点的正面影响,吾愿足矣。
期望我的努力能得到读者的肯定、支持和鼓励,并对我的书中存在的不足给予谅解,我的写作态度是认真的,并且已尽力了。
我想,我还能做一点有意义的事就做一点吧,人这辈子很短。
这个系列文章贴完以后,我不打算今后再在个人博客发这么长的系列文章了,我累读者也累。大家还是等着看完整的全书吧。如果这本书最终能得到读者的欢迎,读者、出版社和我,都会很高兴,这是一个共赢的局面。 J
今后我打算写一些短小精悍的技术文章分析软件技术的发展趋势,针对.NET 4.0中某特定领域的技术进行剖析,还会发布一些我开发的有趣的技术实例。
对于那些选用我的书作为教材的老师和学生(我最近写了一本大学教材《ASP.NET程序设计教程》,2009年2月在高等教育出版社出版),我计划会为你们提供附加的教学与学习技术资源,以反映ASP.NET等Web技术的新进展。
这么些年来,我一直在北京理工大学开设.NET技术系列课程,初步形成了一套相对完整与系统的.NET培训与教学体系,我想我可以为需要对员工进行.NET技术系统培训的软件企业提供一些帮助。
另外,如果有软件企业愿意的话,不妨将你们需要掌握哪种技术的程序员的信息(十年树木,百年树人,短期的人才需求就不必告诉我了)发给我,我会在学校中引导学生提前学习并掌握这些技术,并介绍其中优秀的学生到贵公司实习,贵公司要觉得这些学生好,不妨在他们毕业后吸引他们直接留下。
这篇博文“东拉西扯”,“离题万里”,好在这不是高考作文,无人限定你怎么写,兴之所致,有话就说,写到哪算哪,收笔休息啦!
金旭亮
2009/10/26