最近在一个官方的.NET Framework博客中宣布.NET Core是开源的.具有讽刺意味的是,作者提到将在下一篇文章中解释什么 .NET Core.另一个宣布帖子中提到了更多细节.
从提供的图表:

和文章本身,我会假设.NET Core(除了明显的东西,如开源)是完整的.NET的模块化重新实现.即框架组件在必要时加载,就像现在加载NuGet包一样.现在,ASP.NET 5是已经实现的模块之一.我对.NET Core的理解是否正确?也许我错过了什么?
我发现最近的文章我发现既短又非常好.它涵盖了.NET Standard,.NET Core和.NET Framework及其关系.强烈推荐它.
Cod*_*ter 143
来自.NET博客宣布.NET 2015预览:.NET的新时代:
.NET Core有两个主要组件.它包含一个与.NET Framework CLR相同的代码库构建的小型运行时..NET Core运行时包含相同的GC和JIT(RyuJIT),但不包括应用程序域或代码访问安全性等功能.运行时通过NuGet提供,作为[ASP.NET Core]包的一部分.
.NET Core还包括基类库.这些库与.NET Framework类库的代码大致相同,但已经考虑(删除依赖项)以使我们能够发送一组较小的库.这些库在NuGet.org上以System.*NuGet包的形式提供.
和:
[ASP.NET Core]是第一个采用.NET Core的工作负载.[ASP.NET Core]在.NET Framework和.NET Core上运行.[ASP.NET Core]的一个关键值是它可以在同一台机器上的多个版本的[.NET Core]上运行.网站A和网站B可以在同一台计算机上运行两个不同版本的.NET Core,也可以使用相同的版本.
简而言之:首先,有一个Microsoft .NET Framework,它包含一个执行应用程序和库代码的运行时,以及一个几乎完全记录的 标准类库.
运行时是公共语言运行库,它实现公共语言基础结构,与JIT编译器一起运行CIL(以前称为MSIL)字节码.
鉴于其历史和目的,微软的.NET规范和实现非常以Windows和IIS为中心并且"胖".存在较少的库,名称空间和类型的变体,但它们中很少用于Web或桌面开发,或者从法律角度来看是很麻烦的.
因此,为了提供可以在非Windows机器上运行的非Microsoft版.NET,必须开发一种替代方案.不仅必须为此移植运行时,而且整个框架类库也要被广泛采用.最重要的是,要完全独立于Microsoft,需要使用最常用语言的编译器.
Mono是运行时的唯一替代实现之一,它运行在除Windows之外的各种操作系统上, 几乎所有来自.NET 4.5的Framework类库以及VB和C#编译器的命名空间.
输入.NET Core:运行时的开源实现,以及最小的基类库.所有附加功能都通过NuGet包提供,使用应用程序本身部署特定的运行时,框架库和第三方包.
ASP.NET Core是MVC和WebAPI的新版本,与瘦HTTP服务器抽象捆绑在一起,可以在.NET Core运行时运行 - 但也可以在.NET Framework上运行.
Han*_*ant 78
它是.NET Framework的一个子集,以Compact Framework版本开始.进入Silverlight,Windows Store和Windows Phone.专注于保持部署小,适合快速下载和具有有限存储功能的设备.并且更容易在非Windows平台上运行,当然它被选为开源版本的原因.省略了CLR的"困难"和"昂贵"部分以及基类库.
否则,当你定位这样一个框架版本时总是很容易识别,很多东西都会丢失.您将使用一组不同的引用程序集,这些程序集仅显示运行时支持的内容.存储在C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETCore目录中的计算机上.
更新:在.NETCore 2.0版本发布之后,我看到了一些具有代表性的数字,这些数字提供了不错的见解.在过去的两年里,他们一直在努力将框架apis移植到.NETCore..NETCore 1.0最初支持13,000个apis..NETCore 2.0增加了20,000 api,使总数增加到32,000,并允许大约70%的现有Nuget包被移植.有一组api过于强调Windows,很容易移植到Linux和MacOS.在最近发布的Windows兼容包中,它增加了另外20,000个api.
Pet*_*lin 44
我发现最近的文章我发现既短又非常好.它涵盖了.NET Standard,.NET Core和.NET Framework及其关系.强烈推荐它.不幸的是没有时间适应并把它放在这里.
原始答案内容如下:
因此,根据有关该主题的最新官方条目,我在这里看到一些关键点:
.NET Core本质上是.NET Framework的一个分支,其实现也围绕分解问题进行了优化.
我们认为.NET Core并不特定于.NET Native或ASP.NET 5 - BCL和运行时是通用的,并且设计为模块化的.因此,它构成了所有未来.NET垂直的基础.
所以.NET Native和ASP.NET 5只是新框架配置的测试"主题",部分原因可能是因为它们完全不同:

看,他们甚至需要单独的低级别,但BCL的主要部分仍然很常见:
我们认为.NET Core并不特定于.NET Native或ASP.NET 5 - BCL和运行时是通用的,并且设计为模块化的.因此,它构成了所有未来.NET垂直的基础.
即顶部的洋红色矩形将与新的App模型大量添加,但基础将保持常见.
Nuget部署:
与.NET Framework相比,.NET Core平台将作为一组NuGet包提供.我们已经确定了NuGet,因为那是图书馆生态系统的主要部分.
与当前框架的关系:
对于Visual Studio 2015,我们的目标是确保.NET Core是.NET Framework的纯子集.换句话说,不会有任何功能差距.在Visual Studio 2015发布之后,我们期望.NET Core的版本比.NET Framework更快.这意味着只有在基于.NET Core的平台上才能使用某个功能的时间点.
摘要:
.NET Core平台是一个新的.NET堆栈,针对NuGet上的开源开发和敏捷交付进行了优化.我们正在与Mono社区合作,使其在Windows,Linux和Mac上表现出色,微软将在所有三个平台上支持它.
我们保留了.NET Framework为企业级开发带来的价值.我们将提供.NET Core发行版,它们代表我们一起测试和支持的一组NuGet包.Visual Studio仍然是您开发的一站式商店.消费属于分发的NuGet包不需要互联网连接.
基本上,这可以被认为是具有改变的分发模型的.NET 4.6,同时,它正处于成为开源的过程中.
Set*_*Set 19
当前的文档很好地解释了什么是.NET Core,使用的区域等等.以下特性最好定义.NET Core:
灵活部署:可以包含在您的应用程序中,也可以安装在并行用户或机器范围内.
跨平台:在Windows,macOS和Linux上运行; 可以移植到其他操作系统.受支持的操作系统(OS),CPU和应用程序方案将随着时间的推移而增长,由Microsoft,其他公司和个人提供.
命令行工具:可以在命令行中执行所有产品方案.
兼容:.NET Core通过.NET标准库与.NET Framework,Xamarin和Mono兼容.
开源:.NET Core平台是开源的,使用MIT和Apache 2许可证.文档根据CC-BY许可..NET Core是一个.NET Foundation项目.
Microsoft支持:根据.NET Core Support,Microsoft支持.NET Core
以下是.NET Core包含的内容:
.NET运行时,提供类型系统,程序集加载,垃圾收集器,本机互操作和其他基本服务.
一组框架库,提供原始数据类型,应用程序组合类型和基本实用程序.
一组SDK工具和语言编译器,支持.NET Core SDK中提供的基础开发人员体验.
'dotnet'应用主机,用于启动.NET Core应用.它选择运行时并托管运行时,提供程序集加载策略并启动应用程序.同样的主机也用于以相同的方式启动SDK工具.
Man*_*ain 15
Microsoft认识到未来的Web开源范例,并决定将.NET打开到其他操作系统.NET核心是用于Mac和Linux的.NET Framework.它是一个"轻量级".NET Framework,因此缺少某些功能/库.在Windows上,我仍然会运行.NET Framework/VS2015..NET Core对开源世界更友好,如nodejs,npm,yeoman,docker等.您可以使用Visual Studio Code + .NET core在Mac或Linux上开发成熟的网站和RESTful API,这在以前是不可能的.因此,如果您喜欢mac或Ubuntu,并且您是.NET开发人员,那么请继续进行设置.对于Mono vs. .NET Core,Mono是作为Linux的.NET Framework开发的,现在由Microsoft(名为Xamarin的公司)收购并用于移动开发.最终,Microsoft可能会将Mono合并/迁移到.NET核心.我现在不担心Mono.
joy*_*ym8 10
正在尝试在VS2017中创建一个新项目(最近从2015年升级),并注意到项目类型的新选择.他们是新的,或者自从我开始一个新项目以来已经有一段时间了!! :)
来到这个文档链接,发现它非常有用,所以分享.子弹的细节也在文章中提供.只需在这里发布项目符号:
您应该在以下情况下将.NET Core用于服务器应用程序:
Run Code Online (Sandbox Code Playgroud)You have cross-platform needs. You are targeting microservices. You are using Docker containers. You need high performance and scalable systems. You need side by side of .NET versions by application.您应该在以下情况下将.NET Framework用于服务器应用程序:
Run Code Online (Sandbox Code Playgroud)Your application currently uses .NET Framework (recommendation is to extend instead of migrating) You need to use third-party .NET libraries or NuGet packages not available for .NET Core. You need to use .NET technologies that are not available for .NET Core. You need to use a platform that doesn’t support .NET Core.
.NET Core 是一个适用于 Windows、Linux 和 macOS 操作系统的免费开源托管计算机软件框架。它是 .NET Framework 的开源、跨平台继承者。
Windows、Linux 和 macOS 支持 .NET Core 应用程序。简而言之,.NET Core 与.NET 框架类似,但它是跨平台的,即它允许.NET 应用程序在Windows、Linux 和MacOS 上运行。.NET框架应用程序只能在Windows系统上运行。因此.NET Framework和.NET Core之间的基本区别在于.NET Core是跨平台的,而.NET Framework仅运行在Windows上。
此外,.NET Core 内置了微软的依赖注入,您不必使用第三方软件/DLL 文件进行依赖注入。
| 归档时间: |
|
| 查看次数: |
118171 次 |
| 最近记录: |