自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开发者带入一个全新的开发领域。
.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 组件。
.NET Core 的类库采用 NuGet 包化的架构,应用程序只需要使用 project.json 的 dependencies 区块加入指定包版本的参考,就能获得该包的功能,与以往 .NET Framework 大包式的提供方法完全不同。.NET Core 团队宣布己经有 98% 的 .NET Framework 主要类库移转到 .NET Core 平台。
-
Microsoft.DotNet.CoreHost
-
NETStandard.Platform
-
System.Collections.Concurrent
-
System.Linq
-
System.Runtime.Numerics
-
System.Text.RegularExpressions
-
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
.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 进行开发、编译、发布,效率最高。
.NET Core 经常会拿来与其他平台做类比,尤其是它的源头 .NET Framework 以及另一个相似性质的开源平台 Mono。
下表列出了当前支持的 .NET 版本以及支持它们的 Windows 版本。 这些版本在 .NET 版本达到支持终止日期或 Windows 版本达到生命周期之前仍受支持。
Windows 10 版本终止服务日期按版本分段。 下表中仅考虑家庭版、专业版、专业教育版和专业工作站版。 查看 Windows 生命周期事实表单,了解具体的详细信息。
- 在 Windows 上安装 .NET (参考:https://docs.microsoft.com/zh-cn/dotnet/core/install/windows?tabs=net50)
- 支持的版本
- 不支持的版本
以下 .NET 版本 ❌ 不再受到支持:
- 在 macOS 上安装 .NET(参考:https://docs.microsoft.com/zh-cn/dotnet/core/install/macos)
- 在 Linux 上安装 .NET (参考:https://docs.microsoft.com/zh-cn/dotnet/core/install/linux)
.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/