闲话 .NET(3):.NET Framework 的缺点

image

前言

2016 年,微软正式推出 .NET Core 1.0,并在 2019 年全面停止 .NET Framework 的更新。

.NET Core 并不是 .NET Framework 的升级版,而是一个从头开始开发的全新平台,一个跟 .NET Framework 截然不同的开源技术框架。

微软为什么要这么做呢?今天我们来聊聊 .NET Framework 有什么缺点,导致微软做出如此艰难的决定。

缺点一

.NET Framework 属于系统级别安装的程序,操作系统内的所有基于 .NET Framework 开发的程序共享一个 .NET Framework 安装实例,如果其中一个应用程序需要升级 .NET Framework 或者为 .NET Framework 安装补丁,则其他程序也会受影响。

缺点二

.NET Framework 必须安装到操作系统上才能使用,不能和应用程序打包到一起独立部署,导致基于 .NET Framework 开发的应用程序必须在有正确的 .NET Framework 版本的环境里才能部署运行,这为应用程序的部署及升级带到很大的不便。

缺点三

ASP.NET 框架 和 IIS(internet information services,互联网信息服务)深度耦合。

ASP.N ET 只能运行在 IIS 上,而 IIS 只能运行在 Windows 操作系统上,不同的 Windows 版本的 IIS 版本也不同,而且 IIS 的安全性一直以来也备受争议,这些都深刻影响 .NET Framework 的推广和应用。

缺点四

性能问题,这可以说是 .NET Framework 最常被吐槽的一点了。

在 .NET Framework 诞生之初,ASP.NET 就等同于ASP.NET Web Forms,虽然它在 2009 年被 ASP.NET MVC 以及更晚出现的 ASP.NET Web API 所取代,但是微软在早期开发 ASP.NET 运行时的时候,在 ASP.NET 运行时中有很多专门为 ASP.NET Web Forms 编写的代码,虽然这些代码是 ASP.NET MVC、ASP.NET Web API 所不需要的,但是 ASP.NET MVC、ASP.NET Web API 也只能带着这些它们不需要的代码去运行,这导致 ASP.NET 在运行的时候有很多不必要的内存和 CPU 消耗,据估计,ASP.NET 程序在运行时占用的内存是它实际需要内存的 3 倍。举个例子,在 ASP.NET MVC 中,当用户请求到达 IIS 后,中间要经过非常多的处理管道,最后才能到达控制器。这些管道大多是硬编码的,即使用不到它们,也无法将它们移除,因此 ASP.NET 程序无法最大化地发挥硬件的性能。

缺点五

.NET Framework 诞生的时候是没有云计算的概念的,因此 .NET Framework 从创立之初其开发人员就没有考虑到程序会运行在云服务环境中,对很多.NET Framework 组件的设置都深度依赖 Windows 操作系统 API,这导致 .NET Framework 程序无法做到完全自治。

结语

随着软件行业的发展,系统的复杂性和访问量激增,传统的软件开发、部署模式已经力不从心。

比如很多电商网站在十几年前刚开始创建的时候,可能只有电商前台系统、后台管理系统、财务系统等少量的几个系统,由于用户量不多,几台服务器就能够支撑它们了。但是发展到如今,其系统数量已经成百上千了,服务器也有上万台。

因此,系统的开发、部署、运维等都和以前有了不同,云开发、容器化部署、微服务等概念也相应而生。

.NET Framework 是约 20 年前诞生的技术,并没有云基因,被基于云开发的技术所淘汰也是正常的,但这并不说明 .NET Framework 技术是过时的,事实上,.NET Framework 的很多技术都被迁移到 .NET Core 上,而且 .NET Framework 在工控行业、上位机开发等方面还是有很大的优势。

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

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

相关推荐

  1. 3D抓取算法优点及缺点

    2024-05-26 04:04:43       30 阅读
  2. .NET MAUI开源架构_3..NET MAUI 提供内容

    2024-05-26 04:04:43       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-26 04:04:43       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-26 04:04:43       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-26 04:04:43       87 阅读
  4. Python语言-面向对象

    2024-05-26 04:04:43       96 阅读

热门阅读

  1. c++11 auto类型推导的使用建议和注意事项

    2024-05-26 04:04:43       40 阅读
  2. HTML5

    2024-05-26 04:04:43       35 阅读
  3. Android-okhttp调接口传参简单举例

    2024-05-26 04:04:43       33 阅读
  4. qt里的QPieSeries饼图

    2024-05-26 04:04:43       32 阅读
  5. Python 点云裁剪

    2024-05-26 04:04:43       37 阅读
  6. 汇编实现流水灯

    2024-05-26 04:04:43       33 阅读
  7. 入门Kotlin的学习之路经验总结

    2024-05-26 04:04:43       35 阅读
  8. icloud如何高效利用

    2024-05-26 04:04:43       32 阅读
  9. NDIS小端口驱动(六)

    2024-05-26 04:04:43       28 阅读
  10. unity 常用工具和代码

    2024-05-26 04:04:43       32 阅读
  11. docker image prune -f 命令什么用途

    2024-05-26 04:04:43       32 阅读
  12. dirsearch指令大全

    2024-05-26 04:04:43       41 阅读