Fork me on GitHub

随笔分类 -  ABP

摘要:IRepository:接口定义了Repository常见的方法 AbpRepositoryBase:实现了IRepository接口的常见方法 EfRepositoryBase:实现了AbpRepositoryBase中定义的抽象方法:GetAll,Insert,Delete,Update。在实际 阅读全文
posted @ 2016-04-10 13:32 ZHK的博客 阅读(4784) 评论(4) 推荐(8) 编辑
摘要:本文是ABP核心项目源码分析的最后一篇,介绍一些前面遗漏的功能 AbpSession AbpSession: 目前这个和CLR的Session没有什么直接的联系。当然可以自定义的去实现IAbpSession使之与CLR的Session关联 IAbpSession:定义如下图中的四个属性。 NullA 阅读全文
posted @ 2016-04-09 16:19 ZHK的博客 阅读(2443) 评论(3) 推荐(7) 编辑
摘要:IEventData/EventData: 封装了EventData信息,触发event的源对象和时间 IEventBus/EventBus: 定义和实现了了一系列注册,注销和触发事件处理函数的方法。EventBus定义了一个Dictionary容器来存放事件和处理该事件的对象(其实不是对象而是Fa 阅读全文
posted @ 2016-04-08 21:58 ZHK的博客 阅读(3856) 评论(11) 推荐(5) 编辑
摘要:NotificationDefinition: 用于封装Notification Definnition 的信息。注意和Notification 的区别,如果把Notification看成是具体的消息内容,NotificationDefinition则是对这个消息自身的定义(可理解为消息的类型)。 阅读全文
posted @ 2016-04-07 22:23 ZHK的博客 阅读(2514) 评论(3) 推荐(7) 编辑
摘要:Permission:用于定义一个Permission,一个permission可以包含多个子Permission. PermissionDictionary:继承自Dictionary<string, Permission>类,很明显是一个用于存储permission对象的字典。 IPermiss 阅读全文
posted @ 2016-04-06 21:27 ZHK的博客 阅读(4469) 评论(2) 推荐(5) 编辑
摘要:MenuDefinition:封装了导航栏上的主菜单的属性。 MenuItemDefinition:封装了主菜单的子菜单的属性。子菜单可以引用其他子菜单构成一个菜单树 UserMenu/UserMenuItem:封装了用于显示给用户的菜单/以及子菜单集合。 ABP通过MenuDefinition/M 阅读全文
posted @ 2016-04-05 21:08 ZHK的博客 阅读(1982) 评论(1) 推荐(4) 编辑
摘要:Feature是什么?Feature就是对function的分类方法,其与function的关系就比如Role和User的关系一样。 ABP中Feature具有以下属性: 其中最重要的属性是name,用以表示feature的Identity,一个feature一个name. 一个Feature可以有 阅读全文
posted @ 2016-04-04 14:29 ZHK的博客 阅读(3725) 评论(10) 推荐(5) 编辑
摘要:IApplicationService : 空接口,起标识作用。所有实现了IApplicationService 的类都会被自动注入到容器中。同时所有IApplicationService对象都会被注入一些拦截器(例如:auditing, UnitOfWork等)以实现AOP AbpServiceB 阅读全文
posted @ 2016-04-01 16:51 ZHK的博客 阅读(3985) 评论(2) 推荐(6) 编辑
摘要:审计跟踪(也叫审计日志)是与安全相关的按照时间顺序的记录,它们提供了活动序列的文档证据,这些活动序列可以在任何时间影响一个特定的操作。 AuditInfo:定义如下图中需要被Audit的信息。 AuditedAttribute: 用于标识一个方法或一个类的所有方法都需要启用Auditing功能。 D 阅读全文
posted @ 2016-04-01 15:57 ZHK的博客 阅读(4617) 评论(2) 推荐(5) 编辑
摘要:以下图中描述的接口和类都在Abp项目的Runtime/Validation, UI/Inputs目录下的。在当前版本的ABP(0.83)中这些接口和类并没有实际使用到。阅读代码时可以忽略,无需浪费时间去寻找其是如何被ABP使用的(本文的目的)。 这些接口和类最终都是通过IInputType被Feat 阅读全文
posted @ 2016-03-31 19:17 ZHK的博客 阅读(1819) 评论(0) 推荐(2) 编辑
摘要:对传给Application service对象中的方法的DTO参数,ABP都会在方法真正执行前自动完成validation(根据标注到DTO对象中的validate规则)。 ABP是如何做到的? 思路无外乎通过Castle的拦截器实现AOP。本文主要分析ABP是如何设计。 Ivalidate: 空 阅读全文
posted @ 2016-03-30 22:08 ZHK的博客 阅读(4132) 评论(2) 推荐(6) 编辑
摘要:IDTO:空接口,用于标注Dto对象。 ComboboxItemDto:用于combobox/list中Item的DTO NameValueDto<T>/NameValueDto:用于name value键值对的DTO, name为string类型, value为泛型或string类型。 Entit 阅读全文
posted @ 2016-03-29 22:05 ZHK的博客 阅读(7372) 评论(2) 推荐(5) 编辑
摘要:类名 扩展的类型 方法名 参数 作用 XmlNodeExtensions XmlNode GetAttributeValueOrNull attributeName Gets an attribute's value from an Xml node. JsonExtensions object T 阅读全文
posted @ 2016-03-28 22:08 ZHK的博客 阅读(3131) 评论(2) 推荐(6) 编辑
摘要:IEntity<TPrimaryKey>: 封装了PrimaryKey:Id,这是一个泛型类型 IEntity: 封装了PrimaryKey:Id,这是一个int类型 Entity<TPrimaryKey> :支持主键是泛型类型的Entity Entity:支持主键是int类型的Entity IHa 阅读全文
posted @ 2016-03-28 16:07 ZHK的博客 阅读(5580) 评论(3) 推荐(9) 编辑
摘要:ABP中有两种cache的实现方式:MemroyCache 和 RedisCache. 如下图,两者都继承至ICache接口(准确说是CacheBase抽象类)。ABP核心模块封装了MemroyCache 来实现ABP中的默认缓存功能。 Abp.RedisCache这个模块封装RedisCache来 阅读全文
posted @ 2016-03-28 12:18 ZHK的博客 阅读(5306) 评论(3) 推荐(6) 编辑
摘要:本文逐个分析ABP中涉及到locaization的接口和类,以及相互之间的关系。本地化主要涉及两个方面:一个是语言(Language)的管理,这部分相对简单。另一个是语言对应得本地化资源(Localization)的管理,这部分稍显复杂。 LanguageInfo:用于封装language的基本信息 阅读全文
posted @ 2016-03-25 20:07 ZHK的博客 阅读(3974) 评论(5) 推荐(11) 编辑
摘要:Timing这个简单实用的功能主要用于以统一的方式表示时间。因为ABP中有大量的module,还支持自定义module,所以将时间统一表示为local时间(默认)或utc时间是必要的。 IClockProvider:提供获取当前时间和标准化时间的接口。 UtcClockProvider:实现了以UT 阅读全文
posted @ 2016-03-24 20:22 ZHK的博客 阅读(2529) 评论(4) 推荐(10) 编辑
摘要:ABP以AOP的方式实现UnitOfWork功能。通过UnitOfWorkRegistrar将UnitOfWorkInterceptor在某个类被注册到IOCContainner的时候,一并添加到该类在容器中对应的ComponentModel的Interceptors集合中。总结一句话就是,UOW的 阅读全文
posted @ 2016-03-23 17:48 ZHK的博客 阅读(8647) 评论(18) 推荐(12) 编辑
摘要:文主要说明ABP中后台工作者模块(BackgroundWorker)的实现方式,和后台工作模块(BackgroundJob)。ABP通过BackgroundWorkerManager来管理BackgroundJobManager,然后通过BackgroundJobManager来管理Backgrou 阅读全文
posted @ 2016-03-22 19:10 ZHK的博客 阅读(8245) 评论(9) 推荐(16) 编辑
摘要:ABP使用Castle日志记录工具,并且可以使用不同的日志类库,比如:Log4Net, NLog, Serilog... 等等。对于所有的日志类库,Castle提供了一个通用的接口来实现,我们可以很方便的处理各种特殊的日志库,而且当业务需要的时候,很容易替换日志组件。 Logger功能模块涉及到的接 阅读全文
posted @ 2016-03-21 19:44 ZHK的博客 阅读(3834) 评论(5) 推荐(10) 编辑