.net 编译工具_.NET技术栈,大腿终于又变粗了

a8e98d9825abc4489ca9497080d16da7.png

.NET曾是在Windows平台上创建应用程序的杰出技术,但是在移动互联网时代营养不良,变得消瘦。但现在,.NET不仅仅是在Windows平台、也是在Linux和Mac平台上创建应用程序的杰出技术;.NET的大腿又逐渐变粗,壮汉慢慢归来。

.NET技术体系

.NET技术栈主要包含哪些内容?下图给出了.NET体系的一个整体结构。

使用.NET Framework,可以创建Windows Form、WPF和在Windows上运行的旧http://ASP.NET应用程序;

使用.NET Core,可以创建运行在不同平台上运行的http://ASP.NET Core和控制台应用程序。.NET Core也可以创建通用Windows应用(UWP)程序,但UWP只能在Windows平台上运行;因为UWP仍使用了Windows运行库,因此它只能在Windows上使用。

Xamarin平台,基于Mono框架,可以使用C#为iPhone和Android开发应用程序。Xamarin提供了Xamarion.IoS和Xamarin.Android库,使用Xamrian.Forms就可以在两个移动平台之间共享用户界面。

aa5b43233d82f39a35288d4be8a86c3c.png

如上图,.NET Framework,.NET Core和Mono基于.NET Standard(一个标准)构建,他们可以使用相同的库,共享相同的编译器平台、编程语言和运行库组件。

.NET Framework

.NET Framework目前的最新版本是4.8,是在过去十几年(快20年了)不断增强的结果。过去很长一段时间使用它来构建基于Windows的Window Form、WPF和http://ASP.NET应用程序,而且将来也会继续持续一段时间;但它是封闭的。

.NET Core

.NET Core是全新的.NET,是用现代技术和目标对.NET Framework的重写和加强扩展,它的设计起点就很高,很多.NET开发者也是看到这个MS重大更新才继续留在.NET阵营的。

官方的简介:”.NET Core 是一个通用的开放源代码开发平台。 可以使用多种编程语言针对 x64、x86、ARM32 和 ARM64 处理器创建适用于 Windows、macOS 和 Linux 的 .NET Core 应用。 为云、IoT、客户端 UI 和机器学习提供了框架和 API。“;是不是看起来就很高大尚,而且激动人心。

.NET Core 具有以下特性:

  • 跨平台 :可在 Windows、macOS 和 Linux 操作系统上运行。
  • 开放源代码: .NET Core 框架是开放源代码,使用 MIT 和 Apache 2 许可证。 .NET Core 是一个 .NET Foundation 项目。
  • 现代: 它实现了异步编程、使用结构的无复制模式和容器的资源调控等现代范例。
  • 性能: 通过各种功能(如硬件内部函数、分层编译和跨度<T>)来提供高性能。
  • 跨环境一致: 在多个操作系统和体系结构(包括 x64、x86 和 ARM)上以相同的行为运行代码。
  • 命令行工具: 包括可用于本地开发和持续集成的易于使用的命令行工具。
  • 部署灵活: 可以在应用中包含 .NET Core 或并行安装它(用户或系统范围安装)。 可搭配 Docker 容器使用。

.NET Standard

.NET Standard不是某一个具体的实现,而是一个协议/标准,这个标准定义了需要实现哪些API。.NET Framework、.NET Core和Xamarin都实现了这个标准,这也是为什么他们可以共用一些库。

公共语言运行库(CLR - Common Language Runtime)

使用.NET Framework的应用程序,和使用.NET Core的应用程序都需要CLR,分别是CLR和CoreCLR。CLR作用是什么呢?在.NET中,编译分为两个阶段:

1. 将源代码编译为中间语言MSIL (Microsoft Intemediate Lanuage);

2. CLR把MSIL编译为平台专用的本地代码。IL代码在.NET程序集中可用。在运行时,JIT编译器(新的JIT编译器是RyuJIT)编译IL代码,创建特定平台的本地代码。

CLR除了JIT功能外,还包含:

  • CLR包含一个带有类型加载器的类型系统,负责从程序集中加载类型;
  • CLR包含垃圾回收器,从托管堆中清楚不再引用的内存;
  • CLR还负责线程的管理,基于.NET开发语言创建的线程不一定来自底层操作系统;线程的虚拟化和管理是又CLR负责。

Windows运行库 - Windows Runtime

从windows 8 开始,Windows操作系统提供了另一种框架:Windows运行库(Windows Runtime),这个运行库由WUP (Windows Uniersal Platform,Windows通用平台)使用。

C#语言

.NET平台上的开发语言有很多(如:C#、Visual Basic 和 F# ),但使用最多的还是C#。

很久很久之前,因为版权的原因,微软并不能随意修改Java源代码,于是他们找来了Anders Hejlsberg,负责设计C#。在去微软工作前,Hejlsberg在Borland公司负责设计Delphi,一种基于Pascal的程序语言。起初他在微软负责J++(微软版Java)。由于Hejlsberg的个人经历,C#的设计思想主要借鉴了C++,Java以及Pascal。

因为C#是在Java和C++之后设计的,微软分析了它们一些典型的编程bug,并试图通过语法规范使得使用C#的程序员避免同样的错误。

NuGet

和其他技术栈一样,.NET技术栈也有自己的包管理工具;NuGet是.NET平台的包管理器工具,NuGet包本质是一个zip文件,里面包含了一个或多个程序集、配置信息和PowerShell脚本。

开发工具IDE

  • Visual Studio:不要争,这是宇宙第一IDE!
  • Visual Studio Code:短短几年就后来者居上,值得使用。

.NET技术选择

推荐的主流选择:

  • FrameWork: .NET Core > .NET Framework
  • Windows桌面应用:UWP > WPF > Windows Forms
  • Web应用:http://ASP.NET Core > http://ASP.NET > http://ASP.NET Web Forms / WCF

天下合久必分,分久必合,.NET在今年年底将会统一各平台,统一命名为.NET 5。

现在的.NET Core和未来的.NET技术栈的设计目标:

3f13fb3eb47197deaa05fec6cea03f05.png

.NET技术的未来

查查过去几年微软的动作,你便知道.NET技术的未来会是怎么样。

  • 重写.NET平台.NET Core,并开源
  • Visual Code IDE - 后来者居上
  • 微软云平台Azure的发展
  • 收购GitHub,发力开源社区
  • 微软股票的市值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值