前言
.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 优势远远不止于此,本文只是抛砖引玉,如果您知道更多的优势,欢迎留言讨论。
我是老杨,一个奋斗在一线的资深研发老鸟,让我们一起聊聊技术,聊聊人生。
都看到这了,求个点赞、关注、在看三连呗,感谢支持。