本文翻译自:What is “.NET Core”?

Recently in an official .NET Framework Blog it was announced that .NET Core is going open source . 最近在一个官方的.NET Framework博客中宣布.NET Core是开源的 。 Ironically author mentions that what .NET Core is will be explained in next post. 讽刺的是作者提到什么 .NET Core是将在接下来的文章解释。 Some more details are mentioned in another announce post . 另一个宣布帖子中提到了更多细节。

From a supplied diagram: 从提供的图表:

and articles text itself, I would assume that .NET Core (beside obvious things like being open-sourced) is a modular re-implementation of full .NET. 和文章本身,我会假设.NET Core(除了明显的东西,如开源)是完整的.NET的模块化重新实现。 ie framework components are loaded as necessary, much like NuGet packages are loaded now. 即框架组件在必要时加载,就像现在加载NuGet包一样。 And now ASP.NET 5 is one of the modules that is already implemented. 现在,ASP.NET 5是已经实现的模块之一。 Is my understanding of .NET Core correct? 我对.NET Core的理解是否正确? Maybe I'm missing something? 也许我错过了什么?


I have found recent article which I found both short and very good. 我发现最近的文章我发现既短又非常好。 It covers .NET Standard, .NET Core and .NET Framework and their relationship. 它涵盖了.NET Standard,.NET Core和.NET Framework及其关系。 Highly recommend it. 强烈推荐它。


#1楼

参考:https://stackoom.com/question/1ou0n/什么是-NET-Core


#2楼

From the .NET blog Announcing .NET 2015 Preview: A New Era for .NET : 来自.NET博客宣布.NET 2015预览:.NET的新时代 :

.NET Core has two major components. .NET Core有两个主要组件。 It includes a small runtime that is built from the same codebase as the .NET Framework CLR. 它包含一个与.NET Framework CLR相同的代码库构建的小型运行时。 The .NET Core runtime includes the same GC and JIT (RyuJIT), but doesn't include features like Application Domains or Code Access Security. .NET Core运行时包含相同的GC和JIT(RyuJIT),但不包括应用程序域或代码访问安全性等功能。 The runtime is delivered via NuGet, as part of the [ASP.NET Core] package. 运行时通过NuGet提供,作为[ASP.NET Core]包的一部分。

.NET Core also includes the base class libraries. .NET Core还包括基类库。 These libraries are largely the same code as the .NET Framework class libraries, but have been factored (removal of dependencies) to enable us to ship a smaller set of libraries. 这些库与.NET Framework类库的代码大致相同,但已经考虑(删除依赖项)以使我们能够发送一组较小的库。 These libraries are shipped as System.* NuGet packages on NuGet.org. 这些库在NuGet.org上以System。* NuGet包的形式提供。

And: 和:

[ASP.NET Core] is the first workload that has adopted .NET Core. [ASP.NET Core]是第一个采用.NET Core的工作负载。 [ASP.NET Core] runs on both the .NET Framework and .NET Core. [ASP.NET Core]在.NET Framework和.NET Core上运行。 A key value of [ASP.NET Core] is that it can run on multiple versions of [.NET Core] on the same machine. [ASP.NET Core]的一个关键值是它可以在同一台机器上的多个版本的[.NET Core]上运行。 Website A and website B can run on two different versions of .NET Core on the same machine, or they can use the same version. 网站A和网站B可以在同一台计算机上运行两个不同版本的.NET Core,也可以使用相同的版本。

In short: first, there was the Microsoft .NET Framework , which consists of a runtime that executes application and library code, and a nearly fully documented standard class library . 简而言之:首先,有一个Microsoft .NET Framework ,它包含一个执行应用程序和库代码的运行时,以及一个几乎完全记录的 标准类库 。

The runtime is the Common Language Runtime , which implements the Common Language Infrastructure , works with The JIT compiler to run the CIL (formerly MSIL) bytecode . 运行时是公共语言运行库 ,它实现公共语言基础结构 ,与JIT编译器一起运行CIL(以前称为MSIL)字节码 。

Microsoft's specification and implementation of .NET were, given its history and purpose, very Windows- and IIS-centered and "fat". 鉴于其历史和目的,微软的.NET规范和实现非常以Windows和IIS为中心并且“胖”。 There are variations with fewer libraries, namespaces and types , but few of them were useful for web or desktop development or are troublesome to port from a legal standpoint . 存在较少的库,名称空间和类型的变体 ,但它们中很少用于Web或桌面开发,或者从法律角度来看是很麻烦的 。

So in order to provide a non-Microsoft version of .NET, which could run on non-Windows machines, an alternative had to be developed. 因此,为了提供可以在非Windows机器上运行的非Microsoft版.NET,必须开发一种替代方案。 Not only the runtime has to be ported for that, but also the entire Framework Class Library to become well-adopted. 不仅必须为此移植运行时,而且整个框架类库也要被广泛采用。 On top of that, to be fully independent from Microsoft, a compiler for the most commonly used languages will be required. 最重要的是,要完全独立于Microsoft,需要使用最常用语言的编译器。

Mono is one of few, if not the only alternative implementation of the runtime , which runs on various OSes besides Windows, almost all namespaces from the Framework Class Library as of .NET 4.5 and a VB and C# compiler . Mono是运行时的唯一替代实现之一,它运行在除Windows之外的各种操作系统上, 几乎所有来自.NET 4.5的Framework Class Library以及VB和C#编译器的 命名空间 。

Enter .NET Core: an open-source implementation of the runtime , and a minimal base class library. 输入.NET Core: 运行时的开源实现,以及最小的基类库。 All additional functionality is delivered through NuGet packages, deploying the specific runtime, framework libraries and third-party packages with the application itself. 所有附加功能都通过NuGet包提供,使用应用程序本身部署特定的运行时,框架库和第三方包。

ASP.NET Core is a new version of MVC and WebAPI, bundled together with a thin HTTP server abstraction, that runs on the .NET Core runtime - but also on the .NET Framework. ASP.NET Core是MVC和WebAPI的新版本,与瘦HTTP服务器抽象捆绑在一起,可以在.NET Core运行时运行 - 但也可以在.NET Framework上运行。


#3楼

It is a sub-set of the .NET Framework, started with the Compact Framework edition. 它是.NET Framework的一个子集,以Compact Framework版本开始。 Progressed into Silverlight, Windows Store and Windows Phone. 进入Silverlight,Windows Store和Windows Phone。 Focused on keeping the deployment small, suitable for quick downloads and devices with limited storage capabilities. 专注于保持部署小,适合快速下载和具有有限存储功能的设备。 And easier to bring up on non-Windows platforms, surely the reason it was chosen as the open sourced edition. 并且更容易在非Windows平台上运行,当然它被选为开源版本的原因。 The "difficult" and "expensive" parts of the CLR and the base class libraries are omitted. 省略了CLR的“困难”和“昂贵”部分以及基类库。

Otherwise always easy to recognize when you target such a framework version, lots of goodies will be missing. 否则,当你定位这样一个框架版本时总是很容易识别,很多东西都会丢失。 You'll be using a distinct set of reference assemblies that only expose what is supported by the runtime. 您将使用一组不同的引用程序集,这些程序集仅显示运行时支持的内容。 Stored on your machine in the C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETCore directory. 存储在您的计算机上的C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETCore目录中。


Update: after the .NETCore 2.0 release I've seen some representative numbers that gives a decent insight. 更新:在.NETCore 2.0版本发布之后,我看到了一些具有代表性的数字,这些数字提供了不错的见解。 They have been hard at work back-porting framework apis to .NETCore over the past two years. 在过去的两年里,他们一直在努力将框架apis移植到.NETCore。 .NETCore 1.0 originally supported 13,000 apis. .NETCore 1.0最初支持13,000个apis。 .NETCore 2.0 added 20,000 apis, bringing the total to 32,000 and allowing about 70% of existing Nuget packages to be ported. .NETCore 2.0增加了20,000 api,使总数增加到32,000,并允许大约70%的现有Nuget包被移植。 There are a set of apis that are too heavily wedded to Windows to be easy to port to Linux and MacOS. 有一组api过于强调Windows,很容易移植到Linux和MacOS。 Covered by the recently released Windows Compatibility Pack, it adds another 20,000 apis. 在最近发布的Windows兼容包中,它增加了另外20,000个api。


#4楼

I have found recent article which I found both short and very good. 我发现最近的文章我发现既短又非常好。 It covers .NET Standard, .NET Core and .NET Framework and their relationship. 它涵盖了.NET Standard,.NET Core和.NET Framework及其关系。 Highly recommend it. 强烈推荐它。 Unfortunatelly have no time to adapt and put it here. 不幸的是没有时间适应并把它放在这里。

Original answer content below: 原始答案内容如下:


So, based on latest official entry on the subject, here some key points as I see them: 因此,根据有关该主题的最新官方条目 ,我在这里看到一些关键点:

.NET Core is essentially a fork of the NET Framework whose implementation is also optimized around factoring concerns. .NET Core本质上是.NET Framework的一个分支,其实现也围绕分解问题进行了优化。

We think of .NET Core as not being specific to either .NET Native nor ASP.NET 5 – the BCL and the runtimes are general purpose and designed to be modular. 我们认为.NET Core并不特定于.NET Native或ASP.NET 5 - BCL和运行时是通用的,并且设计为模块化的。 As such, it forms the foundation for all future .NET verticals. 因此,它构成了所有未来.NET垂直的基础。

So .NET Native and ASP.NET 5 are just a test "subjects" for new framework configuration, partially this maybe because they are quite different: 所以.NET Native和ASP.NET 5只是新框架配置的测试“主题”,部分原因可能是因为它们完全不同:

see, they even need separate low-level, but major part of BCL is still common: 看,他们甚至需要单独的低级别,但BCL的主要部分仍然很常见:

We think of .NET Core as not being specific to either .NET Native nor ASP.NET 5 – the BCL and the runtimes are general purpose and designed to be modular. 我们认为.NET Core并不特定于.NET Native或ASP.NET 5 - BCL和运行时是通用的,并且设计为模块化的。 As such, it forms the foundation for all future .NET verticals. 因此,它构成了所有未来.NET垂直的基础。

Ie magenta rectangles on top will be added massively with new App Models, but base will remain common. 即顶部的洋红色矩形将与新的App模型大量添加,但基础将保持常见。

Nuget deployment: Nuget部署:

In contrast to the .NET Framework, the .NET Core platform will be delivered as a set of NuGet packages. 与.NET Framework相比,.NET Core平台将作为一组NuGet包提供。 We've settled on NuGet because that's where the majority of the library ecosystem already is. 我们已经确定了NuGet,因为那是图书馆生态系统的主要部分。

Relationship with current frameworks: 与当前框架的关系:

For Visual Studio 2015 our goal is to make sure that .NET Core is a pure subset of the .NET Framework. 对于Visual Studio 2015,我们的目标是确保.NET Core是.NET Framework的纯子集。 In other words, there wouldn't be any feature gaps. 换句话说,不会有任何功能差距。 After Visual Studio 2015 is released our expectation is that .NET Core will version faster than the .NET Framework. 在Visual Studio 2015发布之后,我们期望.NET Core的版本比.NET Framework更快。 This means that there will be points in time where a feature will only be available on the .NET Core based platforms. 这意味着只有在基于.NET Core的平台上才能使用某个功能的时间点。

Summary: 摘要:

The .NET Core platform is a new .NET stack that is optimized for open source development and agile delivery on NuGet. .NET Core平台是一个新的.NET堆栈,针对NuGet上的开源开发和敏捷交付进行了优化。 We're working with the Mono community to make it great on Windows, Linux and Mac, and Microsoft will support it on all three platforms. 我们正在与Mono社区合作,使其在Windows,Linux和Mac上表现出色,微软将在所有三个平台上支持它。

We're retaining the values that the .NET Framework brings to enterprise class development. 我们保留了.NET Framework为企业级开发带来的价值。 We'll offer .NET Core distributions that represent a set of NuGet packages that we tested and support together. 我们将提供.NET Core发行版,它们代表我们一起测试和支持的一组NuGet包。 Visual Studio remains your one- stop-shop for development. Visual Studio仍然是您开发的一站式商店。 Consuming NuGet packages that are part of a distribution doesn't require an internet connection. 消费属于分发的NuGet包不需要互联网连接。

Basically this can be thought as a .NET 4.6 with changed distribution model, which, simultaneously, is being in a process of becoming open source. 基本上,这可以被认为是具有改变的分发模型的.NET 4.6,同时,它正处于成为开源的过程中。


#5楼

from Microsoft's Website : 来自微软的网站 :

.NET Core refers to several technologies including .NET Core, ASP.NET Core and Entity Framework Core. .NET Core指的是几种技术,包括.NET Core,ASP.NET Core和Entity Framework Core。

These technologies are different than native .NET in that they run using CoreCLR runtime (used in Universal Windows Platform). 这些技术与本机.NET的不同之处在于它们使用CoreCLR运行时(在通用Windows平台中使用)运行。

As you mentioned in your question, .NET Core is not only open-source, but portable as well [runs on MacOS, Windows and Linux] 正如您在问题中提到的,.NET Core不仅是开源的,而且是可移植的[在MacOS,Windows和Linux上运行]

The internals of .NET Core are also optimised to not use different modules from its core library unless it is required by the application 除非应用程序需要,否则.NET Core的内部结构也经过优化,不会使用其核心库中的不同模块


#6楼

.NET Core is a new cross-platform implementation of .NET standards (ECMA 335) similar to Mono but done by Microsoft itself. .NET Core是.NET标准(ECMA 335)的新跨平台实现,类似于Mono,但由Microsoft自己完成。

See docs.microsoft.com 请参阅docs.microsoft.com

什么是“.NET Core”?相关推荐

  1. H.265 HD 和H.265 4K Video Encoder IP Core

    H.265 HD 和H.265 4K Video Encoder IP Core H.265 HD Video Encoder IP Core(H.265 HD Video/Audio Encoder ...

  2. NVIDIA深度学习Tensor Core性能解析(下)

    NVIDIA深度学习Tensor Core性能解析(下) DeepBench推理测试之RNN和Sparse GEMM DeepBench的最后一项推理测试是RNN和Sparse GEMM,虽然测试中可 ...

  3. NVIDIA深度学习Tensor Core性能解析(上)

    NVIDIA深度学习Tensor Core性能解析(上) 本篇将通过多项测试来考验Volta架构,利用各种深度学习框架来了解Tensor Core的性能. 很多时候,深度学习这样的新领域会让人难以理解 ...

  4. Tensor Core技术解析(上)

    Tensor Core技术解析(上) NVIDIA在SIGGRAPH 2018上正式发布了新一代GPU架构--Turing(图灵),黄仁勋称Turing架构是自2006年CUDA GPU发明以来最大的 ...

  5. 2021年大数据Spark(十八):Spark Core的RDD Checkpoint

    目录 RDD Checkpoint 引入 API 代码演示 总结:持久化和Checkpoint的区别 问题: 答案: 区别: RDD Checkpoint 引入 RDD 数据可以持久化,但是持久化/缓 ...

  6. .NET Core微服务之基于MassTransit实现数据最终一致性(Part 1)

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.预备知识:数据一致性 关于数据一致性的文章,园子里已经有很多了,如果你还不了解,那么可以通过以下的几篇文章去快速地了解了解,有个感性认 ...

  7. Asp.Net Core在线生成二维码

    前言: 原先用zxing Code写过基于Winfrom的批量生成二维码工具,以及单个生成二维码工具:批量生成二维码Gihub源代码 今天尝试用QRCoder 加 Asp.Net Core 写了一个在 ...

  8. .Net Core快速创建Windows服务

    1.新建.Net Core控制台程序,添加新建项Windows服务: 修改Progran.cs: class Program{static void Main(string[] args){Servi ...

  9. .net core 中的[FromBody]

    一.针对.net core中post类型的api注意的地方(前提是Controller上加[ApiController]特性).默认是这个. 1.如果客户端Content-Type是applicati ...

  10. PetaPoco - 轻量级高性能的ORM框架(支持.NET Core)

    我们都知道ORM全称叫做Object Relationship Mapper,也就是可以用object来map我们的db. 而且市面上的orm框架有很多,有重量级的Entity Framework,有 ...

最新文章

  1. 计算机社团部门职责,部门职责
  2. java简单的ID生成器
  3. 【 FPGA 】FIR 滤波器之多相抽取器(Polyphase Decimator)
  4. 监听Activity的生命周期的方式。
  5. 【UGV】Mec 麦轮版小车结合角度传感器实现直线行走示例
  6. 大三前端实习生2018总结
  7. SpringAop @AfterThrowing通知中获取异常信息并且在控制台打印
  8. 祖龙娱乐王远明:如何用UE4做出3A级材质和天气系统?
  9. 680. Valid Palindrome II
  10. hibernate by example 排除某些列
  11. javascript基础系列:字符串的常用方法
  12. 高分选手讲解:如何突破思维圈限,从NLP角度挖掘新的解题思路
  13. .net 任务调度 mysql_C#/.NET/.NET Core应用程序编程中实现定时任务调度的方法或者组件...
  14. php pdo mysql类源码_完整示例php+pdo实现的购物车类
  15. java学习(六)多线程 上
  16. Django折腾日记(django2.0)
  17. 关于STM32 __IO 的变量定义
  18. JavaScript判断日期时间差的实例代码
  19. 前端cookie 放到请求头_HTTP请求头:cookie cache
  20. 我用 140 行代码,带你看一场流星雨⭐

热门文章

  1. 你真的会用java注解吗?
  2. Glide使用OkHttp加载图片
  3. 第九周项目一-深复制体验(1)
  4. IOS开发笔记3-C语言基础复习
  5. PHP学习笔记-GD库与Jpgraph的使用
  6. PHP学习笔记-Cookie
  7. UIView及其分类的属性方法定义
  8. (0027)iOS 开发之调整导航条上BarButtonItem与屏幕边界的间距
  9. swift_004(Storyboard进行界面跳转及传值)
  10. CSS清除浮动_清除float浮动