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

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

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

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 。

Visual Studio:Windows 上功能齐全的集成开发环境(IDE),用于构建各种类型的 .NET 应用程序。还有专为 MacOS 打造的兄弟款:Visual Studio for Mac。
Visual Studio Code:可在 Linux、macOS 或 Windows 上开发,建立跨平台网站和服务,需安装 C# 扩展。
 

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


.NET技术的核心是.NET Framework。它为.NET平台下的应用程序的运行提供基本框架,如果把Windows操作系统比作大厦的地基,.NET Framework就是基于地基上面的钢筋混凝土框架。


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

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


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

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


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


BCL类库是一个综合性的面向对象的可用重用类型集合,包括集合类、文件系统处理类、XML处理类、网络通信接口类、异步Task类等。利用BCL类库,开发人员可以开发多种应用程序,包括传统的命令行、图形用户界面(Grapical User Interface,GUI)应用程序、Web应用程序等。ADO.NET是.NET Framework提供的微软新一代的面向对象的数据处理技术,利用它可以简便、快捷地开发数据库应用程序。ASP.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 Framework中,代码被组织在不同的命名空间和类中,而命名空间采用树形结构,以便开发人员引用。程序员如果要调用.NET Framework类库的类,则只需将该类属性命名空间添加到引用解决方案中。


(4)可扩展类

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

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

.NET Core的优点


.NET Core的与.NET Framework对比,具有以下几个优势。跨平台。可以在window、Linux、macOS平台上运行;跨平台这一点一直是.NET Framework的痛点,尤其是在被java等各种语言抢占了市场后,.NET就被抨击不能在Linux平台上运行。性能强化;.NETCore做了性能优化,在各方面的测试中,都能体现出性能的优化。代码开源;如今的.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的方式。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/629558.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

abap 将xstring转换成PDF展示

收到外围系统的xstring之后,如何在sap中将其打开呢 1.创建一个屏幕 2.绘制一个customer control 3.创建流逻辑 4.流逻辑如下: DATA: go_html_container TYPE REF TO cl_gui_custom_container, go_html_control TYPE REF TO cl_gui_html_viewer, lv_u…

rust跟我学三:文件时间属性获得方法

图为RUST吉祥物 大家好,我是get_local_info作者带剑书生,这里用一篇文章讲解get_local_info是怎样获得杀毒软件的病毒库时间的。 首先,先要了解get_local_info是什么? get_local_info是一个获取linux系统信息的rust三方库,并提供一些常用功能,目前版本0.2.4。详细介绍地址…

React初探:从环境搭建到Hooks应用全解析

React初探:从环境搭建到Hooks应用全解析 一、React介绍 1、React是什么 React是由Facebook开发的一款用于构建用户界面的JavaScript库。它主要用于构建单页面应用中的UI组件,通过组件化的方式让开发者能够更轻松地构建可维护且高效的用户界面。 Reac…

Git的基本使用

一、Git架构 二、Git基本使用 创建版本库 在工作空间的目录中,右键“Git Bash Here”打开git终端 在Git终端中输入git init指令,创建版本库(就是一个.git目录) 查看版本库状态 git status将工作空间的修改添加到暂存区 git …

【汽车销售数据】2015~2023年各厂商各车型的探索 数据分析可视化

数据处理的思路: 1 各表使用情况: 汽车分厂商每月销售表,该表主要分析展示top10销量的厂商销量、占比变化情况(柱形图、饼图);中国汽车分车型每月销售量表,该表主要分析展示top20销量的车型销…

基于springboot+uniapp的图书馆座位预约小程序(Java毕业设计)

大家好,我是DeBug,很高兴你能来阅读!作为一名热爱编程的程序员,我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里,我将会结合实际项目经验,分享编程技巧、最佳实践以及解决问题的方法。无论你是…

MongoDB-数据库文档操作(2)

任务描述 文档数据在 MongoDB 中的查询和删除。 相关知识 本文将教你掌握: 查询文档命令;删除文档命令。 查询文档 我们先插入文档到集合 stu1 : document([{ name:张小华, sex:男, age:20, phone:12356986594, hobbies:[打篮球,踢足球…

【RT-DETR有效改进】轻量级视觉变换器RepViT改进特征提取网络(轻量化网络)

前言 大家好,我是Snu77,这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进,内容持续更新,每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本,同时修改内容也支持Re…

【生态适配】亚信安慧AntDB数据库与契约锁完成兼容互认

日前,亚信安慧AntDB数据库与上海亘岩网络科技有限公司(简称:契约锁)研发的契约锁电子签章产品完成兼容互认。经过双方团队的严格测试,亚信安慧AntDB数据库与契约锁(V4)完全兼容,整体运行稳定高效…

Docker-数据卷网络

docker数据卷 docker volume ls #查看有哪些数据卷 docker volume inspect mysql-db #查看具体数据卷的元信息 docker container run -d --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORDTrue -v mysql-db:/var/lib/mysql mysql #会在docker 的卷下面新建一个mysqldb用于数据持久…

架构篇02-架构设计的历史背景

文章目录 机器语言(1940 年之前)汇编语言(20 世纪 40 年代)高级语言(20 世纪 50 年代)第一次软件危机与结构化程序设计(20 世纪 60 年代~20 世纪 70 年代)第二次软件危机与面向对象&…

使用Python+pygame实现贪吃蛇小游戏

使用Pythonpygame贪吃蛇小游戏 使用第三方库pygame,关于Python中pygame游戏模块的安装使用可见 https://blog.csdn.net/cnds123/article/details/119514520 给出两种实现。 第一种 运行效果如下: 游戏源码如下: import pygame import sy…

STM32——IIC知识总结及实战

1 IIC概念及结构体 IIC:Inter Integrated Circuit,集成电路总线,是一种同步 串行 半双工通信总线。 结构图 2 IIC协议时序 ① 起始信号 当 SCL 为高电平期间,SDA 由高到低的跳变。起始信号是一种电平跳变时序信号,而…

【EI会议征稿通知】2024年第三届能源互联网及能源交互技术国际会议(EIEIT 2024)

2024年第三届能源互联网及能源交互技术国际会议(EIEIT 2024) 2024 3rd International Conference on the Energy Internet and Energy Interactive Technology 随着EIEIT前2届的成功举办,我们很荣幸地宣布,2024年第三届能源互联网及能源交互技术国际学术…

通过Vscode 简单创建一个vue3+element的项目

首先确保安装的nodejs是18版本以上 确保你安装了最新版本的 Node.js,并且你的当前工作目录正是打算创建项目的目录。在命令行中运行以下命令 VSCode打开终端 输入构建项目命令,个人推荐如果有cnpm使用cnpm npm create vuelatest cnpm create vuelate…

YOLOv5改进 | 检测头篇 | ASFFHead自适应空间特征融合检测头(全网首发)

一、本文介绍 本文给大家带来的改进机制是利用ASFF改进YOLOv5的检测头形成新的检测头Detect_ASFF,其主要创新是引入了一种自适应的空间特征融合方式,有效地过滤掉冲突信息,从而增强了尺度不变性。经过我的实验验证,修改后的检测头在所有的检测目标上均有大幅度的涨点效果,…

AI与区块链的完美交融创新时代的双重引擎

每个投资者都梦想早日进入“下一个亚马逊、苹果或比特币”,以追求代际财富。 然而,这些机会很少而且相距甚远,而且正如每一个虔诚的加密货币本地人都知道的那样,这条道路上常常布满了失败的项目、失信的承诺和波动。 但在 2023 …

flink1.15 维表join guava cache和mysql方面优化

优化前 mysql响应慢,导致算子中数据输出追不上输入,导致显示cpu busy:100% 优化后效果两个图对应两个时刻: - - -- 优化前 select l.id,JSON_EXTRACT(r.msg,$$.key1) as msgv (select id,uid from tb1 l where id?) join (select uid,msg from tb2) r on l.uidr.uid;-- 优化…

STM32+HAL库驱动ADXL345传感器(SPI协议)

STM32HAL库驱动ADXL345传感器(SPI协议) ADXL345传感器简介实物STM32CubeMX配置SPI配置片选引脚配置串口配置 特别注意(重点部分)核心代码效果展示 ADXL345传感器简介 ADXL345 是 ADI 公司推出的基于 iMEMS 技术的 3 轴、数字输出加…

Flink(十三)【Flink SQL(上)】

前言 最近在假期实训,但是实在水的不行,三天要学完SSM,实在一言难尽,浪费那时间干什么呢。SSM 之前学了一半,等后面忙完了,再去好好重学一遍,毕竟这玩意真是面试必会的东西。 今天开始学习 Flin…