当前位置: 首页 > java >正文

(一)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 模块

  • 活动信息管理:这个模块用于管理和展示所有的活动基础信息。

    1. events:核心表,存储活动标题、描述、地点、开始/结束时间、状态(比如发布、草稿)、分类 ID。
    2. categories:活动分类表,比如「音乐会」「讲座」等。
    3. ticket_types:每个活动可以有多个票种(如 VIP、普通票等),每种票有名字、价格和库存。
    4. images:活动相关图片,带有 URL 和描述,关联到 events。

2. Users 模块

  • 用户与权限管理: 这个模块用于管理系统用户以及权限角色设置。

3. Ticketing 模块

  • 购票与支付流程核心:整个系统的“买票”核心模块,涵盖订单、支付、退款、购物车等功能。
    1. customers:购票用户(可以跟 users 区分开,仅用于购票)。
    2. orders:用户的购票订单,包含总价、订单状态(已支付、退款等)。
    3. order_items:每个订单下的具体票项,关联票种、数量和价格。
    4. tickets:生成的门票,通常有唯一识别码。
    5. payments:支付记录,关联订单和交易状态。
    6. refunds:退款信息,关联订单。
    7. discount_codes:优惠码,按活动设置折扣额度、类型、使用次数等。
    8. cart 和 cart_item:购物车功能,允许用户在付款前选票。

4. Attendance 模块

  • 门票验证与出席统计: 用于记录谁参加了哪个活动,以及门票的验证过程。
    1. attendees:记录具体某用户参加了某活动,用 ticket_id 和 event_id 标识。
    2. tickets:用于验证门票(可用于扫码入场)。
    3. event_stats:统计信息,比如参加人数、核销率等(字段未写清,可能包括出席率等数据)。
    4. events:冗余引用,用于方便获取 attendance 模块下的活动。

1.2 数据库模块

在这里插入图片描述

1.3 模块架构选择

1. 全是Clean Architecture

在这里插入图片描述

2. 分别使用不同的架构

在这里插入图片描述

二、初始化项目

2.1 本地创建项目结构

1. 创建空的solution

  1. 创建一个空文件夹Evently
  2. 进入文件夹,创建空 solution
dotnet new sln -n Evently

2. 添加基础配置

  • 双击进入solution
  1. 创建配置文件.editorconfig
  2. 创建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><<
http://www.xdnf.cn/news/3947.html

相关文章:

  • 洛谷 P1440 求m区间内的最小值
  • 8.5/Q1,Charls高分经典文章解读
  • 【Web3】上市公司利用RWA模式融资和促进业务发展案例
  • Spring Boot多模块划分设计
  • C++访问MySQL
  • 《Python星球日记》第31天:Django 框架入门
  • opencv+opencv_contrib+cuda和VS2022编译
  • 202531 | RocketMQ 消息过滤 + 消息重试机制 + 死信消息 + 重复消费问题
  • zotero pdf中英翻译插件使用
  • epub格式转txt格式工具,txt批量转PDF
  • 设计模式(结构型)-组合模式
  • 【Java ee初阶】多线程(6)
  • item_get_app_pro - 获得淘宝app商品详情原数据操作流程
  • 使用 vllm 部署 Llama3-8b-Instruct
  • 【C++】grpc(一):安装
  • 【Python】Python好玩的第三方库之二维码生成,操作xlsx文件,以及音频控制器
  • 从零开始学Flink:开启实时计算的魔法之旅
  • CSS知识总结
  • Socket 编程 TCP
  • OpenGl实战笔记(1)基于qt5.15.2+mingw64+opengl绘制三角形
  • 解决因字段过长使MYSQL数据解析超时导致线上CPU告警问题
  • 技术犯规计入个人犯规吗·棒球1号位
  • [C语言]第一章-初识
  • 【Linux】深入理解Linux基础IO:从文件描述符到缓冲区设计
  • Java求职面试:Spring Boot与微服务的幽默探讨
  • 架构思维:构建高并发读服务_异构数据的同步一致性方案
  • C语言:文件操作
  • Cognito
  • Android基于绑定的控件用法
  • 文献分享:CH-CL配对和VL结构域的完整性影响IgG1分泌过程