包、元包和框架

.NET core 是一种由NuGet包(package)组成的平台。

包(package):代表着单独的同名程序集。例如:System.Runtime这个包就包含了System.Runtime.dll程序集。
重要的包
System.Runtime 基础包
System.Collections 泛型集合
System.Net.Http 用于HTTP网络通信
System.IO.FileSystem 读写磁盘
System.Linq 查询对象
System.Reflection 加载、检查和激活类型
元包:元包是指通常配合在一起使用的一组包。 以某个框架为目标以及隐式引用元包,这实际上是添加了对元包中每一个独立包的引用依赖。
使用元包具有以下好处:
1.在引用大量细粒度包方面,提供了一种方便的用户体验。
2.定义了一组经过充分测试且运行良好的包(包括指定的各种版本)。
.NET Standard 元包为:
NETStandard.Library - 描述了属于“.NET Standard”一部分的各种库。 适用于所有支持 .NET Standard 的 .NET 实现(例如,.NET Framework、.NET Core 和 Mono)。 也就是“netstandard”框架。
重要的 .NET Core 元包有:
Microsoft.NETCore.App - 描述了属于 .NET Core 发行版的部分库。
Microsoft.AspNetCore.All - 包含来自 ASP.NET Core、Entity Framework Core 以及 ASP.NET Core 和 Entity Framework Core 使用的内部和第三方依赖项的所有受支持包。
Microsoft.NETCore.Portable.Compatibility - 一组兼容外观,使基于 mscorlib 的可移植类库(PCL) 得以在 .Net Core上运行。

框架:每一个 .Net Core 包都支持一组框架,在框架文件夹中进行声明。
传统框架和基于包的框架的区别:传统的框架是事先定义好的一个整体,而基于包的框架,则可以对不同的包自由组合。
基于包的框架:框架和包之间的关系是双向的。框架的API定义是来自于包的,框架本身并不定义任何API。
包、元包和框架_第1张图片
你可以在上图中看到这种关系,API选择框架作为目标,并且API定义了框架,而框架用于资产选择,资产实现了API。
框架定义的结束之处,正是消费开始的地方。可以这么理解,框架的实际实现取决于你引用的东西,可能你并不会引用所有的包,所以你所依赖的包是官方框架的全部包的一个子集。
在.Net Core基础之上,基于包的框架主要有两个:
1.netstandard
2.netcoreapp

包、元包和框架之间的关系:
包是最小单位,元包是一组包,官方或第三方用元包定义了框架的可用内容(API)。
框架是虚的,可以有多种实现它的方式,如.Net Framework 4.6、.Net Core 2.0和Mono等。
每个包可以设置一组支持的框架。

你可能感兴趣的:(.net,core)