项目结构 #

后端框架服务结构图 #

Mall3s后台架构分层

mall3s微服务框架项目 #

后端统一依赖Mall3s微服务框架Mall3s.ServiceFabric,该组件库提供了mall3s最核心的所有公共组件。该组件库主要参考dotnetcore最流行的开源框架Furion (opens new window),并结合mall3s多年微服务实战框架库打造而成(如nacos,elk,nsq,rabbitmq,xxljob,cap等).

感谢Furion项目提供了非常棒的dotnetcore应用开发框架,我们站在巨人的肩膀上进行开发迭代。关于Furion介绍请参考:Furion (opens new window)

Mall3s基础组件功能 #

关于Mall3s.ServiceFabric中Mall3s组件库包含的基础功能如下

img

Mall3s基础组件包扩展 #

包类型 名称 描述
nuget (opens new window) Mall3s Mall3s核心包
nuget (opens new window) Mall3s.Authentication.JwtBearer Mall3s Jwt扩展包
nuget (opens new window) Mall3s.Common Mall3s 多年公共基类拓展包
nuget (opens new window) Mall3s.Core.Redis Mall3s Redis 拓展包
nuget (opens new window) Mall3s.Data.SqlSugar Mall3s SqlSugar 拓展包
nuget (opens new window) Mall3s.Expand.Thirdparty Mall3s第三方认证扩展,如企业微信、 钉钉、邮件、短信等
nuget (opens new window) Mall3s.Logging.Serilog Mall3s Serilog 拓展包(ELK支持)
nuget (opens new window) Mall3s.Mapster Mall3s Mapster 拓展包(对象映射)
nuget (opens new window) Mall3s.Nacos nacos服务注册与发现扩展包
nuget Mall3s.NSQ Mall3s NSQ扩展包
nuget (opens new window) Mall3s.Rabbit Mall3s RabbitMQ消息队列扩展包
nuget (opens new window) Mall3s.XxlJob Mall3s xxl-job分布式任务扩展包

Mall3s微服务组件包扩展 #

包类型 名称 描述
nuget (opens new window) Mall3s.ServiceFabric 微服务核心扩展包,集成了mall3s所有中间件
nuget (opens new window) Mall3s.ServiceFabric.Cap 微服务cap分布式事务中间件
nuget (opens new window) Mall3s.ServiceFabric.Core Mall3s 微服务场景库及工具类
nuget (opens new window) Mall3s.ServiceFabric.CAP.Dashboard cap分布式事务dashboard监控面板库

以上微服务包您可以直接通过nuget进行安装。源代码仅供您自行研究和学习。

项目参考

image-20230228014934248

Mall3s.Server后端结构 #

后端采用模块化的架构,基础管理框架项目主要提供基础服务,按照功能拆分成多个 Module,提升开发与研发的效率,带来更好的可维护性。mall3s框架结构如下:

image-20230228015747935

Mall3s.Server按解决方案文件夹一共分为四个部分:

  1. base文件夹。

    • Mall3s.Library(该项目主要用于管理所有Mall3s.Server的依赖公共组件包,防止污染各个项目)

    • Mall3s.OAuth主要管理mall3s身份认证sso服务。

  2. modules文件夹该文件夹主要用于管理所有的可拔插模块,每一个可拔插模块分为三个部分:

    • 服务层(Application)

    • 实体层(Entitys)

    • 接口层(Interface)

    modules包含以下模块:

    • App项目主要是管理移动端和h5端接口。

    • Extend项目主要是基础管理扩展的功能模块(如邮件管理、文档管理等)。

    • Message项目主要是管理站内信、通知消息功能。

    • System项目是后台管理核心功能,菜单、角色等。

    • TaskSchedule项目主要管理定时任务框架

    • Tenant项目主要是管理租户服务。

    • VisualData项目主要是管理大屏虚拟数据。

    • VisualDev项目主要是管理代码生产以及零代码开发。

    • WorkFlow项目项目主要是管理工作流。

  3. SDK文件夹主要是提供nuget包给其他项目可以通过nuget进行微服务调用。

  4. WebApi文件夹主要是提供Web接口服务,它包含以下模块:

    • Mall3s.WebApi.System 基础系统接口服务(调度服务+消息中心已合并至System中)

    • Mall3s.Tenant租户接口服务

下面,我们来逐个看看。

1. Mall3s.Library #

该模块是一个Bom,它定义项目中所有 Mall3s依赖的版本号,解决依赖冲突问题。

具体是指,我们将依赖的核心第三方dll都通过Mall3s.Library来引用,当项目要升级第三方组件版本,可只需要升级Mall3s.Library即可。

image-20230301013738162

2. modules目录 #

该模块是某个功能的模块,目前内置了 10 个模块。

项目 说明 是否必须
System 基础设施(系统基础模块)
App 移动端/h5端模块
Message 消息中心模块
TaskSchedule 定时任务调度模块
Tenant 租户管理模块 x
VisualData 虚拟大屏数据模块 x
VisualDev 代码生成器及零代码模块
WorkFlow 工作流模块
Extend 内置业务模块 x
SubDev 内置Demo模块 x

每个模块包含3个工程,分别是:

项目工程 作用
Mall3s.xxx 模块的功能的具体实现
Mall3s.xxx.Entitys 模块的功能依赖的实体定义
Mall3s.xxx.Interfaces 提供给其它模块的 API 定义

例如说,Mall3s.System 想要访问 Mall3s.Message 消息中心模块的数据,需要引入 Mall3s.Message.Interfaces 子模块。示例如下:

image-20230301015303622

  1. Mall3s.System的Service模块的项目结构如下:

image-20230301015418071

2、Mall3s.System.Entitys的项目结构如下:

image-20230301015729445

名称 作用
Dto DTO 类 Api 接口的入参 ReqDTO、出参 RespDTO
Entity Entity类 数据库实体定义
Enum Enum 类 数据字典的枚举
Mapper Mapper类 前端实体dto到数据库对象的Mapping映射定义
Model Model类 数据库-》输出前端的Model定义实体。

3、Mall3s.System.Interfaces的项目结构如下:

image-20230301020205673

其他模块同理。

总结来说,每个模块采用三层架构 + 非严格分层,如下图所示:

Mall3s后台项目分层

3. SDK目录 #

该模块主要是用于提供公共服务,可以发布nuget包,其他人可以很方便的引用nuget包调用。主要用于微服务场景,在多个业务子系统中,可以方便的跨服务调用。该模块主要通过WebApiClient+微服务(nacos)做远程调用方式。

比如运营系统与oa系统之间需要远程调用获取汇率,则可以通过微服务nacos方式,引用oa系统的包,让运营系统开发同事,无感知调用另一个子系统,而无需知道对方具体接口地址和服务信息。

image-20230301020540792

image-20230301020622041

4. WebApi目录 #

该模块是后端 Server 的主项目,通过引入需要 Mall3s.xxxx 业务模块,从而实现提供 RESTful API 给 Mall3s.WebMall3s.App.Web 等前端项目。

本质上来说,它就是个空壳(容器)!如下图所示:

image-20230301021021534

前端结构 #

前端一共有3个项目,分别是:

项目 说明
Mall3s.Web 基于 Vue2 +eElement-ui 实现的管理后台
Mall3s.App.Web 基于 uni-app + uni-ui 实现的管理后台的小程序
Mall3s.Tenant.Web 基于 Vue2 +eElement-ui 实现的租户管理后台

1. Mall3s.Web #

├── bin                        // 执行脚本
├── build                      // 构建相关  
├── public                     // 公共文件
│   ├── favicon.ico            // favicon 图标
│   └── index.html             // html 模板
├── src                        // 源代码
│   ├── api                    // 所有请求【重要】
│   ├── assets                 // 主题、字体、图标等静态资源
│   ├── components             // 全局公用组件
│   ├── directive              // 全局指令
│   ├── layout                 // 布局
│   ├── plugins                // 插件
│   ├── router                 // 路由
│   ├── store                  // 全局 store 管理
│   ├── utils                  // 全局公用方法
│   ├── views                  // 视图【重要】
│   ├── App.vue                // 入口页面
│   ├── main.js                // 入口 JS,加载组件、初始化等
│   ├── permission.js          // 权限管理
│   └── settings.js            // 系统配置
├── .editorconfig              // 编码格式
├── .env.development           // 开发环境配置
├── .env.production            // 生产环境配置
├── .env.staging               // 测试环境配置
├── .eslintignore              // 忽略语法检查
├── .eslintrc.js               // eslint 配置项
├── .gitignore                 // git 忽略项
├── babel.config.js            // babel.config.js
├── package.json               // package.json
└── vue.config.js              // vue.config.js

2. Mall3s.App.Web #

h5端项目

├ ── .hbuilderx # 编译器配置 json(自动生成无需修改)
├ ── api # 数据请求接口
├ ── assets # 页面样式
├ ── components # 组件库
├ ── filters # 过滤器
├ ── libs # websocket、图片网络路径
├ ── pages # 页面
├ ── static # 图片,icon 图标
├ ── store # 仓库
├ ── uni_modules # uniapp 插件包
├ ── utils # 公共接口
├ ── uview-ui # UI 库
├ ── .gitignore # git 上传产生的文件
├ ── APP.vue # 一个 vue 项目的主组件,页面入口文件
├ ── main.js # 项目入口文件
├ ── manifest.json # uniapp 打包 配置
├ ── package.json # package.json
├ ── pages.json # 页面路由
├ ── postcss.config.js # postcss 配置

3. Mall3s.tenant.Web #

租户前端vue

├── bin                        // 执行脚本
├── build                      // 构建相关  
├── public                     // 公共文件
│   ├── favicon.ico            // favicon 图标
│   └── index.html             // html 模板
├── src                        // 源代码
│   ├── api                    // 所有请求【重要】
│   ├── assets                 // 主题、字体、图标等静态资源
│   ├── components             // 全局公用组件
│   ├── router                 // 路由
│   ├── utils                  // 全局公用方法
│   ├── views                  // 视图【重要】
│   ├── App.vue                // 入口页面
│   ├── main.js                // 入口 JS,加载组件、初始化等
├── .env.development           // 开发环境配置
├── .env.production            // 生产环境配置
├── .env.staging               // 测试环境配置
├── .gitignore                 // git 忽略项
├── package.json               // package.json
└── vue.config.js              // vue.config.js
上次更新: 3/7/2023, 3:10:34 PM