[开源]OSharpNS 步步为营系列 - 1. 业务模块设计
什么是OSharp
OSharpNS全称OSharp Framework with .NetStandard2.0,是一个基于.NetStandard2.0
开发的一个.NetCore
快速开发框架。这个框架使用最新稳定版的.NetCore SDK
(当前是.NET Core 2.2),对 AspNetCore 的配置、依赖注入、日志、缓存、实体框架、Mvc(WebApi)、身份认证、权限授权等模块进行更高一级的自动化封装,并规范了一套业务实现的代码结构与操作流程,使 .Net Core 框架更易于应用到实际项目开发中。
- 开源地址:https://github.com/i66soft/osharp
- 官方示例:https://www.osharp.org
- 文档中心:https://docs.osharp.org
- VS 插件:https://marketplace.visualstudio.com/items?itemName=LiuliuSoft.osharp
概述
本系列教程中,我们将一步一步实现一个博客(BlogsPack)的业务模块,并对使用OSharp框架进行业务实现的过程涉及的框架知识进行全面的讲解。
通过学习本系列教程,你将对OSharp框架的业务实现有个较全面的了解,你将学习到框架的如下知识点:
- 框架推荐的项目文件组织方式
- 实体类设计,并将实体类加载到数据上下文
- 模块化的业务层服务设计
- 基于WebAPI的角色 功能权限 控制
- 基于 角色-实体 的 数据权限 控制
- Angular前端 菜单/按钮权限 控制
Pack模块简介
Pack模块是应用程序中的一个高内聚的子系统,负责完成一类功能或者一系列相关联的业务处理,是构建 OSharp 应用程序的基本功能单元。一系列低耦合的Pack模块共同组合在一起创建一个 OSharp 应用程序。每个 Pack模块是以一个实现了模块基类(OsharpPack)的类作为入口的,这个类完成本模块的服务添加(AddService)和模块初始化工作(UsePack)。
OsharpPack 基类定义如下:
/// <summary> /// OSharp模块基类 /// </summary> public abstract class OsharpPack { /// <summary> /// 获取 模块级别,级别越小越先启动 /// </summary> public virtual PackLevel Level => PackLevel.Business; /// <summary> /// 获取 模块启动顺序,模块启动的顺序先按级别启动,同一级别内部再按此顺序启动, /// 级别默认为0,表示无依赖,需要在同级别有依赖顺序的时候,再重写为>0的顺序值 /// </summary> public virtual int Order => 0; /// <summary> /// 获取 是否已可用 /// </summary> public bool IsEnabled { get; protected set; } /// <summary> /// 将模块服务添加到依赖注入服务容器中 /// </summary> /// <param name="services">依赖注入服务容器</param> /// <returns></returns> public virtual IServiceCollection AddServices(IServiceCollection services) { return services; } /// <summary> /// 应用模块服务,初始化模块 /// </summary> /// <param name="provider">服务提供者</param> public virtual