微软.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深度学习时代、智能机器时代,我不知道未来还会有什么时代,只记得这一路走来,充满着艰辛与收获,愿同大家一起走下去,充满希望的走下去。
相关文章:

微软.NET、.NET Framework和.NET Core联系和区别
我是荔园微风,作为一名在IT界整整25年的老兵,看到不少初学者在学习编程语言的过程中如此的痛苦,我决定做点什么,我小时候喜欢看小人书(连环画),在那个没有电视、没有手机的年代,这是…...

Shell脚本同时调用#!/bin/bash和#!/usr/bin/expect
如果你想在一个脚本中同时使用bash和expect,你可以将expect部分嵌入到bash脚本中。以下是一个示例: #!/bin/bash# 设置MySQL服务器地址、端口、用户名和密码 MYSQL_HOST"localhost" MYSQL_PORT"3306" MYSQL_USER"your_usernam…...

C++ Webserver从零开始:基础知识(一)——Linux网络编程基础API
目录 前言 一.socket地址API 1.主机字节序和网络字节序 2.通用socket地址 3.专用socket地址 二.创建socket 三.绑定socket(命名socket) 四.监听socket 五.接受连接(服务端) 六.发起连接(客户端) 七.关闭连接…...

cookie和session的工作过程和作用:弥补http无状态的不足
cookie是客户端浏览器保存服务端数据的一种机制。当通过浏览器去访问服务端时,服务端可以把状态数据以key-value的形式写入到cookie中,存储到浏览器。浏览器下次去服务服务端时,就可以把这些状态数据携带给服务器端,服务器端可以根…...

【蓝桥杯选拔赛真题30】C++字母转换 第十三届蓝桥杯青少年创意编程大赛C++编程选拔赛真题解析
目录 C/C++字母转换 一、题目要求 1、编程实现 2、输入输出...
资产负债表#通俗易懂
资产负债表(the Balance Sheet)亦称财务状况表,表示企业在一定日期(通常为各会计期末)的财务状况(即资产、负债和业主权益的状况)的主要会计报表。 (99 封私信 / 11 条消息) 能通俗易懂的给小白…...
PCF8563转STM32 RTC避坑指南
问题一,时间读取错误 原因,读写时间必须Time在前,Date在后 HAL_RTC_GetTime(&hrtc, &time, RTC_FORMAT_BCD); HAL_RTC_GetDate(&hrtc, &date, RTC_FORMAT_BCD); HAL_RTC_SetTime(&hrtc, &time, RTC_FORMAT_BCD); …...

前端重置密码报错记录
昨天晚上,我写了重置密码的前端,测试的时候报错 今天上午,我继续试图解决这个问题,我仔细检查了一遍,前端没有问题 可以正常接收输入的数据并且提交 但是后端接收到的数据为空,后端接口也没有问题 但后端收…...
css3的过度效果transition支持哪些属性,Transition 所支持的css属性
transition-property是用来指定当元素其中一个属性改变时执行transition效果: 所支持的属性类型如下: 名称描述属性color: 通过红、绿、蓝和透明度组件变换(每个数值处理) 如: background-color, border-color, color, outline-co…...

JAVAEE初阶 文件IO(一)
这里写目录标题 一. 计算机中存储数据的设备1.1 CPU1.2 内存1.3 硬盘1.4 三种存储的区别 二.文件系统2.1 相对路径2.2 绝对路径2.3 .和..的含义2.4 例子2.5 everything工具 三.文件3.1 文本文件3.2 二进制文件 四. JAVA对于文件的API4.1 getParent getName getPath getAbsolute…...

使用WAF防御网络上的隐蔽威胁之CSRF攻击
在网络安全领域,除了常见的XSS(跨站脚本)攻击外,CSRF(跨站请求伪造)攻击也是一种常见且危险的威胁。这种攻击利用用户已经验证的身份在没有用户知情的情况下,执行非授权的操作。了解CSRF攻击的机…...

如何从 Keras 中的深度学习目录加载大型数据集
一、说明 数据集读取,使用、在磁盘上存储和构建图像数据集有一些约定,以便在训练和评估深度学习模型时能够快速高效地加载。本文介绍Keras 深度学习库中的ImageDataGenerator类等工具自动加载训练、测试和验证数据集。 二、ImageDataGenerator加载数据集…...

【大数据】Flink 详解(八):SQL 篇 Ⅰ
《Flink 详解》系列(已完结),共包含以下 10 10 10 篇文章: 【大数据】Flink 详解(一):基础篇【大数据】Flink 详解(二):核心篇 Ⅰ【大数据】Flink 详解&…...

如何从命令行运行testng.xml?
目录 创建一个新的java项目并从命令行运行testng.xml 使用命令行运行XML文件 从命令行运行现有maven项目的XML文件 在这篇文章中,我们将使用命令行运行testng.xml。有多种场景需要使用命令行工具运行testng.xml。也许您已经创建了一个maven项目,现在想…...

MongoDB-数据库文档操作(2)
任务描述 文档数据在 MongoDB 中的查询和删除。 相关知识 本文将教你掌握: 查询文档命令;删除文档命令。 查询文档 我们先插入文档到集合 stu1 : document([{ name:张小华, sex:男, age:20, phone:12356986594, hobbies:[打篮球,踢足球…...
文件包含介绍
本地文件包含 常见的文件包含漏洞的形式为 <?php include("inc/" . $_GET[file]); ?> 考虑常用的几种包含方式为 同目录包含file.htaccess目录遍历?file…/…/…/…/…/…/…/…/…/var/lib/locate.db日志注入?file…/…/…/…/…/…/…/…/…/var/log/a…...

C语言——小细节和小知识9
一、大小端字节序 1、介绍 在计算机系统中,大小端(Endianness)是指多字节数据的存储和读取顺序。它是数据在内存中如何排列的问题,特别是与字节顺序相关。C语言中的数据存储大小端字节序指的是在内存中存储的多字节数据类型&…...
uni-app基础详解(组件、弹窗、数据缓存、页面跳转)
uni-app基础详解(组件、弹窗、数据缓存、页面跳转) uni-app组件scroll-viewswipertext 文本button 按钮input 输入框radio 单选checkbox 多选picker 选择器slider 滑块textarea 文本域 弹窗提示框 uni.showLoading提示弹窗 uni.showToast确定取消框 uni.…...

LabVIEW模拟荧光显微管滑动实验
LabVIEW模拟荧光显微管滑动实验 在现代生物医学研究中,对微观生物过程的精准模拟和观察至关重要。本案例展示了如何利用LabVIEW软件和专业硬件平台,创新地模拟荧光显微管在滑动实验中的动态行为,这一过程不仅提升了实验效率,还为…...
Springboot项目:解决@Async注解获取不到上下文信息问题
问题描述 springboot项目中,需要使用到异步调用某个方法,此时 第一个想到的就是 Async 注解,但是 发现 方法执行报错了,具体报错如下: java.lang.NullPointerExceptionat com.ruoyi.common.utils.ServletUtils.getRe…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

c++第七天 继承与派生2
这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...