Pear Admin Abp 后台管理系统 , 基于 .Net 平台 Abp 生态框架的落地实践

2020-12-02 13:13:40 +08:00
 Jmysy

Pear Admin Abp

预 览 | 官 网 | 群聊 | 社区 | 源码

介绍

基于 ABP 框架封装一套 MPA 框架,使用 Layui 作为前端呈现,封装常用的功能。旨在设计快速入手,快速实践框架。

软件架构

基于 Abp 框架并接入 Pear Admin 前端框架,Pear Admin 框架基于 Layui 封装,两者均开源免费。

项目结构

整体的解决方案结构划分如下,其中 PearAdmin.AbpTemplate.Admin 重命名了 ABP 默认提供的 Web.Mvc 项目,一是从结构上出发,看起来更显得从上至下的分层结构,二是从请求路径上一目了然。并额外增加了 PearAdmin.AbpTemplate.Gateway,以此来增加防腐层,方便各限界上下文间不要直接请求,通过防腐层约束请求调用。

- PearAdmin.AbpTemplate
    -src
        - PearAdmin.AbpTemplate.Admin
        - PearAdmin.AbpTemplate.Application
        - PearAdmin.AbpTemplate.Core
        - PearAdmin.AbpTemplate.EntityFrameworkCore
        - PearAdmin.AbpTemplate.Gateway
    - test
        - PearAdmin.AbpTemplate.Admin.Tests
        - PearAdmin.AbpTemplate.Application.Tests
        - PearAdmin.AbpTemplate.Core.Tests
    - tool
        - PearAdmin.AbpTemplate.Migrator
        - PearAdmin.AbpTemplate.Shared

说明:Admin 为 UI 层,Application 和 Core 为应用层和领域层,EntityFrameworkCore 和 Gateway 及 ABP 自身提供的辅助设施组合为基础设施层。

代码模型

从 DDD 的角度考虑,抛弃 UI 层,以应用层,领域层,基础设施层去出发,按照文件夹隔离出限界上下文边界,内部代码模型如下

- PearAdmin.AbpTemplate.Application
    - AContext
        - AAggregate
    - BContext
        - BAggregate
        - ...
- PearAdmin.AbpTemplate.Core
    - AContext
        - AAggregate
    - BContext
        - BAggregate
        - ...
- PearAdmin.AbpTemplate.EntityFrameworkCore
- PearAdmin.AbpTemplate.Gateway
    - AContext

防腐层的建立,约定在领域层建立防腐层接口,在基础设施层-网关中实现接口,网关层对 Application 层有项目依赖,方便实例化下游上下文所需要的上游上下文。为避免出现循环引用,上下文映射图中最好不要出现环。

- PearAdmin.AbpTemplate.Application
    - AContext
    - BContext
- PearAdmin.AbpTemplate.Core
    - AContext
        - ...
        - AntiCorruption
            - IBService
    - BContext
- PearAdmin.AbpTemplate.EntityFrameworkCore
- PearAdmin.AbpTemplate.Gateway
    - AContext
        - AntiConrruption
            - BService

如限界上下文 A 需要访问上下文 B 中信息或需要 B 上下文协作,则通过 A 建立的防腐层接口与实现访问 B 上下文中的服务,以此来避免直接耦合。

1619 次点击
所在节点    分享创造
1 条回复
C0dEr
2020-12-03 12:46:55 +08:00
给楼主顶一个,好久没看到有用.Net 的还是用 ABP,分外亲切。以前用的 ABP Zero 写过几个项目,楼主可以借鉴一下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/731325

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX