为什么大多数人仍在使用.NET 2.0,尽管.NET 3.5于11/07发布,.NET 3.0于11/06发布?

12

人们一直在开发自己的解决方案来解决以下问题:

  • 远程信息交换的一致性消息框架(webservices,rpc,...)
  • 用于状态管理的SDK,例如有限状态机和工作流程
  • 身份验证框架
  • 还有更多。

从现在起已经过去两年了,微软提供了包含工作流、通信、身份验证和构建Web应用程序的一致且文档完备的所谓.NET 3.0基础框架。

然而,人们仍在构建自己的框架,以提供一致的对象关系映射来处理他们的数据库,以及动态扩展类和方法的自己的技术(例如,为客户能够自定义应用程序行为)。

现在已经过去一年多了,微软推出的.NET 3.5中包括LINQ等功能,因此可以提供很好的ORM,并提供了精彩的代码扩展手段,使得编写代码变得更加容易。

但是看看周围...似乎大多数人仍在使用.NET 2.0。网站使用普通的ASP.NET创建。桌面体验仍使用CSS、JavaScript和HTML的组合。可执行文件使用普通的WinForms,工作流程是通过委托、事件、do/while和switch/case实现的。

不需要过多讨论,我很乐意看到以下问题的具体原因:

你认为:为什么人们没有跟上.NET 3.5的步伐?

15个回答

13

出于同样的原因,我认识仍在使用Java 1.4编码的Java开发人员--变革是昂贵的,并且对于那些公司内部工作中“完成任务”比使用新技术更为重要的人来说,经常是毫无意义的。

对于许多内部工作而言,几乎没有理由去升级旧应用程序以使其适应新环境。

此外,大型企业通常不喜欢进行任何形式的改变,因为他们担心会影响稳定性。你会发现他们依然会做一些使用旧技术的决策来解决新问题,仅仅是因为他们相信新技术还不够稳定,人们对它了解得还不够多,或者他们所依赖的软件还不支持这种新技术。

另外,我从未使用过它,所以我不能说,但可能有些情况下.NET 2已经足够满足人们的需求,而.NET 3.5并没有提供足够的东西来证明学习/改变是值得的,即使对于那些接受较尖端技术的公司也是如此。


由于升级成本的原因,我们仍然有一个完整的网站在.NET 1.1上。至少从.NET 2.0到.NET 3.5的过渡并不太痛苦。 - David Basarab

5
  1. 需要学习新东西,许多“只是工作”的LOB开发人员可能不想费心。
  2. 遗留代码投资,定制系统可能并非必需,但它们能够正常工作。如果现有系统没有问题,那么重新编码以使用基于框架的系统将是浪费时间。
  3. 开发软件成本。在.net 3.x中有效地编码确实需要VS2008。将整个开发团队从2005年升级到2008年可能会花费很多钱。
  4. 稳定性。2.0是1.1框架的演进。3.0和3.5包括新的v1技术(你列出的那些)。开发人员喜欢看到这些技术证明自己的价值,然后才能向他们的经理证明它们值得跳槽。与Windows采用情况一样,你可能会看到更多的人从VS2005转向VS2010和从.net 2.0转向.net 4.0,因为后者包含了3.x技术的v2版本。

一个类似的论点解释了为什么还有很多人在使用Windows XP/Vista,甚至在一些公司中还在使用NT(用于关键任务应用程序)。改变是昂贵且可能存在风险,如果工作正常进行,他们就不会费心升级。这是针对桌面端的情况,因此在服务器端,即使服务包是免费的,你也总会看到人们落后于一个版本,只有在SP2发布后才会转移到SP1(即SP1有足够的时间证明自己)。 - Munish Goyal
我知道这个问题已经关闭了。但是我想补充一点:测试成本。如果你升级,你需要验证整个代码仍然可以工作。这可能涉及许多层次的回归测试,也可能涉及重新与客户进行验收 - 时间不便宜! - Preet Sangha

4

因为很多网站托管公司不支持此项技术。

我正在开发一个新的Web应用程序,但我的托管公司只提供ASP.NET 2.0支持。


3

如果您需要Windows 2000支持,那么您必须使用.NET 2.0版本。但这也不是太糟糕。


3
我可以代表我自己和我的公司。我们仍然不使用它。 为什么呢?

1- 我们的大多数用户已经安装了.NET 2.0框架,不需要安装另一个框架。
2- 我们不会因为它是新事物而改变。它必须有一定的价值。
3- 要真正收回成本就意味着要做大量的工作。再次强调,它必须收回成本。
4- 目前来看还为时过早(一年远远不够),无法确定其在错误和新问题方面是否值得。尽管如此,它似乎是值得的。

2
".NET 3.0包含了很多适用于新项目的伟大功能,但许多现有项目不希望为了更新而进行重大改动-为了集成其中任何一个功能都需要进行大量的重构。
至于这个:
“微软已经提供.NET 3.5超过一年了”
从哪方面来看,2007年11月已经过去一年了吗?是的,.NET 3.5很好,我喜欢LINQ(特别是LINQ to Objects)和C# 3.0的好处,但改变总是伴随着代价。首先,要推出Visual Studio 2008的成本;然后,要重新测试所有内容以针对.NET 3.5(现在是.NET 3.5SP1);再然后,要将.NET 3.5部署到所有服务器的成本,或在所有客户端上要求使用.NET 3.5的成本;哦,更不用提实际学习如何以有效的方式使用所有新技术的成本了。
这会发生的,但您不应该期望它非常快速。"

2
补充一下@SCdF所说的,任何有重要IT人员但不以开发为中心(即大多数情况),通常都会对新技术持强烈抵制态度。
从开发人员的角度来看,IT部门往往滞后于升级新系统/硬件,因为他们认为这样做没有商业价值,只是为了跟上潮流。IT太忙于处理安全和维护问题(真实或仅是感知),无暇理会开发人员试图让他们升级到.Net 3.5。
开发人员在与其他部门沟通商业价值方面也有着臭名昭著的不足。当开发人员试图让IT或业务部门升级到.Net 3.5时,他们开始谈论自动化工作流程、XML和Web服务,而非谈论成本效益。
微软的Brian Prince有一个关于“软技能”的非常好的演示文稿,涉及了其中的一些内容。如果你客气地向他提出请求,他可能会来到你的公司进行演讲 :)

2
我曾向前雇主的一位经理询问为什么他还没有转换,答案是“我不想支持三个框架”,意思是1.1、2.0和3.5。我解释说,升级到3.5并不等同于从1.1升级到2.0(3.5是2.0的扩展,使用不同的dll(Core.dll),而不是像1.1到2.0那样更新dll)。我可以看出许多经理都有这种想法,所以你需要让他们知道!

1
几份工作前,我遇到了一个有趣的情况。作为公司 ASMX Web 服务的原始作者,我被问及如何对它们进行版本控制。特别关注的是,我基于手工制作的 XSD 构建了服务,而没有其他人真正理解 XSD。
我建议使用 WCF,因为他们不需要自定义 XML 格式,也不必玩弄 XSD:只需在代码中定义数据契约即可。
即使我解释了 .NET 3.5 SP1 实际上只是 .NET 2.0 的几个服务包加上一些新程序集,他们仍然像我即将变得暴力一样看着我。显然,升级 .NET 版本是一个漫长而昂贵的过程。从 .NET 1.1 到 .NET 2.0 迁移的教训。
朝着 WCF 迁移的正确方向迈出一小步:参见 ASMX Web Services are a “Legacy Technology”

1

2.0能用,对吧?我认为更新的东西非常好和酷,我喜欢跟上最新的进展,但归根结底,如果它能正常工作,那么经常决定的是坚持你已经拥有的。我支持一个运行DOS 6.2x程序多年的商铺(直到2004年),我曾经为此疑惑了很久。但归根结底,在那种情况下没有强制性的商业原因去花费任何代价来向前迈进。

我相信也有其他原因。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接