当前位置: 首页 > news >正文

闲话 .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 吗?欢迎留言讨论。

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

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

相关文章:

  • Lvm逻辑卷调整容量
  • 2024电激世界脉动-中国汽车品牌全球化制胜手册
  • M00238-固定翼无人机集群飞行仿真平台MATLAB完整代码含效果
  • 整理前端新出的操作工具好用又好玩(Custom Formatter,Oxlint,Nuxt DevTools,component-party)
  • 机器学习过拟合和欠拟合!看这一篇文章就够了 建议收藏!(上篇)
  • 备战秋招c++ 【持续更新】
  • huggingface笔记 accelerate launch
  • 学习编程对英语要求高吗?
  • FreeBSD下使用原生虚拟机管理器bhyve
  • KT6368A蓝牙芯片AT命令会被透传出去,指令对为什么会被透传出去
  • PUBG绝地求生卡在初始界面 登不上去 打不开游戏的解决办法
  • Nginx添加访问密码
  • 记录关联(笛卡尔积)——kettle开发24
  • CSS 媒体查询 响应式开发
  • 长度最长的子数组
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • Android 控件背景颜色处理
  • Consul Config 使用Git做版本控制的实现
  • Debian下无root权限使用Python访问Oracle
  • HashMap ConcurrentHashMap
  • JavaScript中的对象个人分享
  • Lucene解析 - 基本概念
  • Meteor的表单提交:Form
  • overflow: hidden IE7无效
  • PHP那些事儿
  • SpiderData 2019年2月25日 DApp数据排行榜
  • SpriteKit 技巧之添加背景图片
  • 百度小程序遇到的问题
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 浏览器缓存机制分析
  • 前端性能优化--懒加载和预加载
  • 前端自动化解决方案
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 算法---两个栈实现一个队列
  • 微服务核心架构梳理
  • 异常机制详解
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • (09)Hive——CTE 公共表达式
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (八)c52学习之旅-中断实验
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (笔试题)分解质因式
  • (分类)KNN算法- 参数调优
  • (转)VC++中ondraw在什么时候调用的
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (转)一些感悟
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • *Django中的Ajax 纯js的书写样式1
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题