net架构2020笔记学习

500 阅读2分钟

Download:学习资料 提取码:pakq

.NET程序是基于.NET Framework、.NET Core、Mono、.NET实现开发和运行的 ,定义以上.NET实现的标准规范称为.NET Standard。

  .NET标准是一组API集合,由上层三种【.NET实现】的Basic Class Library实现,更正式的说法,由统一契约集合构成的规范,这个集合确保了在不同【.NET实现】之间的可移植性,能让你的代码 run everywhere。

  .NET Standard 也是一个 target framework。

  如果您的代码针对的是.NET Standard的一个版本,那它可以在任意一个 支持该.NET Standard版本的.NET实现上运行。

  上图给出的是微软积极支持和维护的有三个主要的【.NET实现】:.NET Framework,.NET Core,Mono

  1、.NET Framework

  最早期的.NET 实现, 4.5+版本开始实现.NET Standard docs.microsoft.com/en-us/dotne… docs.microsoft.com/en-us/dotne…

  早期的微软比较闭源,.NET Framework 是为构建面向windows桌面环境而设计的,针对不同的应用程序形态设计了 WINFORM、 ASP.NET、WPF

  2、.NET Core

  是近几年微软拥抱开源的结晶,.NET Core是一个跨平台的【.NET实现】,因为原生实现了.NET Standard(完全没有版本包袱), 面向.NET Standard的代码可以在.NET Core平台上编译和运行。

  针对Web程序.NET Core准备了ASP.NE Core框架, 定位是微软新一代高性能、开源、跨平台Web开发框架, 目前最新稳定版本为2.2

  另外.NET Core 3.0即将支持WINFORM、WPF, 这样将全面覆盖.Net Framework 支持的应用程序形态。

  3、Mono

  是一个微小运行时的 【.NET实现】,驱动 Xamarin,用于android,ios 等开发,支持目前所有公开的.NET standard 版本。

  本人近些年工作在.NET Core平台, 有一些宏观上的经验之谈, 可供参考。

  部署目标是在Target Framework Moniker中定义, 决定了程序的部署定位, 常见有如下2种:

  netstandard

  netcoreapp

  在实践中:项目早期可能是定位是 netstandard,后面随着项目演进,依赖的库越来越多,大部分都会变成netcoreapp.

  如L1所述 .NetStandard也是一个 target framework, 期望在多个运行时(.Net Framework4.5+,.NET Core, XAMARIN)上都能运作的程序应该以此框架为目标。

  伴随项目演进, 程序依赖的某些库可能只有针对 .NET Core的版本;从生产实际看, 部署环境只会搭配一套.NET Core运行时, 所以后期项目很大可能性会演进成针对 .NET Core的运行时部署。