从.NET 2.0升级到.NET 3.5有什么好处?

What are the benefits of upgrading from .NET 2.0 to .NET 3.5?

我需要协助。 我不是程序员的主管要求我准备一份文档,描述我们公司从.NET 2.0切换到.NET 3.5的好处。 我们是一家小公司,我们的IT部门只有6位程序员。 我们主要编写Windows窗体,有时编写ASP.NET和Compact Framework应用程序。 我想听听这个决定的利弊。

编辑:

我个人知道.NET 3.5,但我不确定如何说服我的主管我们需要它。

编辑2:

请注意,我的主管不是程序员(这确实是一个愚蠢的情况,但这是另外一回事了),所以简单地告诉他.NET 3.5具有LINQ,其他内容什么都告诉他。


我知道很难用业务术语来量化,但是... LINQ / lambda表达式!

另外:您可以利用更高级别的API,例如Windows Presentation Foundation(WPF),Windows Communication Foundation(WCF),Windows Workflow Foundation(我认为您对首字母缩略词有所了解)。 VS2008也可以更好地用于ASP.Net(可以说是为了提高生产率。我在vs2008中没有做足够的Windows窗体工作来提供任何建议)。


值得对此进行分解。

"从2.0移至3.5"实际上是几件事情(有些可选,有些则没有)

  • BCL库的版本从2.0到3.5

    • 实际上,这实际上是对更多类似LINQ的库的补充。您熟悉的2.0版本的库仅进行了(较小)错误修复。
  • 编译器变更

  • 从C#2.0到C#3.0的转变

    • Lamda表达式
    • var类型推断
    • 通过局部类大大改善了设计师的支持
    • LINQ(到对象,到xml,到sql
    • 匿名类型
    • 自动属性
    • 扩展方法
    • 和更多...
  • 从VB.Net 8.0迁移到VB.Net 9.0

    • 关于lamdas / LINQ / var与c#几乎相同
    • XML文字
  • VS 2008而不是2005

    • 改进的智能感知(更快,更容忍故障,而无需关闭整个应用程序)
    • VS 2008 Professional中的单元测试集成,而不是团队系统
    • 我这里没有列出更多变化
  • 实际上,您将需要移至VS 2008来实现c#编译器升级。
    您可以升级编译器,但不能升级到3.5库,这意味着您将失去Linq的某些方面,除非您使用诸如LinqBridge之类的插件替换。

    这些升级中的每一个都有自己的优点(和缺点)。

    为了满足您的需求,我可以想象访问新的MVC ASP.Net可能会有用。我没有个人经验,但是它似乎被广泛认为是此类使用的良好框架。

    集成的测试功能意味着您可以免费使用它(我发现能够轻松调试我的单元测试值得使用诸如TestDriven.Net之类的工具,因此免费获得(某些)功能非常有用。

    VS 2008改进的稳定性(和启动时间)对我非常有用。我还发现"转到定义"是一个非常有用的命令,可将我的工作流程加速到惊人的程度。

    我第二个人说新的与LINQ相关的语言增强功能很有用。我发现IEnumerable< T >上的扩展方法可以完成某些任务,这些任务以前需要很多行样板,而不必要的变量仅需要一行(非常描述性)。这减少了将功能分离为更多方法的需求,并提高了可读性。


    您是否看过Microsoft的"新功能"文档?恕我直言,好处是巨大的,因为.NET 3.5提供了Linq框架。我不能说ASP.NET,但是总的来说,Linq to Object非常强大,可以提高生产率。

    另一方面,由于Microsoft通过Windows的自动更新功能提供了无负担的新.NET框架安装,因此成本相对较低(再次是IMHO)。


    如果您编写CF,我直接知道CF 3.5比CF 2.0有了显着改进。一些疑难解答权限问题已修复,您仅需要选择更多框架即可。像Delegate.CreateDelegate这样的简单事物可以用来极大地优化事物。

    在Winform上,WPF提供了另一种选择。对于ASP.NET,MVC成为一种选择。

    哦,并且LINQ可以满足您的所有查询需求; -p(尽管带有.NET 2.0 + LINQBridge的C#3.0编译器也提供LINQ)。


    这可能很明显,但是您想告诉他为什么3.5中的附加功能将有助于实现高级目标,例如:

  • 节省时间,从而省钱!
  • 提高品质
  • 改善互操作性(即与浏览器的兼容性)
  • 改善可管理性
  • 不要混淆他所说的功能术语,告诉他这些新功能将帮助您实现什么。向他扔行话只会使情况混乱。

    给他一个估计的升级工作量,然后显示3.5的额外收益将比估计的升级工作多长时间!这就是ROI(投资回报率)

    再说一遍,如果这一切都是困难的话,那么请尝试诚实:所有开发人员都想玩新的.net 3.5玩具,并熟练掌握最新和最出色的玩具,因此我们可以将其放在简历中。这将是很好的经验,并有助于我们在其他地方找到工作;-)


    对于回答这个问题并假设您最近的问题可能已经迁移到3.5,我可能为时已晚。

    您的问题是相关的,因为在许多情况下会出现此问题,而且在许多情况下,我们的上司也没有任何技术背景,也没有更多地关注开发成本以及最终升级服务器或用户机器以及他们是否拥有著名的ROI(返回投资)。

    我认为,迁移到3.5并最终迁移到4.0的最重要好处是生产率。
    通过拥有最新技术可以提高生产率,这将节省宝贵的时间,变通办法并为开发人员带来一些麻烦。但是大多数情况下(特别是对我来说),使用最新技术会激发我前进的动力,这将使我达到学习和解决干净问题新问题的能力的极限。
    上司通常会忽略这一点,但对我而言,这是成功项目的隐患。


    另一件事是,您可以使用新的Microsoft图表控件,它们基本上是Dundas Chart的克隆,但它们是免费的。如果需要图表功能,则可以为每台服务器节省数百美元(假设您使用ASP.NET)。


    为了强调Joel的观点,LINQ / Lambda大大减少了UI层中的错误计数。 LINQ并不是最适合需要在每个循环中压缩的代码,但是对于那些.02多余的秒无关紧要的东西来说,这很棒。 Microsoft做到了这一点,以便您可以用自然的语言编写循环,这就是您的思维方式。这使您不必担心循环索引,占位符数组,边沿情况等。自从我进行了切换以来,我的(公认的小)UI中没有一个错误。

    另外,WCF使Web通信,RESTful服务器和进程间通信都非常非常容易。我可以在大约10分钟内启动具有相当丰富功能集的RESTful Web服务器。当然,我正在使用一个经过改进的库来处理WCF的某些重复,但是否则可能要20分钟。

    如果执行多线程,则ReaderWriterLockSlim与2.0中的ReaderWriterLock相比,可提供极大的速度改进,而对lock()则可提供更大的改进。


    .Net 3.0附带了许多这些功能。不是全部,而是很多。


    我已经在其他对话中说过这一点,但是尽管LINQ非常酷,但我还是要特别注意这一点。美国程序员喜欢测量并提供无可争议的结果,但我们所有人似乎都宣称使用LINQ无疑会"提高生产率"。支持这些主张的研究结果在哪里?您如何在不借助模糊,无法测量的数据的情况下促进业务发展?

    我建议放宽这方面的内容,因为缺乏具体的证据只会在敏锐的头脑中引起怀疑。

    专注于CF 3.5的改进和对ASP.NET的改进。他们甚至还修复了String.IsNullOrEmpty()中的错误。有很多充分的理由进行升级。如果您不在VS2008上,那么值得进行更新,更快的构建时间,目标表框架等。这是一个不错的升级。

    还有一点是,您可能会开始发现在3.5或2008中解决的问题,或者使用仅在最新版本中可用的代码或组件。想象一下,在网上找到解决方案时遇到了一个棘手的问题,但由于无法使用该修补程序而导致您使用的是旧版本,因此陷入困境。令人沮丧

    对于任何科技公司,您都应该进行升级。关键不是要说明升级的合理性,而是要计划明智的更新位置和时间,特别是在向后兼容性很好的.NET版本升级中。


    我认为大多数其他答案已经掌握了大多数关键概念。我要说的是,尽管来自Winforms世界,但WPf和框架的客户子集是巨大的。

    我只想补充一点,因为3.5实际上只是2.0之上的额外dll,看来问题是,为什么不切换。将项目文件转换为VS2008后,整个代码库应立即在3.5中运行。只要升级到新的VS都不成问题,那么升级确实应该没有任何缺点。然后,您可以涉足新功能并在认为合适时应用。


    LINQ to SQL,永远不要再为1个对象编写4个存储过程。

    您将编写一些内容,但这只是为了提高速度和效率。