# 西建大iOS Club Asp.Net Core学习项目 **Repository Path**: XAUATiOSClub/learn-aspnetcore ## Basic Information - **Project Name**: 西建大iOS Club Asp.Net Core学习项目 - **Description**: 西建大iOS Club Asp.Net Core学习项目 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-23 - **Last Updated**: 2025-06-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 西建大iOS Club Asp.Net Core学习项目 ### **C# + ASP.NET Core WebAPI 学习路径 (10周全面掌握计划)** **总体建议:** * **动手为主,看为辅:** 每一天的学习都必须伴随着代码实践。不要只看不练。 * **用好工具:** 熟练使用 Visual Studio / VS Code 的调试功能(断点、监视、调用堆栈)是程序员的核心技能。 * **遇到问题:** 首先尝试自己解决,利用搜索引擎(Google/Bing)。学会提问的艺术,可以去 Stack Overflow、GitHub 或相关社区求助。 --- #### **第一周:C# 基础入门与环境搭建** * **本周目标:** 搭建好开发环境,掌握C#最基础的语法,能够编写简单的控制台应用程序。 * **学习内容 (参考网站):** 1. **写在前面:** 阅读此部分,建立正确的学习心态。 2. **开发环境搭建:** * 安装 .NET SDK。 * 安装 Visual Studio 2022 (推荐,社区版免费) 或 VS Code (配合C#插件)。 * 创建并运行第一个 "Hello World" 控制台应用。 3. **基础语法:** * 变量、数据类型 (int, string, bool, double 等)。 * 运算符 (算术、关系、逻辑)。 * 控制流 (if-else, switch, for, while, do-while)。 * 数组。 * 方法/函数的定义与调用。 * **实践任务:** * 编写一个简单的计算器控制台程序。 * 编写一个“猜数字”游戏。 --- #### **第二周:C# 核心 - 面向对象编程 (OOP)** * **本周目标:** 深刻理解面向对象的思想,并能在C#中应用。这是未来构建复杂系统的基石。 * **学习内容 (参考网站):** 1. **面向对象:** * 类 (Class) 与对象 (Object)。 * 封装 (Encapsulation): 字段、属性、访问修饰符 (`public`, `private`)。 * 继承 (Inheritance)。 * 多态 (Polymorphism): `virtual`, `override`, `abstract`。 * 接口 (Interface)。 * 构造函数 (Constructor)。 * `static` 关键字。 * **实践任务:** * 设计并实现一组类来模拟一个场景,例如“学校” (包含学生类、教师类、课程类)。 * 使用接口定义一个“可攻击”的行为,让“战士”和“法师”类都实现它。 --- #### **第三周:C# 实用特性 - 集合与LINQ** * **本周目标:** 掌握处理一组数据的常用方法,并学会使用LINQ高效地查询和操作数据。 * **学习内容 (参考网站):** 1. **集合:** * `List`: 最常用的动态数组。 * `Dictionary`: 键值对集合。 * 了解 `Array`, `Queue`, `Stack` 等。 2. **LINQ (语言集成查询):** * 理解其核心思想:像查询数据库一样查询集合。 * 掌握常用方法: `Where`, `Select`, `OrderBy`, `FirstOrDefault`, `ToList`, `Count`, `Any`。 * 学习方法语法 (Method Syntax) 和查询语法 (Query Syntax)。 * **实践任务:** * 创建一个学生列表 (`List`),每个学生有ID、姓名、年龄、分数等属性。 * 使用LINQ完成以下查询: * 找出所有分数及格的学生。 * 按年龄对学生进行排序。 * 只获取所有学生的名字列表。 * 找到第一个姓“王”的学生。 --- #### **第四周:C# 进阶与 WebAPI 初探** * **本周目标:** 接触C#的异步编程,并创建你的第一个ASP.NET Core WebAPI项目。 * **学习内容 (参考网站):** 1. **异步编程:** * 理解为什么需要异步 (`async`/`await`)。 * 掌握 `Task` 和 `Task`。 * 学习 `async` 和 `await` 关键字的用法。 2. **第一个WebAPI程序:** * 使用 Visual Studio 创建一个新的 "ASP.NET Core Web API" 项目。 * 理解项目结构:`Program.cs`, `Controllers` 文件夹, `appsettings.json`。 * 运行项目,了解 Swagger UI 的作用。 * 尝试修改默认的 `WeatherForecastController`,添加一个新的API接口。 * **实践任务:** * 将一个模拟耗时操作(如 `Task.Delay`)的同步方法改写为异步方法。 * 创建一个 `TodoController`,提供一个返回静态待办事项列表的GET接口。 --- #### **第五周:ASP.NET Core 核心机制** * **本周目标:** 深入理解ASP.NET Core的两个灵魂:中间件和依赖注入。 * **学习内容 (参考网站):** 1. **中间件 (Middleware):** * 理解请求管道 (Request Pipeline) 的概念。 * 学习 `app.Use()` 和 `app.Run()`。 * 尝试编写一个简单的自定义中间件(例如,记录请求耗时)。 2. **依赖注入 (DI - Dependency Injection):** * 理解为什么要使用DI (解耦)。 * 学习三种生命周期: `Singleton`, `Scoped`, `Transient`。 * 在 `Program.cs` 中注册服务,并在 `Controller` 中通过构造函数注入服务。 3. **路由 (Routing):** * 精通特性路由 (Attribute Routing) (`[Route]`, `[HttpGet]`, `[HttpPost]`, etc.)。 * **实践任务:** * 创建一个 `LogService`,通过DI注入到 `TodoController` 中,用来记录操作日志。 * 自定义一个中间件,用于在请求头中检查是否存在特定的 `API-KEY`。 --- #### **第六周:WebAPI 开发深化** * **本周目标:** 掌握WebAPI开发中的常见任务:配置、模型绑定与验证。 * **学习内容 (参考网站):** 1. **配置 (Configuration):** * 学习如何从 `appsettings.json` 读取配置信息。 2. **模型绑定 (Model Binding):** * 理解API如何自动将HTTP请求中的数据 (JSON body, query string, route data) 映射到C#方法的参数上。 3. **模型验证 (Model Validation):** * 使用数据注解 (Data Annotations) 如 `[Required]`, `[StringLength]`, `[Range]` 来验证输入模型。 * 理解 `ModelState.IsValid` 的作用。 4. **过滤器 (Filters):** * 初步了解Action Filter,可以用于处理一些横切关注点。 * **实践任务:** * 为创建待办事项 (`POST /api/todo`) 的接口创建一个 `CreateTodoDto` 模型,并添加验证规则。 * 在接口方法中检查 `ModelState`,如果验证失败,返回 400 Bad Request。 * 将数据库连接字符串配置在 `appsettings.json` 中并读取。 --- #### **第七周:数据访问 - Entity Framework Core** * **本周目标:** 将数据库集成到你的WebAPI项目中,实现数据的持久化。 * **学习内容 (参考网站):** 1. **数据库基础:** (如果需要,快速复习SQL基础) 2. **Entity Framework Core (EF Core):** * 安装 EF Core 相关的 NuGet 包。 * **Code-First 开发模式:** 先写C#实体类,再由EF Core生成数据库。 * 创建 `DbContext`。 * 配置实体 (Entity) 和数据库连接。 * **迁移 (Migrations):** 使用命令行工具 (`dotnet ef`) 创建和应用数据库迁移。 * 在服务中注入 `DbContext` 并执行基本的 **CRUD** (增删改查) 操作。 * **实践任务:** * 为你的 `Todo` 应用创建 `TodoItem` 实体类。 * 创建 `TodoDbContext`。 * 使用 Migrations 在本地数据库 (如 SQL Server LocalDB 或 SQLite) 中生成 `TodoItems` 表。 * 重写 `TodoController` 中的所有接口,使其从操作静态列表改为操作数据库。 --- #### **第八周:实战项目启动与核心功能** * **本周目标:** 参照网站的实战项目,从零开始搭建一个结构更合理的项目,并实现核心业务功能。 * **学习内容 (参考网站):** 1. **实战项目:** * 学习**分层架构**思想 (例如: Domain, Application, Infrastructure, API 四层)。 * 搭建项目结构,创建不同的类库项目。 * 设计并实现核心实体(如用户、文章、评论等)。 * 完成核心业务的CRUD接口开发。 2. **统一格式:** * **统一异常处理:** 使用中间件捕获全局异常,返回统一的错误信息。 * **统一返回格式:** 封装一个通用的API响应类,让所有接口返回相同结构的JSON。 * **实践任务:** * 按照分层思想,动手搭建一个简单的博客API项目。 * 实现文章 (Post) 的增、删、改、查系列接口。 * 添加全局异常处理中间件。 --- #### **第九周:项目功能完善 - 认证与授权** * **本周目标:** 为项目集成安全机制,保护你的API接口。 * **学习内容 (参考网站):** 1. **认证与授权 (Authentication & Authorization):** * 理解认证(你是谁)和授权(你能做什么)的区别。 * 学习 **JWT (JSON Web Token)** 的工作原理。 * 在项目中集成JWT: * 用户注册/登录接口,登录成功后颁发Token。 * 配置JWT认证中间件。 * 在需要保护的接口上添加 `[Authorize]` 特性。 * **实践任务:** * 为你的博客API项目添加用户注册和登录接口。 * “创建文章”接口必须是登录用户才能访问。 * "删除文章" 接口必须是文章作者本人才能访问(权限)。 --- #### **第十周:部署与总结** * **本周目标:** 学习如何将你的WebAPI应用部署到服务器上,并对整个学习过程进行回顾。 * **学习内容 (参考网站):** 1. **部署 (Deployment):** * **Docker 简介:** 理解容器化的优势。 * 编写 `Dockerfile` 来容器化你的ASP.NET Core应用。 * 学习基本的 Docker 命令 (`build`, `run`, `ps`, `stop`)。 * 了解部署到 Linux 服务器的基本流程。 * **实践任务:** * 为你的博客API项目编写一个 `Dockerfile`。 * 在本地使用 Docker 构建镜像并运行容器。 * 通过 `localhost:port` 访问容器化的API,并用Postman等工具测试。 * **总结:** * 回顾这10周的学习内容,整理知识体系,形成自己的知识图谱。 * 思考下一步的学习方向(如:微服务、gRPC、Blazor、分布式系统等)。 ---