Auto模式,渐进式分离的AntDesign Blazor管理后台模板

文档的更新速度一般木有代码的更新速度快,请注意核对代码和文档的最后更新时间。

简介

abp9.x(一代)是基于asp.net core 8.x的快速开发框架,包含:用户角色权限、多租户、多语言、模块化、日志、后台任务、缓存、对象映射、通知、等等大部分项目都会用到的特征,完整特征请查看它的官方文档。本项目是基于它搭建,并增加了更多功能。

你应该先熟悉abp9.x(一代),因为本文档不会包含官方文档已存在的内容。

此项目 = abp9.x(一代) + 通用abp模块 + 帮助库 + blazor web app (auto模式,渐进式分离)

通用abp模块 abp是模块化开发的,本项目按此方式创建了更多实用模块,如:通用文件附件、通用树形结构的数据、数据字典 等等,更多模块会在单独的章节中介绍。

帮助库 同“通用abp模块”一样,也是一些通用功能和帮助类方法,如:对字符串、时间、集合提供的扩展方法、以及类似微信小程序登录、支付等、中介类等通用功能。“通用abp模块”依赖abp相关nuget包的,而“帮助库”不依赖abp的任何内容,它可以用于任何.net core的项目。

blazor abp9.x(一代)默认是不支持blazor的,但本项目对blazor web app (auto模式,渐进式分离)做了集成,且默认使用AntBlazor,你可以修改代码替换成其它ui框架。

特征

  1. abp9.x(一代)的所有特征

  2. blazor web app (auto模式,渐进式分离)集成

  3. 基于肉夹馍(静态编织)的aop

  4. 无限层次结构的数据的抽象。你可以轻松实现类似商品分类这种无限层次机构的功能。

  5. 通用文件/附件。

  6. 依赖权限。如:商品列表页访问权限,它依赖商品分类的查看权限,在授权商品列表查看权限时,会自动的一并授权商品分类的查看权限

  7. 微信小程序登录/支付

  8. 范围级事件总线。让界面元素之间不直接引用,也可以在一个组件变化时,另一个组件执行一些逻辑;也可以在租户级别触发事件,租户内的所有用户和其它实体做出反应。

  9. 不遵循DDD,还是保持三层架构的方式

  10. 增强的CrudAppService,增加批量操作;允许更细粒度的方法重写

  11. 代码生成器(开发中...)

资源

在线demo地址:http://zlj.cqyuzuji.com:19911
视频:https://space.bilibili.com/314047707
博客:https://www.cnblogs.com/jionsoft/

预览图: c45b706a8d6a0030d366ef95af15a63c.png

快速开始

环境

vs2022 .net8 sqlserver2012+

启动项目

  1. 克隆项目

  2. 双击ZLJWithModules.sln启动。

  3. 修改ZLJ.Migrator和ZLJ.Web.Host中的appsettings.json中的数据库连接字符串

  4. 将ZLJ.Migrator设为启动项,并启动它,

    1. 按y后回车,会自动生成并迁移数据库

    2. 再按y后回车,会自动插入演示数据

  5. 将ZLJ.Web.Host(后端api)和ZLJ.Web.HostBlazor(blazor web app auto 模式)设为启动项,并启动它,登录信息(租户:default 账号:admin 密码:123qwe)

项目结构

cf85096d18f74f839ec90890972fe192.png

分为公共库和主项目库,通常我们将公共库发布为nuget包,然后被主项目引用。主项目就是具体项目,来个新项目时需要复制一份,多个具体项目都是引用相同公共库的nuget包 这样公共库可以一直升级下去。

若使用ZLJ.sln打开解决方案,主项目将以nuget包形式引用公共库,此时你需要添加:http://192.168.200.81:8087/v3/index.json 因为公共库经常在更新,所以我建了这个私有包源,你也可以将其打包后发布到nuget.org

公共库

  1. Libs文件夹里是 普通的.net core项目,与abp无关的 ,它包含一些公共帮助类、扩展方法等。

    1. BXJG.Common 最基础是帮助类,扩展方法等,可以被blazor前端引用

    2. BXJG.Common.EFCore 对efcore的一些扩展

    3. BXJG.Common.RCL 对razor(blazor)组件的扩展或抽象组件,可以被blazor前端引用。

    4. BXJG.Common.Web 跟web相关的一些扩展或帮助类方法

    5. BXJG.WeChat 微信小程序登录、支付

    6. BXJG.WeChat.Web 微信小程序中某些功能是跟web相关的,定义在这里的。

  2. Modules此文件夹下是 跟abp相关,但与具体项目无关的,都是按abp模块方式定义的 ,包含一些对abp的扩展,或一些公共功能,如:通用树的抽象、通用附件、同意crud应用服务的抽象等,注意这些库不能被blazor前端引用。

    1. BXJG.Utils 一些通用功能的实体、领域服务,以及对abp的一些扩展。

    2. BXJG.Utils.Application 一些通用功能的应用服务,以及对abp应用服务的扩展。如:抽象crud应用服务接口和抽象类

    3. BXJG.Utils.Application.Share 应用服务接口、dto和验证规则

    4. BXJG.Utils.EFCore 一些通用功能的ef相关定义在这里的,也包含一些对abp的ef相关的扩展

    5. BXJG.Utils.RCL 跟abp相关的blazor组件库,注意仅blazor的服务端部分才能引用它

    6. BXJG.Utils.Share 领域层中一些常量、辅助方法等,以类似BXJG.Utils.Application.Share这种库引用它,而不直接引用BXJG.Utils

    7. BXJG.Utils.Web 一些通用功能,跟web相关的,以及对abpweb相关扩展。

    8. BXJG.WeChat.Abp 让我们的微信库与abp的继承

主项目

  1. framework下是多个应用共享的库,它是标准的abp模板项目中的库,然而,一个项目可能有多个应用(如:学校系统中,有教师端、学生端、家长、教务等),我们希望多个应用之间部分逻辑公用,但应用和UI层分开定义,各项目具体含义如下:

    1. ZLJ.Application.Common 公共应用服务实现,多个应用之间共享,前端不引用此库。

    2. ZLJ.Application.Common.ClientProxy 渐进式分离后期,部分页面使用httpclient访问后台api,多应用间的前端共享,后端不引用此库。

    3. ZLJ.Application.Common.Share 公共应用服务中,前端与后端共享的部分,通常包含接口、dto、验证规则、和其它共享功能。

    4. ZLJ.Core 这是abp项目模板的领域层,里面包含实体 领域服务 领域事件等,但注意,我们不打算使用DDD。

    5. ZLJ.Core.Share 领域层的某些对象可以需要在UI和应用服务层使用,通常这里定义些常量、枚举等,这样UI层不必引用领域层。

    6. ZLJ.EntityFrameworkCore 基于efcore的仓储

    7. ZLJ.Migrator 数据迁移

    8. ZLJ.RCL 在多个应用和前后端之间共享的,与blazor相关的公共功能。

    9. ZLJ.Web.Core 在ZLJ.WEB.Host和blazor host之间共享的,跟web相关的功能。

  2. admin下是“后台管理应用”的应用服务和UI ,若你有另一个应用,应该按类似的结构建立文件夹和项目。

    1. ZLJ.Admin.ClientProxy 渐进式分离后期,后台管理端在auto模式的客户端运行时,通过此库访问后端api

    2. ZLJ.Admin.CoreRCL 后台管理端的核心组件,它们可以使用任何渲染模式,它是auto模式的client部分。

    3. ZLJ.Application 后台管理端的应用服务

    4. ZLJ.Application.Share 后台管理中,前后端共享的功能,通常包含:后台管理端的应用服务接口、dto、验证规则等。

    5. ZLJ.Web.Host 承载后台管理端的webapi

    6. ZLJ.Web.HostBlazor 承载后台管理端的UI,它引用ZLJ.Admin.CoreRCL,它是auto模式的server部分。

作者前段时间还发布了他在Blazor Auto模式上的研究,内容还是不错的,大家有兴趣开源看下这个系列。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值