04 2016 档案
摘要:ABP对HangFire的集成主要是通过实现IBackgroundJobManager接口的HangfireBackgroundJobManager类完成的。 HangfireBackgroundJobManager:实现了接口IBackgroundJobManager中的方法EnqueueAsyn
阅读全文
摘要:如果对OData不熟悉的话可参考OData的初步认识一文以获取OData的一些初步知识。 API.Odata 模块唯一用处就是提供了一个泛型版本的ODataController,实现了Controller代码的常用。 AbpODataEntityController<TEntity, TPrimar
阅读全文
摘要:ABP提供Script Proxy WebApi为所有的Dynamic WebApi生成访问这些WebApi的JQuery代理,AngularJs代理以及TypeScriptor代理。这些个代理就是javascript脚本,通过这些代理可以简单的访问Dynamic webApi。 如下实例演示一个最
阅读全文
摘要:这里的内容和ABP 动态webapi没有关系。除了动态webapi,ABP必然是支持使用传统的webApi。ABP.Web.Api模块中实现了一些同意的基础功能,以方便我们创建和使用asp.net webApi。 AbpApiController:这是一个抽象基类,继承自ApiController,
阅读全文
摘要:动态WebAPI应该算是ABP中最Magic的功能之一了吧。开发人员无须定义继承自ApiController的类,只须重用Application Service中的类就可以对外提供WebAPI的功能,这应该算是对DRY的最佳诠释了. 如下图所示,一行代码就为所有实现了IApplicationServ
阅读全文
摘要:ABP.Web.Mvc模块主要完成两个任务: 第一,通过自定义的AbpController抽象基类封装ABP核心模块中的功能,以便利的方式提供给我们创建controller使用。 第二,一些常见的基础功能的实现。 AbpController:这是一个抽象基类,继承自MVC Controller,是A
阅读全文
摘要:ABP.Web模块并不复杂,主要完成ABP系统的初始化和一些基础功能的实现。 AbpWebApplication : 继承自ASP.Net的HttpApplication类,主要完成下面三件事一,在Application_Start完成AbpBootstrapper的初始化。整个ABP系统的初始化就
阅读全文
摘要:TaskCompletionSource生成Task的另一种方法.使用TaskCompletionSource很简单,只需要实例化它即可。TaskCompletionSource有一个Task属性,你可以对该属性暴露的task做操作,比如让它wait或者ContinueWith等操作。当然,这个ta
阅读全文
摘要:首先见下图(图一),其中FooController是一个没有实现任何Interface的空类。需要实现的效果是:通过FooController对象调用FooService的Do方法。设置这一不常见的场景主要是为了说明Castle中AdditionalInterfaces的用法。 这个场景诡异的地方在
阅读全文
摘要:Realtime Realtime是ABP底层模块提供的功能,用于管理在线用户。它是使用SignalR实现给在线用户发送通知的功能的前提 IOnlineClient/OnlineClient: 封装在线用户的信息 OnlineClientManager/IOnlineClientManager: 用
阅读全文
摘要:这个模块封装了Automapper,使其更易于使用。 下图描述了改模块涉及的所有类之间的关系。 AutoMapAttribute,AutoMapFromAttribute和AutoMapToAttribute:这三个attribute用于标注一个类到另外一个类的map方向。 AutoMapperHe
阅读全文
摘要:随着微软日渐重视开源社区的贡献,微软在自己的产品中往往也会集成开源的第三方库。 比如System.Net.Http.Foramatting.dll 就依赖于Newtonsoft.json v4.5. 所以如果你项目的Newtonsoft.json的版本高于v4.5。当调用System.Net.Htt
阅读全文
摘要:ABP 通过StackExchange.Redis类库来操作Redis数据库。 AbpRedisCacheModule:完成ABP.RedisCache模块的初始化(完成常规的依赖注入) AbpRedisCacheConfig:定义了connectionStringKey和databaseIdApp
阅读全文
摘要:这个Module通过建立一个MongoDbRepositoryBase<TEntity> 基类,封装了对MongoDb数据库的操作。 这个module通过引用MongoDB.Driver,MongoDB.Bson,MongoDB.Driver.Core,MongoDB.Driver.Legacy类库
阅读全文
摘要:这个模块简单,且无实际作用。一般实际项目中都有用数据库做持久化,用了数据库就无法用这个MemoryDB 模块了。原因在于ABP限制了UnitOfWork的类型只能有一个(前文以作介绍),一般用了数据库的必然要注入efUnitOfWork. 而注入了efUnitOfWork就不能在注入MemoryDb
阅读全文
摘要:IRepository:接口定义了Repository常见的方法 AbpRepositoryBase:实现了IRepository接口的常见方法 EfRepositoryBase:实现了AbpRepositoryBase中定义的抽象方法:GetAll,Insert,Delete,Update。在实际
阅读全文
摘要:本文是ABP核心项目源码分析的最后一篇,介绍一些前面遗漏的功能 AbpSession AbpSession: 目前这个和CLR的Session没有什么直接的联系。当然可以自定义的去实现IAbpSession使之与CLR的Session关联 IAbpSession:定义如下图中的四个属性。 NullA
阅读全文
摘要:What – OData是什么? OData - Open Data Protocol,是一个设计和使用RESTful API的标准。REST本身只是一个构建web服务的思想和理念,其没有规定一个统一的标准来限制开发人员该如何设计RESTful API。其实我们实际开发中的确也没有遵循某个统一的标准
阅读全文
摘要:IEventData/EventData: 封装了EventData信息,触发event的源对象和时间 IEventBus/EventBus: 定义和实现了了一系列注册,注销和触发事件处理函数的方法。EventBus定义了一个Dictionary容器来存放事件和处理该事件的对象(其实不是对象而是Fa
阅读全文
摘要:NotificationDefinition: 用于封装Notification Definnition 的信息。注意和Notification 的区别,如果把Notification看成是具体的消息内容,NotificationDefinition则是对这个消息自身的定义(可理解为消息的类型)。
阅读全文
摘要:Permission:用于定义一个Permission,一个permission可以包含多个子Permission. PermissionDictionary:继承自Dictionary<string, Permission>类,很明显是一个用于存储permission对象的字典。 IPermiss
阅读全文
摘要:MenuDefinition:封装了导航栏上的主菜单的属性。 MenuItemDefinition:封装了主菜单的子菜单的属性。子菜单可以引用其他子菜单构成一个菜单树 UserMenu/UserMenuItem:封装了用于显示给用户的菜单/以及子菜单集合。 ABP通过MenuDefinition/M
阅读全文
摘要:Feature是什么?Feature就是对function的分类方法,其与function的关系就比如Role和User的关系一样。 ABP中Feature具有以下属性: 其中最重要的属性是name,用以表示feature的Identity,一个feature一个name. 一个Feature可以有
阅读全文
摘要:AngularJS 是一个创建富客户端应用的JavaScript MVC框架。你仍然需要具有服务端后台,但大多数的用户交互逻辑将放到客户端上处理。它可以创建单页的应用程序,一个页面的应用仅仅需要HTML,CSS和JavaScript在客户端。它的目标是增强页面的模型-视图-控制(MVC)的功能,为简
阅读全文
摘要:IApplicationService : 空接口,起标识作用。所有实现了IApplicationService 的类都会被自动注入到容器中。同时所有IApplicationService对象都会被注入一些拦截器(例如:auditing, UnitOfWork等)以实现AOP AbpServiceB
阅读全文
摘要:审计跟踪(也叫审计日志)是与安全相关的按照时间顺序的记录,它们提供了活动序列的文档证据,这些活动序列可以在任何时间影响一个特定的操作。 AuditInfo:定义如下图中需要被Audit的信息。 AuditedAttribute: 用于标识一个方法或一个类的所有方法都需要启用Auditing功能。 D
阅读全文