(一)Modular Monolith Architecture(项目结构/.net项目初始化/垂直切片架构)
文章目录
- 项目地址
- 一、项目结构
- 1.1 Modules
- 1. Events 模块
- 2. Users 模块
- 3. Ticketing 模块
- 4. Attendance 模块
- 1.2 数据库模块
- 1.3 模块架构选择
- 1. 全是Clean Architecture
- 2. 分别使用不同的架构
- 二、初始化项目
- 2.1 本地创建项目结构
- 1. 创建空的solution
- 2. 添加基础配置
- 3. 创建github仓库
- 三、垂直切片架构
- 3.1 项目API project
- 3.2 创建Events模块
- 1. 创建 Database
- 2. 创建api
- 3. 创建项目的统一注册
- 4. 在`Program.cs`里注册
项目地址
- 教程作者:
- 教程地址:
- 代码仓库地址:
- 所用到的框架和插件:
dbt
airflow
一、项目结构
- 整体服务概览
1.1 Modules
1. Events 模块
-
活动信息管理:这个模块用于管理和展示所有的活动基础信息。
- events:核心表,存储活动标题、描述、地点、开始/结束时间、状态(比如发布、草稿)、分类 ID。
- categories:活动分类表,比如「音乐会」「讲座」等。
- ticket_types:每个活动可以有多个票种(如 VIP、普通票等),每种票有名字、价格和库存。
- images:活动相关图片,带有 URL 和描述,关联到 events。
2. Users 模块
- 用户与权限管理: 这个模块用于管理系统用户以及权限角色设置。
3. Ticketing 模块
- 购票与支付流程核心:整个系统的“买票”核心模块,涵盖订单、支付、退款、购物车等功能。
- customers:购票用户(可以跟 users 区分开,仅用于购票)。
- orders:用户的购票订单,包含总价、订单状态(已支付、退款等)。
- order_items:每个订单下的具体票项,关联票种、数量和价格。
- tickets:生成的门票,通常有唯一识别码。
- payments:支付记录,关联订单和交易状态。
- refunds:退款信息,关联订单。
- discount_codes:优惠码,按活动设置折扣额度、类型、使用次数等。
- cart 和 cart_item:购物车功能,允许用户在付款前选票。
4. Attendance 模块
- 门票验证与出席统计: 用于记录谁参加了哪个活动,以及门票的验证过程。
- attendees:记录具体某用户参加了某活动,用 ticket_id 和 event_id 标识。
- tickets:用于验证门票(可用于扫码入场)。
- event_stats:统计信息,比如参加人数、核销率等(字段未写清,可能包括出席率等数据)。
- events:冗余引用,用于方便获取 attendance 模块下的活动。
1.2 数据库模块
1.3 模块架构选择
1. 全是Clean Architecture
2. 分别使用不同的架构
二、初始化项目
2.1 本地创建项目结构
1. 创建空的solution
- 创建一个空文件夹
Evently
- 进入文件夹,创建空 solution
dotnet new sln -n Evently
2. 添加基础配置
- 双击进入solution
- 创建配置文件
.editorconfig
- 创建xml文件
Directory.Build.props
用于管理所有的包
<Project><PropertyGroup><TargetFramework>net9.0</TargetFramework><ImplicitUsings>enable</ImplicitUsings><Nullable>enable</Nullable><AnalysisLevel>latest</AnalysisLevel><AnalysisMode>All</AnalysisMode><TreatWarningsAsErrors>true</TreatWarningsAsErrors><CodeAnalysisTreatWarningsAsErrors>true</CodeAnalysisTreatWarningsAsErrors><EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild><<