10

我看过介绍 ASP.NET vNext 的视频,并一直在关注最近的公告博客文章,但有关从完整框架中删除的内容的详细信息似乎很少。以下是我认为到目前为止我所知道的:

我们基本上是在寻找一个框架,它基本上只包含完整框架中的 mscorlib 中的内容,而所有其他内容都通过包管理提供?如果是这种情况,为什么需要专门针对框架,如此处所述?http://blogs.msdn.com/b/webdev/archive/2014/06/17/dependency-injection-in-asp-net-vnext.aspx

4

3 回答 3

2

据我了解,.Net Framework 是我们了解并喜爱的所有 Windows 实现和许多我们通常不使用的代码的完整框架,就像他们在一些视频中解释的 XML 解析器一样。

在 .NET Core 中,他们删除了所有不需要的实现/依赖项,只留下了基本的实现/依赖项。它还支持跨平台(尚未),因此将来可以将其视为唯一的框架:CORE 框架,并在任何设备上运行。他们二月的社区站会就他们的目标和目标提供了大量信息和见解。

我认为这是一种过渡,即某些功能仅在完整框架上可用,而在未来,人们可能希望看到所有可用于 .NET Core 的功能。

从微软的角度来看,如果他们想发布移动实体框架(EF7 的目标是),他们必须摆脱所有 Windows 实现,EF 及其依赖项(框架)。因此,他们创建了对框架的非 Windows 依赖项,这也有助于安装多个框架,并通过让它们大部分与系统隔离,位于应用程序中来消除更新框架的一些问题。新的问题会像每个应用程序在一台机器上的多个相同框架的副本一样出现,这就是为什么他们正在研究称为智能共享的东西。

这篇文章可能会对您有所帮助,并特别为您提供一些见解:

.NET Core 的结构由两个主要组件组成,它们添加和扩展了 .NET Framework 的功能,如下所示:

  1. 运行:

构建在与 .Net Framework CLR 相同的代码库上。包括相同的 GC 和 JIT (RyuJIT) 不包括应用程序域或代码访问安全等功能。运行时在 NuGet(Microsoft.CoreCLR 包)上提供

  1. 基类库:

与 .Net Framework 类库的代码相同,但不包含依赖项,因此占用空间更小。在 NuGet 上可用(System.* 包)

我猜您已经阅读了 Microsoft 的Introducing .NET Core

关于您对指定特定框架的担忧是因为现在,并非所有内容都适用于 Core CLR,因此您必须选择使用哪一个,或者您可以同时针对两者并使用不同的实现。

截至目前,CORE 仅在 Windows 上运行;mono 框架没有实体框架的 SQLLite 提供程序,但它在 Core 上提供,因此您可以使用 InMemory 或 Azure EF 提供程序,并根据应用程序运行的环境进行选择。

正如 Scott Gu 在社区站立会议上所说,他们设想了一个没有单一框架或完整框架的未来,只有核心,但如果它发生的话,这将需要时间。

于 2015-02-06T19:59:49.243 回答
2

他们专门针对NET45您提供的链接的原因是因为AutoFac它是为 .NET 4.5 构建的并且依赖于 .NET 4.5。没有NET45代码将无法编译。

我的假设是,一旦 vNext 越来越接近发布 Autofac(以及 StructureMap、Castle Windsor 等等),将发布一个针对云优化框架的版本以消除依赖关系。

于 2014-08-15T22:46:34.807 回答
0

除了 David Fowler 对 NDC 演示文稿的评论(我相信)之外,我找不到原始来源,但 K Runtime 使用的 CoreCLR 实际上是 Silverlight 2 使用的 CLR 的转世。使用它是因为它很小并设计为跨平台。这里有一些额外的信息:https ://stackoverflow.com/a/25720160/113225

于 2014-09-30T15:23:48.347 回答