8

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

4

9 回答 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 2.0 和 .NET 3.0 之间有很多变化。整个范式发生了转变。(尽管不可否认,这是一种自愿的转变)。 维基百科有一整节专门介绍它,但我会(一些!)这里的变化:

.NET 框架更改

  • Windows 演示基础 (WPF)
  • Windows 通信基础 (WCF)
  • Windows 工作流基础
  • Windows CardSpace

C# 更改

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

显然,还会有更多。仅仅从 1.1 到 2.0 的跳跃就值得整个发布周期。

于 2008-12-22T19:52:47.777 回答
8

.net 1.1 已弃用,未进一步开发。我不确定安全问题。但总的来说,它已被放弃,并且从 2.0 开始,微软确保了较新版本的向后兼容性,而 1.1 并非如此。

所以如果你有机会搬家——搬家。你会得到新的语言特性,你会得到一个不断构建的框架。如果你需要它,你会得到 linq,silverlight 支持,当然还有泛型等等。

于 2008-12-22T19:48:59.233 回答
4

实际上,我最近已经完成了从 .NET 1.1 到 .NET 2.0 的整个代码库的转换。考虑到 .NET 3.5 实际上只是 .NET 2.0 的扩展集,它并不是一个全新的基础。

在许多方面,差异确实相当大。对我来说,.NET 1.1 并没有以任何方式被“驯服”,并且需要大量的代码。此外,必须针对 .NET 1.1 使用 VS 7,因此需要较旧的工具。

对于 Web 应用程序,需要不同的 Web 配置,因为它公开了 .NET 版本,这使得它更加混乱。不要陷入“.NET 3.5 具有新功能,因此我必须转向它”的动议,因为您必须根据需求做出决定,而不是根据潜在的工具用途做出决定。正如许多作者正确指出的那样,您很有可能不会使用构成整个框架的一半功能。

另一方面,我建议至少从 .NET 1.1 转移到 .NET 2.0。

于 2008-12-22T19:53:57.413 回答
3

泛型,lambdas,LINQ,还有很多我忘记的我敢肯定。

于 2008-12-22T19:46:56.633 回答
3

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

单独的扩展方法非常有用。我发现自己使用它们的频率比我想象的要频繁得多。此外,3.5 中的许多新功能都基于它们。泛型极大地简化了我们的开发工作;而且,如果您使用 C# 进行编码,那么自动 setter 和 getter 将是一个福音。Lambda 表达式对我来说还是比较新的,所以我不能和他们说话,但我知道其他人觉得它们特别有用。

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

就框架本身而言,我发现改进或提供了许多以前在 1.1 中缺少的功能;随着它的成熟,Framewok 似乎正朝着要求我们为那些我们通常执行的任务(例如目录服务、FTP 访问、命名管道等)编写更少代码的方向前进。粗糙的边缘越来越光滑。

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

但是,就像任何业务决策一样,您必须权衡所有这些与项目的状态——以及移植代码库时可能出现的任何潜在缺陷。迄今为止,我的经验是我们遇到了一些障碍,但还不足以让整个行动戛然而止。尽管如此,对于任何迁移,代码总是有可能被破坏。必须牢记这一点。

于 2008-12-22T20:31:07.887 回答
2

最大的不同是您正在迁移到 .NET 2.0 CLR(这是当前 .NET 正在运行的同一个 CLr)。

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

于 2008-12-22T19:53:08.757 回答
2

我认为一个很好的理由是在 ASP.NET 2.0 及更高版本中设置的提供程序框架。能够获取用户是否已登录或用户拥有的角色列表,而无需担心用于检查这些内容的底层机制,这是一个很大的好处。

于 2008-12-22T23:25:00.920 回答
1

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

于 2008-12-22T19:50:24.223 回答
1

编辑并继续?泛型和可为空的类型也让生活更轻松!

于 2008-12-23T11:15:31.000 回答