• .Net Core简介


     一、为什么要推出.Net Core

      .Net FrameWrok在技术层面是完全具备跨平台的能力的,PC时代微软出于商业利益上的考虑,并没有对CRL提供非Windows平台的实现。在Windows平台上,.NET框架没有太多的竞争。微软可以对从操作系统内核层到高级.NET库的所有内容进行更改。2014年微软新的CEO上台,“开源”和“跨平台”成了大势所趋。通过将.NET引入其他平台,竞争环境发生了变化。.NET现在必须与其他所有的开发框架竞争。

    二、.Net的跨平台架构   

      2016年,微软收购了Xamarin并发布了.NET Core 1.0。之前Xamarin已经移植了.NET框架的大部分内容来运行在基于Linux / Unix的操作系统上。一些代码可以在.NET Framework,Xamarin和新的.NET Core之间共享,但编译后的二进制文件不能。.NET Core的一部分努力是创建一个标准化的平台,允许所有.NET实现共享相同的库

     三、.Net Core

    .NET Core 具有以下特性:

    • 跨平台: 可在 Windows、macOS 和 Linux 操作系统上运行。
    • 跨体系结构保持一致: 在多个体系结构(包括 x64、x86 和 ARM)上以相同的行为运行代码。
    • 命令行工具: 包括可用于本地开发和持续集成方案中的易于使用的命令行工具。
    • 部署灵活: 可以包含在应用或已安装的并行(用户或系统范围安装)中。 可搭配 Docker 容器使用。
    • 兼容性: .NET Core 通过 .NET Standard 与 .NET Framework、Xamarin 和 Mono 兼容。
    • 开放源代码: .NET Core 平台是开放源代码,使用 MIT 和 Apache 2 许可证。 .NET Core 是一个 .NET Foundation 项目。
    • 由 Microsoft 支持: .NET Core 由 Microsoft 依据 .NET Core 支持提供支持。

    .NET Core 包括以下部分:

    • .NET Core 运行时:提供类型系统、程序集加载、垃圾回收器、本机互操作和其他基本服务。 .NET Core 框架库:提供基元数据类型、应用编写类型和基本实用程序。
    • ASP.NET 运行时:提供一个框架来生成基于云且连接到 Internet 的新式应用程序,例如 Web 应用、IoT 应用和移动后端。
    • .NET Core CLI 工具和语言编译器(RoslynF#):提供 .NET Core 开发人员体验。
    • dotnet 工具:用于启动 .NET Core 应用和 CLI 工具。 它选择运行时并托管运行时,提供程序集加载策略并启动应用和工具。

    这些组件采用以下方式分布:

     

    上图描述了 .NET Core的系统构成,最上层是应用层,是开发基于UI应用的框架集,包括了ASP.NET Core(用于创建web app),和 UWP(用于创建Windows10 app)。

    中间层是公共库(CoreFX),实现了.NET Standard Library ,囊括了常用系统级操作例如(文件、网络等)。

    在CoreFx下是运行时环境,.NET Core 包含了两种运行时(CoreCLR、CoreRT),CoreCLR是一种基于即时编译程序(Just in time compiler,JIT)的运行时,它使用了跨平台开源的编译器RyuJIT,而CoreRT是使用提前编译器(Ahead of time compiler,AOT)的运行时,它既可以使用RyuJIT来实现AOT编译也可以使用其他的AOT编译器。由于AOT提前编译IL成了机器码,在移动设备上也具有更好的启动速度和节能性。

    最后还要提到一个开源的跨平台源代码编译器Roslyn,它有别于刚才两个编译器,JIT和AOT编译器主要用于将IL编译成本机机器码,而Roslyn是将C# 或 VB.NET 代码编译成程序中间语言(intermediate language,IL)

     

    由于 .NET Core 支持并行安装及其运行时完全独立于 .NET Framework,它可以安装在装有.NET Framework 的计算机上,不会出现任何问题

    代码开发、部署、运行过程

     四、与 .NET Framework 比较

       由于.NET Framework主要以托管(C#)代码为基础构建,因此这些部分不需要更改代码即可移至.NET Core。但是像COM组件,注册表项,特殊文件夹,GAC - 都是为了利用Windows的特性而设计的。.NET Framework 依赖于这些构造,这使得它不适合其他操作系统。依赖于Windows特定组件的库必须被移除或重构以使用跨平台替代方案。

    .NET Core 和 .NET Framework 的主要差异在于:

    • 应用模型 - .NET Core 并非支持全部 .NET Framework 应用模型。 具体而言,它不支持 ASP.NET Web 窗体和 ASP.NET MVC,但支持 ASP.NET Core MVC。 自 .NET Core 3.0 起,.NET Core 还支持 WPF 和 Windows 窗体(仅限在 Windows 上)。
    • API -- .NET Core 包含 .NET Framework 基类库的一个大型子集,但具有不同的组成要素(程序集名称不同;类型上公开的成员在关键用例中不同)。 在某些情况下,这些差异要求进行更改,以将源移植到 .NET Core 中。 有关详细信息,请参阅 .NET 可移植性分析器。 .NET Core 实施 .NET Standard API 规范。
    • 子系统 -- .NET Core 实现 .NET Framework 中子系统的子级,目的是实现更简单的实现和编程模型。 例如,不支持代码访问安全性 (CAS),但支持反射。
    • 平台 -- .NET Framework 支持 Windows 和 Windows Server,而 NET Core 还支持 macOS 和 Linux。
    • 开源 -- .NET Core 是开源的,而 .NET Framework 的只读子集是开源的。

     

    五、当前版本.NET Core 3.0

    参见:https://devblogs.microsoft.com/dotnet/announcing-net-core-3-0/

     六、未来

    .NET 5 = .NET Core vNext

    详见:

    https://devblogs.microsoft.com/dotnet/introducing-net-5/

    SQL Server
  • 相关阅读:
    (树链剖分+线段树)POJ
    (树上莫队)HDU
    (LCA+树上主席树)FZU 2237
    (预处理+莫队算法)HDU
    (莫队算法)两题莫队算法统计数量的入门题
    (莫队算法)CodeForces
    sublime配置C++14
    (dfs序+莫队算法/启发式合并/树分治)Codeforces 375D
    (线段树两个lazy标记需要设定优先级)UVA 11992
    (线段树区间合并)UVA 11235
  • 原文地址:https://www.cnblogs.com/zlgan/p/11616698.html
Copyright © 2020-2023  润新知