(一)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.mzph.cn/bicheng/79814.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java常用组件之Redis经典面试题(一)

大家好&#xff0c;今天为大家带来Java项目中&#xff0c;几乎必不可少的组件之一-Redis的一些常见面试题&#xff0c;帮忙近期需要面试的朋友们来一个理论基础突击&#xff01; 一、数据类型 1.Redis的常用数据类型有哪些 ? 难易程度&#xff1a;☆☆☆ 出现频率&#xff1a;…

2025.5.4总结

今天去光谷步行街逛了一下&#xff0c;感觉熟悉又陌生&#xff0c;说熟悉是因为初二的时候来过武汉光谷&#xff0c;尽管过去了8年时间&#xff0c;但丝毫不影响标志性建筑的存在&#xff0c;也陌生是商场的建筑风格真实气派&#xff0c;感觉进入了一座城堡&#xff0c;在里面都…

神经网络在专家系统中的应用:从符号逻辑到连接主义的融合创新

自人工智能作为一个学科面世以来&#xff0c;关于它的研究途径就存在两种不同的观点。一种观点主张对人脑的结构及机理开展研究&#xff0c;并通过大规模集成简单信息处理单元来模拟人脑对信息的处理&#xff0c;神经网络是这一观点的代表。关于这方面的研究一般被称为连接机制…

Doo全自动手机壳定制系统

Doo全自动手机壳定制系统 项目概述 Doo全自动手机壳定制系统是一个完整的手机壳定制解决方案&#xff0c;支持多端应用&#xff0c;包括服务端、客户端、管理后台等多个组件。系统采用现代化的技术栈&#xff0c;提供完整的手机壳定制、订单管理、用户管理等功能。 目录结构…

PageOffice在线打开word文件,并实现切换文件

本示例关键代码的编写位置&#xff0c;请参考“PageOffice 开发者中心-快速起步–开始 - 快速上手”里您所使用的开发语言框架的最简集成代码 注意 本文中展示的代码均为关键代码&#xff0c;复制粘贴到您的项目中&#xff0c;按照实际的情况&#xff0c;例如文档路径&#xff…

Webug4.0靶场通关笔记12- 第17关 文件上传之前端拦截(3种方法)

目录 一、文件上传前端拦截原理 二、第17关 文件上传(前端拦截) 1.打开靶场 2.构造php脚本 3.源码分析 &#xff08;1&#xff09;js源码 &#xff08;2&#xff09;服务器源码 &#xff08;3&#xff09;总结 4.渗透实战 &#xff08;1&#xff09;禁用js法 &#…

高性能 WEB 服务器 Nginx:多虚拟主机实现!

Nginx 配置多虚拟主机实现 多虚拟主机是指在一台 Nginx 服务器上配置多个网站 在 Nginx 中&#xff0c;多虚拟主机有三种实现方式&#xff1a; 基于IP地址实现多虚拟主机 基于端口号实现多虚拟主机 基于域名实现多虚拟主机 1 基于域名实现多虚拟主机 在 Nginx 中配置多个…

网星安全AWS攻防方案,重磅发布!

AWS介绍 AWS&#xff08;Amazon Web Services&#xff09; 是 Amazon 提供的云计算平台&#xff0c;提供了广泛的云服务&#xff0c;包括计算、存储、数据库、网络、安全、人工智能、大数据处理等功能&#xff0c;帮助企业和开发者构建、部署和管理应用程序。AWS 是全球最大的…

qt的containers里的QToolBox和QTabWidget

Tool Box是一个多层次的折叠面板&#xff0c;通常用于组织多个可展开/折叠的面板组&#xff0c;每个面板有一个标题栏&#xff0c;用户点击标题栏可以展开或收起内容区域。比如设置界面中的分类选项&#xff0c;每个分类可以展开查看详细内容。这样能节省空间&#xff0c;让界面…

【神经网络与深度学习】深度学习中的生成模型简介

深度学习中的生成模型 openai 的一个古早介绍 引言 深度学习中的生成模型能够学习数据分布并生成新数据&#xff0c;在人工智能的多个领域中都有重要应用。不同类型的生成模型在原理和结构上各有特点&#xff0c;适用于不同的任务&#xff0c;如图像生成、文本生成和时间序列…

js获取明天日期、Vue3大菠萝 Pinia的使用

直接上代码 const today new Date(2019, 2, 28) const finalDate new Date(today) finalDate.setDate(today.getDate() 3)console.log(finalDate) // 31 March 2019 安装 yarn add pinia # or with npm npm install pinia创建第一个store仓库 1、在src目录下创建store目录…

存储过程补充——定义条件、处理程序及游标使用

文章目录 1. 定义条件与处理程序1.1 定义条件1.2 处理程序1.3 案例演示 2. 游标2.1 使用游标第一步&#xff0c;声明游标第二步&#xff0c;打开游标第三步&#xff0c;使用游标&#xff08;从游标中取得数据&#xff09;第四步&#xff0c;关闭游标 2.2 举例2.3 小结 在 MySQL…

蓝桥杯单片机国赛模板——基于柳离风模板

蓝桥杯单片机国赛模板——基于柳离风模板 文章目录 蓝桥杯单片机国赛模板——基于柳离风模板一、工程结构二、USER文件夹main.c 三、BSP文件夹1、sys2、display3、key4、timer5、iic6、ds13027、onewire8、uart9、ultrasound 四、源码五、内存不够 一、工程结构 与省赛模板相比…

C与指针——常见库函数

字符串 #include<stdlibs.h> int abs(int); long labs(long); int rand(void);//0-RAND_MAX //字符串转值 int atoi(const char*); long atol(const char*); float atof(const char*);数学\排序 #include<math.h> \\常见三角&#xff0c;sqrt(); exp(); double p…

数学复习笔记 2

前言 朋友和我讨论了一个二重积分题&#xff0c;非常有意思。内容非常细致。整理如下&#xff1a; 二重积分 题目来源是 1000 上面的 16 题&#xff0c;积分区域是一个偏心圆&#xff0c;偏心圆的圆心在 y 轴上面&#xff0c;偏心圆是关于 y 轴对称的&#xff0c;可以看关于…

Javaweb项目--Mybatis,导入com.mysql.cj.jdbc.Driver时报错,Cannot resolve class ‘Driver‘

目录 问题解决方法结果 问题 在项目java文件下&#xff0c;包文件下的application.properties文件中&#xff0c;项目目录如下&#xff1a; 报错信息如下&#xff1a; 解决方法 在pom.xml文件中增加此依赖 结果 报错信息消失

分布式-redisson

分布式锁redisson 加锁流程缓存相关问题 加锁流程 redisson底层通过lua脚本实现加锁的原子性lock动作包含&#xff1a;加锁、设置超时时间、锁续命未获取到锁的线程通过获取信号量许可等待&#xff0c;所释放后释放信号量通知等待线程 缓存相关问题 缓存失效&#xff08;击穿…

Java基础学完,继续深耕(0505)Linux 常用命令

昨天休息了一天&#xff0c;没有写csdn 昨天和今天把Linux大概学了一下。总结一下常用命令&#xff0c;总结的不全。 Linux目录结构 / 是所有目录的顶点 目录结构像一颗倒挂的树 注意&#xff1a;/itheima 是绝对路径&#xff0c;是指根目录 / 下的itheima目录 itheima…

【AI论文】Sadeed:通过小型语言模型推进阿拉伯语变音

摘要&#xff1a;由于语言的形态丰富&#xff0c;阿拉伯语文本的变音符号仍然是自然语言处理中一个持续的挑战。 在本文中&#xff0c;我们介绍了一种基于微调解码器语言模型的新方法Sadeed&#xff0c;该方法改编自Kuwain 1.5B Hennara等人[2025]的模型&#xff0c;该模型最初…

学习海康VisionMaster之亮度测量

一&#xff1a;进一步学习了 今天学习下VisionMaster中的亮度测量&#xff1a;这个和前面学习的都不一样了&#xff0c;这个是测量ROI区域内的平均亮度等 1&#xff1a;什么是亮度测量&#xff1f; 我们工业上用的相机里面有一个感光芯片&#xff08;CCD/CMOS&#xff09;&…