• .NET平台系列5 .NET Core 简介


      自1995年互联网战略日以来最雄心勃勃的事业 —— 微软.NET战略, 2000年6月30日。  

      微软公司于2002年2月13日正式推出第一代.NET平台 .NET Framewrok 1.0。借助于自家强大易用的 Windows 系统,.NET Framework1.0 主要提供了面向 Windows 桌面(Windows Form)和服务器(ASP.NET Web Forms)的基础开发框架。在宇宙第一IDE(Visual Studio)中使用这两款框架进行业务系统开发,框架中都提供了功能强大的控件、组件,开发者通过可视化编程方式进行开发就非常容易上手,而且开发速度非常快,因此.NET平台深受全世界开发者的喜爱,发展一路顺风顺水。

      在.NET(旧称.NET Framework )发展过程中,其最大的竞争对手就是Java。Java是主打敏捷开发、跨平台的编程语言,自1995年推出Java正式版以来,凭借其天生的跨平台(Windows、Linux、MacOS)优势,发展至今在全世界开发者市场与生态圈层面远远超过.NET平台。.NET Framework 与 Windows 平台深度绑定,无法做到跨平台,所以一直处于被Java压制的状态。

      互联网技术飞速发展至今,传统的桌面程序与Web应用已无法满足各行各业的多场景应用需求。云计算、人工智能、大数据以及云原生等新兴技术方向在现代IT时代掀起了一波又一波浪潮。传统的 .NET Framework 技术极大地限制了.NET平台的应用范围与发展,面对如此尴尬的局面与现状,微软审时度势,于2014年推出跨平台解决方案.NET Core。

      2014年11月12日,微软ASP.NET之父Scott Guthrie 在 Connect 全球开发者在线会议上宣布,微软将开源全部的.NET Core 运行时,并将.NET 扩展为可在Linux和maxOS平台上开发与运行,从而让.NET应用实现跨平台。

    dotnet/runtime 开源地址:https://github.com/dotnet/runtime

    dotnet/core 发行日志:     https://github.com/dotnet/core/tree/main/release-notes

    dotnet SDK 下载地址:     https://dotnet.microsoft.com/download

      .NET Core 的推出是微软.NET技术发展史上又一个重要里程碑。.NET Core是.NET技术的重要变革,它将全世界.NET开发者带入一个全新的开发领域。

    1、.NET Core 定义

      .NET Core is a free, cross-platform, open-source developer platform for building many different types of applications. 这是微软官方给出的定义:.NET Core是一个免费、跨平台、开源的开发平台,用于构建许多不同类型的应用程序。

      .NET Core 设计目标有包含:

    • 支持或可以移转 (port) 到更多的操作系统平台与芯片架构 (未来项目会跨出 x86 平台。目前已至此x64、arm)。
    • 具有引人注目的性能与高可靠度。
    • 开发人员能快速与直接的获取 .NET Core 开发环境。
    • 在直觉与具生产力的情况下建造应用程序,使用文件,示例与 NuGet 组件。
    2、.NET Core 包管理

      .NET Core 的类库采用 NuGet 包化的架构,应用程序只需要使用 project.json 的 dependencies 区块加入指定包版本的参考,就能获得该包的功能,与以往 .NET Framework 大包式的提供方法完全不同。.NET Core 团队宣布己经有 98% 的 .NET Framework 主要类库移转到 .NET Core 平台。

    .NET Standard Library 是一个总括型的 NuGet Package,其内包含了这些类库包:
    • Microsoft.DotNet.CoreHost
    • NETStandard.Platform
    • System.Collections.Concurrent
    • System.Linq
    • System.Runtime.Numerics
    • System.Text.RegularExpressions
    其中的 NETStandard.Platform 也是一个总括型包,包含了下列类库包:
    • Microsoft.NETCore.Platforms
    • Microsoft.NETCore.Runtime
    • Microsoft.Win32.Primitives
    • System.AppContext
    • System.Collections
    • System.Diagnostics.Debug
    • System.Diagnostics.Tools
    • System.Diagnostics.Tracing
    • System.Globalization
    • System.Globalization.Calendars
    • System.IO
    • System.IO.FileSystem
    • System.IO.FileSystem.Primitives
    • System.Net.Primitives
    • System.Net.Sockets
    • System.Reflection
    • System.Reflection.Extensions
    • System.Reflection.Primitives
    • System.Reflection.TypeExtensions
    • System.Runtime
    • System.Runtime.Extensions
    • System.Runtime.Handles
    • System.Runtime.InteropServices
    • System.Runtime.InteropServices.RuntimeInformation
    • System.Text.Encoding
    • System.Text.Encoding.Extensions
    • System.Threading
    • System.Threading.Tasks
    • System.Threading.Timer
    开发人员只需要使用 NETStandard.Library 就能加入所有必要的 .NET Core 类库参考,但若不需要这么多组件,也可以只加入特定的包即可,不一定都要加入 NETStandard.Library。
    3、.NET Core 支持的应用程序类型

      .NET Core 基于跨平台能力,并没有将与 GUI 高度相关的 API 移植到 .NET Core 内,因此像是Windows Forms或是Windows Presentation Foundation(WPF) 并未移植到 .NET Core。.NET Core 支持控制台应用程序 (Console Application) 以及类库 (Class Library) 类型的项目。

      不过微软在其Universal Windows Platform(UWP) 开发平台使用了 .NET Core ,并且利用 .NET Native 技术将其性能提升至十分接近原生码的速度。
      ASP.NET Core 则以控制台应用程序驱动其托管环境 Kestrel Server 以支持 ASP.NET Core 程序的运行。
      .NET CLI (Command-Line Interface) 指令列工具是 .NET Core 处理建造、运行与编辑工作的主要工具 ,有几个主要的动作:

    指令
    帮助
    dotnet new
    产生新的基本 .NET 项目内容 (包含 project.json、Program.cs 以及 NuGet.config)
    dotnet restore
    还原所参考的 NuGet 包
    dotnet build
    建造 .NET 项目
    dotnet publish
    产生可发行的 .NET 项目 (包含所属的 Runtime)
    dotnet run
    编译与立即运行 .NET 项目 (较适用于 exe 型项目)
    dotnet repl
    引导交互式的对话
    dotnet pack
    将项目的产出封装成 NuGet 包
     

    提示:命令都是神一般的存在,我们凡人还是使用 Visual Studio 进行开发、编译、发布,效率最高。

    4、.NET Core 与其他平台的关系

      .NET Core 经常会拿来与其他平台做类比,尤其是它的源头 .NET Framework 以及另一个相似性质的开源平台 Mono。

      .NET Framework
      据微软的帮助文档介绍,.NET Core 和 .NET Framework 是子集 (Subset) 与超集 (Superset) 的关系,.NET Core 将会实现出部分的 .NET Framework 功能 (基本上是不含用户界面的部分),例如 JIT (.NET Core 采用 RyuJIT)、垃圾收集器 (GC) 以及类型 (包含基本类型以及泛型类型等)。未来 .NET Framework 和 .NET Core 也将会是各自发展,但它们也会同时使用彼此的功能,例如 .NET Compiler Platform 与 RyuJIT 等技术。
     
      Mono
      Mono 是另一个已发展许久的 .NET Framework 跨平台开源版本,基本上并不隶属微软官方,而是由社区的力量所主导,自成一个生态系统,也开发出了像Xamarin这样的跨平台.NET移动应用,.NET Core 与 Mono 未来会是合作的关系,Mono 仍会维持社区力量的维护与发展,而 .NET Core 则会以官方角度来进行发展,两边也会一起进行彼此功能上的增进 。
     
      与 ASP.NET Core 的关系
      .NET Core 与 ASP.NET Core 的关系其实一开始并不是主从关系  ,ASP.NET Core 的开发初期 (ASP.NET 5) .NET Core 还没有开始起跑,因此 ASP.NET Core 当时有自己的运行期与工具,一开始称为 Project K,后来改为 DNX (.NET Execution Environment),DNX 本身就具有可独立运作的运行能力,不需要依赖 .NET Core 运行,但是这样会变成 .NET Core 和 ASP.NET Core 双头马车的现象,在 .NET Core 逐渐成熟之后,微软也决定要将这两个各自独立发展的产品线集成在一起,DNX 也将因改用 .NET Core 运行期而终止开发,DNX 的功能将由 .NET Core 以及旗下的 .NET CLI 接替提供,集成后的版本将在 1.0 RC2 时发布。
     
    5、.NET Core 支持的操作系统

      下表列出了当前支持的 .NET 版本以及支持它们的 Windows 版本。 这些版本在 .NET 版本达到支持终止日期Windows 版本达到生命周期之前仍受支持。

    Windows 10 版本终止服务日期按版本分段。 下表中仅考虑家庭版、专业版、专业教育版和专业工作站版。 查看 Windows 生命周期事实表单,了解具体的详细信息。

      • 不支持的版本

            以下 .NET 版本 ❌ 不再受到支持:

                         

    6、.NET Core 支持开发的应用程序
     

    .NET Core/.NET6 平台目前打通并支持7大应用方向:桌面开发、网页开发、游戏开发、移动应用、云计算、物联网IoT、人工智能AI (机器学习ML.NET、大数据.NET for Apache Spark )。足以看出.NET 平台的强大。但是这还不够,微软一直做出非常大的努力,通过在 Visual Studio 开发工具中编写一套代码,可以一次编译并发布运行至多终端运行。截止目前在宇宙中仅此微软一家能够做到如此。

    参考链接

    【1】https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md

    【2】https://github.com/dotnet/corefx

    【3】https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/glossary.md

    【4】https://www.microsoft.com/net/core#windows

    【5】https://msdn.microsoft.com/en-us/library/dn807190(v=vs.110).aspx

    【6】https://blogs.msdn.microsoft.com/dotnet/2013/09/30/ryujit-the-next-generation-jit-compiler-for-net/

    【7】https://zh.wikipedia.org/wiki/.NET_Core

    成在管理,败在经验;嬴在选择,输在不学!  贵在坚持!

    欢迎关注作者头条号 张传宁IT讲堂,获取更多IT文章、视频等优质内容。

       

     个人作品

       

        1、BIMFace.Community.SDK.NET

         开源地址:https://gitee.com/NAlps/BIMFace.SDK

         系列博客:https://www.cnblogs.com/SavionZhang/p/11424431.html

         系列视频:https://www.cnblogs.com/SavionZhang/p/14258393.html

       

        2、ZCN.NET.Common

         开源地址:https://gitee.com/NAlps/zcn.net.common

     技术栈

       

     1、Visual Studio、.C#/.NET、.NET Core、MVC、Web API、RESTful API、gRPC、SignalR、Python

     2、jQuery、Vue.js、Bootstrap

     3、数据库:SQLServer、MySQL、PostgreSQL、Oracle、SQLite、Redis、MongoDB、ElasticSearch、TiDB、达梦DM、人大金仓、 神通、南大通用 GBase、华为 GaussDB 、腾讯 TDSQL 、阿里 PolarDB、蚂蚁金服 OceanBase、东软 OpenBASE、浪潮云溪数据库 ZNBase

     4、ORM:Dapper、Entity Framework、FreeSql、SqlSugar、分库分表、读写分离

     5、架构:领域驱动设计 DDD、ABP

     6、环境:跨平台、Windows、Linux(CentOS、麒麟、统信UOS、深度Linux)、maxOS、IIS、Nginx、Apach

     7、移动App:Android、IOS、HarmonyOS、微信、小程序、快应用、Xamarin、uni-app、MUI、Flutter、Framework7、Cordova、Ionic、React Native、Taro、NutUI、Smobiler

       

     云原生、微服务、Docker、CI/CD、DevOps、K8S;

     Dapr、RabbitMQ、Kafka、分布式、大数据、高并发、负载均衡、中间件、RPC、ELK;

     .NET + Docker + jenkins + Github + Harbor + K8S;

    出处:www.cnblogs.com/SavionZhang

    作者:张传宁   微软MCP、系统架构设计师、系统集成项目管理工程师、科技部创新工程师。

              专注于微软.NET技术(.NET Core、Web、MVC、WinForm、WPF)、通用权限管理系统、工作流引擎、自动化项目(代码)生成器、SOA 、DDD、 云原生(Docker、微服务、DevOps、CI/CD);PDF、CAD、BIM 审图等研究与应用。

              多次参与电子政务、图书教育、生产制造等企业级大型项目研发与管理工作。

              熟悉中小企业软件开发过程:需求分析、架构设计、编码测试、实施部署、项目管理。通过技术与管理帮助中小企业快速化实现互联网技术全流程解决方案。

             


             

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

    如有问题,可以通过邮件905442693@qq.com联系。共同交流、互相学习。

    如果您觉得文章对您有帮助,请点击文章右下角【推荐】。您的鼓励是作者持续创作的最大动力!

  • 相关阅读:
    DevExpress ASP.NET Core Controls 2019发展蓝图(No.6)
    DevExpress v18.2版本亮点——Analytics Dashboard篇(二)
    VS插件CodeRush for Visual Studio发布v18.2.9|附下载
    DevExpress 2019 .NET产品现已完全支持Visual Studio 2019
    DevExpress v18.2版本亮点——Analytics Dashboard篇(一)
    Java开发神器——MyEclipse CI 2019.4.0 全新发布(附下载)
    DevExpress ASP.NET Core Controls 2019发展蓝图(No.5)
    JS原型链中的prototype与_proto_的个人理解与详细总结
    ASP.NET Core中的依赖注入(5):ServicePrvider实现揭秘【补充漏掉的细节】
    ASP.NET Core中的依赖注入(5): ServiceProvider实现揭秘 【解读ServiceCallSite 】
  • 原文地址:https://www.cnblogs.com/SavionZhang/p/14754104.html
Copyright © 2020-2023  润新知