作者:罗江华,微软MVP 来源:IT168 2008年1月31日
关键字: Windows
2. 2007年.NET技术发展回顾
2007年转眼就要过去了,在即将到来的新的一年里,让我们一起回顾一下在这即将过去的时光中,微软.NET在企业应用中发生了哪些重要变迁。
(1) 技术特性
通常来讲,新的技术肯定要比旧的技术好,因为新技术都是在以前旧技术的基础上进行的改进,吸取优点,摒弃缺点。众所周知,.NET比Java诞生的时间晚了六年,而在某些方面,.NET确实已经走在了前头。
Java并不是这六年停滞不前,事实上,Java一直在进步中,它也一直有许多缝缝补补、修修改改的地方。例如,XML是在这六年之间出现的技术,所以.NET对于XML的整合可以说是天衣无缝,但Java后来才把XML整合进来,且整合的程度比不上.NET。另外,.NET无论是在语言设计、框架设计等各方面都比Java来得漂亮,是真正的后起之秀,在Studio环境下编程简直是行云流水。
话题转到2007年,就中国目前的.NET应用状况而言(下面会具体分析),.NET2.0才是真正步入到中国程序员手中的版本。当然这也造就了很多悲欢离合的感人故事,.NET2.0的成熟标志着.NET1.x步入成年,.NET3.0的发布也让.NET1.x行将就木。姑且不讨论.NET3.0是否为一个过渡版本。不过事实已经证明.NET1.x在Vista上已经被正式宣告死亡了。官方给出的理由是,由于.NET1.x不满足Vista的底层安全策略,以至于无法安装安全补丁。虽然在Vista上安装.NET1.x Framework没有被禁止,但是它给你带来的麻烦我想用一两句话是不容易说清楚的。
新的就比旧的好吗?下面以.NET2.0中的ASP.NET 2.0为例简单论述下。 ASP.NET 2.0对于ASP.NET 1.x来说,包含了许多体系结构的升级,其设计也是为了提高开发人员的工作效率。它不但改进了代码模型来减少冲突,而且还扩展了编译过程以为编译和部署 Web 应用程序提供更广泛的选项。ASP.NET 框架的扩展性再次通过新的 HTTPModules 和 HTTPHandlers 显示,它们支持建立在 ASP.NET 中的许多新功能,包括个性化、母版页和管理站点。缓存已经改进以允许数据库依赖项和缓存后替代。从内部来看,ASP.NET 2.0 包含了对它以前版本的显著改进。这些新实现结合了许多开发人员驱动的实现,同时沿用了业界的最佳做法。ASP.NET 2.0 提供一种世界一流的 Web 开发平台,该平台是为处理复杂的企业 Web 应用程序开发而构建的。
(2)能够完全胜任企业软件的开发么?
许多人心中都有这个问题,其实答案不言自明,肯定是不能完全胜任。任何开发工具或平台都有它自己的优势和劣势。看看现在一些企业应用场景就知道了,电信和银行的很多重要系统仍然是构建在J2EE平台上的。这也从另一个方面说明了.NET的市场份额和方向,JAVA的主要服务客户对象为大型企业,.NET主要服务对象为中小企业。.NET对于构建中小型企业应用程序有很大的优势,以快速开发而著称。这对于一些既想提高开发速度又想降低成本的企业来说,.NET无疑是首选。对于一些需要达到高安全性、高伸缩性、跨平台等要求的企业来说会选择JAVA。这就是目前市场企业应用的两大方向。
(3) 限制与局限
可以这么说.NET是越来越多中国人实现程序员梦想的一个选择,它们或许通过看两节视频教学课程,或许买本入门教程看几天便能轻松步入程序员的门槛,热别是随着微软.NET IDE的越来越智能化,仅仅需要拖拽几个控件便可以实现一些简单的数据操作。确实让无数朋友兴奋不已,原来些做程序员是那么的简单。但是事实上,.NET可能会成为这些朋友以后人生发展的绊脚石。.NET确实简单,易学,然而由于没有掌握到程序设计架构的真正精髓,很难成为业内技术精英。现在的.NET版本封装得越来越智能,掩盖了很多复杂的实现。对于现在一些一上来就使用最新版本学习的朋友来说确实没有什么好处。毕竟微软.NET版本确实太多了,并且每个版本之间的差距也是很大的,这也限制了很多中国程序员的发展,必须得不断的学习更新自己的技能。所以对于一些初级程序员或正要步入这个门槛的朋友们来说,在选择学习哪个本本上一定要根据自己的实际情况进行选择,当然这也是微软的初衷。
(4).NET技术应用状况
根据对.NET版本使用情况的调查发现,2007年IT技术人员开发.NET应用的Framework版本主要是.NET Framework 2.0,占到67.4%;其次是.NET Framework 1.1,占33.3%;.NET Framework 3.0据第三位,占16.7%。其他版本比例均在7%以下。
原因很简单,之所以.NET Framework 2.0在目前已经处于领先地位,是因为.NET Framework 2.0已经发展为了一个成熟的产品。由于其较.NET Framework1.1下显著的优越特性,使其快速成为企业新系统首选的开发框架。从调查来看,目前仍然停留在.NET Framework1.1开发下面的企业,主要是由于之前系统是在.NET Framework1.1下面构建的,完全重构对一个企业级软件来说很困难,首先成本控制是一个显而易见的因素。对于目前使用.NET Framework3.0的企业,主要是运用微软推出的3个W(WPF、WCF、WF),对于一些大型的企业,特别是跨国企业,子公司分布全球各地的企业来说,实现一套基于SOA的全球系统架构是无可厚非的。恰巧WCF就是这样一个在.NET平台下轻松实现SOA架构的框架。在移动开发框架方面,可以看出3.0的应用情况占的比例最大,其次是1.0,再次是2.0和3.5版本。出现这个情况我想原因在于主要是在移动框架方面由于版本从1.0到2.0在到3.0和3.5的不稳定性因素导致的,相对来说3.0是一个稳定成熟的版本,因此开发人员使用得最多。
(5).NET技术带动的技术的发展,对编程语言、开发工具等的影响。
从上面的调查数据可以看出,2007年.NET开发框架版本的使用情况中.NET Framework 2.0占到67.4%,.NET Framework 1.1仅仅占到33.3%,可以得出这样的结论是.NET Framework 1.1逐渐在离我们远去了。当然和它一起离开的还有C# 1.0,VB7等。想想它们曾经是那么强大,它们的特性,如委托(Delegate),集合(List,HashTable等),类型(Class,Interface)曾经是那么的让人着迷。但是面对新的C#2.0它们又是那么乏善可陈。在.NET2.0中,范型、匿名方法、匿名类居然可以让代码变得那么优雅,那么精悍。更不要提LINQ中的VAR类型和新的查询语句了。类似的例子还有很多,比如原来的DataSet和LINQ中的DataContext。原来的DataGrid和新的GridView,ListView。原来的GDI+和新的WPF Xaml。一些陈旧的概念消失了,如DataAdapter,更加新鲜的东西出现了,如DataSource。还有更多全新的ASP.Net AJAX, Silverlight等等。继任者给我们带来了更丰富的界面,更强大的工具。优胜劣汰是社会发展的规律,我们一起见证着微软的无数产品,以及第三方产品不断被淘汰,毫无疑问,作为微软产品跟随者的我们,需要不断的学习,一不小心就会被远远被抛弃在后面。或许在N年以后,当我们回过头来看看自己走过的路的时候,会发现其实在微软.NET的道路上我们已经走了这么远。
(6)抛开局限,如何合理协调利用.NET技术
就当前微软.NET版本如此众多的局面,一些企业在如何合理选择开发版本时可能会比较迷茫。前段时间我在博客园就看到有人再拿Visual Studio 2008 Beta2开发项目,先不说其项目有多大,具体有什么应用价值。说实话我很佩服他们的胆识, Visual Studio 2008正式版本里发生了一些变化,比如Linq部分,里面很多函数名称在正式版里都改变了,其学习和使用成本可想而知。但就目前来看,大多数企业还是比较理性的,比如我现在所在的企业,整个集团拥有开发人员接近500人,而且全部是基于微软.NET平台构建的应用系统。现在公司使用的有ASP、.NET1.1、.NET2.0、.NET3.0,但仅仅是部分新项目在使用。我想理由很简单,企业在选择某个版本时不仅仅是关注这项技术有多新,开发效率有多高等问题,而更关注的是成本有多高,风险有多大的问题,毕竟第一个吃螃蟹的人不是那么好当的。
因此笔者在这里建议,如果您的企业要上新的项目,推荐使用.NET2.0平台,因为已经有无数的成功案例可以证明,相对来说风险系数降低了,开发人员的技能也提高了,学习成本也降低了。