最近看.NET的文档,发现有很多概念不是很了解,问问大佬们:
1、C#、.NET、.NET Framwork 、.NET Standard 、.NET Core 的关系是什么,虽然文档有介绍,但是很不形象,有很多概念不是很明白,不够通俗易懂。
2、文档上说.NET Standard是一个标准规范,定义了一大批api,那我就想知道实现这些接口的项目是什么,是不是现在开发人员也可以实现这些接口。
3、在.NET Standard 出来之前,有个可移植类库(PCL),这个可移植类库如何理解,文档上说和.NET Standard类似,也是一些列接口,只不过是Microsoft平台的api交集。那么实现PCL的接口的项目有哪些呢。
如果没有到达一定的高度,要去理解这些是困难的,等你到了那个层次,就一切都理解了。不懂的话就先学会去慢慢理解表面的东西。比如,c#是一门编程语言,是可以独立出来的,.NET就是一个平台了。
说下我自己的理解。
C#是一种语言,有自己的语法和解析规则。.NET是一个通用的开发平台,这个是一个比较宽泛的表达方式,这个平台下面有很多的产品,包括一系列.NET开头的东西。在这个平台上支持C#语言开发,也支持VB等其他语言开发。
.NET Framework是.Net产品运行所需要的环境。这个只支持在windows系统上运行。所以这就是 长久以来.NET不能实现跨平台说法的来源。
微软为了实现跨平台的功能,推出了.NET Core,它也是一个运行环境。支持在任何平台上安装运行。.NET在上面运行从而实现跨平台。
.NET Standard是一组通用API规范,可以理解成接口规范。实现这个接口规范就可以在framework或者.net core上通用运行(它有版本限制)。举个例子我们开发一个通用的功能组件。我们的产品有framework开发的,也有.net core开发的,不可能每套都维护一个版本。那么基于standard,开发一个版本的组件,从而实现各个产品都能引用。