从.NET 1.1迁移到.NET 3.5

时间:2008-12-22 19:45:32

标签: .net version upgrade

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

9 个答案:

答案 0 :(得分: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 2.0和.NET 3.0之间存在一系列变化。有一个完整的范式转变。 (虽然承认这是一个自愿的转变)。 Wikipedia有一整段专门介绍它,但我会(有些!)更改:

.NET Framework更改

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

C#更改

  • LINQ
  • Object Initalizers
  • 收集Initalizers
  • 匿名类型
  • Lambda Expressions
  • 自动属性
  • 扩展方法 (来源:Wikipedia
显然,还有更多。从1.1到2.0的跳跃值得整个发布周期。

答案 1 :(得分:8)

.net 1.1已弃用,未进一步开发。我不确定安全问题。但总的来说,它被放弃了,从2.0开始,microsoft确保了在新版本中的后向兼容性,这与1.1不同。

所以,如果你有机会移动 - 移动。如果您获得了新的语言功能,您将获得一个不断构建的框架。如果你需要它,你可以得到linq,银光支持,当然是泛型等等。

答案 2 :(得分: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 :(得分:3)

泛型,lambdas,LINQ,还有很多我忘记了的东西我确定。

答案 4 :(得分:3)

升级到.NET 3.5有许多令人信服的理由。然而,正如其他人所指出的那样,3.5在很大程度上(如果不是全部)仅仅是对2.0的扩展;然而,2.0带来了大量的功能,使其值得一试。话虽如此,在我看来,如果你要采取行动,那么转向2.0而不只是转向3.5似乎有点愚蠢。

单独的扩展方法非常有用。我发现自己使用它们的次数比我想象的要频繁得多。此外,3.5中的许多新功能都基于它们。泛型大大简化了我们的大部分开发;并且,如果您使用C#进行编码,自动设置器和getter是一个福音。 Lambda表达式对我来说仍然相对较新,所以我不能和他们说话,但我知道其他人发现它们特别有用。

WPF提供了一种全新的编写应用程序的方式,我已经使用过它。它显示出巨大的希望;不幸的是,它似乎没有得到我个人认为应得的广泛采用。希望这会随着时间的推移而改变,但这取决于微软本身是否会开始更积极地推动它。

就框架本身而言,我发现许多功能已经改进或提供,以前从1.1中缺失;随着它的成熟,Framewok似乎朝着一个方向前进,这个方向要求我们为我们通常执行的任务编写更少的代码(例如目录服务,FTP访问,命名管道等)。粗糙的边缘变得更加平滑。

因此,简而言之:迁移到3.5意味着您的新应用程序可以使用更少的代码编写,并且可以重构现有应用程序以使用更少的代码(不是我建议仅为此目的而这样做)。 3.5提供各种生产力工具供您使用;我个人认为,仅靠这些工具使其值得飞跃。

但是,与任何业务决策一样,您必须权衡所有与项目状态相关的因素 - 以及在移植代码库时可能出现的任何潜在缺陷。我迄今为止的经验是,我们遇到了一些障碍,但还不足以使整个操作陷入戛然而止。尽管如此,对于任何迁移,代码都有可能破坏;必须要记住这一点。

答案 5 :(得分:2)

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

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

答案 6 :(得分:2)

我认为一个很好的理由是ASP.NET 2.0及更高版本中设置的提供程序框架。能够获取用户是否已登录或者用户拥有的角色列表而不必担心用于检查这些事物的基础机制是一个很大的好处。

答案 7 :(得分:1)

不要忘记WCF,WF,WPF,CardSpace等。

答案 8 :(得分:1)

编辑并继续?仿制药和可空类型也让生活变得更轻松!