闲话 .NET(7):.NET Core 能淘汰 .NET FrameWork 吗?

news2024/9/19 18:00:51

image

前言

虽然说,目前 .NET FrameWork 上的大部分类都已经移植到 .NET Core 上,而且 .NET FrameWork 也已经停止了更新,未来必然是 .NET Core 的天下,但要说现在 .NET Core 就能淘汰 .NET FrameWork,我觉得为时尚早,因为 .NET FrameWork 的一些独有特点,有些技术暂时无法或很难在 .NET Core 上实现,比如本文提到的这些技术。

.NET FrameWork 的独有技术

1. WinForms、WPF

WinForms、WPF 这两项技术和 Windows 操作系统深度耦合,很难被迁移到其他操作系统下,所以 .NET Core 上虽然也可以开发 WinForms、WPF 程序,但开发出来的程序依然只能运行在 Windows 操作系统里,不能跨平台地运行在 Linux、macOS 等操作系统里,而且,有些 .NET FrameWork 上 WinForms、WPF 有的类,在 .NET Core 上并没有,比如串口通信控件 SerialPort。当然,在 .NET Core 上开发 WinForms、WPF 程序,可以利用 .NET Core 的独立部署、模块化、更高性能等特性,这些是在 .NET Framework 下进行WinForms、WPF开发所不具备的。

2. ASP.NET WebForms

由于历史原因,还有相当部分网站是使用 ASP.NET WebForms 技术开发的,但 ASP.NET WebForms 已经过时,所以并没有移植到 .NET Core 上,如果要维护这些网站,必须使用 .NET Framework。

3. WCF(Windows communication foundation,Windows 通信基础)

WCF 的优势在于支持多种通信协议和强大的消息处理能力,但配置起来非常复杂,不符合框架设计的KISS(keep it simple and stupid,保持简单和傻瓜化)原则,所以也并不 .NET Core 支持,如果要使用 WCF 也必须在 .NET Framework 下或者使用第三方开源技术比如 CoreWCF。

鉴于 WCF 太复杂,有个建议,如果仅是进行网络通信,可以使用 ASP.NET Core Web API、gRPC 等技术代替,如果想要使开发出来的系统具备有序消息、队列服务、分布式事务、限流等高级特性,可以选用有对应功能的开源组件,不必使用 WCF 这样复杂的集成框架。

4. WF(Workflow foundation,工作流框架)

WF 是一个用于构建工作流应用程序的框架,它提供了一种可视化的方式来设计和执行工作流程,但 WF 是一个特定于 Windows 操作系统的功能,不太适合跨平台,而且 .NET Core 更加关注于现代化的开发模式和技术,如微服务架构、云原生应用等,WF 并不是其主要的开发重点,所以 .NET Core 并不支持 WF,如果有业务需要只能在 .NET Framework 下应用或者寻求第三方开源技术。

5. .NET Remoting

.NET Remoting 用的是微软的私有协议,性能也不咋的,使用并不是很广泛,所以 .NET Core 也不支持 .NET Remoting,代之以谷歌开源的 gRPC,如果要使用 .NET Remoting 必须回到 .NET Framework

6. AppDomain(应用程序域)

AppDomain 是 .NET Framework 提供的一种隔离和管理托管代码执行环境的机制。每个应用程序在运行时都会有一个或多个 AppDomain,每个 AppDomain 都有自己的应用程序配置信息、安全策略、代码库等,可以独立加载和卸载程序集,提供了一种隔离和安全性的机制。应该说,微软的这个想法是很好的,无奈现实太骨感,在实际使用中,AppDomain 技术暴露出有很多缺陷和局限性,所以它并没有被移植到 .NET Core 上,是 .NET Framework 独有的技术。

7. 其他

其他还有如 WMI(Windows management instrumentation,Windows管理规范)、ODBC(open database connectivity,开放式数据库互连)、Windows ACL(access control list,访问控制列表)、Code Page、Windows事件日志、Windows性能计数器、Windows注册表、Directory Services 等技术,这些技术是 Windows 特有的技术,在其他操作系统下没有对等的实现,所以也是 .NET Framework 独有的技术。

结语

.NET Core 相对 .NET Framework 而言是无法向前兼容的破坏性创新,这样做的好处是 .NET Core 可以抛开历史包袱做出突破性创新,但这样也意味着 .NET Framework 中的少数功能无法或很难被 .NET Core 支持,所以 .NET Core 暂时还不能全面取代 .NET Framework,希望在未来的版本中,.NET Core 能够给出更好的解决方案。

您还知道 .NET FrameWork 中哪些技术没有被迁移到 .NET Core 吗?欢迎留言讨论。

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

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

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

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

相关文章

C++学习笔记(21)——继承

目录 1. 继承的概念及定义1.1 继承的概念1.2 继承定义1.2.1 定义格式1.2.2 继承关系和访问限定符1.2.3 继承基类成员访问方式的变化 继承的概念总结: 2. 基类和派生类对象赋值转换3.继承中的作用域4.派生类的默认成员函数知识点:派生类中6个默认成员函数…

利用java8 的 CompletableFuture 优化 Flink 程序,性能提升 50%

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…

【吊打面试官系列】Java高并发篇 - ConcurrentHashMap 的并发度是什么?

大家好,我是锋哥。今天分享关于 【ConcurrentHashMap 的并发度是什么?】面试题,希望对大家有帮助; ConcurrentHashMap 的并发度是什么? ConcurrentHashMap 的并发度就是 segment 的大小,默认为 16, 这意味着最多同时…

.DFS.

DFS 全称为Depth First Search,中文称为深度优先搜索。 这是一种用于遍历或搜索树或图的算法,其思想是: 沿着每一条可能的路径一个节点一个节点地往下搜索, 直到路径的终点,然后再回溯,直到所有路径搜索完为止。 DFS俗…

ComfyUI简单介绍

🍓什么是ComfyUI ComfyUI是一个为Stable Diffusion专门设计的基于节点的图形用户界面,可以通过各种不同的节点快速搭建自己的绘图工作流程。 软件打开之后是长这个样子: 同时软件本身是github上的一个开源项目,开源地址为&#…

I.MX6ULL Linux C语言开发环境搭建(点灯实验)

系列文章目录 I.MX6ULL Linux C语言开发 I.MX6ULL Linux C语言开发 系列文章目录一、前言二、硬件原理分析三、构建步骤一、 C语言运行环境构建二、软件编写三、链接脚本 四、实验程序编写五、编译下载验证 一、前言 汇编语言编写 LED 灯实验,但是实际开发过程中汇…

Python实现国密GmSSL

Python实现国密GmSSL 前言开始首先安装生成公钥与私钥从用户证书中读取公钥读取公钥生成签名验证签名加密解密 遇到的大坑参考文献 前言 首先我是找得到的gmssl库,经过实操,发现公钥与密钥不能通过pem文件得到,就是缺少导入pem文件的api。这…

maven的下载以及配置的详细教程(附网盘下载地址)

文章目录 下载配置IDEA内部使用配置 下载 1.百度网盘下载 链接: https://pan.baidu.com/s/1LD9wOMFalLL49XUscU4qnQ?pwd1234 提取码: 1234 2.解压即可 配置 1.打开安装文件下conf下的settings.xml文件,我的如下 2.修改配置信息(目的是为了修改本地…

【技术分享】Maven常用配置

一、Maven简介 (一)为什么使用 Maven 由于 Java 的生态非常丰富,无论你想实现什么功能,都能找到对应的工具类,这些工具类都是以 jar 包的形式出现的,例如 Spring,SpringMVC、MyBatis、数据库驱…

MQ本地消息事务表

纯技术方案水文特此记录 MQ本地消息事务表解决了什么问题? MQ本地事务表方案解决了本地事务与消息发送的原子性问题,即:事务发起方在本地事务执行成功后消息必须发出去,否则就丢弃消息。实现本地事务和消息发送的原子性&#xf…

系统安全扫描扫出了:可能存在 CSRF 攻击怎么办

公司的H5在软件安全测试中被检查出可能存在 CSRF 攻击,网上找了一堆解决方法,最后用这种方式解决了。 1、问题描述 CSRF 是 Cross Site Request Forgery的缩写(也缩写为也就是在用户会话下对某个 CGI 做一些 GET/POST 的事,RIVTSTCNNARGO一这…

香橙派AIpro初体验,详解如何安装Home Assistant Supervised

香橙派AIpro(OrangePi AIpro)开发版,定位是一块AI开发板,搭载的是华为昇腾310(Ascend310)处理器。 没想到,这几年的发展,AI开发板也逐渐铺开,记得之前看到华为发布昇腾3…

挑战你的数据结构技能:复习题来袭【3】

chap3 练习1 一. 单选题 1. (单选题)栈和队列具有相同的() A. 抽象数据类型B. 逻辑结构C. 存储结构D. 运算 答案: B:逻辑结构 答案分析:逻辑结构都属于线性结构,只是它们对数据的运算不同。 2. (单选题)栈是() A. 顺序存储的线性结构B…

深入理解python列表与字典:数据结构的选择与性能差异

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、列表与字典:基础数据结构的对比 二、列表:逐个遍历的查找方式 …

SARscape5.7已经支持3米陆探一号(LT-1)数据处理

SARsacpe5.6.2.1版本已经开始支持LT-1的数据处理,由于当时只获取了12米的条带模式2(STRIP2)例子数据,对3米条带模式1(STRIP1)数据的InSAR处理轨道误差挺大,可能会造成干涉图异常。 SARsacpe5.7最…

Android Display Graphics #1 整体框架介绍一

软件基础 Android的framework层提供了一系列的图像渲染API,可绘制2D和3D。简单理解就是上层开发APP的小伙伴提供了接口,开发者可以直接显示对应的自己内容。但如果掌握了Display底层逻辑再写上层app,会有掌控力,出问题可以根据lo…

vs code怎么补全路径,怎么快捷输入文件路径

安装插件: 链接:https://marketplace.visualstudio.com/items?itemNamejakob101.RelativePath 使用 按住 Ctrl Shift H,弹出窗口,输入文件补全,回车就可以了 排除文件 如果你的项目下文件太多,它会…

2000-2017年各省经济政策不确定性指数

2000-2017年各省经济政策不确定性指数 1、时间:2000-2017年 2、来源:国际能源转型学会 3、范围:31省 4、构建说明: 按照Baker等(2016)的方法,在中国省级范围内构建了经济政策不确定性&…

如果任务过多,队列积压怎么处理?

如果任务过多,队列积压怎么处理? 1、内存队列满了应该怎么办2、问题要治本——发短信导致吞吐量降低的问题不能忽略!!3、多路复用IO模型的核心组件简介1、内存队列满了应该怎么办 如图: 大家可以看到,虽然现在发短信和广告投递,彼此之间的执行效率不受彼此影响,但是请…

快速版-JS基础01书写位置

1.书写位置 2.标识符 3.变量 var:声明变量。 (1).变量的重新赋值 (2).变量的提升 打印结果:console.log(变量名) 第一个是你写在里面的。 第二个是实际运行的先后之分,变量名字在最前面。变量…