微软.NET、.NET Framework和.NET Core联系和区别-LMLPHP

我是荔园微风,作为一名在IT界整整25年的老兵,看到不少初学者在学习编程语言的过程中如此的痛苦,我决定做点什么,我小时候喜欢看小人书(连环画),在那个没有电视、没有手机的年代,这是为数不多的课余生活方式这一。我画的不好,但是如果能帮大家理解编程语言,那我的目的就达到了,希望初学者少走弯路。下面我们就开始吧。

.NET 是一个开发平台,或者叫开发者平台。使用 .NET 你可以创建不同类型的应用程序,使用多种开发语言、编辑器和工具库创建网页、手机、桌面以及游戏等应用。其核心特点是:跨平台。

微软.NET、.NET Framework和.NET Core联系和区别-LMLPHP

1.语言和平台

简单说,开发平台就是为应用软件开发提供的一个工作平台。.NET 开发平台主要包括公共语言运行时(CLR)和框架类库(FCL)。其中 FCL 包含基础类库(BCL)和 ASP.NET (Core)、ADO.NET、WPF、WinForm 等框架类库。

经常会听到有人拿 .NET 与 Java 对应。严格来说是不对的,与 Java 对应的是 C#,与 JVM 对应的是 CLR,与 JDK 对应的是 .NET Framework/.NET Core/.NET SDK。JVM 上有多种语言,CLR 上也有多种语言。比如 JVM 上有 Java、Scala、JPython 等,CLR 上有 C#、F#、IronPython 等。

有人把 .NET 等同于 .NET Framework 或 .NET Core。准确的来说也是不对的,.NET 是开发平台,.NET Framework 是在 .NET 平台上针对 Windows 系统实现的开发框架,.NET Core/.NET 是在 .NET 平台上实现的支持多操作系统的跨平台开发框架。

2.主要特点
前面说到了 .NET 的核心特点是跨平台。开源协议是最开放的 MIT 协议,允许在任何商业环境中使用。它的跨平台特性使得它可以它可以运行于任何环境,如 Windows、Linux、macOS、iOS、watchOS 和 Docker 等。

3.多语言支持
你可以使用多种语言来编写 .NET 应用程序,主流的语言有:C#, F# 和 Visual Basic。

4.多开发工具支持
你可以使用多种工具来进行 .NET 编程,有强大的 Visual Studio、轻小的 Visual Studio Code 和 JetBrains 出品的 Rider 等。

Visual Studio:Windows 上功能齐全的集成开发环境(IDE),用于构建各种类型的 .NET 应用程序。还有专为 MacOS 打造的兄弟款:Visual Studio for Mac。
Visual Studio Code:可在 Linux、macOS 或 Windows 上开发,建立跨平台网站和服务,需安装 C# 扩展。
JetBrains Rider:JetBrains 出品,体验也不错,它使用的是 IntelliJ 和 ReSharper 技术构建的跨平台 .NET IDE。
OmniSharp: 它使 Atom、Sublime Text、Emacs 和 Vim 等编辑器支持跨平台 .NET 开发。

5。分水岭
就.NET的发展来说,2016年是一个分水岭,首先.NET不再是闭源的、收费的、也不是只能在 Windows 上运行。.NET已经完全开源了。再这之后,性能方面也发生很大改变,从 .NET Core 成熟后,其性能和 Go 旗鼓相当。在 Web 综合性能方面,其性能高出 Node.js 的 7 -10倍多。自 .NET 开源以来,参与建设 .NET 平台的有微软自己的团队,也有来自世界各地的 6 万多名开发者和 3700 多家公司。另外,早在 2014 年,微软就成立了 .NET 基金会,有微软、Google、三星等大厂扶持,用来推进 .NET 平台的发展。.NET 热情拥抱了开源和跨平台,开发市场也在热情地拥抱 .NET,越来越多的开发人员和公司参与到了 .NET 的大家庭中。

微软.NET、.NET Framework和.NET Core联系和区别-LMLPHP

微软.NET、.NET Framework和.NET Core联系和区别-LMLPHP

微软.NET、.NET Framework和.NET Core联系和区别-LMLPHP

微软.NET、.NET Framework和.NET Core联系和区别-LMLPHP

下面详细说说

.NET平台是Microsoft在20世纪末为了迎接互联网的挑战而推出的应用程序平台。经过近年来的发展,它如今几乎可以在任何硬件平台上发挥作用,服务器、台式机、移动设备、游戏机、虚拟现实、增强现实环境、手表,甚至诸如Raspberri-Pi等类似的小型嵌入式系统都有它的身影。.NET可以用来构建和运行Windows应用程序、Web应用程序、Azure云应用程序、移动App应用程序、Unity游戏等。它建立在开放体系结构基础之上,集Microsoft在软件领域的主要技术成就于一身,如图:

微软.NET、.NET Framework和.NET Core联系和区别-LMLPHP


.NET技术的核心是.NET Framework。它为.NET平台下的应用程序的运行提供基本框架,如果把Windows操作系统比作一栋摩天大楼的地基,.NET Framework就是摩天大楼中由钢筋和混凝土搭成的框架。

为了实现跨平台运行的目标,Microsoft推出了.NET.NET Core,其核心.NET.NET Core Framework是参考.NET.NET Framework重新开发的.NET实现。它支持Windows、macOS、Linux等操作系统,可以用于嵌入式或物联网解决方案中。为了使.NET应用程序能在诸如智能手机之类的设备之上运行,微软启动了mono项目。该项目可以看作是.NET.NET Framework的开源实现。

Visual Studio.NET是.NET平台的主要开发工具,由于.NET平台是建立在开放体系结构之上的,所以应用程序开发人员也可以使用其他开发工具。


.NET Framework具有两个重要组件:除了公共语言运行时CLR(Common Language Runtime)和BCL(Base Class Lib)基础类库,还包括ADO.NET.NETASP.NET.NET、WCF、Azure、Workflow框架等。


公共语言运行时的CLR是.NET.NET Framework的基础,是应用程序与操作系统之间的中间人。它为应用程序提供内存管理、线程管理和远程处理等核心服务。在.NET平台上,应用程序无论使用何种语言编写,在编译时都会被语言编译器编译成MSIL(Microsoft Internediate Language,微软中间代码语言),在运行应用程序时CLR自动启用JIT(Just In Time)编译器把MSIL再次编译成操作系统能够识别的本地机器语言代码(简称本地代码),然后运行并返回运行结果,如图:

微软.NET、.NET Framework和.NET Core联系和区别-LMLPHP


因此,CLR是所有.NET应用程序的托管环境。这种运行在.NET之上的应用程序被称为托管应用程序,而传统的直接在操作系统基础之中运行的应用程序则被称为非托管应用程序。


BCL类库是一个综合性的面向对象的可用重用类型集合,包括集合类、文件系统处理类、XML处理类、网络通信接口类、异步Task类等。利用BCL类库,开发人员可以开发多种应用程序,包括传统的命令行、图形用户界面(Grapical User Interface,GUI)应用程序、Web应用程序等。


ADO.NET是.NET.NET Framework提供的微软新一代的面向对象的数据处理技术,利用它可以简便、快捷地开发数据库应用程序。


Asp.NET是.NET.NET Framework提供的全新的Web应用程序开发技术,利用它开发Web应用程序,如同开发Windows应用程序一样简单。


WCF(Windows Communication Foundation)、WPF(Windows Presentation Foundation)以及Silverlight等技术是微软推出的全新的.NET技术。WCF可以理解为Windows通信接口,其整合了TCP/IP、XML、SOAP、JSON等技术,简化了XML Web服务的设计与实现。WPF为用户界面、2D/3D图形、文档和媒体提供了统一的描述和操作方法。Silverlight为开发具有专业图形、音频和视频处理的Web应用程序提供了全新的解决方案。


.NET Framework的优点
.NET Framework的最大特色就在于它为应用程序开发人员提供了一个真正与平台无关的开发环境。
(1)基于Web的标准

.NET技术完全支持现有的Internet技术,包括:HTML(Hyper Text Markup Language,超文本标记语言);HTTP(Hyper Text Transfer Protocol,超文本传输协议);XML(Extensible Markup Language,可扩展标记语言);SOAP(Simple Object Access Protocal,简单对象协议);XSLT(Extensible Stylesheet Language Transformation,可扩展样式表语言转换);XPath(XML Path Languang,XML路径语言);JSON(Javascript Object Notation,Javascript对象表示方法);以及其他Web标准

(2)使用统一的应用程序模型

.NET Framework类库。.NET Framework为Windows应用程序、Web应用程序、云计算服务、跨平台的智能手机应用提供了统一的应用程序模型,因此同一段代码可被这些应用程序无障碍地使用。


(3)便于开发人员使用

在.NET.NET Framework中,代码被组织在不同的命名空间和类中,而命名空间采用树形结构,以便开发人员引用。开发人员若想调用.NET.NET Framework类库的类,则只需将该类属性命名空间添加到引用解决方案中。


(4)可扩展类

.NET Framework提供了通用类型系统,它根据面向对象的思想把一个命名空间或类中代码的实现细节隐藏,开发人员可以通过继承来访问类库中的类,甚至于构建自己的类库。

.Net Framework第一个版本发布于2002年,.Net Core第一个版本在2016年推出,在这其中,有很多语言被淘汰了,也有不少新兴的语言涌现,微软针对市场变化,推出了.Net Core。而至今,微软已经推出了.Net 6,实际上就是.Net Core 3.x的下一代,命名为.Net 6,是为了与.Net Framework 4.x分离开来。.Net Core最大的特征就是以主流的web服务为主,以及一改以往的诟病,开放源代码,并实现跨平台。

.Net Core的优点


.Net Core的与.Net Framework对比,具有以下几个优势。

跨平台。可以在window、Linux、macOS平台上运行;跨平台这一点一直是.Net Framework的痛点,尤其是在被java等各种语言抢占了市场后,.Net就被抨击不能在Linux平台上运行。

性能强化;.Net Core做了性能优化,在各方面的测试中,都能体现出性能的优化。

代码开源;如今的.Net Core源代码开源,这又是一改以往.Net给人不开源的封闭印象。

运行自托管;既然是跨平台了,部署方法也不再依赖iis,通过装sdk,然后可以直接运行部署好的程序。

ASP.NET Core 的优点

生成 Web UI 和 Web API 的统一场景。针对可测试性进行构建。Razor Pages 可以使基于页面的编码方式更简单高效。Blazor 允许你在浏览器中使用 C# 和 JavaScript。 共享全部使用 .NET 编写的服务器端和客户端应用逻辑。能够在 Windows、macOS 和 Linux 上进行开发和运行。开放源代码和以社区为中心。集成新式客户端框架和开发工作流。支持使用 gRPC 托管远程过程调用 (RPC)。基于环境的云就绪配置系统。内置依赖项注入。轻型的高性能模块化 HTTP 请求管道。
能够托管于以下各项:Kestrel、IIS、HTTP.sys、Nginx、Apache、Docker、并行版本控制。简化新式 Web 开发的工具。

.Net Core是做出了改变,在配置上和.Net Framework肯定有区别。但主要使用的框架像mvc、webapi框架都有,.Net Core在开发新的api时,使用方式也倾向于.Net Framework的方式。可以说,Framework开发者在初次使用Core会有些门槛,但上手起来还是挺快的。
 

作者简介:荔园微风,1981年生,高级工程师,浙大工学硕士,软件工程项目主管,做过程序员、软件设计师、系统架构师,早期的Windows程序员,Visual Studio忠实用户,C/C++使用者,是一位在计算机界学习、拼搏、奋斗了25年的老将,经历了UNIX时代、桌面WIN32时代、Web应用时代、云计算时代、手机安卓时代、大数据时代、ICT时代、AI深度学习时代、智能机器时代,我不知道未来还会有什么时代,只记得这一路走来,充满着艰辛与收获,愿同大家一起走下去,充满希望的走下去。

01-16 07:04