我需要一些帮助。我的主管不是程序员,而是让我准备一份文档,描述我们公司如何从.NET 2.0切换到.NET 3.5中受益。我们是一家小公司,我们的IT部门只有6名程序员。我们主要编写Windows Forms,有时是ASP.NET和Compact Framework应用程序。我想听听这个决定的利弊。
我个人认识.NET 3.5我不知道如何说服我的主管我们需要它。
请注意我的主管不是程序员(这是一个非常愚蠢的情况,但这是另一个故事)所以只是告诉他.NET 3.5有LINQ和其他东西告诉他什么。
答案 0 :(得分:19)
我知道在业务方面很难量化,但...... LINQ / lambda表达式!
另外:您可以利用更高级别的API,如Windows Presentation Foundation(WPF),Windows Communication Foundation(WCF),Windows Workflow Foundation(我认为您可以了解缩写词)。 VS2008用于ASP.Net的东西也更好(卖得更高的生产力。我没有在vs2008中做足够的窗体工作以提供任何建议)。
答案 1 :(得分:17)
值得打破这一点。
“从2.0移动到3.5”实际上是几件事(有些可选,有些不是)您现在需要转到VS 2008来实现c#编译器升级 您可以升级编译器但不要移动到3.5库,这意味着您将失去Linq的某些方面,除非您使用像LinqBridge这样的替换插件。
这些升级中的每一个都带来了自己的专业人士(以及一些缺点)。
根据您的需求,我认为访问新的MVC ASP.Net可能会很有用。我没有任何个人经验,但它似乎被广泛视为这种用途的良好框架。
集成的测试功能意味着您可以免费使用它(我发现能够轻松地调试到我的单元测试中,价值相当于TestDriven.Net等工具的价格,因此免费获得(部分)此功能非常有用。 / p>
VS 2008上改进的稳定性(和启动时间)对我来说非常有用。我还发现“Go To Definition”是一个非常有用的命令,可以让我的工作流程变得惊人。
我认为新的LINQ相关语言增强功能非常有用。我发现IEnumerable<T>
上的扩展方法使得某些任务过去需要多行锅炉板,而不必要的变量只需要一行(非常具有描述性)。这减少了将功能分离到更多方法并增强可读性的需要。
答案 2 :(得分:5)
您是否看过微软的“什么是新的”文件?恕我直言,其好处是巨大的,因为.NET 3.5提供了Linq框架。我不能代表ASP.NET,但总的来说,Linq to Object非常强大,可以提高工作效率。
另一方面,成本相对较小(再次恕我直言),因为微软通过Windows的自动更新功能提供了无法安装的新.NET框架。答案 3 :(得分:3)
如果你写CF,我第一手知道CF 3.5从CF 2.0中得到了显着改善;一些knottier permissions issues是固定的,你只需要更多的框架可供选择。像Delegate.CreateDelegate
这样的简单事物可以用来大大优化事物。
在winform上,WPF提供了另一种选择。对于ASP.NET,MVC成为一种选择。
哦,LINQ满足您的所有查询需求;-p(尽管C#3.0编译器也可以使用.NET 2.0 + LINQBridge)。
答案 4 :(得分:2)
这可能是显而易见的,但是你想告诉他为什么3.5中的additional features将有助于实现如下的高级目标:
不要混淆他关于功能被称为什么的大量术语,告诉他这些新功能将帮助你实现什么。向他投掷行话只会使情况混乱。
向他估算升级所涉及的工作量,然后显示3.5的额外收益会比升级的估计工作量多大多久!这是ROI(投资回报率)
然后,如果所有这一切都是一个延伸,那么请诚实:所有的开发者都想玩新的.net 3.5玩具并熟练掌握最新的&amp;最大的,所以我们可以把它放在我们的简历上。这将是很好的经验,并帮助我们在其他地方找到工作;-)
答案 5 :(得分:1)
许多these features都使用.Net 3.0。不是全部,而是其中很多。
答案 6 :(得分:1)
为了强调Joel的观点,LINQ / Lambda极大地减少了UI层中的错误数量。 LINQ不是最适合你需要挤出每个周期的代码,但是对于那些.02额外秒无关紧要的东西,它很棒。微软已经做到这一点,你可以用自然语言编写循环,就像一个人的思维实际工作方式一样。这使您不必担心循环索引,占位符数组,边缘情况等。自从我进行切换以来,我的(在公认的小)用户界面中没有一个错误。
此外,WCF使Web通信,RESTful服务器和进程间通信变得非常非常容易。我可以在大约10分钟内推出具有相当丰富功能集的RESTful网络服务器。当然,我正在使用一个我们掀起的库来处理WCF的一些重复,但是否则可能是20分钟。
如果你进行多线程处理,ReaderWriterLockSlim比2.0中的ReaderWriterLock提供了巨大的速度提升,并且比lock()有了更大的改进。
答案 7 :(得分:1)
另一件事是你可以使用新的Microsoft Chart Controls,它们基本上是Dundas Chart的克隆,但它们是免费的。如果您需要图表功能,那么每个服务器可以节省数百美元(假设您使用ASP.NET)。
答案 8 :(得分:1)
我回答这个问题可能为时已晚,并假设您最近的问题可能已经实际迁移到3.5。
你的问题是相关的,因为在很多情况下出现这个问题,在很多情况下我们的上级也没有任何技术背景或更多关注开发成本,最终升级服务器或用户机器,如果他们有他们的名言投资回报率(投资回报率)。
在我看来,迁移到3.5并最终迁移到4.0的最重要的好处是生产力。 通过采用最新技术实现生产力,这将为开发人员节省宝贵的时间,解决方法和一些麻烦。但大多数情况下,特别是对我来说,使用最新技术给我的动力会让我达到我用清洁解决方案学习和解决新问题的能力极限。 这个特定点通常会被上级忽略,但在我的案例中是成功项目的隐藏。
答案 9 :(得分:0)
LINQ to SQL,再也不为1个对象写4个存储过程。
你会写一些,但只是为了提高速度和效率。
答案 10 :(得分:0)
我认为大多数其他答案都得到了大部分关键概念。我想说来自winforms世界,WPf和框架的客户端子集是巨大的。
我只是想补充一点,因为3.5实际上只是在2.0之上的额外dll,似乎问题是,为什么不切换。将项目文件转换为VS2008后,您的整个代码库应立即在3.5中运行。只要升级到新VS不是问题,升级确实不应该有任何缺点。然后,您可以参与新功能,然后在您认为合适时应用。
答案 11 :(得分:0)
我在另一场谈话中已经说过了这一点,但尽管LINQ有多酷,但我还是要谨慎对待这一点。我们程序员喜欢测量并提供无可争议的结果,但我们似乎都声称使用LINQ“毫无疑问地提高了生产力”。支持这些主张的研究结果在哪里?如何在不诉诸模糊,无法衡量的数据的情况下推广业务?
我建议放宽这个方面,因为缺乏具体的证据只会让人产生怀疑。
专注于CF 3.5对ASP.NET的改进和改进。他们甚至修复了String.IsNullOrEmpty()中的错误。升级有很多充分的理由。如果您不在VS2008上,那么值得更新,更快的构建时间,目标表框架等。这是一个不错的升级。
另一点是,您可能会开始发现在3.5或2008中解决的问题,或者使用仅在最新版本中提供的代码或组件。想象一下,遇到一个在线寻找解决方案但又无法使用该解决方案的糟糕问题导致您遇到旧版本。令人沮丧。
对于任何科技公司,您应该升级。重点不是证明升级的合理性,而是更多地计划在何时何地进行更新是明智的,特别是在.NET版本升级中,后向兼容性大部分都很好。