第一章:.NET 生态全景

大家好,我是你们的老朋友。今天咱们聊聊 .NET 生态的全貌。

说实话,我刚开始接触 .NET 时,也被它庞大的体系搞得有点懵。但别担心,我会用最直白的方式,带你理清这条线。

1.1 .NET 发展史:从 .NET Framework 到 .NET 8

.NET 最早是微软在 2002 年推出的,那时候叫 .NET Framework。它只跑在 Windows 上,像个「温室里的花朵」。

我记得 2014 年,微软宣布 .NET 开源,还推出了 .NET Core。这步棋走得真漂亮。从此 .NET 可以跑在 Linux、macOS 上了。

到了 2020 年,.NET 5 发布,微软把 .NET Framework 和 .NET Core 合并了。之后每年一个大版本:.NET 6、.NET 7、.NET 8。

核心变化:

  • .NET Framework:仅 Windows,闭源,老项目在用
  • .NET Core:跨平台,开源,新项目首选
  • .NET 5+:统一了,不再有 Framework 和 Core 的区分

嗯,这里要注意:如果你还在维护 .NET Framework 4.x 的项目,别急着迁移。我见过不少团队盲目升级,结果第三方库不兼容,折腾了两个月。

1.2 .NET 6/7/8 版本差异:我该选哪个?

很多新手会问:「老师,我该学 .NET 6 还是 .NET 8?」

我的建议是:新项目直接用 .NET 8。为什么?

版本 发布时间 关键特性 我的建议
.NET 6 2021.11 LTS 长期支持,MAUI 预览 老项目稳定用,新项目不推荐
.NET 7 2022.11 性能提升,容器化优化 非 LTS,适合尝鲜
.NET 8 2023.11 LTS,AOT 编译,性能大幅提升 新项目首选

我个人习惯是:生产环境用 LTS 版本(.NET 6 或 .NET 8),开发环境可以试试最新版。但别在生产环境用 .NET 7,它只有 18 个月支持期,到期就得升级,麻烦。

避坑指南:我曾经在 .NET 7 刚发布时就上了生产,结果半年后微软宣布 .NET 8 预览版,我不得不提前做升级计划。从那以后,我学乖了——生产环境只用 LTS。

1.3 应用场景:Web / API / 微服务

.NET 能做什么?说白了,三件事:

  • Web 应用:用 ASP.NET Core MVC 或 Razor Pages 做传统网站。我做过一个电商后台,页面渲染快,SEO 友好。
  • API 服务:用 ASP.NET Core Web API 做 RESTful 接口。现在大部分新项目都是前后端分离,后端只提供 API。
  • 微服务:用 .NET 配合 Docker、Kubernetes 做分布式系统。我参与过一个金融项目,拆了 20 多个微服务,每个服务独立部署、独立扩展。

你想想看,一个 .NET 项目,可能同时包含 Web 页面和 API 接口。比如用户管理页面用 MVC,数据查询接口用 Web API。这很常见。

注意:别一上来就搞微服务。我见过太多团队,项目还没跑起来,先拆了 10 个服务,结果连基本的 CRUD 都搞不定。微服务是架构演进的结果,不是起点。

1.4 开发环境搭建:VS2022 / SDK / CLI

搭建环境其实很简单,但很多人第一步就卡住了。我来说说我的做法。

第一步:安装 .NET SDK

dotnet.microsoft.com 下载 .NET 8 SDK。安装完后,打开命令行验证:

dotnet --version
# 输出:8.0.100

如果看到版本号,说明 SDK 装好了。

第二步:安装 Visual Studio 2022

我个人习惯用 VS2022 Community 版(免费)。安装时记得勾选「ASP.NET 和 Web 开发」工作负载。

如果你喜欢轻量级工具,用 VS Code 也行。但调试体验不如 VS2022。

第三步:熟悉 CLI 命令

CLI 是 .NET 的灵魂。我平时开发很少点鼠标,全靠命令行:

# 创建新项目
dotnet new webapi -n MyApi

# 运行项目
dotnet run

# 添加 NuGet 包
dotnet add package Dapper

嗯,这里要注意:CLI 命令不区分大小写,但参数区分。比如 -n-N 不一样。

我的小技巧:把常用命令写成脚本。比如我有个 new-api.sh,一键创建项目并打开 VS Code。省时间。

好了,环境搭好了。下一章我们开始写第一个 .NET 项目。

记住:工具只是手段,理解原理才是关键。别在环境搭建上花太多时间,遇到问题直接搜「.NET SDK 安装失败」,99% 的问题都能解决。

我是你们的 .NET 架构师,咱们下章见。


公众号:蓝海资料掘金营,微信deep3321