Mbp,一个用于学习.net core的开发框架
Mbp(https://github.com/mbpframework/Mbp)是一个.net core 3的企业级web开发框架,是我个人用于学习.net core而发起的一个开源项目.这个借鉴了国外优秀开源项目abp vnext,及国内优秀开源框架Osharp的一些思想和实现.欢迎各路开发爱好者加入这个项目,一起学习,一起玩耍,共同成长!
Mbp目前有:
简单的模块化系统,
基于Jwt的统一身份验证,
基于角色和自定义策略的统一授权系统,
集成了swagger ui的poco controller
集成了ef core
提供AOP机制
后面还会继续加入Hangfire,IentityServer4,NServiceBus,RabbitMQ,SignalR,Redis,ML,ES,Multitenancy,virtualfilesystem等等.
下面简单介绍一下Mbp的这个框架吧.首先介绍下整个模块化框架的构成.

1.模块按照等级分为核心模块,组件级模块和应用级模块.核心模块默认为Mbp.Core.框架里面其他的模块都为组件级模块,模块之间会按照依赖关系顺序加载(这是一个to do项).因为目前模块比较少,启动也不会出问题,后续指定了依赖关系就会好很多拉.运行的时候Mbp会作为一个中间件加入到asp.net core的管道中.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
} // 使用医学大数据开发平台框架
app.UseMedicalFramework(); // 路由中间件
app.UseRouting(); // 鉴权中间件
app.UseAuthorization(); // 路由终结点配置 开启终结点之后,mbp的权限过滤器将以中间件的形式独立运行,不会再添加到ActionDescriptor
// 也就是说,我们不要选择以这种方式来拦截和自定义鉴权算法
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
2.Mbp.Core是框架的核心,其主要职责是将其他模块的服务注册到依赖注入系统中,同时把相关的中间件加到asp.net core管道中.同时提供了一些底层的抽象定义.
3.Mbp.AspNetCore是针对asp.net core体系封装的一个基本模块,同时这也是Mbp一个很重要的模块,很多模块都继承了它.这个模块的主要职责是实现了Poco controller和一些筛选器以级基本的asp,net core的设置都在这个模块做定义.
4.Mbp.EntityFrameworkCore,这是对EF Core的一个封装的模块,这个模块主要定义了Mbp作为一个企业级开发框架的基本主数据.包括用户,角色,菜单,权限,操作日志等(这个模块有个to do项就是要支持主数据的扩展)
5.Mbp.Authentication,是统一授权管理,其主要职责是定义了框架的授权策略
public override IServiceCollection AddServices(IServiceCollection services)
{
// 添加全局授权策略
services.AddAuthorization(options =>
{
options.AddPolicy("GlobalPermission", policy => policy.Requirements.Add(new PermissionRequirement()));
}); return base.AddServices(services);
}
6.Mbp.Authentication.JwtBearer,是统一身份验证模块,其职责是配置授权身份认证,包括身份标识,设置验证参数,设置验证事件.
public override IServiceCollection AddServices(IServiceCollection services)
{
var serviceProvider = services.BuildServiceProvider();
var jwtConfig = serviceProvider.GetService<IOptions<MbpConfig>>().Value?.Jwt; services.TryAddScoped<IJwtBearerService, JwtBearerService>(); //配置授权
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }).AddJwtBearer(jwtBearerOptions =>
{
// 设置验证参数
jwtBearerOptions.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(System.Text.Encoding.UTF8.GetBytes(jwtConfig.SecurityKey)),
ValidateIssuer = true,
ValidIssuer = jwtConfig.Issuer,
ValidateAudience = true,
ValidAudience = jwtConfig.Audience,
ValidateLifetime = true,
ClockSkew = TimeSpan.FromMinutes(jwtConfig.TimeOut)
};
// 设置验证事件
jwtBearerOptions.Events = new JwtBearerEvents
{
OnAuthenticationFailed = context =>
{
if (context.Exception.GetType() == typeof(SecurityTokenExpiredException))
{
context.Response.Headers.Add("action", "timeOut");
}
return Task.CompletedTask;
}
};
}); return base.AddServices(services);
} public override void UseModule(IApplicationBuilder app)
{
app.UseAuthentication();
base.UseModule(app);
}
6.Mbp.Ddd.Application,此模块主要是为了辅助实施DDD而做的,其主要职责是负责DDD应用层的相关能力的提供,比如定义Dto,扩展分页查询.
7.Mbp.Swagger,此模块是为框架提供web api接口UI界面.
8.Mbp.LogDashboard,此模块是为框架提供框架运行日志分析的UI界面.
下一节,将介绍我是如何用这些模块构建一个web 应用的.
Mbp,一个用于学习.net core的开发框架的更多相关文章
- 一个用于学习的react项目
React-element 根据开源项目 vue-sell进行的开发,将其改造成了react的项目.在开始学习vue的时候就是用的这个项目,发现效果不错,所以在学习React也使用了此项目. 目的:将 ...
- Adnc如何本地调试 - 一个轻量级的.Net Core微服务开发框架
前言 Adnc是一个轻量级的.Net Core微服务开发框架,同样适用于单体架构系统的开发. 如果只是想本地调试,只需要安装必备软件,必备软件除开发工具外,其它软件建议大家都使用`do ...
- OsharpNS轻量级.net core快速开发框架简明入门教程-代码生成器的使用
OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...
- OsharpNS轻量级.net core快速开发框架简明入门教程-基于Osharp实现自己的业务功能
OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...
- OsharpNS轻量级.net core快速开发框架简明入门教程-多上下文配置(多个数据库的使用)
OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...
- 从实体框架核心开始:构建一个ASP。NET Core应用程序与Web API和代码优先开发
下载StudentApplication.Web.zip - 599.5 KB 下载StudentApplication.API.zip - 11.5 KB 介绍 在上一篇文章中,我们了解了实体框架的 ...
- 一个轻量级的.Net Core微服务快速开发的轮子
前言 Adnc是一个轻量级的.Net Core微服务快速开发框架,同时也可以应用于单体架构系统的开发.框架基于JWT认证授权.集成了一系列微服务配套组件,代码简洁.易上手.学习成本低.开箱即用 ...
- OsharpNS轻量级.net core快速开发框架简明入门教程-Osharp.Redis使用
OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...
- 让一个 csproj 项目指定多个开发框架
可移植类库.共享项目..NET Standard 项目都能够帮我们完成跨多个 .NET SDK 的单一项目开发,但它们的跨 SDK 开发都有些限制.现在,我们又有新的方式能够跨多个 .NET SDK ...
随机推荐
- 树莓派SSH篇
开启好树莓派后发现一个问题,怎么才可以输入进树莓派里面呢? 一.你需要和我一样准备一个无线(有线)键盘
- e = e || window.event的区别及用法
本文链接:https://blog.csdn.net/qq_41348029/article/details/81288481 e = e || window.event 在做事件处理时,用于区分IE ...
- 你真的了解foreach吗?
引言 有C#基础的,当问到循环有哪些,会毫不犹豫的说出的for.do while.foreach及while这几种,但是到具体实际开发中,我们遇到一些问题,比如:到底选择哪种?为什么选择这种?哪种好像 ...
- Spring面试题集锦(精选)
以下来自网络收集,找不到原文出处.此次主要为了面试收集,希望对大家有所帮助~~~~ 1.什么是Spring? Spring是一个开源的Java EE开发框架.Spring框架的核心功能可以应用在任何J ...
- Spring Boot SpringApplication启动类(一)
目录 目录 前言 1.起源 2.SpringApplication 准备阶段 2.1.推断 Web 应用类型 2.2.加载应用上下文初始器 ApplicationContextInitializer ...
- 形式语言与自动机|DFA识别句子
实验二 DFA识别句子 一.实验目的 加深对DFA工作原理的理解. 二.实验内容 1.设计固定DFA.也就是说用if-then-else(一般用来实现字母表中只有两个字母的情况).switch(大于两 ...
- 【网络流相关】最大流的Dinic算法实现
Luogu P3376 于\(EK\)算法求最大流时每一次只求一条增广路,时间复杂度会比较高.尽管实际应用中表现比较优秀,但是有一些题目还是无法通过. 那么我们就会使用\(Dinic\)算法实现多路增 ...
- 硬核评测:企业上云的极速存储挑战,华为云全新极速IO云硬盘性能评测
来源:至顶网 作者:董培欣 借助华为云全新一代极速IO云硬盘开启邀测的时机,至顶网评测实验室展开了一次华为云极速IO云硬盘与超高IO云硬盘的性能对比测试活动,并且尝试通过相关测试成绩,对云硬盘的应用能 ...
- 一、Java基础篇
1.简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java 平台的总称.由James Gosling和同事们共同研发,并在1995年正式推出 ...
- TC297B - 外设头文件解析(以IO为例)
打开例程,目录树下的Includes中包含了各个片上资源对应的头文件,这些头文件定义了相应外设的寄存器地址(寄存器是内置于各个 IP 外设中,是一种用于配置外设功能的存储器,就是一种内存,并且有相对应 ...