前端开发者学 .NET:零基础到部署上线

前端开发者学 .NET:零基础到部署上线

面向已有 HTML/CSS/JavaScript(或 TypeScript)经验、希望系统学习 .NET 并能把服务部署上线的读者。

类比前端概念,减少「从零猜语义」的成本。


一、为什么要学、学什么

目标 说明
做 BFF / 聚合层 ASP.NET Core 统一对接多个后端、裁剪字段、做鉴权转发
全栈或团队需要 与现有 .NET 后端协作、读代码、改接口、排错
独立上线后端 提供 REST/gRPC API,与 Vue/React 等前端分离部署

建议学习顺序(约 4~8 周,按投入时间浮动):

  1. 安装环境与命令行 → 2. C# 语法与 OOP 基础 → 3. ASP.NET Core Web API → 4. 依赖注入与配置 → 5. 数据访问(EF Core 入门)→ 6. 发布与部署 → 7. 生产环境要点(HTTPS、日志、环境变量)。

二、环境搭建

2.1 安装 .NET SDK

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(对集合做 WhereSelect,类似 map/filter)。
  • 类、接口、record(简化不可变数据)。
  • 异常:try/catch/finally(少用异常做流程控制)。

第 3~4 周:ASP.NET Core

  • Minimal APIsProgram.csMapGet)与 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,开发环境允许前端域名。
  • JWTAddAuthentication().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。

要点:

  1. 安装 .NET Hosting Bundle(含 Runtime + IIS 模块),版本与项目目标框架一致。
  2. 在 IIS 中创建站点,应用程序池选 无托管代码ASP.NET Core 由 Kestrel/ANCM 处理)。
  3. 指向 publish 输出目录;配置环境变量 ASPNETCORE_ENVIRONMENT=Production
  4. 用 HTTPS 绑定证书。

官方文档:https://learn.microsoft.com/aspnet/core/host-and-deploy/iis/

7.2 Linux(常见:Nginx 反向代理 + systemd)

  1. 服务器安装 Runtime 或拷贝自包含发布包。
  2. systemd 守护进程,示例单元文件思路:
    • WorkingDirectory 指向发布目录
    • ExecStart=/usr/bin/dotnet /path/MyApi.dll(或自包含可执行文件)
    • 环境变量:Environment=ASPNETCORE_ENVIRONMENT=Production
  3. Nginxproxy_passhttp://127.0.0.1:5000(以应用实际端口为准)。
  4. 证书: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)、反向代理真实 IPForwardedHeaders)。


八、上线后常见操作

  1. 配置appsettings.json + appsettings.Production.json,敏感项用环境变量或密钥管理服务覆盖。
  2. 日志:结构化日志、日志级别、集中收集(可选 Application Insights、ELK 等)。
  3. 健康与监控:存活探针、APM、错误追踪。
  4. 数据库迁移:生产迁移策略(启动时迁移 vs 独立 Job,团队规范为准)。
  5. CI/CD :GitHub Actions / Azure DevOps / GitLab CI:dotnet testdotnet publish → 部署到服务器或推送镜像。

九、官方与权威资料(优先阅读)


十、给前端的实践作业建议

  1. 用 Minimal API 写一个 CRUD(内存列表即可),用 Swagger 自测。
  2. 同一个接口用 Vue/React 发 fetch/axios 调用,处理 CORS。
  3. 把项目 dotnet publish,在本地用 IIS Express 或 Docker 跑起来。
  4. 加一条 JWT 保护接口,前端存 token 调用。

按上述顺序做完,你对「开发 → 发布 → 部署 → 联调」会有完整体感;再按需深入性能、安全与运维即可。


文档版本:2026-04,适用于 .NET 8/9 系通用概念;具体命令以你安装的 SDK 文档为准。

相关推荐
我是唐青枫2 小时前
C#.NET ObjectPool 深入解析:对象复用、池化策略与使用边界
c#·.net
宁&沉沦4 小时前
.NET 常见文件与扩展名含义(速查)
.net
叫我黎大侠5 小时前
.NET 实战:调用千问视觉模型实现 OCR(车票识别完整教程)
阿里云·ai·c#·ocr·asp.net·.net·.netcore
唐青枫5 小时前
C#.NET ValueTaskSource 深入解析:零分配异步、ManualResetValueTaskSourceCore 与使用边界
c#·.net
公子小六5 小时前
基于.NET的Windows窗体编程之WinForms事件简介
windows·microsoft·c#·.net
军训猫猫头6 小时前
7.带输入参数的线程启动 C# + WPF 完整示例
开发语言·前端·c#·.net·wpf
CSharp精选营7 小时前
AutoMapper三板斧:值转换器、条件映射、自定义解析器,复杂映射不再愁
c#·.net·automapper
.NET修仙日记7 小时前
2026 .NET 面试八股文:高频题 + 答案 + 原理(进阶核心篇)
面试·职场和发展·c#·.net·.net core·微软技术·webapi