集团主站
欢迎来到成都达内官方网站!达内—美国上市公司 亿元级外企IT培训企业!
成都it培训哪家好
成都it培训哪家好
全国服务监督电话:400-111-8989  |   联系客服   |
当前位置:主页 > 培训课程 > .NET >

成都.NET培训:.NET Core中的包、元包与框架

发布者: 成都达内     浏览次数:     发布时间:2017-04-20 15:23:23

.NET Core是一个由NuGet包组成的平台。一些产品受益于细粒度包的定义,也有一些受益于粗粒度包的定义。为了适应这种二重性,.NET Core平台被分为一组细粒度的包(package)以及一些被称为元...

  .NET Core是一个由NuGet包组成的平台。一些产品受益于细粒度包的定义,也有一些受益于粗粒度包的定义。为了适应这种二重性,.NET Core平台被分为一组细粒度的包(package)以及一些被称为元包(metapackage)的较粗粒度的包。

  每一个.NET Core包支持多个.NET运行时,它们代表着不同的框架。这些框架既包括传统的.NET Framework(如net4.6),也包含基于包的新框架,这些新框架建立了定义框架的新模型。这些基于包的框架完全由包定义而成,包与框架之间形成较强的关联关系。

  包

  .NET Core由一组包构成,这些包提供了基元类型、高级数据类型、应用程序组成类型和一些常见的实用工具。每一个包表示一个和包同名的程序集,如, System.Runtime包中含有System.Runtime.dll程序集。

  定义细粒度的包有如下好处:

  细粒度的包在开发、测试过程中与其它包的关联有限

  细粒度的包可以提供对不同操作系统和CPU的支持

  细粒度的包可以只依赖某个特定的库

  在发布应用时,未被引用的包不会成为应用的一部分,因此应用程序会有更小的体积

  有些细粒度包的优点只会在特定场景中表现出来。如,通常.NET Core 的所有包会在同一计划内提供对同一平台的支持。这种情况下,补丁会以小的单个更新包的形式发布和安装。由于这种小范围的变化,验证补丁是否可用所花费的时间,可以限制到对单个库的需求中。

  下面列出了.NET Core平台上的一些关键NuGet包:

  System.Runtime - 这是最基本的.NET Core包,包括Object, String, Array, Action 和IList.

  System.Collections - 表示一组常用泛型集合,包括List 和Dictionary.

  System.Net.Http - 用于HTTP通讯的类型,包括HttpClient 和HttpResponseMessage.

  System.IO.FileSystem -用于读写基于磁盘的本地或网络存储类型,包括File和Directory.

  System.Linq - 用于查询对象,包括including Enumerable 和ILookup.

  System.Reflection - 用于加载、检查、创建类型,包括Assembly, TypeInfo 和MethodInfo.

  通常,与逐个添加项目所需要的包相比,使用元包的方式来添加项目依赖更加容易,因为元包是一组常用包的集合。当你需要某个单独的包时,你可以使用下面例子中添加对System.Runtime引用的方式来添加对它的引用。

  netstandard1.6

  元包

  元包是一个NuGet包约定,用于描述一组放在一起有意义的包。 这些包是通过依赖项来被描述的。可以通过为这组包指定一个框架来建立一个框架(这话拗口,原文:They can optionally establish a framework for this set of packages by specifying a framework.)。

  以前版本的.NET Core工具(project.json和基于csproj的工具)在默认情况下会指定一个框架和元包 。不过,现在,元包被目标框架隐式引用,这样一来每个元包都和目标框架关联在一起。

  例如,netstandard1.6框架引用了NetStandard.Library 1.6.0元包。类似的,netcoreapp1.1框架引用了Microsoft.NETCore.App 1,1.0元包。更过信息,参考.NET Core SDK中元包的隐式引用。

  指定一个框架会隐式实现对元包引用,同时也会添加对元包依赖项的引用。这样,元包中的所有类库都能够被IDE智能感知,也可以被打包到你的应用中。

  使用元包有以下好处:

  在引用大量细粒度包时有更好的用户体验

  定义了一组经过测试且运行良好的包(包括指定的各种版本)

  .NET 标准库元包(.NET Standard Library metapackage)

  NETStandard.Library - 表示.NET标准类库的一部分。所有的.NET 实现(如,.NET Framework、.NET Core 和 Mono)都支持.NET 标准类库。NETStandard.Library用于建立netstandard框架。

  .NET Core核心元包有:

  Microsoft.NETCore.App - .NET Core发行版本类库的一部分,用于建立 .NETCoreApp框架,它依赖NETStandard.Library。

  Microsoft.NETCore.Portable.Compatibility - 一组基于mscorlib的运行于.NET Core上的可移植类库

  框架

  每个.NET Core包都支持多个运行时框架。这些框架描述一组可用于你所指定的框架的API(和一些其它特征)。当加入新的API时,这些框架的版本号也会发生相应的变化。

  例如, System.IO.FileSystem 支持以下框架:

  .NETFramework,Version=4.6

  .NETStandard,Version=1.3

  6 Xamarin platforms (如, xamarinios10)

  这些运行时框架使用不同的方式进行框架的定义,对比学习前两个框架会大有裨益。

  .NETFramework,Version=4.6框架表示可用于.NET Framework 4.6之上的API。

  我们可以编写基于.NET Framework 4.6引用程序集的库,并以NuGet 包的方式在 net46 lib 文件夹中发布这些库。这些库可用于那些基于或兼容.NET Framework 4.6的应用。这是所有框架的传统工作方式。

  .NETStandard,Version=1.3是一个基于包的框架。它依靠包来定义目标框架以及公开该框架的API。

  基于包的框架

  包与框架之间是双向关系。首先为一个给定框架定义可用的API,如netstandard1.3。用于netstandard1.3框架(或兼容框架,如netstandard1.0)的软件包定义该框架上可用的API。

  这看起来像是循环定义,但不是。基于包的框架上的API由包来定义,框架本身并不定义任何API。

  其次,是这种双向关系中的第二部分,资产选择(asset selection)。包可以包含用于多框架的资产。对于一组包或者元包的引用,框架需要决定选择哪种资产,如net46或netstandard1.3。选择正确的资产是很重要的。如,一个net46资产可能不兼容.NET Framework 4.0 或 .NET Core 1.0。

  上图描述了这种双向关系。API指定并定义框架。框架选择资产。资产提供具体的API实现。

  .NET Core平台上使用的两个主要的基于包的框架是:

  netstandard

  netcoreapp

  成都it培训哪家好,当然是成都达内培训,成都达内是一家专业的程序员培训机构,专注于成都嵌入式培训,成都web前端培训,成都.NET培训,成都大数据培训,成都会计实操培训,成都IT培训,成都编程培训等IT培训,专业的成都软件培训机构,专业师资授课,真实项目实战、零首付、低押金、名企就业。

(责任编辑:成都达内)
最新开班
  • 成都Java培训班
    免费试听名额发放中...
  • 成都C++培训班
    免费试听名额发放中...
  • 成都PHP培训班
    免费试听名额发放中...
  • 成都网络工程培训班
    免费试听名额发放中...
  • 成都Unity3D培训班
    免费试听名额发放中...
  • 成都大数据培训班
    免费试听名额发放中...
  • 成都uid培训班
    免费试听名额发放中...
  • 成都会计培训班
    免费试听名额发放中...
  • 成都Python培训班
    免费试听名额发放中...
  • 成都嵌入式培训班
    免费试听名额发放中...
  • 成都web培训班
    免费试听名额发放中...
  • 成都软件测试培训班
    免费试听名额发放中...
在线留言
提交

校区地址:成都市锦江区东大街紫东楼端35号明宇金融广场19楼1906室

联系电话:400-111-8989

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市高新区奥克斯广场蜀锦路209号一楼商铺

联系电话:400-111-8989

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都锦江区东大街芷泉街229号东方广场C座3楼303

联系电话:400-111-8989

公交路线:芷泉街(188路;115路;515路;236路;505路;501路;84路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市武侯区佳灵路3号红牌楼广场2号写字楼11楼1115号

联系电话:400-111-8989

公交路线:红牌楼东(11路;92路;100路;111路;139路;g28路;快速公交K1/K2) 地铁路线:红牌楼站(地铁3号线)

校区地址:成都市锦江区红星路二段70号四川日报大厦502-2

联系电话:400-111-8989

公交路线:市二医院站(6路;49路;102路;5路;37路;g92路;) 地铁路线:地铁市二医院(地铁3号线)

校区地址:成都市锦江区东大街芷泉段229号东方广场C座16层

联系电话:400-111-8989

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:四川省成都市武侯区高新科技孵化园9号园区E座7楼

联系电话:400-111-8989

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

了解达内动态
关注成都达内教育公众号

首页 | 关于达内 | 课程中心 | 专家师资 | 视频教程 | 学员空间 | 校企合作 | 新闻资讯 | 就业指导 | 网站地图

2016-2025 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56 蜀ICP备18021046号-3