为什么要将Web应用程序从.NET 1.1升级到.NET 3.5?有哪些令人信服的理由呢?
问题不在于“是否应该”——从功能和编译时检查方面来看,基本上可以肯定的是要摆脱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 变化
C# 变化:
还有更多的变化,显然。 从1.1到2.0的跃迁就值得一个完整的发布周期。
.NET 1.1已经被废弃,不再继续开发。我不确定是否存在安全问题,但总体来说,它已被抛弃,并且从2.0版本开始,微软确保新版本具有向后兼容性,而这并不适用于1.1。
所以,如果你有机会迁移 - 就迁移吧。你将获得新的语言特性,你将获得一个不断进一步构建的框架。你将获得Linq(如果需要),Silverlight支持,当然还有泛型等。
我最近刚完成了将整个代码库从.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。
泛型、Lambda表达式、LINQ,还有我肯定忘了很多其他的。
最大的区别在于你将转向.NET 2.0 CLR(这与当前.NET运行的CLR相同)。
这意味着您拥有大量的错误修复和CLR级别的泛型支持。其余的更改只是对基础类库的更改以及编译器中的新语言功能。
我认为一个非常好的原因是ASP.NET 2.0及其后续版本中设置的提供程序框架。无需担心用于检查这些内容的基础机制,就能获取用户是否已登录或用户拥有的角色列表,这是一个巨大的优势。
别忘了 WCF、WF、WPF、CardSpace 等等。
修改并继续?泛型和可空类型也让生活变得更加轻松!