前端开发者学 .NET:零基础到部署上线
面向已有 HTML/CSS/JavaScript(或 TypeScript)经验、希望系统学习 .NET 并能把服务部署上线的读者。
类比前端概念,减少「从零猜语义」的成本。
一、为什么要学、学什么
| 目标 | 说明 |
|---|---|
| 做 BFF / 聚合层 | 用 ASP.NET Core 统一对接多个后端、裁剪字段、做鉴权转发 |
| 全栈或团队需要 | 与现有 .NET 后端协作、读代码、改接口、排错 |
| 独立上线后端 | 提供 REST/gRPC API,与 Vue/React 等前端分离部署 |
建议学习顺序(约 4~8 周,按投入时间浮动):
- 安装环境与命令行 → 2. C# 语法与 OOP 基础 → 3. ASP.NET Core Web API → 4. 依赖注入与配置 → 5. 数据访问(EF Core 入门)→ 6. 发布与部署 → 7. 生产环境要点(HTTPS、日志、环境变量)。
二、环境搭建
2.1 安装 .NET SDK
- 官网:https://dotnet.microsoft.com/download
- 选择 SDK (不是仅 Runtime)。SDK 包含
dotnet命令行、编译器、模板。 - 终端验证:
bash
dotnet --version
dotnet --list-sdks
2.2 编辑器
- 推荐 :Visual Studio 2022(Windows,功能最全)或 Visual Studio Code + C# 扩展。
- 跨平台:Rider(付费,体验好)。
2.3 常用 CLI(类比 npm)
| 前端类比 | .NET 命令 |
|---|---|
npm init |
dotnet new console / webapi 等 |
npm install |
dotnet add package 包名 |
npm run build |
dotnet build |
npm start |
dotnet run |
| 全局工具 | dotnet tool install -g 工具名 |
创建 Web API 项目示例:
bash
dotnet new webapi -n MyApi -o MyApi
cd MyApi
dotnet run
浏览器访问 https://localhost:5xxx/swagger(若模板启用了 Swashbuckle)可看接口文档。
三、核心概念对照(前端 → .NET)
3.1 语言:C# 与 JavaScript/TypeScript
| 概念 | JS/TS | C# |
|---|---|---|
| 变量 | let/const |
var(少用)/ 常用 int, string, 或 var 推断类型 |
| 类型 | TS 可选类型 | 静态类型为主 ,可 string? 表示可空引用 |
| 函数 | function / 箭头函数 |
void Foo() / 表达式体 => |
| 类 | class |
class,支持接口 interface、继承、多态 |
| 模块 | import/export |
using 引用命名空间;项目间用「项目引用」+ public API |
| 异步 | async/await,Promise |
async Task / Task<T>,await 几乎同样心智模型 |
| 空值 | null/undefined |
主要 null;值类型用 Nullable<int> 或 int? |
3.2 运行时与生态
| 概念 | 说明 |
|---|---|
| CLR | 类似 JS 引擎 + 部分运行时,负责执行 IL(中间语言) |
| .NET / .NET Core / .NET 5+ | 现统一叫 .NET(跨平台),版本如 8、9 |
| NuGet | 包管理,类似 npm,包在 nuget.org |
| csproj | 项目文件,类似 package.json + 构建配置合体 |
3.3 ASP.NET Core 在栈里的位置
- Kestrel:内置 Web 服务器(开发、生产都常用)。
- 生产常在前面加 Nginx / IIS / 反向代理 做 TLS 终结与静态资源。
- 中间件管道:类似 Express 的中间件链,请求依次经过认证、路由、端点等。
四、第一个 Web API 要理解的文件
典型 Program.cs(.NET 6+ 常用「顶级语句」模板,无显式 Main)里你会看到:
WebApplication.CreateBuilder:注册服务(DI 容器)。builder.Services.AddControllers()/AddEndpointsApiExplorer()等。var app = builder.Build():构建管道。app.MapGet/MapControllers:路由与端点。
依赖注入(DI) :类似「容器里注册单例/作用域服务」,构造函数里写接口,框架自动注入。前端可类比:不是到处 import 具体实现,而是注入抽象便于测试与替换。
五、学习路径(按周拆解,可压缩)
第 1~2 周:C# 基础
- 值类型与引用类型、
string、集合(List<T>、Dictionary<TKey,TValue>)。 - 控制流、
LINQ(对集合做Where、Select,类似map/filter)。 - 类、接口、
record(简化不可变数据)。 - 异常:
try/catch/finally(少用异常做流程控制)。
第 3~4 周:ASP.NET Core
- Minimal APIs (
Program.cs里MapGet)与 Controllers(传统 MVC/Web API 风格)二选一深入即可,公司项目用哪种跟哪种。 - 路由、模型绑定、验证(
DataAnnotations或 FluentValidation)。 - 返回 JSON:
Results.Ok(...)或ActionResult<T>。 - 中间件顺序:认证要在路由前等(官方文档有顺序图)。
第 5 周:数据层(入门)
- EF Core :Code First、迁移
dotnet ef migrations add/dotnet ef database update。 - 理解
DbContext、实体关系;先会用,再谈性能优化。
第 6 周及以后:与前端联调、鉴权
- CORS :在 API 里配置
AddCors,开发环境允许前端域名。 - JWT :
AddAuthentication().AddJwtBearer(...),与前端Authorization: Bearer对齐。 - HTTPS:开发用 dev 证书;生产用反向代理或平台证书。
六、发布(Publish)------部署的第一步
把应用编译成可部署的文件(类比 npm run build 产出 dist)。
bash
cd MyApi
dotnet publish -c Release -o ./publish
-c Release:优化后的发布配置。-o:输出目录,内含.dll、依赖、web.config(若目标为 IIS)等。
常见输出类型:
- 框架依赖 (默认):目标机器需安装对应 ASP.NET Core Runtime。
- 自包含:把运行时打进目录,体积大但机器不必预装 .NET。
自包含示例(按 RID 指定平台):
bash
dotnet publish -c Release -r win-x64 --self-contained true -o ./publish
dotnet publish -c Release -r linux-x64 --self-contained true -o ./publish
RID 参考:https://learn.microsoft.com/dotnet/core/rid-catalog
七、部署方式概览
7.1 Windows + IIS
适用:公司已有 Windows 服务器与 IIS。
要点:
- 安装 .NET Hosting Bundle(含 Runtime + IIS 模块),版本与项目目标框架一致。
- 在 IIS 中创建站点,应用程序池选 无托管代码(ASP.NET Core 由 Kestrel/ANCM 处理)。
- 指向
publish输出目录;配置环境变量ASPNETCORE_ENVIRONMENT=Production。 - 用 HTTPS 绑定证书。
官方文档:https://learn.microsoft.com/aspnet/core/host-and-deploy/iis/
7.2 Linux(常见:Nginx 反向代理 + systemd)
- 服务器安装 Runtime 或拷贝自包含发布包。
- systemd 守护进程,示例单元文件思路:
WorkingDirectory指向发布目录ExecStart=/usr/bin/dotnet /path/MyApi.dll(或自包含可执行文件)- 环境变量:
Environment=ASPNETCORE_ENVIRONMENT=Production
- Nginx :
proxy_pass到http://127.0.0.1:5000(以应用实际端口为准)。 - 证书:Let's Encrypt(certbot)或云厂商证书。
官方:https://learn.microsoft.com/aspnet/core/host-and-deploy/linux-nginx
7.3 Docker
Dockerfile 思路(多阶段构建):
- 阶段一:SDK 镜像里
dotnet publish。 - 阶段二:Runtime 镜像里只拷贝发布产物,设置
ENTRYPOINT启动dll或可执行文件。
优势:环境一致、易与 K8s、云容器服务配合。
官方示例:https://learn.microsoft.com/dotnet/core/docker/publish-as-container
7.4 云平台(任选其一练手)
| 平台 | 说明 |
|---|---|
| Azure App Service | 与 .NET 集成好,Git/容器部署 |
| 阿里云 / 腾讯云 / 华为云 | 云主机 + 上文 Linux 或 Windows 流程 |
| Railway / Render 等 | 小项目体验发布与 HTTPS |
上线前 checklist:环境变量 (连接字符串、密钥勿进仓库)、日志 (Serilog 等)、健康检查 (/health)、反向代理真实 IP (ForwardedHeaders)。
八、上线后常见操作
- 配置 :
appsettings.json+appsettings.Production.json,敏感项用环境变量或密钥管理服务覆盖。 - 日志:结构化日志、日志级别、集中收集(可选 Application Insights、ELK 等)。
- 健康与监控:存活探针、APM、错误追踪。
- 数据库迁移:生产迁移策略(启动时迁移 vs 独立 Job,团队规范为准)。
- CI/CD :GitHub Actions / Azure DevOps / GitLab CI:
dotnet test→dotnet publish→ 部署到服务器或推送镜像。
九、官方与权威资料(优先阅读)
- C# 语言:https://learn.microsoft.com/dotnet/csharp/
- ASP.NET Core:https://learn.microsoft.com/aspnet/core/
- EF Core:https://learn.microsoft.com/ef/core/
- 部署总览:https://learn.microsoft.com/aspnet/core/host-and-deploy/
十、给前端的实践作业建议
- 用 Minimal API 写一个 CRUD(内存列表即可),用 Swagger 自测。
- 同一个接口用 Vue/React 发
fetch/axios调用,处理 CORS。 - 把项目
dotnet publish,在本地用 IIS Express 或 Docker 跑起来。 - 加一条 JWT 保护接口,前端存 token 调用。
按上述顺序做完,你对「开发 → 发布 → 部署 → 联调」会有完整体感;再按需深入性能、安全与运维即可。
文档版本:2026-04,适用于 .NET 8/9 系通用概念;具体命令以你安装的 SDK 文档为准。