闲话 .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,一经查实,立即删除!

相关文章

智算中心带宽漫谈 -- 开篇

隐秘的角落 带宽对高性能计算是一个永恒的话题,本质上,带宽即数据交换的速率,单位时间的传输数据越多,带宽就越高,但对高性能计算来说,对高带宽的渴求永无止境,好比宏观现实世界中的车道&#…

QT实现线程的四种方式(QThread、QRunnable和QThreadPool、QObject、QtConcurrent)

在当今高性能计算需求日益增长的背景下,多线程编程已成为提升应用性能的重要手段。Qt框架,作为一个功能全面、跨平台的C++应用程序开发工具包,为我们提供了多种多线程实现方案。本文将介绍QThread类在Qt多线程编程中的应用,以及如何通过QRunnable和QThreadPool、QObject的m…

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# 网…

pytest框架的代码如何用vscode进行debug

{"version": "0.2.0","configurations": [{"name": "Python: Run My Module", // 配置名称,将在调试配置下拉列表中显示"type": "debugpy", // 调试类型,这里是Python"requ…

二元关系表示

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

常用字体映射字典

表格形式 英文字体名称中文字体名称SimSun宋体SimHei黑体KaiTi楷体FangSong仿宋YouYuan幼圆LiSu隶书NSimSun新宋体SimSun-ExtB宋体-ExtBFangSong_GB2312仿宋_GB2312KaiTi_GB2312楷体_GB2312Microsoft YaHei微软雅黑Microsoft JhengHei微软正黑体STXihei华文细黑STKaiti华文楷体…

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

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

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

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

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

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

Hive 变量定义与引用

文章目录 1.背景2.Hive 变量命名空间查看变量设置变量引用变量 参考文献 1.背景 在书写 Hive SQL 时,有时需要将重复出现的值从 SQL 分离出来,以变量的方式表示和引用。 设置变量和引用变量可以带来以下几个好处: 简化查询语句:…

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

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

AI学习指南数学工具篇-凸优化基础知识凸函数

AI学习指南数学工具篇-凸优化基础知识凸函数 引言 在凸优化过程中,凸函数是一个非常重要的概念,它在机器学习、深度学习和优化算法中都有广泛的应用。凸函数具有很多独特的性质,能够帮助我们更好地理解优化问题并且设计高效的优化算法。本文…

【Golang】Golang获取Gin框架PostForm上传的文件

文章目录 前言一、函数解释二、代码实现三、总结 前言 在Web开发中,文件上传是一项常见的功能。例如,用户可能需要上传头像、文档或其他类型的文件。在Go语言的Gin框架中,我们可以很方便地处理文件上传。在这篇博客中,我将解释如…

怎样理解 Vue 的单项数据流

Vue 的单项数据流是一个核心概念,它指的是在 Vue 组件中,数据的流动方向是单向的,从父组件流向子组件。以下是关于 Vue 单项数据流的详细理解: 数据流的方向: Vue 中的数据流动是单向的,即数据只能从父组件…

中国交通信息科技集团有限公司(中交信科)java开发工程师-机试题目/颂大技术面试总结/理工数传 软件开发一面二面面试总结/武汉智能视觉信息技术有限公司/高级

武汉智能视觉信息技术有限公司/高级 如果解决jvm内存溢出如果解决亿级别的数据导出,有没有其他的方案可以解决呢索引的原理工作中用了哪些索引提高了多少的速度线程池的创建方法--解释new ThreadPool的其他参数以及四大拒绝策略分布式使用用到了哪些模式xxl-job的原…

pillow学习4

ImageChops 模块 在 Pillow 库的内置模块 ImageChops 中包含了多个用于实现图片合成的函数。这些合成 功能是通过计算通道中像素值的方式来实现的。其主要用于制作特效、合成图片等操作。 常用的内置函数如下所示: (1)相加函数 add()&#xf…

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

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

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

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