对传给Application service对象中的方法的DTO参数,ABP都会在方法真正执行前自动完成validation(根据标注到DTO对象中的validate规则). ABP是如何做到的? 思路无外乎通过Castle的拦截器实现AOP.本文主要分析ABP是如何设计. Ivalidate: 空接口,用于标识该接口的对象在使用前需要被validate先. IInputDto:用于输入参数的DTO,该接口继承自Ivalidate.所以所有作为输入参数的DTO都会在使用前先validate. I…
0. 简介 整个 Abp 框架最为核心的除了 Abp 库之外,其次就是 Abp.AspNetCore 库了.虽然 Abp 本身是可以用于控制台程序的,不过那样的话 Abp 就基本没什么用,还是需要集合 ASP.NET Core 才能发挥它真正的作用. 在 Abp.AspNetCore 库里面,Abp 通过 WindsorRegistrationHelper.CreateServiceProvider() 接管了 ASP.NET Core 自带的 Ioc 容器.除此之外,还针对 Controlle…
ABP是一套非常优秀的web应用程序架构,适合用来搭建集中式架构的web应用程序. 整个Abp的Infrastructure是以Abp这个package为核心模块(core)+15个模块(module).其中13个依赖于Abp这个核心包.另外两个包(FluentMigration,Web.Resources)相对独立 Abp.AutoMapper: 实现对象之间的自动映射. Abp.EntityFramework:通过EntityFramework实现数据访问层. Abp.FluentMigra…
IDTO:空接口,用于标注Dto对象. ComboboxItemDto:用于combobox/list中Item的DTO NameValueDto<T>/NameValueDto:用于name value键值对的DTO, name为string类型, value为泛型或string类型. Entity Dto IEntityDto<TPrimaryKey> :基于Entity的DTO,支持泛型类型的主键. IEntityDto:基于Entity的DTO,只支持int类型的主键. E…
IRepository:接口定义了Repository常见的方法 AbpRepositoryBase:实现了IRepository接口的常见方法 EfRepositoryBase:实现了AbpRepositoryBase中定义的抽象方法:GetAll,Insert,Delete,Update.在实际项目中的RepositoryBase都是从EfRepositoryBase继承的 IDbContextProvider/UnitOfWorkDbContextProvider:通过从ICurrentU…
ABP提供Script Proxy WebApi为所有的Dynamic WebApi生成访问这些WebApi的JQuery代理,AngularJs代理以及TypeScriptor代理.这些个代理就是javascript脚本,通过这些代理可以简单的访问Dynamic webApi. 如下实例演示一个最基本的应用场景.首先通过Script Proxy WebApi获取所有Dynamic WebApi的angular 代理. 假设你有一个ApplicationService如下,并且你为该Applic…
ABP 中异常处理的思路是很清晰的.一共五种类型的异常类. AbpInitializationException用于封装ABP初始化过程中出现的异常,只要抛出AbpInitializationException异常就可以,无须做额外处理.这类异常往往是需要维护人员介入分析的. 其他四个异常都在AbpController中被集中处理,处理分为两步:一,通过EventBus触发异常事件,相应的异常处理函数则处理异常.二,针对AbpValidationException,UserFriendlyExc…
0.系列文章目录 一.Abp 框架启动流程分析 二.模块系统 三.依赖注入 四.模块配置 五.系统设置 六.工作单元的实现 七.仓储与 Entity Framework Core 八.缓存管理 九.事件总线 十.异常处理 十一.权限验证 十二.多租户体系与权限验证 十三.多语言(本地化)处理 十四.DTO 自动验证 十五.自动审计记录 十六.后台工作与后台工作者 十七.ASP.NET Core 集成 1.为什么要写本系列文章? Abp 源码分析系列是针对 Abp 3.7.2 版本来进行的一个源码…
NotificationDefinition: 用于封装Notification Definnition 的信息.注意和Notification 的区别,如果把Notification看成是具体的消息内容,NotificationDefinition则是对这个消息自身的定义(可理解为消息的类型). INotificationDefinitionManager:该接口定义根据name返回NotificationDefinition的一些方法 NotificationDefinitionManage…
C# DateTime的11种构造函数   别的也不多说没直接贴代码 using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; namespace…