【问题标题】:.NET 5 can replace .NET Standard where .NET Core 3.1 cannot ? Use case.NET 5 可以替代 .NET Core 3.1 无法替代的 .NET Standard 吗?用例
【发布时间】:2021-05-13 14:36:26
【问题描述】:

10 月份,我被要求从一位离职到另一家公司的同事那里接手一个 IT 项目。这位同事做了一个 IT 项目,他必须使用用 .NET Framework 4.7 编写的“旧库”。他想在 .NET Core 中使用 WPF 应用程序,并很快体验到他无法立即引用这些 .NET Framework 4.7 项目。通过如下图所示设置整个架构,他在业务逻辑(调用旧库的位置)中使用了 .NET Standard 2.0 项目。这些业务逻辑一方面可以在 WPF .Net Core 3.1 应用程序中引用,另一方面可以调用 .NET Framework 4.7 项目(在这个简化的示例中:食物计算器和庇护所计算器)。

当我在 11 月接任时,.NET 5 发布了,我偶然发现了这篇文章 Microsoft Says .Net 5 replaces .NET Standard (Except for...) 。这让我想到我可能会一直使用 .NET 5 ,然后我将所有代码(除了我暂时无法更改的旧库)移植到 .NET 5。现在这个似乎可行,这简化了我认为的架构。

请查看我的概述,其中第一个版本 (1.0) 为红色,第二个版本 (2.0) 为蓝色。

现在我的问题是:是否可以安全地得出结论,在这种情况下,.NET 5 不仅仅是 .NET Core 3.1 的下一个版本,甚至更进一步...在某种程度上,.NET 5 也使 .NET Standard 在这些体系结构中过时了?或者这是一个非常特殊的情况,如果我想制作 Blazor 客户端而不是 WPF,仍然需要 .NET Standard?

【问题讨论】:

  • 只要您尚未将所有应用程序移植到 .NET 5,您仍然可以从在共享类库中使用 .NET Standard 中受益。
  • 我将从哪些方面受益?我害怕我会失去绩效,并且很抱歉之前没有提到,但是绩效是我为雇主做的项目类型中的一个重点。
  • 如果您的应用仍然以 .NET Core 或 .NET Framework 为目标。 .NET 5 仍然实现 .NET Standard,因此在 .NET 5 上实际运行时不会损失任何性能。
  • 感谢您的回复。然而,我还有一个额外的问题:所以在我上面描述的这个特定用例中,您没有看到我将其更改回 .NET Standard 的理由吗?如果我说我的前同事(没有 .NET 5 的可用性)不能将业务逻辑放在 .NET Core 3.1 中,因为您不能引用 .NET Framework 4.7(调用 Food or Shelter Calculator),我是否正确?
  • 您是否已将所有应用程序移植到 .NET 5?然后就真的无所谓了。但是将类库从 .NET Standard 升级到 .NET 5 的唯一真正好处是您将能够使用任何不在 .NET Standard 中的新 API。就性能而言,无论引用的类库是针对 .NET Standard 还是 .NET 5 编译的,在 .NET 5 上运行应用程序时,您仍将获得 .NET 5 带来的性能优势。

标签: .net wpf architecture enterprise .net-5


【解决方案1】:

.NET 5 及更高版本最终将使 .NET Standard 过时,但只要您尚未将所有应用程序移植到 .NET 5,您仍然可以从在共享类库中使用 .NET Standard 中受益。

这样做意味着您可以从新的 .NET 5 应用以及仍以 .NET Core 或 .NET Framework 为目标的应用中引用它们。

将类库从 .NET Standard 升级到 .NET 5 的唯一真正好处是您将能够使用 .NET Standard 中不存在的任何新 API。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多