dotnetcore / osharp

OSharp是一个基于.Net6.0的快速开发框架,框架对 AspNetCore 的配置、依赖注入、日志、缓存、实体框架、Mvc(WebApi)、身份认证、功能权限、数据权限等模块进行更高一级的自动化封装,并规范了一套业务实现的代码结构与操作流程,使 .Net 框架更易于应用到实际项目开发中。
Apache License 2.0
2.76k stars 748 forks source link
aspnetcore netstandard osharp osharpns

OSharp Framework

Member project of .NET Core Community depoly action NuGet Badge GitHub license



OSharp 简介

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

项目地址

相关示例项目:

框架组件组织

image

Nuget Packages

包名称 稳定版本 预览版本 下载数
OSharp.Utils OSharp.Utils OSharp.Utils OSharp.Utils
OSharp.Core OSharp.Core OSharp.Core OSharp.Core
OSharp.AspNetCore OSharp.AspNetCore OSharp.AspNetCore OSharp.AspNetCore
OSharp.Authorization.Datas OSharp.Authorization.Datas OSharp.Authorization.Datas OSharp.Authorization.Datas
OSharp.Authorization.Functions OSharp.Authorization.Functions OSharp.Authorization.Functions OSharp.Authorization.Functions
OSharp.AutoMapper OSharp.AutoMapper OSharp.AutoMapper OSharp.AutoMapper
OSharp.EntityFrameworkCore OSharp.EntityFrameworkCore OSharp.EntityFrameworkCore OSharp.EntityFrameworkCore
OSharp.EntityFrameworkCore.SqlServer OSharp.EntityFrameworkCore.SqlServer OSharp.EntityFrameworkCore.SqlServer OSharp.EntityFrameworkCore.SqlServer
OSharp.EntityFrameworkCore.MySql OSharp.EntityFrameworkCore.MySql OSharp.EntityFrameworkCore.MySql OSharp.EntityFrameworkCore.MySql
OSharp.EntityFrameworkCore.Sqlite OSharp.EntityFrameworkCore.Sqlite OSharp.EntityFrameworkCore.Sqlite OSharp.EntityFrameworkCore.Sqlite
OSharp.EntityFrameworkCore.PostgreSql OSharp.EntityFrameworkCore.PostgreSql OSharp.EntityFrameworkCore.PostgreSql OSharp.EntityFrameworkCore.PostgreSql
OSharp.Hangfire OSharp.Hangfire OSharp.Hangfire OSharp.Hangfire OSharp.Identity OSharp.Identity
OSharp.Identity OSharp.Identity OSharp.Identity OSharp.Identity
OSharp.Log4Net OSharp.Log4Net OSharp.Log4Net OSharp.Log4Net
OSharp.MiniProfiler OSharp.MiniProfiler OSharp.MiniProfiler OSharp.MiniProfiler
OSharp.Redis OSharp.Redis OSharp.Redis OSharp.Redis
OSharp.Exceptionless OSharp.Exceptionless OSharp.Exceptionless OSharp.Exceptionless
OSharp.Swagger OSharp.Swagger OSharp.Swagger OSharp.Swagger
OSharp.Wpf OSharp.Wpf OSharp.Wpf OSharp.Wpf
OSharp.Hosting.Core OSharp.Hosting.Core OSharp.Hosting.Core OSharp.Hosting.Core
OSharp.Hosting.EntityConfiguration OSharp.Hosting.EntityConfiguration OSharp.Hosting.EntityConfiguration OSharp.Hosting.EntityConfiguration
OSharp.Hosting.Apis OSharp.Hosting.Apis OSharp.Hosting.Apis OSharp.Hosting.Apis
OSharpNS OSharpNS OSharpNS OSharpNS
OSharp.Template.WebApi OSharp.Template.WebApi OSharp.Template.WebApi

OSharp 特性

1. 模块化的组件设计

框架设计了一个模块(Pack)的系统,所有实现了模块基类(OsharpPack)的类都视为一个独立的模块,一个模块可以独立添加服务(AddServices),并可在初始化时应用服务(UsePack)进行模块初始化。

2. 自动化的依赖注入机制

框架定义了ISingletonDependencyIScopeDependencyITransientDependency三个空接口对应 DependencyInjection 中的三种服务生命周期,系统初始化时,通过反射检索程序集的方式,检索出所有服务类型(ServiceType)与服务实现(ImplementationType)及生命周期类型(ServiceLifetime)的相关数据,对依赖注入的 ServiceCollection 进行全自动初始化。

3. UnitOfWork-Repository 模式,EFCore 上下文动态构建

4. 基于 AspNetCore 的 Identity 的身份认证设计系统

5. 设计了一个强大的功能权限与数据权限的授权体系

6. 集成 Swagger 后端 API 文档系统

OSharp 快速启动模板的开发模式,集成了Swagger API 文档生成组件,更方便了前后端分离的开发模式中前后端开发人员的数据接口对接工作。基于Swagger的工作原理,API 的输入输出都需使用强类型的数据类型,Swagger才能发挥更好的作用,而 OSharp 框架通过AutoMapperProjectTo对业务实体到输出 DTOIOutputDto提供了自动映射功能,能有效减轻后端开发中数据对象属性映射的工作量。

快速启动

OSharp 框架制作了一个基于dotnet cli命令行工具的快速启动模板,下面演示如何来使用这个模板快速创建一个基于 OSharp 框架的初始化项目。

1. 安装最新版本 dotnetcore sdk

OSharp 当前版本(6.0.0)使用了 .net 当前最新版本 6.0.0,所以对应的 net sdk 需要安装到对应版本 >=v6.0.0

2. 安装 OSharp 的dotnet new项目模板

在任意空白目录,打开 cmdpowershell 命令行窗口,执行命令

dotnet new -i OSharp.Template.WebApi

执行后,将能看到osharp_xxx系列的命令已安装到列表中

image

3. 执行osharp命令,获取项目一键项目安装脚本

dotnet new osharp

执行后,将得到一个名为osharp.bat的批处理脚本文件

image

4. 运行脚本文件,生成项目初始化代码

直接执行osharp.bat脚本代码,将会提示 请输入项目名称,推荐形如 “公司.项目”的模式:,此名称将用作解决方案名称、工程名称起始部分、代码中的namespace起始部分。例如输入Liuliu.Demo,将生成如下代码结构:

image

5. 用 VS 打开解决方案

打开解决方案后,各个工程之间的引用关系已配置好,osharp 框架的类库已引用 nuget.org 上的相应版本,并将自动还原好。项目结构如图所示:

image

项目代码结构说明:

项目启动配置

Update-Database

6. Angular7 的前端项目启动

前端项目使用了ng-alainkendoui作为 UI 进行开发的,需要熟悉nodejs,angular7等技术。

安装NodeJS,搭建前端技术环境

使用 VS Code 打开 Angular 前端项目

image

此命令将会执行如下命令:ng serve --port 4201 --proxy-config proxy.config.json --open,其中--proxy-config proxy.config.json对前端项目发起的 API 请求进行了代理,所有以 /api/开头的请求,都会转发到服务端项目中进行处理,代理的实际配置如下:

{
    "/api": {
        "target": "http://localhost:7001",
        "secure": false
    }
}

至此,项目启动完成,最终效果如下图所示:

image

项目开发进度

截止到目前,OSharp 框架的完成程度已经很高了,计划中的功能点,均已得到较高水准的实现,具体功能点完成进度如下所示:

感谢

JetBrains Resharper