AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

.Net Core 及.Net Standard 主要概念回顾

  • 2016-10-09
  • 本文字数:1188 字

    阅读完需:约 4 分钟

在.Net Core 之前,选择编译目标是一个相对简单的操作。现在,开发人员面临多种可能,选择一个目标不再那么显而易见了。要想对.Net Core 有一个全面的了解,就要了解两个主要的概念:“目标框架别名(Target Framework Moniker)”和.Net Standard。

目标框架别名(TFM)

目标框架别名是.NET Core 中应用程序所针对的框架类型 + 版本号的 ID。我们可以把别名分成两个不同的类型:跨平台的目标.Net Standard 和平台实现,如.Net 4.6、.Net Core 1.0 和 Xamarin。

.Net Standard

.Net Standard 库是.Net Core 可移植性的核心。其目的是定义标准的 API 集。这些 API,如集合、线程、反射,是由.Net Core、.Net 4.5、Xamarin 和 Mono 等平台实现的。它们是开发人员用来构建自己的库和应用程序的基本构建块。

从 1.0 到 2.0,.Net Standard 的每个版本都定义了一组特定的库。下面的代码直观地展示了标准库和平台之间的关系

复制代码
interface INetStandard10
{
void Primitives();
void Reflection();
void Tasks();
void Collections();
void Linq();
}
interface INetStandard11 : INetStandard10
{
void ConcurrentCollections();
void InteropServices();
}
interface INetFramework45 : INetStandard11
{
// 特定于平台的 API
void AppDomain();
void Xml();
void Drawing();
void SystemWeb();
void WPF();
void WindowsForms();
void WCF();
}

CoreFx GitHub 库提供了所有 API 的列表及其相关的 netstandard 版本。

框架 / 运行时别名

除 netstandard 之外的别名是可以让应用程序在其中运行的、实际的运行时环境。对于新应用程序,常用的别名如下:

  • .NET Core - netcoreapp
  • .NET Framework - net
  • Universal Windows Platform - uap
  • Xamarin IOs - xamarinios
  • Mono Android - monoandroid

下面是一个简单的平台选择指南:

应用开发人员:编码应以 netcoreapp1.0、uap10.0、net452、xamarinios 等 TFM 为目标平台;

包 / 库作者:尽量以 netstandard 的最低版本为目标,那样可以在所有支持那个 netstandard 版本以及更高版本的平台上运行。

.Net Core 和 netcoreapp1.0 比较

虽然表面上看起来相似,但.Net Core 和 netcoreapp1.0 的意思完全不同。.Net Core 这个叫法中没有版本号,通常用于描述实现.Net 模块化、解决多个平台之间二进制兼容性问题的总体方案。但是,netcoreapp1.0 有更具体的意义。它是可以在 Windows、Mac OS 和 Linux 上运行的跨平台运行时的别名。简而言之,.Net Core 既可以指跨平台的方案,也可以指跨平台的运行时,这要视情况而定。

关于这一点,一个具体的应用场景是从 Asp.Net 迁移到 Asp.Net Core 时依赖项不支持.Net Core 的问题。如果只是想以.Net Framework 为目标平台,则这种迁移是可能的。例如,这让你可以使用Asp.Net Core,但仍然以.Net 4.6 为目标平台

查看英文原文 Reviewing Key Concepts in .Net Core and .Net Standard

2016-10-09 19:004219
用户头像

发布了 1008 篇内容, 共 412.1 次阅读, 收获喜欢 346 次。

关注

评论

发布
暂无评论
发现更多内容

模块六作业

袁小芬

打破DPDK的误区: 数据面最流行的工具包DPDK,前世今生,未来

奔着腾讯去

Linux Kenel DPDK VPP

面试侃集合之PriorityBlockingQueue篇

码农参上

Priority Queue 8月日更

模块六作业

king

系统对接阿里云短信接口(Java开发实践)

Python研究者

8月日更

高薪offer有什么秘籍,不妨来此观看

hanaper

Filecoin大涨:一文帮你了解filecoin挖矿!

区块链 分布式存储 IPFS filecoin挖矿 filecoin矿机

网络攻防学习笔记 Day119

穿过生命散发芬芳

网络安全 8月日更

Python代码阅读(第20篇): 展开嵌套列表2

Felix

Python 编程 Code Programing 阅读代码

工具库用久了,你还会原生操作 Cookie 吗?

编程三昧

JavaScript 大前端 Cookie 8月日更

WebAssembly影响未来WEB技术

devpoint

Unity webassembly 8月日更

Go 泛型初体验

Rayjun

Go 语言

架构实战营 - 模块六作业

李东旭

「架构实战营」

架构实战营 - 模块六作业

Julian Chu

架构实战营

操作系统课程学习记录

春秋易简

操作系统

04. 实用主义的人工智能

Databri_AI

人工智能

罗马道ROW质押挖矿系统开发技术搭建

薇電13242772558

Spark :: 大画Spark(前传)—Spark的Dispatcher原理

dclar

spark 架构 源代码

身份验证绕过漏洞分析

网络安全学海

黑客 网络安全 信息安全 WEB安全 安全漏洞

关于我尝试抓包微信失败后想到的新方法居然和奥特曼有关~

4ye

Python TCP 爬虫 后端 8月日更

新书介绍 -- 《Redis核心原理与实践》

binecy

redis cluster 书籍 redis sentinel Redis Stream

要智能,得懂行,“要得”重庆

脑极体

故事篇:终于给老婆讲明白什么是logback了!

阿Q说代码

故事 实战 logback 8月日更

在线JSON转CSV,TSV工具

入门小站

工具

百度地图开发 - 在地图上检索数据 08

Andy阿辉

android Android 小菜鸟 Android端 8月日更

Vue进阶(八十一):Vue+element UI 实现“回到顶部”按钮组件

No Silver Bullet

Vue 8月日更

装修记

escray

生活记录 8月日更

Linux之file命令

入门小站

Linux

深入了解RocketMQ之Broker

邱学喆

broker 执行器 ConfigManager 处理器

「iOS独立开发」基于iCloud构建用户体系

LabLawliet

ios 8月日更 独立开发

设计创新:通过设计创新改造世界

石云升

设计思维 设计师 8月日更 设计创新

.Net Core及.Net Standard主要概念回顾_.NET_Pierre-Luc Maheu_InfoQ精选文章