闲话 .NET(5):.NET Core 有什么优势?

image

前言

.NET Core 并不是 .NET FrameWork 的升级版,它是一个为满足新一代的软件设计要求而从头重新开发的开发框架和平台,所以它没有 .NET FrameWork 的历史包袱,相对于 .NET FrameWork,它具备很多优势。

.NET Core 有哪些优势?

优势一

.NET Core 采用模块化开发。

.NET Core 核心只包含很少的文件,所有其他模块都需要单独安装。开发的程序用到什么模块,就安装什么模块,这样各个模块都可以单独升级。

不同的程序可以选择适合自己版本的组件,不用受系统上安装的其他程序的影响。

比如,A程序可以用一个模块的1.5版本,而B程序可以用这个模块的1.8版本,它们不会互相干扰。

优势二

.NET Core 支持独立部署(Standalone Deployment)。

所谓独立部署,就是指将一个应用程序或软件包打包成一个独立的、自包含的单元,可以在没有额外依赖项的情况下在目标环境中运行。

所以也就是说,可以把 .NET Core 运行时环境和开发的程序打包到一起部署。

这样就不需要在服务器上安装 .NET Core 运行环境,只要把程序复制到服务器上,程序就能运行,这对容器化、无服务器(Serverless)等非常友好。

优势三

.NET Core 开发出来的程序性能更高。

相比 .NET FrameWork,.NET Core 的性能真是提高太多了,比如 EF(Entity Framework),EF 最受弊病的就是性能问题,在 .NET Core 时代,EF Core 比 EF 6.0 整整提高了 40 多倍。

因为 .NET Core 的所有管道都是可以插拔的,开发人员可以决定程序需要哪些管道及它们的执行顺序,因此用 .NET Core 开发出来的程序启动更快,内存占用更少,性能更高。

优势四

ASP.NET Core 终于不再依赖 IIS。

这里用于 “终于” 一词,因为一直以来,IIS 的复杂性、安全性和性能都备受争议,但 ASP.NET 却只能运行在 IIS 服务器里,很多开发人员非常反感这一点,甚至有些开发人员因为这一点,而放弃使用 ASP.NET。

现在,在 .NET Core 时代,我们有了更多更好的选择,因为 ASP.NET Core 内置了简单且高效的 Web 服务器 —— Kestrel。

Kestrel 被嵌入 ASP.NET Core 程序中运行,整个 ASP.NET Core 程序其实就是一个控制台程序。

Kestrel 可被配置上安全、HTTPS、限流、压缩、缓存等功能,从而成为直接面向终端用户的 Web 服务器,也可以将其配置成轻量级的 Web 服务器,而安全、HTTPS、限流、压缩、缓存等功能则由部署在它前面的 IIS、Nginx 等反向代理服务器完成。

优势五

如今,高可用、高性能和高并发这三个方面受到了业界前所未有的重视,可以说,如今的软件设计思想就是围绕着这三个方面不断地创新发展,集群、分布式、微服务、DDD(领域驱动开发)、最终一致性、容器化部署、依赖注入……等等概念受到前所未有的讨论和应用。

.NET Core 有一个关键词就是 “基于云” 开发。

所谓的 “基于云” 开发,就是指程序可以运行在云服务平台上,并且可以和云服务平台的其他产品进行集成。

云服务平台的大部分技术都是开放的,而不是绑定某个具体语言的,因此主流的编程语言都能用于 “基于云” 的开发,.NET Core 也一样,所以 .NET Core 更符合如今的软件设计思想,EF Core 更是被誉为领域驱动开发应用场景的最佳实践。

优势六

现在要讲的第六个优势就是 跨平台

跨平台有很多优势,具体可参考前文我们的分析,支持跨平台的 .NET Core,有着更广阔的应用场景和可能性。

结语

综上所述,.NET Core 可以开发能运行在容器环境中的微服务,以便于开发能应对高可用、高性能和高并发的系统。

另外,虽然 .NET Core 是从头开发的,但更多是对底层的调整,在语法层面上,.NET Core 基本上保持跟 .NET Framework 的一致性,开发人员在 .NET Framework 中学到的绝大部分技术都可以迁移到 .NET Core 中,不会浪费在 “.NET Framework 时代” 的技术投资,这对于数以百万的 .NET Framework 开发人员而言,也算是一大优势吧。

当然,.NET Core 优势远远不止于此,本文只是抛砖引玉,如果您知道更多的优势,欢迎留言讨论。

我是老杨,一个奋斗在一线的资深研发老鸟,让我们一起聊聊技术,聊聊人生。

都看到这了,求个点赞、关注、在看三连呗,感谢支持。

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

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

相关文章

C# GDI+ 绘制文字不同的操作系统渲染文字大小不同

一、C# GDI 绘制文字不同的操作系统渲染文字大小不同 原因:使用Font 字体的时候,没有指定字体渲染的单位。 不同系统的默认字体单位会不同。 二、解决方案: 在指定字体的时候,指定字体大小,同时也要设置字体的单位 …

sqlserver 创建表,列及表,列描述

-- 创建表 CREATE TABLE Employees (EmployeeID INT PRIMARY KEY,EmployeeName NVARCHAR(100),EmployeeEmail NVARCHAR(100) );-- 为表添加描述 EXEC sp_addextendedproperty name NMS_Description, value N员工信息表, level0type NSchema, level0name dbo, level1type N…

springboot整合kkFileView部署,前端使用

前言: 官方文档:https://kkfileview.keking.cn/zh-cn/docs/production.html docker方式或加入星球获取发行包直接获取启动,无需以下步骤: 拉取镜像# 网络环境方便访问docker中央仓库 docker pull keking/kkfileview:4.1.0# 网…

二元关系表示

一、二元关系的定义和表示 什么是二元关系?对集合A和B,A\timesB的任意子集R为A到B的一个二元关系。当AB时,A\timesA的任一子集R称为A上的一个二元关系。在不引起误解的情况下,二元关系可简称关系。 若|A|m,|B|n,则A到…

手机版AI写作软件哪个好用?5款AI写作软件分享

在这个快节凑的时代,人们对于高效、便捷的创作方式很是追求。尤其是在人工智能技术发展迅速的今天,AI写作软件的出现,让很多自媒体创作者都会想到在手机上面进内容创作,这样不仅能提高工作效率,而且工作的自由度会更高…

自动化运维(AIOps): 现代IT管理的革命

在数字化时代,企业的 IT 系统变得愈加复杂。从云计算到大数据,从物联网到人工智能,技术的飞速发展使得企业面临前所未有的挑战。这种复杂性不仅体现在数据量和数据流的增加上,还包括高成本和高错误率的运维需求。在此背景下&#…

基于51单片机的盆栽自动浇花系统

一.硬件方案 工作原理是湿度传感器将采集到的数据直接传送到ADC0832的IN端作为输入的模拟信号。选用湿度传感器和AD转换,电路内部包含有湿度采集、AD转换、单片机译码显示等功能。单片机需要采集数据时,发出指令启动A/D转换器工作,ADC0832根…

Android 实现竖排文本(垂直方向显示)

Android 实现竖排文本-垂直方向显示 前言效果图代码实现方式一 Custom View1. 自定义视图 VerticalTextView2. 在xml布局文件中使用3. 设置文本内容 方式二 使用 TextView 的 rotation属性方式三 使用带有跨距文本的TextView1. 自定义视图 VerticalTextView2. 在xml布局文件中使…

【Windows系统】解决Intel 6代CPU安装win7系统过程中无法操作键盘鼠标的问题

问题 微软表示,从 2016 年 7 月 17 日起,新的 Intel、AMD 和Qualcomm 处理器将仅支持 Windows 10,不再支持 Windows 7 和 8.1。因此,Intel 6代以后的CPU因为没有USB驱动无法完成win7系统的安装。 下文核心思想是通过老毛桃PE系统…

云界洞见:移动云服务开启技术创新与问题解决的新篇章

一、什么是移动云 移动云以“央企保障、安全智慧、算网一体、属地服务”为品牌支撑,聚焦智能算力建设,打造一朵智能、智慧、安全可信可控的云,提供更优质的算力服务,引领云计算产业发展。 那么下面博主带领大家了解移动云的优势所…

关于c++的通过cin.get()维持黑框的思考

1.前言 由于本科没有学过c语言,研究生阶段接触c上手有点困难,今天遇到关于通过cin.get()来让黑框维持的原因。 2.思考 cin.get()维持黑框不消失的原因一言蔽之就是等待输入。等待键盘的输入内容并回车(一般是回车)后cin.get()才…

Plotly库利用滑块创建数据可视化

使用了Plotly库来创建一个数据可视化图表,并使用滑块来控制显示哪些数据 import plotly.graph_objects as go from plotly.subplots import make_subplots# 示例数据 x [1, 2, 3, 4, 5] y1 [1, 2, 3, 4, 5] y2 [5, 4, 3, 2, 1] y3 [2, 3, 1, 5, 4]# 创建子图 f…

Python vscode debug: Error while enumerating installed packages.解决

记录一个vscode python debug时出现的错误: 具体错误如下: E00000.030: Error while enumerating installed packages. Traceback (most recent call last): File “/root/.vscode-server/extensions/ms-python.debugpy-2024.0.0-linux-x64/bundled/lib…

Study--Oracle-03-Oracle19C--RAC集群部署

一、硬件信息及配套软件 1、硬件设置 RAC集群虚拟机:CPU:2C、内存:9G、操作系统:30G、数据库安装目录:100G 数据存储:50G (10G*5) 共享存储:2G (1G*2) 2…

基于 vuestic-ui 实战教程

1. 前言简介 Vuestic UI是一个基于开源Vue 3的UI框架。它是一个MIT许可的UI框架,提供了易于配置的现成前端组件,并加快了响应式和快速加载Web界面的开发。它最初于2021年5月由EpicMax发布,这就是今天的Vuestic UI。 官网地址请点击访问 体验…

【Linux安全】iptables防火墙(二)

目录 一.iptables规则的保存 1.保存规则 2.还原规则 3.保存为默认规则 二.SNAT的策略及应用 1.SNAT策略的典型应用环境 2.SNAT策略的原理 2.1.未进行SNAT转换后的情况 2.2.进行SNAT转换后的情况 3.SNAT策略的应用 3.1.前提条件 3.2.实现方法 三.DNAT策略及应用 1…

怎么查看项目中antd的版本

使用antd时,有在线参考资料,但是需要根据项目需要,选择对应版本的参考资料。 antd在线参考资料: 组件总览 - Ant Design 如何查看当前项目中antd的版本呢? 在项目的终端中输入: npm list antd antd官网选择…

庆余年第2季,带你走进怎样的世界?

《庆余年》第二季 演员阵容与幕后团队的新组合为我们带来了别样的观影体验 他的演技真的是在线,其实这剧本很难搞 该搞笑的时候要搞笑,但也不能一直在无厘头胡闹 所以题主说节奏拿捏的好我也很赞同 反观有其他几位演员控制力就差很多 特别是某一集…

STM32H743的FDCAN使用方法(1):STM32CubeMX初始化代码生成

0 工具准备 1.STM32CubeMX1 前言 本文介绍基于STM32CubeMX,使用stm32h743xi的对FDCAN2进行配置的方法。 2 初始化代码生成 2.1 选择FDCAN引脚 本例选择PB5、PB6作为FDCAN2的RX、TX引脚。 2.2 选择FDCAN时钟源 本例选择PLL2Q作为FDCAN时钟源,频率…

UDP的报文结构和注意事项

UDP协议是在传输层的协议。 UDP无连接,不可靠传输,面向数据报,全双工。 UDP的报文结构 学习网络协议,最主要的就是报文格式。 对于UDP来说,应用层的数据到达,UDP之后,就会给应用层的数据报前面…