[Abp 源码分析]十三、多语言(本地化)处理

0.简介 如果你所开发的需要走向世界的话,那么肯定需要针对每一个用户进行不同的本地化处理,有可能你的客户在日本,需要使用日语作为显示文本,也有可能你的客户在美国,需要使用英语作为显示文本。如果你还是一样的写死错误信息,或者描述信息,那么就无法做到多语言适配。 Abp 框架本身提供了一套多语言机制来帮 ... »

[Abp 源码分析]十二、多租户体系与权限验证

0.简介 承接上篇文章我们会在这篇文章详细解说一下 Abp 是如何结合 与 来实现一个完整的多租户系统的权限校验的。 1.多租户的概念 多租户系统又被称之为 Saas ,比如阿里云就是一个典型的多租户系统,用户本身就是一个租户,可以在上面购买自己的 ECS 实例,并且自己的数据与其他使用者(租户)所 ... »

Abp + Grpc 如何用户实现会话状态传递

0.背景 在实际项目当中,我们采用的是 Abp 框架,但是 Abp 框架官方并没有针对 Grpc 进行模块封装。基于此我结合 Abp 与 MagicOnion 封装了一个 Abp.Grpc 模块,它包括服务端和调用端两部分的包。通过这两个包,你可以很方便地在 Abp 框架当中集成 Grpc 实现服务 ... »

[52ABP系列] - 002、模板项目配合代码生成器开发

前言 本篇的主要内容是 52ABP SPA模板如何配合52ABP代码生成器开发项目 如果不了解 52ABP 项目请先看我的第一篇文章 [52ABP系列] - 001、SPA免费项目模版搭建教程 话不多说,教程开始 一、安装代码生成器 首先打开VS,找到顶部菜单中的 工具 选项,打开 工具 选项中的 ... »

[52ABP系列]-SPA免费项目模版搭建教程

前言 这个项目是基于ABP ASPNetCore免费版,整合NG-Alian和NG-Zorro的项目,所以比较适合熟悉ABP和Angular2+的开发人员, 如果你是新手,学习的话可以先了解以下资料 ABP资料: ABP官方文档-英文 ABP ASP.NET版 中文文档 Angular资料: Ang ... »

[Abp 源码分析]八、缓存管理

0.简介 缓存在一个业务系统中十分重要,常用的场景就是用来储存调用频率较高的数据。Abp 也提供了一套缓存机制供用户使用,在使用 Abp 框架的时候可以通过注入 来新建/设置缓存。 同时 Abp 框架也提供了 Redis 版本的 实现,你也可以很方便的将现有的内存缓存替换为 Redis 缓存。 0. ... »

[Abp 源码分析]七、仓储与 Entity Framework Core

0.简介 Abp 框架在其内部实现了仓储模式,并且支持 EF Core 与 Dapper 来进行数据库连接与管理,你可以很方便地通过注入仓储来操作你的数据。 例如: 1.仓储定义与实现 在 Abp 内部,仓储的基本定义存放在 Abp 项目的 Domain/Repositories 内部,包括以下几个 ... »

关于在工作单元触发领域事件问题

关于在工作单元触发领域事件问题 情景 :比如我在工作单元内需要触发某些事件。然后工作单元结束后又触发某些事件。比如:下完订单后,发送消息到rabbitMQ. abp的issues回答链接: "Provide a way of adding items to DomainEvents in Aggre ... »

手把手教你实现自己的abp代码生成器

代码生成器的原理无非就是得到字段相关信息(字段名,字段类型,字段注释等),然后根据模板,其实就是字符串的拼接与替换生成相应代码。 所以第一步我们需要解决如何得到字段的相关信息,有两种方式 通过反射获得程序集类的字段相关信息 读取数据库得到表的字段的相关信息 1. 新建一个.NET Core控制台项目 ... »

[Abp 源码分析]六、工作单元的实现

0.简介 在 Abp 框架内部实现了工作单元,在这里讲解一下,什么是工作单元? Unit Of Work(工作单元)模式用来维护一个由已经被业务事物修改(增加、删除或更新)的业务对象组成的列表。Unit Of Work模式负责协调这些修改的持久化工作以及所有标记的并发问题。在数据访问层中采用Unit ... »

[Abp 源码分析]五、系统设置

0.简要介绍 Abp 本身有两种设置,一种就是 "上一篇文章" 所介绍的模块配置 Configuration,该配置主要用于一些复杂的数据类型设置,不仅仅是字符串,也有可能是一些 C 运行时的一些变量。另外一种则是本篇文章所讲的 Setting,Setting 主要用于配置一些简单的参数,比如 SM ... »

[Abp 源码分析]三、依赖注入

0.简要介绍 在 Abp 框架里面,无时无刻不存在依赖注入,关于依赖注入的作用与好处我就不在这里多加赘述了,网上有很多解释的教程。在 "[Abp 源码分析]一、Abp 框架启动流程分析" 里面已经说过,Abp 本身在框架初始化的时候我们就可以看到它使用 Castle Windsor 将 Asp.Ne ... »

[Abp 源码分析]二、模块系统

0.简介 整个 Abp 框架由各个模块组成,基本上可以看做一个程序集一个模块,不排除一个程序集有多个模块的可能性。可以看看他官方的这些扩展库: 可以看到每个项目文件下面都会有一个 的文件,这里就是存放的模块文件,一个模块拥有四个生命周期,分别为 (预加载)、 (初始化)、 (初始化完成)、 (销毁) ... »

[Abp 源码分析] 一、Abp 框架启动流程分析

Abp 不一定仅用于 Asp.Net Core 项目,他也可以在 Console 与 WinFrom 项目当中进行使用,所以关于启动流程可以分为两种,一种是 Asp.Net Core 项目的启动流程,另外则是 Console/WinFrom 项目的启动流程,在这里我则是通过 Asp.Net Core ... »

基于 Consul 实现 MagicOnion(GRpc) 服务注册与发现

0.简介 0.1 什么是 Consul Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。 这里所谓的服务,不仅仅包括常用的 Api 这些服务,也包括软件开发过程当中所需要的诸如 Rpc、Redis、Mysql 等需要调用的资源。 简而言之 Consul 就是根 ... »

ABP框架 - 启动配置

ABP可以在启动的时候对模块进行配置。 配置ABP 在模块的PreInitialize方法中,可以对ABP进行配置。配置示例如下: ABP是模块化设计,不同的模块都可以对ABP进行配置。例如不同的模块可以通过添加不同的导航提供者来在主菜单上添加自己的菜单项。 替换内置服务 Configuration ... »

ABP框架 - 模块系统

模块系统介绍 ABP提供了基础设施功能来构建模块,并通过组合这些模块来创建应用。一个模块可以依赖于另一个模块。一般来讲,一个程序集被认为和定义成一个模块。如果你的应用包含多个程序集,那么你可以为每一个程序集都定义一个模块。 模块定义 ABP中的一个模块是由继承于AbpModule(AbpModule ... »

ABP框架 - N层架构

目录 "介绍" "DDD分层" "ABP架构模型" "客户端" "展现层" "分布式服务层" "应用层" "领域层" "基础设施层" 介绍 在应用程序设计中,分层架构是一种被广泛使用的技术,它助于降低复杂度和提高代码的可重用性。在ABP框架中,使用了DDD(领域驱动设计)的原则来实现分层架构. DD ... »

一步一步配置ABP Core Template with Angular

1、首先去https://aspnetboilerplate.com/Templates下载模板工程,按如下勾选 2、下载后打开工程如下图,并设置Web.host 作为启动项目,rebuild 还原nuget包 此时你启动项目,你可以通过访问http://localhost:21021/swagge ... »

手工搭建基于ABP的框架 - 工作单元以及事务管理

一个业务功能往往不只由一次数据库请求(或者服务调用)实现。为了功能的完整性,我们希望如果该功能执行一半时出错,则撤销前面已执行的改动。在数据库层面上,事务管理实现了这种完整性需求。在ABP中,一个完整的业务功能称为一个工作单元(Unit of Work,简称UoW)。工作单元代表一种完整的、原子性的 ... »