3

我正在创建一个新项目,它将在新的 ASP.NET 5 上的 Azure Web App 中运行。我们不打算在 linux 或类似的东西上运行它,至少现在是这样。所以问题是,如果可能的话,我是否应该尝试保留这两个框架以防万一,或者我应该更喜欢其中一个。例如,我可以与 dnxcore50 一起使用的依赖项要少得多,这不是很好。所以主要问题是:如果在 Azure Web App 中运行,使用 dnxcore50 有什么好处,比如:性能、稳定性等优于 dnx451。

4

2 回答 2

2

我必须开始,我仍然是 ASP.NET 5 的初学者(就像大多数其他人一样),所以我之前没有发布我的答案,你应该忽略我的声誉,因为它来自另一个主题,我更了解.

我认为每个切换到 ASP.NET 5 的人都会问同样的问题,在他的项目中保留这两个框架是否有意义。我尝试在下面发表我对这个主题的个人想法。

我个人的选择是我给你的简短建议:保留这两个框架,直到你找到一些真正重要的理由从那里放弃一个

ASP.NET 5 仍然不是最终版本。该策略不是完全固定的,可以在短时间内更改。只是一些例子。以前的 beta 版本支持“Helios”作为在 IIS 上托管 ASP.NET 5 应用程序的选项。该选项后来被删除(参见声明)。甚至名称dnxcore50现在dotnet5.4至少在所有内部 Microsoft 组件中都已重命名(请参阅公告)。人们可以假设将来可能会改变其他一些事情。因此,我认为现在将所有鸡蛋放在一个篮子里太危险了:同时保留两个框架可以降低风险

我发现的下一件事是以下内容。dnxcore50dotnet5.4或 CoreFX 或 .NET Core 基础库)不支持 .Net Framework 支持的许多功能。对我来说,一个重要的例子是缺少 XSD Schema 验证(参见此处此处)。我仅将 XML 与 XSD Schema 验证结合使用。在大多数其他情况下,我更喜欢 JSON。Kipping 项目中的两个框架可以帮助您找到代码中尚未在 CoreFX 中实现的部分。它可以帮助您将代码移动到单独的组件中或更改实现。

关于表演。人们应该将这两种框架的潜力与当前的实现区分开来。一般来说,CoreFX 被重新设计和分解。一个的许多部分mscorlib被分离或删除(远程处理、AppDomains 等)。这意味着CoreFX的性能应该更好。从理论上讲,分解的 API 可以提供更好的性能。此外,可以更轻松地改进 CoreFX 的一部分并发布性能改进的新版本。更多的模块而不是单一的单体为我们提供了提高性能和修复错误的新方法。另一方面,将依赖项替换为新版本可能是新兼容性问题的根源,因此会增加风险并降低稳定性. 通过保留这两个框架,我们可以测试新问题是否存在于替代框架中。它允许我们假设依赖项的最后一次更改而不是我们主代码的最后一次更改是新问题的根源。

我可以继续使用每个框架的优缺点,但是 nodoby 喜欢阅读长文本,我的所有论点都让我做出相同的实际决定:一旦我发现真正需要从框架中删除一个

于 2015-12-17T09:53:06.707 回答
1

到目前为止还没有真正的主要优势。

这可能会在未来发生变化,以及为什么我打算同时针对两者(CoreCLR 和 .NET 4.6)。CoreCLR 以及 Docker 和 Service Fabric 都投入了大量资金。

只是我的2美分。

于 2015-12-16T14:32:02.983 回答