
eShopOnWeb入门指南ASP.NET Core 8.0单体参考应用的终极学习地图【免费下载链接】eShopOnWebSample ASP.NET Core 8.0 reference application, now community supported: https://github.com/NimblePros/eShopOnWeb项目地址: https://gitcode.com/gh_mirrors/es/eShopOnWebeShopOnWeb是微软出品的 ASP.NET Core 8.0 单体monolithic参考应用一个可以跑起来的完整在线书店。它演示了企业级 Web 应用的分层架构、Entity Framework Core、身份认证、Blazor Server 管理后台等核心技能是新手学习 .NET 后端开发的绝佳地图。一、eShopOnWeb 是什么适合谁学一句话概括一个功能完整的在线书店示例项目包含浏览商品、购物车、下单、用户登录注册、管理员商品维护等真实电商核心链路 。它背后的价值在于 配套一本免费电子书《Architecting Modern Web Applications with ASP.NET Core and Azure》本书的代码实践就是基于这个项目️ 演示单体架构的完整落地方式区别于微服务的 eShopOnContainers 项目 自带单元测试、集成测试、功能测试三大测试工程教你测试怎么做而不只是代码怎么写。提示项目定位是架构学习不是电商生产参考因此不追求功能齐全比如没有真实支付。二、解决方案结构速览5分钟看懂 7 个工程打开 Everything.sln 或 eShopOnWeb.sln你会看到清晰的分层组织这正是本项目的学习重点工程职责关键看点src/Web/MVC 主站点商城前台页面模型、MediatR 请求管道、健康检查src/PublicApi/独立 API 服务基于 Endpoints 模式的 REST API Swaggersrc/BlazorAdmin/Blazor Server 管理后台商品增删改查、缓存装饰器、Toast 提示src/ApplicationCore/领域核心层实体、仓储接口、Specification 查询规格src/Infrastructure/基础设施层EF Core 数据访问、Identity 身份、邮件服务tests/测试工程单元 / 集成 / 功能测试 对象构建器infra/Azure 部署Bicep 基础设施即代码架构分层思想一图流Web表现层→ ApplicationCore领域层← Infrastructure基础设施层依赖始终朝领域核心汇聚这是干净架构Clean Architecture的经典实践。值得细读的几个入口文件src/Web/Program.cs一站式看 DI 注册、Cookie 认证、Identity、健康检查、Blazor 服务如何装配src/ApplicationCore/Interfaces/IRepository.cs仓储接口的定义src/Infrastructure/Data/EfRepository.cs仓储的 EF Core 实现配合 Specification 模式做查询src/PublicApi/Program.cs独立 API 的启动配置。三、快速上手本地跑通 eShopOnWeb 的 5 个步骤1. 克隆仓库git clone https://gitcode.com/gh_mirrors/es/eShopOnWeb2. 安装 .NET 8 SDKglobal.json 已锁定 SDK 版本为8.0.x安装 8.0 版本即可无需其他依赖。3. 配置数据库默认连接字符串在 src/Web/appsettings.json指向本地 SQL Server。懒人方案在appsettings.json中加入UseOnlyInMemoryDatabase: true即可使用内存数据库免去装数据库的麻烦 。4. 执行数据库迁移持久化场景下需先运行 EF 迁移创建商品目录库和用户身份库两个数据库cd src/Web dotnet tool restore dotnet ef database update -c catalogcontext -p ../Infrastructure/Infrastructure.csproj -s Web.csproj dotnet ef database update -c appidentitydbcontext -p ../Infrastructure/Infrastructure.csproj -s Web.csproj5. 启动双服务并访问商城前台和管理后台依赖两个进程见 docker-compose.yml 中eshopwebmvc与eshoppublicapi的组合# 终端 1先启动 PublicApi cd src/PublicApi dotnet run # 终端 2再启动主站点 cd src/Web dotnet run --launch-profile Web商城主页https://localhost:5001/Blazor 管理后台https://localhost:5001/adminAPI 的 Swaggerhttps://localhost:5099/swagger首次启动会自动写入种子数据迁移见 src/Infrastructure/Data/Migrations/ 与 src/Infrastructure/Identity/Migrations/你可以直接用demousermicrosoft.com账号登录体验下单流程。四、三种运行方式对比选一个适合你的方式适用场景特点本地dotnet run想逐行调试源码最灵活注意先停进程再构建否则文件锁定Docker Compose环境不想折腾docker-compose builddocker-compose upWeb 在 5106 端口、API 在 5200 端口Dev Container零基础/跨平台.devcontainer/devcontainer.json 基于官方 .NET 8 镜像开箱即用零本地安装Docker 方式细节见 src/Web/Dockerfile 和 src/PublicApi/Dockerfile。五、核心技术栈与学习路线建议项目用到的关键技术版本统一在 Directory.Packages.props 集中管理这本身也是 .NET 8 的中央包版本管理最佳实践MVC Razor Pages商城页面src/Web/Pages/Entity Framework Core 8 Specification 模式数据访问ASP.NET Core Identity登录注册代码见 src/Infrastructure/Identity/Blazor Server管理后台src/BlazorAdmin/Pages/CatalogItemPage/ 下有完整的商品 Create/Edit/Delete 页面MediatRCQRS 式请求处理如 src/Web/Features/MyOrders/GetMyOrders.csArdalis.ApiEndpoints类式 REST API与控制器写法对照学习src/PublicApi/README.mdxUnit / MSTest NSubstitute三大测试工程推荐学习路线由浅入深 先跑起来把逛店→加购→结算→登录整条流程走一遍 阅读 src/ApplicationCore/理解实体Basket、Order如何建模src/ApplicationCore/Specifications/ 的查询规格怎么复用️ 再看 src/Infrastructure/看接口如何被 EF Core 实现 对照 src/Web/Controllers/ 与 src/PublicApi/ 两种 API 写法 最后读 tests/学习如何给上述代码写测试。六、常见问题 FAQQ1启动后页面打不开检查是否两个进程都在运行——管理后台Blazor依赖 PublicApi 提供数据只起 Web 会出现功能缺失。Q2登录一直失败试试新的无痕浏览器窗口通常是 Cookie 残留导致确认种子数据已写入首次启动自动完成。Q3想要中文或更多功能版本可在社区扩展方向上探索比如 VB.NET 移植版、F# 版见 README.md 的 Community Extensions 一节。Q4部署到 Azure 要怎么做项目自带 infra/main.bicep 与 azure.yaml支持通过 Azure Developer CLIazd一键开通资源并部署详见 README.md 中 Running the sample using Azd template 部分。eShopOnWeb 不只是一个 Demo更是一张ASP.NET Core 8.0 企业级单体应用的学习地图跑通它、读懂分层、仿写一个自己的小电商你就已经迈过了 .NET 后端的新手门槛 【免费下载链接】eShopOnWebSample ASP.NET Core 8.0 reference application, now community supported: https://github.com/NimblePros/eShopOnWeb项目地址: https://gitcode.com/gh_mirrors/es/eShopOnWeb创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考