ABP文档笔记 - 规约】的更多相关文章

ABP框架 - 规约 简介 规约模式是一个特别的软件设计模式,业务逻辑可以使用boolean逻辑重新链接业务逻辑(维基百科). 实践中的大部分情况,它是为实体或其它业务对象,定义可复用的过滤器. 理解 在查询操作中需要 提供一个逻辑运算表达式,也就是要提供一个返回布尔类型的算法函数. 在支持lambda表达式的C#的中,这类代码写起来很方便,也很简练. var count = _customerRepository.Count(c => c.Balance > 100000 &&…
ABP文档笔记 - 模块系统 及 配置中心 ABP文档笔记 - 事件BUS ABP文档笔记 - 数据过滤 ABP文档笔记 - 规约 ABP文档笔记 - 配置.设置.版本.功能.权限 ABP文档笔记 - 通知…
基础概念 两种通知发送方式 直接发送给目标用户 用户订阅某类通知,发送这类通知时直接分发给它们. 两种通知类型 一般通知:任意的通知类型 "如果一个用户发送一个好友请求,那么通知我"就是一个此类型的通知 实体通知:与一个特定的实体关联, "如果一个用户给这张(photo)图片发了评论,那么通知我"就是一个基于实体的通知,因为它与一个特定的photo实体关联,用户可能想为某些图片发出通知,而不是所有图片 通知数据 一个通知通常包含一个通知数据,但有些通知也可能不需要数…
预定义的过滤 ISoftDelete 软删除过滤用来在查询数据库时,自动过滤(从结果中抽取)已删除的实体.如果一个实体可以被软删除,它必须实现ISoftDelete接口,该接口只定义了一个IsDeleted属性,例如: public class Person : Entity, ISoftDelete { public virtual string Name { get; set; } public virtual bool IsDeleted { get; set; } } 不会真实删除数据…
文档: ABP框架 - 领域事件(EventBus) EventBus & Domain Events ABP源码分析二十五:EventBus EventBus(事件总线) EventBus是一个单例对象,被所有类触发事件或处理事件时共享. IEventBusConfiguration在应用启动时加载(by AbpCoreInstaller),依据它的配置决定 是所有IWindsorContainer实例共享同一条事件总线(EventBus.Default),还是每个IWindsorContai…
配置 全局仅一个单例,保存一组配置信息,一般直接在模块的预启动事件中赋值or修改.没有Scope划分,无论租户还是房东亦或者用户读取的值都不会有差异.每个模块都可以扩展这个配置. 设置 它没有层级关系,是扁平结构.SettingProvider 同一项设置可以为应用.每个租户.甚至每个用户设置不同的值. 在客户端(Javascript),我们可以使用abp.settings命名空间来获取设置的当前值(属性isVisibleToClients == true时). 服务器端通过SettingMan…
ABP框架 - 模块系统 ABP框架 - 启动配置 Module System Startup Configuration ABP源码分析三:ABP Module ABP源码分析四:Configuration 基于Abp模块化.插件化的设计,开发人员可以将自定义的功能以模块的形式集成到项目中.通常地,一个程序集作为一个模块.如果你的应用是多个程序集,建议为每个程序集定义一个模块. 模块的加载 模块和插件 插件: 模块及插件的加载路线 1. 扩展的HttpApplication对象(在Abp.We…
本节内容: AJAX操作相关问题 ABP的方式 AJAX 返回信息 处理错误 HTTP 状态码 WrapResult和DontWrapResult特性 Asp.net Mvc 控制器 Asp.net Web Api 控制器 动态Web Api层 Asp.net Core 控制器 动态Web Api层 AJAX操作相关问题 执行一个AJAX调用在现在的应用里非常常见,尤其在SPAs(Single-Page Applications 单页面应用)里,它几乎是唯一与服务器通信的方式.一个AJAX调用由…
文档目录 本节内容: Nuget 包 DbContext 仓储 默认仓储 自定义仓储 特定的仓储基类 自定义仓储示例 仓储最佳实践 ABP可使用任何ORM框架,它已经内置了EntityFrame(以下简称EF),这个文档将解释如何在ABP里使用EF,我们假设你对EF已经有初步的了解. Nuget 包 在ABP里使用EF的Nuget包是Abp.EntityFramework,你应该把它加入到你的应用里,最好在你项目里单独建立一个EF程序集(dll),然后依赖该于这个包. DbContext 如你所…
文档目录 本节内容: 简介 安装 服务端 客户端 连接确立 内置功能 通知 在线客户端 帕斯卡 vs 骆峰式 你的SignalR代码 简介 使用Abp.Web.SignalR nuget包,使基于应用的ABP使用SignalR非常容易,查看SignalR文档了解SignalR的明细信息. 安装 服务端 在你的项目(通常是你的Web层)里安装Abp.Web.SignalRnuget包并在你的模块上添加对它的依赖: [DependsOn(typeof(AbpWebSignalRModule))] p…
文档目录 本节内容: 简介 发送模式 通知类型 通知数据 通知重要性 关于通知持久化 订阅通知 发布通知 用户通知管理器 实时通知 客户端 通知存储 通知定义 简介 通知用来告知用户系统里特定的事件发生了,ABP提供一个发布/订阅,它基于实时通知基础框架. 发送模式 有两种方式可以发送通知给用户: 用户订阅一个特定的通知类型,然后我们发布一个此类型的通知,它会分发给所有订阅的用户,这就是发布/订阅模式. 我们可以直接发送一个通知给目标用户(users). 通知类型 有两种通知类型: 一般通知:任…
文档目录 本节内容: 简介 集成 Hangfire 面板授权 简介 Hangfire是一个综合的后台作业管理器,可以在ABP里集成它替代默认的后台作业管理器,你可以为Hangfire使用相同的后台作业Api,因此你的代码不依赖于Hangfire,但是,如果你喜欢你可以直接使用Hangfire的API. 集成 首先, 安装Abp.HangFirenuget包到你的项目,然后可以为Hangfire安装任何存储,非常通用的是Sql Server存储(查看Hangfire.SqlServer nuget…
文档目录 本节内容: 简介 后台作业 关于作业持久化 创建一个后台作业 在队列里添加一个新作业 默认的后台作业管理器 后台作业存储 配置 禁用作业执行 Hangfire 集成 后台工作者 创建一个后台工作者 注册后台工作者 后台工作者生存方式 使你的应用一直运行 简介 ABP提供了后台作业和工作者,用来在后台线程里执行应用里的某些任务. 后台作业 后台作业用一种队列且持久稳固的方式安排一些待执行后台任务,你可能有几个理由,需要用到后台作业,例如: 为执行长时间运行的任务而用户无需等待,例如:用户…
文档目录 本节内容: AJAX Notification Message UI Block & Busy Event Bus Logging Other Utility Functions ABP提供了一序列的对象和功能,使javascript开发容易且标准. 此处有一个ABP里api的列表,点击标题查看明细和使用方法. AJAX 使用AJAX调用服务端服务并计算返回值,因为ABP服务端代码返回一个标准的响应给AJAX调用,所以建议使用这个方法处理标准的返回值. Notification 显示自…
文档目录 本节内容: 创建菜单 注册导航供应器 显示菜单 每个web应用都有一些菜单用来在页面/屏幕之间导航,ABP提供了一个通用的基础框架创建并显示菜单给用户. 创建菜单 一个应用可能由不同模块组成,每个模块可以有它自己的菜单项,为了定义菜单项,我们需要创建一个继承于NavigationProvider的类. 假设有一个如下所示的主菜单: Tasks Reports Administration User management Role management 这里,Administration…
文档目录 本节内容: 简介 应用语言 本地化源 XML文件 注册XML本地化源 JSOn文件 注册JSON本地化源 资源文件 自定义源 获取一个本地文本 在服务端 在MVc控制器里 在MVC视图里 在Javascript里 格式化参数 默认本地化源 扩展本地化源 获取语言 最佳实践 简介 任何应用至少有一种用户界面语言,很多应用有多种,ABP为一个应用提供了一个灵活的本地化系统. 应用语言 第一件事就是声明支持哪些语言,这在你的模块的PreInitialize方法里完成,如下所示: Config…
文档目录 本节内容: 简介 创建嵌入的文件 暴露嵌入的文件 使用嵌入的文件 简介 一个web应用里,客户端包含javascript,css,xml等文件,这此文件被添加到一个web项目后,发布成独立的文件,有时,我们需要把一些这样的文件打包入一个程序集(一个类库项目,一个Dll文件),并且作为嵌入式资源文件部署在这个程序集里,ABP提供了一个基础架构,方便地处理这件事. 创建嵌入的文件 我们首先要创建一个资源文件并把它标记为嵌入式资源,任何程序集都可以包含嵌入式资源文件,假设我们有一个名为“Ab…
文档目录 本节内容: 简介 启用错误处理 非AJAX请求 显示异常 UserFriendlyException Error 模型 AJAX 请求 异常事件 简介 这个文档针对Asp.net Mvc和Web Api,如果你对Asp.net Core感兴趣,请看Asp.net Core文档. 在一个Web应用里,异常通常在Mvc控制器的Action或Web Api 控制器的Action里被处理,当一个异常姓时,应用的用户会通过某种方式收到错误信息和错误的可能原因. 如果一个错误发生在平常的HTTP请…
文档目录 本节内容: 简介 AbpWebViewPage 基类 简介 ABP通过nuget包Abp.Web.Mvc集成到Mvc视图里,你可以像往常那样创建常规的视图. AbpWebViewPage 基类 ABP也提供了AbpWebViewPage,它定义了一些有用的属性和方法,如果你使用启动模板创建你的应用,那么你所有的视图自动继承自这个基类. AbpWebViewPage定义了L方法用来本地化,IsGranted方法用来授权,IsFeatureEnabled和GetFeatureValue方法…
文档目录 本节内容: 简介 AbpController基类 本地化 其它 过滤 异常处理和结果包装 审计日志 验证 授权 工作单元 反伪造 模型绑定器 简介 ABP通过nuget包Abp.Web.Mvc集成到Asp.net Mvc 控制器.你可以像往常那样创建普通的Mvc控制器,依赖注入可以对普通的Mvc控制器起作用,但你应当使你的控制继承自AbpController,它提供了许多好处和更好的集成到ABP. AbpController基类 这是一个简单的继承自AbpController的控制器:…
文档目录 本节内容: 简介 关于 IAuditingStore 配置 通过特性启用/禁用 注意 简介 维基百科:“一个审计追踪(也叫审计日志)是一个安全相关的时序记录.记录组.和/或记录源和目标,作为任何时候一个特殊操作带来影响的一序列活动的书面文件”. ABP提供一个基础框架来自动记录所有与应用的交互,它能记录有意的方法调用和调用者信息与参数. 基本上,保存的字段有:相关的租户id,调用者id,被调用的服务名(被调用方法的类名),被调用的方法名,执行参数(序列化成Json),执行时间,执行时长…
文档目录 本节内容: 简介 AbpApiController 基类 本地化 其它 过滤 审计日志 授权 防伪造过滤 工作单元 结果包装和异常处理 结果缓存 验证 模块绑定器 简介 通过Abp.Web.Api的nuget包,把ABP集成到Asp.net Web Api 控制器里.你可以像之前做的那样创建平常的Asp.net Web Api控制器,依赖注入会很好地为这些平常的ApiController工作,但你要把你的控制器继承于AbpApiController,它提供了许多好处和更好地与ABP结合…
模块介绍 ABP提供了构建模块并将这些模块组合起来创建应用的基础设施.一个模块可以依赖另一个模块.一般来说,一个程序集可以认为是一个模块.如果应用中有多个程序集,建议为每个程序集创建一个模块定义.模块系统通常关注服务端. 模块定义 一个模块是由一个派生了AbpModule的类定义的.比如说我们在开发一个可以用在不同的应用中的博客模块.最简单的模块定义如下: public class MyBlogApplicationModule : AbpModule { public override voi…
介绍 我们基于不同的需求创建不同的应用,但却在一次又一次地实现相同或相似的结构.至少在某种程度上,授权.验证.异常处理.日志.本地化.数据库连接管理.配置管理.审计日志属于通用的结构. 另外我们总是在构建体系结构和最佳实践,比如分层和模块化架构,领域驱动设计,依赖注入等等,同时也在尝试基于惯例来开发应用.这些都是非常耗时且难于对每个项目独立构建.所以许多公司会构建自己的框架,他们用这些框架更快速.更少BUG地开发新应用.但是并不是所有公司都这么幸运,他们大部分都没有时间.预算.团队来开发这类框架…
这个放着,说不定以后作一些更深入的查询时,用得着的. http://www.rapospectre.com/blog/7/ 今天刚刚答完辩体完检就跑来更新博客了!!! 先补上第一篇: 一般情况下,我们在写Django项目需要操作QuerySet时一些常用的方法已经满足我们日常大多数需求,比如get.filter.exclude.delete神马的感觉就已经无所不能了,但随着项目但业务逻辑越来越复杂,这几个方法可能就不能很好但满足我们了,所以这时候,最好的办法是神马??对,读文档!这里的读文档不是…
文档目录 本节内容: 简介 安装 创建工作 调度工作 更多 简介 Quartz 是一个功能完整的开源工作调度系统,可用于最小的应用到一个大型的企业系统.Abp.Quartz 包简单地把Quartz集成到ABP中. ABP已经内置后持久化的台作业和工作者,如果你有更高的调度上的需求,Quzrtz是一个好的选择,同样Hangfire 也是一个好的关于持久化后台工作的队列的选择. 安装 把Abp.Quartz nuget包安装到你的项目里,然后在你的模块上为AbpQuartzModule添加一个Dep…
文档目录 本节内容: 简介 IObjectMapper 接口 集成 AutoMapper 安装 创建映射 自动映射的特性 自定义映射 扩展方法 MapTo 单元测试 预定义的映射 LocalizableString -> string 注入 IMapper 简介 把一个对象映射到另一个相似的对象很常见,两个对象(类)具有相似或相同的属性,它们之间要互相映射,其实这项工作重复且无聊,考虑一个典型的应用服务方法,如下: public class UserAppService : Applicatio…
Swagger可以自动生成Api说明文档,并内置在线测试,通过NSwagStudio还可以自动生成Api客户端调用代码,以下为具体实现步骤 1.写一个简单的WebApi并加上注释 public class ValuesController : ApiController { /// <summary> /// 这是一个Post测试 /// </summary> /// <param name="para"></param> /// <…
ABP框架 概览 介绍 多层结构 模块系统 启动配置 多租户 集成OWIN 共同结构 依赖注入 会话 缓存 日志 设置管理 时间 领域层 实体 值对象(新) 仓储 领域服务 工作单元 领域事件(EventBus) 数据过滤 应用层 应用服务 数据传输对象 验证数据传输对象 授权 功能管理 审计日志 分布服务层 Asp.net Web Api Web Api 控制器 动态 Web Api 层 OData 集成 Swagger UI 集成 展现层 Asp.net Mvc Mvc 控制器 Mvc 视图…
本节内容: 显示信息 确认 Message API给用户显示一个信息,或从用户那里获取一个确认信息. Message API默认使用sweetalert实现,为使sweetalert正常工作,你应该包含它的css和javascript文件,然后把abp.sweet-alert.js适配器包含到你的页面里. 显示信息 例如: abp.message.info('some info message', 'some optional title'); abp.message.success('some…