微软.NET是个宏伟的蓝图,但推出初期时战略很模糊,什么产品都加.NET,正如现在的Live。经过若干年的思考、研发、实践和沉淀,.NET至今已经非常明晰。历史发展到今天已经有很多的.NET版本,经常有ISV的CTO或CIO向我表达他们的迷惑。已经发布的.NET Framework版本主要为[1]:
Version Name
Version Number
Release Date
1.0 Beta 1
1.0.xxxx.0
Nov - 2000
1.0 Beta 2
1.0.2914.0
20-Jun-2001
1.0 RTM
1.0.3705.0
05-Jan-2002
1.0 SP1
1.0.3705.209
19-Mar-2002
1.0 SP2
1.0.3705.288
07-Aug-2002
1.0 SP3
1.0.3705.6018
31-Aug-2004
1.1 SP1
1.1.4322.2032
30-Aug-2004
1.1 SP1 (Windows Server 2003 Version)
1.1.4322.2300
30-Mar-2005
2.0 RTM
2.0.50727.42
07-Nov-2005
3.0 RTM
3.0.4506.30
06-Nov-2006
其实不停出新东西也不是什么坏事,至少说明这门技术在发展壮大(不像IBM Jr PC, MS J#),设计者和从业人员正在用更有力工具解决现实业务问题。而且当大家对技术有一定领悟之后出来个新东西能马上抓住它的本质,这样对自己选择努力的方向也有好处。下面我来简单讨论一下如何选择合适的.NET版本。注意这里所说的都是.NET Framework而不包含其他变体如.NET CF、.NET MCF、.NET SCF等。

首先如果您就职于一家企业,需要从成本、现有人员状况、开发工具、既有系统等角度来考虑。与开发工具相关的.NET版本对应如图[2]:
其中VS.NET2002现在看来是个半对象化的混杂版本,所以如果您有要在时间很短的情况下从ASP等升级到ASP.NET的需求,可以考虑此暂行之计,其他情况我都不推荐升级到VS.NET2002。

仅仅从开发工具和资源角度来讲VS.NET2003明显是最节省的,所以很多人考虑将现有应用从非.NET体系升级到.NET体系上来会选择VS.NET2003/.NET Framework1.1。在此我推荐有这样需求的用户直接升级到VS2005,因为VS2005/.NET Fx2.0 or .NET Fx 3.0的类库更丰富,而且Runtime的效率和安全性都有较大提高。

由于互联网、Consumer应用、竞争激烈的行业软件、控件提供商等在丰富的界面展现上有很大需求,可能需要使用WPF改善UX;还有一些做EAI/SOA/Enterprise Web Solution等行业、政府解决方案用户在分布式通信方面有更深入需求的,可以考虑WCF,可以最大程度保护现有软件系统资产;另外还有很多想在工作流上做些东西的,以上三种集体用户都可以考虑升级到.NET Framework3.0,因为.NET FX3.0是.NET FX2.0的超集,在以上三方面能节省工作量成本。
P.S.:其实还有一个CardSpace,可以做SSO等,比较实用,但在国内用的人不多。

对于个人开发者或者没有既有产品拖累的企业来说,如果想从非.NET迁移到.NET或者从.NET1.0/1.1进行迁移,我建议大家直接迁移到.NET3.0,因为学习成本、运维成本、基础类库都是最优的。如果你都新技术有热衷,可以现在开始关注.NET3.0/3.5,其实.NET3.5也是.NET2.0的更大超集[3]。
但如果是关键系统的企业用户或者既有系统迁移的企业用户,我建议在今年年底之前不要迁移到.NET3.5之上,毕竟.NET3.5不象.NET3.0或以下版本一样已经实践检验。

希望对大家有所启发。
Reference:
[1]http://aspalliance.com/1153_The_Essence_of_Microsofts_NET_Framework#Page4
[2]http://www.danielmoth.com/Blog/2007/06/visual-studio-2008-stack.html
[3]http://www.danielmoth.com/Blog/2007/06/net-framework-35.html