什么是OSharp

OSharpNS全称OSharp Framework with .NetStandard2.0,是一个基于.NetStandard2.0开发的一个.NetCore快速开发框架。这个框架使用最新稳定版的.NetCore SDK(当前是.NET Core 2.2),对 AspNetCore 的配置、依赖注入、日志、缓存、实体框架、Mvc(WebApi)、身份认证、权限授权等模块进行更高一级的自动化封装,并规范了一套业务实现的代码结构与操作流程,使 .Net Core 框架更易于应用到实际项目开发中。

概述

本系列教程中,我们将一步一步实现一个博客(BlogsPack)的业务模块,并对使用OSharp框架进行业务实现的过程涉及的框架知识进行全面的讲解。
通过学习本系列教程,你将对OSharp框架的业务实现有个较全面的了解,你将学习到框架的如下知识点:

  1. 框架推荐的项目文件组织方式
  2. 实体类设计,并将实体类加载到数据上下文
  3. 模块化的业务层服务设计
  4. 基于WebAPI的角色 功能权限 控制
  5. 基于 角色-实体 的 数据权限 控制
  6. 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