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

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.mzph.cn/diannao/17113.shtml

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

相关文章

【AD21】钻孔文件的输出

钻孔文件包含了所有需要在PCB上钻孔的位置、孔径和类型(如通孔、盲孔、埋孔)的详细信息。板厂可以使用这个文件来控制钻孔机进行精确钻孔。 在PCB源文件页面,菜单栏中点击文件->制造输出->NC Drill Files。 在弹出的新界面&#xff0c…

C++240527

定义自己的命名空间 my_sapce&#xff0c;在 my_sapce 中定义 string 类型的变量 s1&#xff0c;再 定义一个函数 完成 对字符串的逆置 。 #include <iostream>//导入 标准命名空间&#xff0c;cout 和 endl 标识符 存在于标准命名空间中 using namespace std;//定义了自…

springboot+vue+mybatis基于java web的公益网站的设计与实现+jsp+PPT+论文+讲解+售后

现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本公益网站就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息&#xff0c;使…

AJ-Report一次排错处理

山重水复疑无路&#xff0c;柳暗花明又一村...... 新项目需要选型开源的AJ-Report&#xff0c;计划再次基础上进行二开。 官网地址&#xff1a; AJ-Report: AJ-Report是一个完全开源&#xff0c;拖拽编辑的可视化设计工具。三步快速完成大屏&#xff1a;配置数据源---->写…

力扣503. 下一个更大元素 II

Problem: 503. 下一个更大元素 II 文章目录 题目描述思路复杂度Code 题目描述 思路 由于此题是环形数组&#xff0c;我们在利用单调栈模板的基础上还需要将给定数组扩大一倍&#xff0c;但实际上我们只需要利用取余的操作模拟扩大数组即可&#xff08;具体操作看代码。在解决有…

Spring Boot集成shiro之使用redis缓存demo

1.背景 上次发了这篇文章《Spring Boot集成Shiro快速入门Demo》后&#xff0c;有网友“just.blue”后台反馈集成redis有点问题&#xff0c;今天特地把集成过程发出来 2.为什么要使用cache 用来减轻数据库的访问压力&#xff0c;从而提升查询效率。 3.Shiro使用Redis做缓存 …

【R语言】获取任意颜色的HTML 颜色代码、十六进制颜色代码、 RGB代码

网站来源&#xff1a; https://htmlcolorcodes.com/ 界面如下所示&#xff1a; 通过鼠标任意选择不同的颜色&#xff0c;就能获取该色的十六进制代码、RGB代码等。 除此之外&#xff0c;还提供了一些常用颜色的便捷选项,如下&#xff1a; 任意选择一种颜色&#xff0c;即可出…

会声会影2024旗舰版神器,让你的视频秒变大片,小白也能轻松上手

在数字时代&#xff0c;视频已经成为了人们表达自我、记录生活的重要方式。无论是旅行中的美景&#xff0c;还是生活中的点滴瞬间&#xff0c;我们都渴望能够用镜头捕捉下来&#xff0c;并通过精心剪辑&#xff0c;将这些美好的画面永远珍藏。然而&#xff0c;对于大多数人来说…

【spring boot+Lazy ORM+mysql】开发一个数据库管理系统实现对应数据库数据查看和修改

【spring bootLazy ORMmysql】开发一个数据库管理系统实现对应数据库数据查看和修改 演示项目地址&#xff1a;http://124.222.48.62:30193/wu-smart-acw-ui/index.html#/login &#xff08;admin/admin&#xff09; 功能 用户登录注册新增、编辑数实例新增、编辑数据库信息…

[论文笔记]SELF-INSTRUCT

引言 今天带来论文SELF-INSTRUCT: Aligning Language Models with Self-Generated Instructions的笔记。 大型指令微调的语言模型(被微调以响应指令)展示了在新任务上零样本泛化的显著能力。然而&#xff0c;它们严重依赖于人工编写的指令数据&#xff0c;这种数据在数量、多…

element ui 的el-input输入一个字后失去焦点,需重新点击输入框才能再次输入

解决方案&#xff1a; 我是form表单嵌套表格&#xff0c;里面的el-input输入框&#xff0c;输入第一个值的时候会突然失去焦点&#xff0c;需要再次点击输入框才能正常输入&#xff0c;原因是table的key值&#xff0c;需要改成正常的index即可&#xff0c;如果你是循环的&…

服务器重装系统与磁盘操作

诱因&#xff1a;服务器原来装的EXSI&#xff0c;现在要重装一个ubuntu server&#xff0c;出现了下面一些问题&#xff0c;在此记录一下。 目录 1、过程中出现的问题&#xff08;2024.5.26&#xff09;1.1 问题1&#xff1a;如何磨掉原来的ESXI&#xff1f;1.2 问题2&#xf…

LeetCode - 贪心算法 (Greedy Algorithm) 集合 [分配问题、区间问题]

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/139242199 贪心算法&#xff0c;是在每一步选择中&#xff0c;都采取当前状态下&#xff0c;最好或最优&#xff08;即最有利&#xff09;的选择&…

奇门遁甲古籍《烟奇要览》

《烟奇要览》 全书共178页 时间有限&#xff0c;仅上传部分图片&#xff01;

YOLOv10介绍与推理--图片和视频演示(附源码)

导 读 本文主要对YOLOv10做简单介绍并给出推理图片和视频的步骤演示。 YOLOv10简介 YOLOv10是清华大学的研究人员在Ultralytics Python包的基础上&#xff0c;引入了一种新的实时目标检测方法&#xff0c;解决了YOLO 以前版本在后处理和模型架构方面的不足。通过消除非最大抑…

人工智能超万卡集群的核心设计原则和架构

超万卡集群的核心设计原则和架构 超万卡集群建设方兴未艾,当前主要依托英伟达GPU及其设备。英伟达GPU在大模型训练中表现卓越,但国产AI芯片虽进步显著,性能与生态构建仍存差距。面对诸多挑战,构建技术领先、基于国产生态的超万卡集群,仍需不断突破与创新。 大模型升级至万…

Linux终端连接工具

终端连接工具有很多中&#xff0c;这里我只收集了一些常用的或免费的工具 我一般会配套使用&#xff1a; FinalShell -->命令行工具&#xff08;Mac和win&#xff09; WinSCP -->文件上传工具&#xff08;win&#xff09; filezilla -->文件上传工具&#xff08;Mac …

金锋关晓柔短视频:成都鼎茂宏升文化传媒公司

金锋关晓柔短视频&#xff1a;情感与创意的交织 在短视频的浪潮中&#xff0c;无数创作者凭借独特的视角和创意脱颖而出。其中&#xff0c;金锋和关晓柔共同打造的短视频系列以其深厚的情感内涵和精湛的创意表达&#xff0c;成都鼎茂宏升文化传媒公司吸引了大量观众的关注&…

知识融合概述

文章目录 知识融合知识融合过程研究现状技术发展趋势 知识融合 知识融合的概念最早出现在1983年发表的文献中&#xff0c;并在20世纪九十年代得到研究者的广泛关注。而另一种知识融合的定义是指对来自多源的不同概念、上下文和不同表达等信息进行融合的过程认为知识融合的目标是…

vue数据持久化仓库

本文章是一篇记录实用性vue数据持久化仓的使用&#xff01; 首先在src中创建store文件夹&#xff0c;并创建一个根据本页面相关的名称&#xff0c; 在终端导入&#xff1a;npm i pinia 和 npm i pinia-plugin-persistedstate 接下来引入代码&#xff1a; import { defineSt…