2

假设您正在进行一个长期运行的项目(长期运行 = 数年),并且正如预期的那样,将会有一些全新的版本出现。可能会有一个具有全新功能的新 .Net 框架(例如 Linq、Entity Framework、WPF、WF...)、一个新的 Visual Studio 或您最喜欢的控件库的 V.next、一个新的 Mock 框架和更多的东西. 您处理这些技术更新的指导方针是什么?您是立即采用它们还是在项目结束之前忽略它们?你对不同的东西(工具、框架、支持的东西)有不同的指导方针吗?

4

6 回答 6

4

根据我的经验,这些决定总是根据具体情况做出的。考虑了几个因素,包括:

  1. 新技术有多成熟?组织是否喜欢站在最前沿使用最前沿的新技术,还是更喜欢使用经过验证的工具和方法?

  2. 你的员工有什么技能?它们是否与新技术的使用一致,还是需要更多的培训?提高生产力会超过加快速度所需的时间吗?

  3. 您对现有技术有哪些投资?迁移到新技术的成本是多少?涉及多少代码的返工和重写?

  4. 有什么要求?它是由现有技术支持,还是需要新工具来满足要求?

  5. 业绩预期如何?新技术是否提供了旧技术无法满足的性能改进?

  6. 科技文化呢?组织供应商是否特定(例如 Microsoft 商店)?可以使用开源代码吗?

  7. 项目的范围是什么?它是一个可以从框架和工具等支持技术中受益的大型项目,还是一个会被这些东西过度拖累和复杂化的小项目?

  8. 新技术如何支持?供应商是否有良好的文档?有问题可以找人谈谈吗?或者您是一个组织,其人员知道如何在没有支持合同的情况下解决问题?

  9. 使用该技术是否舒适?这似乎有意义吗?它干净优雅吗?其他人似乎喜欢它吗?其他人有问题吗?

  10. 这项技术是本周最新的风格吗?它是在战场上证明了自己产生了实实在在的成果,还是只是一种宗教?

  11. 您有多少时间来学习新技术并解决问题?收益是否大于成本?

作为一个非常简短的例子,我为我最近的项目选择了 Link to SQL,因为该项目足够复杂,可以保证 ORM,L2S 性能良好且轻量级,我们是 Microsoft Shop,我感觉 Entity 框架还没有为黄金时间做好准备(尽管微软表示它将成为未来的首选框架)。

于 2009-05-23T01:49:28.107 回答
3

坚持你已经开始的。

大型且长期运行的项目通常带有庞大且高度复杂的代码库。对库的新版本的任何更改或升级都可能以非常微妙和意想不到的方式添加错误。

另外:对于大型项目,使用的工具和库应该在设计阶段进行测试和评估。除非您发现问题或安全问题,否则最好不要升级。

永远记住:不要在溪流中间换马。:-)

于 2009-05-23T01:48:27.297 回答
1

我想说的是不同的因素,比如——

  1. 假设一个软件即将结束生命周期,例如去年 4 月,Microsoft 停止了对 SQL Server 2000 的主流支持,而您的产品使用它,那么在您的下一个版本中选择下一个版本的 SQL Server 会更明智。
  2. 另一个起作用的因素是最新版本的软件中的新功能会给你的产品带来多少价值。很可能是 .NET 框架的新版本有一些东西不会为您的产品增加任何价值,那么这并没有建立一个强有力的升级案例。
  3. 预算也是一个重要因素。我认为您需要升级许可证才能升级到下一个版本,除非您已经是软件保障之类的一部分。
  4. 对球队的训练也是一个因素。如果最新版本要添加到您的产品中,那么您还必须培训您的团队。

好吧,也可能有其他重要因素。这些是我头顶上的那些。我希望它有所帮助。

干杯

于 2009-05-23T01:50:35.920 回答
1

如果您谈论的是特定于框架的示例,我给您的最大建议是保持系统和应用程序分开。这就是我喜欢 Model-View-Controller 这样的模式的原因——它使你的代码保持模块化,这意味着你可以在不破坏整个应用程序的情况下升级部分。

在更实际的层面上,如果您的框架有 Git 或 SVN 存储库,请从存储库中签出通常的“系统”目录,然后您可以偶尔调用“svn update”以跟上最新和最好的构建。

于 2009-05-23T01:54:11.840 回答
0

我建议这个项目不要持续那么久。每几个月进行一次迭代,以较小的部分开发应用程序。这样,随着新技术的出现,您可以随时进行必要的更改并实施更新,而不必决定重新开发整个应用程序。正如您所说,尝试随着事情的变化而开发整个应用程序是行不通的。

于 2009-05-23T01:46:35.757 回答
0

正如另一位发帖人所说,这当然是逐案处理的事情。您可以升级什么以及何时升级主要取决于测试新版本系统的难易程度。为您的应用程序拥有一个全面的自动化测试套件对此有很大帮助。

一般来说,我会尽可能频繁地更新到最新的稳定版本的库等,因为这样可以更容易地维护。如果您不更新,您可能会发现自己正在修补或解决您正在使用的库版本中的错误。如果您更新的频率较低,则每次更新的工作量会更大,因为您需要处理更多的更改,并且距离您上次接触系统的时间更长,因此您对它的记忆会更少。

于 2009-05-23T09:05:55.610 回答