提问人:user5855178 提问时间:11/13/2023 最后编辑:marc_suser5855178 更新时间:11/14/2023 访问量:167
Web 服务器上是否需要 .NET 6、.NET 7 和 .NET 8?
.NET 6, .NET 7, and .NET 8 required on webservers?
问:
我工作场所的 Web 服务器目前为 .NET 6。
管理层要求我在 .NET 8 可用时安装 .NET 8 并删除 .NET 6...而不是安装 .NET 7。
我们现在有 3.1、5 和 6 编译的产品,并且所有 .NET 版本都安装到了 6 级。
这有意义吗?
据我了解,我们仍然需要这些服务器上的旧版本的 .NET 才能在较旧的 .NET 级别上运行 NuGet 依赖项。
它是免费软件,无论如何我都看不出安装它有什么坏处。
任何人都可以确认跳过或删除 .NET 6 或 7 并且仅在 Web 服务器上运行 .NET 8 是否存在任何风险?
这难道不会破坏需要旧版本才能运行的产品吗?
在管理层看来,我们应该删除所有旧版本,只安装最新版本。在我看来,这似乎是一种风险。
答:
这有意义吗?
算是吧。我会一点一点地解释。
我们现在有 3.1、5 和 6 编译的产品,并且所有 .NET 版本都安装到了 6 级。
管理层要求我......删除 .NET 6。
他们没有要求你删除 3.1 或 5。只有 6 个。如果现有应用程序仍在使用这些其他项目,则删除它们将是一个问题。
如果仍然有应用程序以它为目标,则删除 6 会出现问题,但据推测,这与更新这些应用程序有关。对于开发人员来说,这是一个简单的更新——从 6 到 8 几乎不需要更改代码。只需安装新的 SDK,在项目文件中进行一行配置更改,然后重新生成即可。(在 .NET 5 之前并非如此,从 Framework 升级到 3.1 或 5 很痛苦。但 Core 目前更稳定一些。
...假设您的所有依赖项也支持新版本。这可能会给工作带来麻烦。但是,库作者经常针对 beta 版和候选版本进行测试,以便在正式发布后很快获得支持。
站在你的立场上,我会确保开发团队也知道这个管理指令,并尽快安装 8,然后将删除步骤推迟几周,以确保他们有时间更新应用程序。
据我了解,我们仍然需要这些服务器上的旧版本的 .NET 才能在较旧的 .NET 级别上运行 NuGet 依赖项。
但事实并非如此。如果应用面向 .NET 6,并且依赖于仅支持 .NET 5 的 NuGet 包,则应用将无法生成。您只需要担心开发团队实际针对的 .NET 版本。他们使用的任何 NuGet 包要么支持该版本的 .NET,要么需要找到另一个 NuGet 包才能完成应用的生成步骤,更不用说将其部署到服务器了。
它是免费软件,无论如何我都看不出安装它有什么坏处。
当然有:磁盘大小等因素,这也会影响备份大小和恢复时间。以及环境的复杂性。但最大的问题是安全面,因为 .NET 3.1 和 5 已正式结束生命周期(不再收到安全补丁!
任何人都可以确认跳过或删除 .NET 6 或 7 并且仅在 WebServer 上运行 .NET 8 是否存在任何风险?
跳过 7 没有风险,但如上所述,过快删除 6 有风险。
这难道不会破坏需要旧版本才能运行的产品吗?
是的,但这些旨在在大多数情况下快速、轻松地进行更新。只要开发团队知道任务,你给他们合理的时间来调整,并且你以一种允许合理的变更管理的方式解释管理指令,你就可以做到这一点。
在管理层看来,我们应该删除所有旧版本,只安装最新版本。在我看来,这似乎是一种风险。
我同意有风险。最新版本有时会出现问题。我也同意管理层的观点。由于 Core(与 Framework 不同),.NET 生命周期现在很短,您应该相当快地关注每个新的当前(或长期支持/LTS)版本。我希望看到的是,在进入新版本之前,每个新版本都有 6 到 8 周的延迟进行开发测试。
这意味着您还需要一个真正的 QA 环境......实际上,至少有 2 个独立的 QA 环境:1 个用于模拟生产环境,因此您有一个准备好测试“常规”应用程序更新的地方,另一个允许与生产环境不同的环境,您可以在其中测试 .NET 版本升级和打包部署/更改等内容。
评论
我正在扩展我的答案,因为我无法将图像粘贴到评论中 以上部分
这是一个非常流行的包,它仅支持 .net core 5.0。我们正在迁移
到 .net core 8,Swashbuckle NuGet 包不支持该版本。 [请注意,依赖项选项卡中有 .net core 7 依赖项]
评论
我要感谢大家的精彩讨论。
我认为这是一件非常重要的事情,但没有多少人在谈论它。
Microsoft的这篇文章似乎表明删除较旧的NET版本或跳过它们是安全的:
尽管Microsoft表示保留旧版本存在风险,但他们没有评论跳过级别的风险。
我认为删除一个版本实际上与跳过它相同。
我宁愿不必从 MS 所说的话中推断出我的答案。我宁愿Microsoft真的写出一个明确的答案。
但有推论总比没有好......
你们怎么看?
评论