22 Star 102 Fork 39

变形精怪 / abp

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 7.89 KB
一键复制 编辑 原始数据 按行查看 历史
变形精怪 提交于 2024-04-07 17:12 . update README.md.

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

简介

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/
源码:https://gitee.com/bxjg1987_admin/abp

预览图: 输入图片说明 输入图片说明 输入图片说明

快速开始

环境

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)

项目结构

输入图片说明

分为公共库和主项目库,通常我们将公共库发布为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 多应用间的前端共享,后端不引用此库。
    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部分。

各项目的引用关系

自己打开先看看哈。

关于DDD

不打算使用DDD

C#
1
https://gitee.com/bxjg1987_admin/abp.git
git@gitee.com:bxjg1987_admin/abp.git
bxjg1987_admin
abp
abp
master

搜索帮助