从.NET 1.1迁移到.NET 3.5

8

为什么要将Web应用程序从.NET 1.1升级到.NET 3.5?有哪些令人信服的理由呢?

9个回答

19

问题不在于“是否应该”——从功能和编译时检查方面来看,基本上可以肯定的是要摆脱1.1框架,转向2.0框架。而问题是,你应该多快地进行移植?需要改变什么?

首先,您需要将应用程序移植到.NET 2.0。原因是.NET 2.0中有许多以前不存在的功能,并且以前的功能已被弃用。(在ASP.NET中,2.0版本中有大量废弃的功能)。

.NET 2.0支持更强的类型安全性、可空类型和框架变化。2.0代表了.NET平台的第一个“真正”的发布版本。它是一个严肃的竞争者,你会发现在1.1中使用的一些框架内容在2.0中已经被修改了。

这不是一个简单的“将代码向前移植并获得好处”的情况。如果您想获得好处,您需要重新编写一些代码(尤其是涉及泛型的代码);但即使在更大的.NET框架中,也有许多“幕后变化”,您需要逐步进行移植:不要直接从1.1跳跃到3.5。

1.1 - 2.0

在.NET 3.0中,有大量的变化。整个范式都发生了转变(尽管这是自愿的转变)。 维基百科有一个完整的章节介绍了它,但我将列举(一些!)变化:

.NET Framework 变化

  • Windows Presentation Foundation (WPF)
  • Windows Communication Foundation (WCF)
  • Windows Workflow Foundation
  • Windows CardSpace

C# 变化:

  • LINQ
  • 对象初始化器
  • 集合初始化器
  • 匿名类型
  • Lambda 表达式
  • 自动属性
  • 扩展方法 (来源:维基百科

还有更多的变化,显然。 从1.1到2.0的跃迁就值得一个完整的发布周期。


泛型是我绝对无法离开的东西。非常有启发性的帖子。 - Kieran Senior
如果你想要这些好处,你就必须重写一些代码(尤其是涉及泛型的代码);-- 如果他使用的是1.1版本,为什么还需要重写任何与泛型相关的代码呢? - GEOCHET
Rich:我说错了,我想说的是任何不使用“泛型”的集合,例如ArrayLists。这是一个自我引用的评论。 :-) - George Stocker
@gortok:不过那并不需要重写,我只是建议而已。优先级。 - GEOCHET
@Gortok:是啊,我们都想将它们升级为泛型,不是吗? :-) 我们还有一些旧的应用程序搁置在那里,它们仍然可以使用,所以没有很好的理由重写它们,除了开发人员的兴趣。不幸的是,这并不足够的理由... - Rune Grimstad
显示剩余2条评论

8

.NET 1.1已经被废弃,不再继续开发。我不确定是否存在安全问题,但总体来说,它已被抛弃,并且从2.0版本开始,微软确保新版本具有向后兼容性,而这并不适用于1.1。

所以,如果你有机会迁移 - 就迁移吧。你将获得新的语言特性,你将获得一个不断进一步构建的框架。你将获得Linq(如果需要),Silverlight支持,当然还有泛型等。


4

我最近刚完成了将整个代码库从.NET 1.1转换到.NET 2.0。需要注意的是,.NET 3.5实际上只是.NET 2.0的扩展集,而不是完全新的基础。

在许多方面,两者之间的差异非常大。对我来说,.NET 1.1根本没有被"驯服",需要大量的代码。此外,VS 7必须用于.NET 1.1,因此需要使用旧工具。

对于Web应用程序,需要使用不同的Web配置,因为它会暴露.NET版本,这使得它变得更加混乱。不要陷入".NET 3.5具有新功能,因此我必须转移到它"的运动中,因为你必须基于需求做出决策,而不是基于潜在的工具使用。正如许多作者所指出的那样,你很可能不会使用构成整个框架的一半以上的功能。

然而,我建议至少从.NET 1.1转移到.NET 2.0。


3

泛型、Lambda表达式、LINQ,还有我肯定忘了很多其他的。


3
升级到.NET 3.5有很多有力的理由。正如其他人所指出的,然而,3.5在很大程度上(如果不是完全)只是对2.0的扩展;然而,2.0带来了很多功能,使得它非常值得升级。话虽如此,在我看来,如果你要升级,似乎移动到2.0有点傻,不如直接移动到3.5。
仅Extension方法就非常有用。我发现自己使用它们的频率远远超过了我想象的。此外,许多新功能都基于它们。泛型极大地简化了我们的开发;如果你在使用C#编程,自动设置器和获取器是一个福音。Lambda表达式对我来说还是相对较新的,所以我对它们无法发表评论,但我知道其他人认为它们特别有用。
WPF提供了一种全新的编写应用程序的方式,我也使用过它。它显示出巨大的潜力;不幸的是,它似乎没有得到我(个人)认为它应该得到的广泛采用。希望随着时间的推移,情况会改变,但这将取决于Microsoft是否开始更积极地推广它。
就框架本身而言,我发现许多以前缺失的功能得到了改进或提供;随着其成熟,框架似乎正在朝着要求我们为那些我们通常执行的任务编写更少的代码的方向发展(例如目录服务、FTP访问、命名管道等)。粗糙的边缘变得更加平滑。
因此,简而言之:升级到3.5意味着你的新应用程序可以使用更少的代码编写,并且可以重构现有应用程序以使用更少的代码(尽管我不建议仅出于这个目的这样做)。3.5为您提供了广泛的生产力工具;我个人认为这些工具本身就足以使它值得前进。但是,像任何业务决策一样,您必须权衡所有这些与您项目的状态以及在移植代码库时可能出现的任何潜在缺陷之间的差异。迄今为止,我的经验是我们遇到了一些麻烦,但不足以彻底停止整个操作。尽管如此,在任何迁移中,代码都可能会崩溃;这必须牢记在心。

2

最大的区别在于你将转向.NET 2.0 CLR(这与当前.NET运行的CLR相同)。

这意味着您拥有大量的错误修复和CLR级别的泛型支持。其余的更改只是对基础类库的更改以及编译器中的新语言功能。


2

我认为一个非常好的原因是ASP.NET 2.0及其后续版本中设置的提供程序框架。无需担心用于检查这些内容的基础机制,就能获取用户是否已登录或用户拥有的角色列表,这是一个巨大的优势。


1

别忘了 WCF、WF、WPF、CardSpace 等等。


1

修改并继续?泛型和可空类型也让生活变得更加轻松!


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