abp

ABP(现代ASP.NET样板开发框架)系列之14、ABP领域层——领域事件(Domain events)

大兔子大兔子 提交于 2019-12-26 04:45:25
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之14、ABP领域层——领域事件(Domain events) ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称。 ABP的官方网站 : http://www.aspnetboilerplate.com ABP在Github上的开源项目 : https://github.com/aspnetboilerplate 在C#中,一个类可以定义其专属的事件并且其它类可以注册该事件并监听,当事件被触发时可以获得事件通知。这对于对于桌面应用程序或独立的Windows Service来说非常有用。但是, 对于Web应用程序来说会有点问题,因为对象是根据请求(request)被创建并且它们的生命周期都很短暂。我们很难注册其它类别的事件。同样地,直接注册其它类别的事件也造成了类之间的耦合性。 在应用系统中,领域事件被用于解耦并且重用(re-use)商业逻辑。 事件总线 事件总线为一个单体(singleton)的对象,它由所有其它类所共享,可通过它触发和处理事件。要使用这个事件总线,你需要引用它。你可以用两种方式来实现: 获取默认实例( Getting the default instance) 你可以直接使用EventBus.Default

ABP教程(一)- ABP介绍

我怕爱的太早我们不能终老 提交于 2019-12-26 04:41:48
ABP是什么 ABP是”ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称。 ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WEB应用程序的新起点,它旨在成为一个通用的WEB应用程序框架和项目模板。 ABP的官方网站 : http://www.aspnetboilerplate.com ABP在Github上的开源项目 : https://github.com/aspnetboilerplate ABP 的由来 “DRY——避免重复代码”是一个优秀的开发者在开发软件时所具备的最重要的思想之一。我们在开发企业WEB应用程序时都有一些类似的需求,例如:都需要登录页面、用户/角色管理、权限验证、数据有效性验证、多语言/本地化等等。一个高品质的大型软件都会运用一些最佳实践,例如分层体系结构、领域驱动设计、依赖注入等。我们也可能会采用ORM、数据库迁移(Database Migrations)、日志记录(Logging)等工具。 从零开始创建一个企业应用程序是一件繁琐的事,因为需要重复做很多常见的基础工作。许多公司都在开发自己的应用程序框架来重用于不同的项目,然后在框架的基础上开发一些新的功能。但并不是每个公司都有这样的实力。假如我们可以分享的更多,也许可以避免每个公司或每个项目的重复编写类似的代码。作者之所以把项目命名为

ABP学习入门系列(一)(第一个ABP项目)

孤街浪徒 提交于 2019-12-26 04:38:30
ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称。 ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WEB应用程序的新起点,它旨在成为一个通用的WEB应用程序框架和项目模板。 框架 ABP是基于最新的ASP.NET CORE,ASP.NET MVC和Web API技术的应用程序框架。并使用流行的框架和库,它提供了便于使用的授权,依赖注入,验证,异常处理,本地化,日志记录,缓存等常用功能。 架构 ABP实现了多层架构(领域层,应用层,基础设施层和表示层),以及领域驱动设计(实体,存储库,领域服务,应用程序服务,DTO等)。还实现和提供了良好的基础设施来实现最佳实践,如依赖注入。 1,下面就根据官网https://aspnetboilerplate.com/下载 点击Templates 2,点击创建之后会自动下载 3,下载完之后,解压-打开解决方案-还原nuget包-关闭解决方案在重新打开-在程序包管理控制台update-database 注意。 设置web为启动项 Web.config,修改连接字符串。(因为我本地装的sqlserver是实例是.sqlexpress,所以需要手动修改server。) 程序包管理器控制台,选择以EntityFramework结尾的项目,并执行 Update-Database

asp.net abp模块化开发之通用树2:设计思路及源码解析

断了今生、忘了曾经 提交于 2019-12-25 22:09:29
一、前言 上一篇大概说了下abp通用树形模块如何使用,本篇主要分析下设计思路。 日常开发中会用到很多树状结构的数据,比如:产品的多级分类、省市区县,大多数系统也会用到类似“通用字典/数据字典”的功能,为系统各个地方提下拉框选择的数据源。abp提供了一个模块化系统,只要按它的约定就可以实现一个通用的树形数据的模块,这样公司的多个系统都可以使用,也可以用类似nuget的方式提供给别人使用。 先列举下它的功能 通过nuget方便安装和升级 配置简单 默认已经提供“通用字典”功能 实体、管理器、应用服务都是抽象类,结合泛型 狠容易扩展实现自己的树形结构 二、必备知识 这不是abp入门级的文章,是探讨系统模块化开发的一种思路。所以要求对abp有经验,完整看过abp文档,对涉及到的模块、依赖注入、启动配置、权限、菜单、本地化等等概念有清晰的认识 三、包和源码 源码地址: https://github.com/bxjg1987/abpGeneralModules nuget:Install-Package BXJG.GeneralTree -Version 1.0.2 在线地址: http://test.cqsifang.com/ 账号密码:admin zlj.com (别胡来,拜托...) 源码仓库中还有通用的文件模块、附件模块,后期会讲讲;nuget搜索bxjg可以找到这几个相关的包 四

ABP理论学习之MVC控制器(新增)

China☆狼群 提交于 2019-12-25 06:51:40
返回总目录 本篇目录 介绍 AbpController基类 本地化 异常处理 响应结果的包装 审计日志 授权 工作单元 其他 介绍 ABP通过Abp.Web.Mvc nuget包集成了 ASP.NET MVC控制器 。你可以像常规那样创建MVC控制器。依赖注入对于常规的MVC控制器可以正确地工作。 但是,你应该让你的控制器继承于 AbpController ,该基类控制器提供了很多有用的东西,而且更好地集成到了ABP中。 AbpController基类 下面是一个派生自AbpController的简单控制器: public class HomeController : AbpController { public ActionResult Index() { return View(); } } 本地化 AbpController中定义了 L 方法使得本地化更加简单。例子: public class HomeController : AbpController { public HomeController() { LocalizationSourceName = "MySourceName"; } public ActionResult Index() { var helloWorldText = L("HelloWorld"); return View(); } }

ABP理论学习之缓存Caching

♀尐吖头ヾ 提交于 2019-12-24 21:49:14
返回总目录 本篇目录 介绍 ICacheManager ICache ITypedCache 配置 介绍 ABP提供了缓存的抽象,它内部使用了这个缓存抽象。虽然默认的实现使用了MemoryCache,但是也可以为其他的缓存提供者进行实现和改变。 ICacheManager 缓存的主要接口是 ICacheManager 。我们可以注入该接口,然后使用该接口获得一个缓存对象。例如: public class TestAppService : ApplicationService { private readonly ICacheManager _cacheManager; public TestAppService(ICacheManager cacheManager) { _cacheManager = cacheManager; } public Item GetItem(int id) { //从缓存中获取 return _cacheManager .GetCache("MyCache") .Get(id.ToString(), () => GetFromDatabase(id)) as Item; } public Item GetFromDatabase(int id) { //... 从数据库中检索 } } 在这个例子中,我们注入了 ICacheManager

ABP理论学习之模块系统

核能气质少年 提交于 2019-12-24 21:27:31
返回总目录 本篇目录 模块介绍 生命周期事件 模块依赖 自定义模块方法 模块介绍 ABP提供了构建模块并将这些模块组合起来创建应用的基础设施。一个模块可以依赖另一个模块。一般来说,一个程序集可以认为是一个模块。一个模块是由一个派生了 AbpModule 的类定义的。比如说我们在开发一个可以用在不同的应用中的博客模块。最简单的模块定义如下: public class MyBlogApplicationModule : AbpModule { public override void Initialize() { IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly()); } } ABP扫描所有的程序集,并找出所有的派生自AbpModule基类的类。如果你创建了不止一个程序集的应用,那么建议为每个程序集创建一个模块定义。 生命周期事件 ABP在应用启动和关闭的时候会调用一些特定的模块方法。你可以重写这些方法来执行特定的任务。 ABP 按照依赖的顺序 调用这些方法。如果模块A依赖于模块B,那么模块B在模块A之前初始化。方法执行的正确顺序是: PreInitialize-B, PreInitialize-A, Initialize-B, Initialize-A, PostInitialize-B

ABP框架理论研究总结(典藏版)

為{幸葍}努か 提交于 2019-12-24 11:51:14
目前,我已经完成了Module-Zero的翻译,请查看我的 《Module-Zero学习目录》 。 到现在为止,使用ABP框架开发正式项目已经3个月有余了,期间翻阅了大量文档资料,包括ABP官网的文档,以及 @阳光铭睿 的系列教程。 但是我今天想回过头来,照着ABP官网的英文文档,加上我这几个月使用ABP做项目的经验或心得,凭借着自己过了英语六级的英文水平,以及本身对技术和英文同样热爱的难得,决定对ABP官网的文档翻译一下,我会在用词和翻译上力求大家都能理解。之前也看了 @阳光铭睿 的系列教程,翻译的是不错,可是这个系列教程是由多个园友共同努力的结果,导致翻译风格也有不同,或许翻译者的翻译水平不一致导致的吧。但是这些园友的努力还是值得肯定的,毕竟,那些教程也可以入门了。 但是,这次的翻译工作全部是我一个人完成,有这么几个原因: 出于自己热爱技术和英语,想锻炼一下自己; 想通过几个月的实战心得来结合实践进行翻译; 自己再次复习一下ABP的基础知识,也希望能有更多的人关注这个优秀的框架; 具有一致的翻译风格,更人性化的翻译,结合Markdown语言的博客格式,提升阅读体验。 一些必须熟记的词汇还是会标出英文,一些不用翻译便知道是什么的保留原状,比如Session,Cookie,Logging等。 最后要说的是,如果您发现哪里有错别字影响阅读,或者您有更好的翻译,欢迎批评指正

abp(net core)+easyui+efcore实现仓储管理系统——多语言(十)

给你一囗甜甜゛ 提交于 2019-12-18 18:41:27
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+easyui+efcore实现仓储管理系统——解决方案介绍(二) abp(net core)+easyui+efcore实现仓储管理系统——领域层创建实体(三) abp(net core)+easyui+efcore实现仓储管理系统——定义仓储并实现 (四) abp(net core)+easyui+efcore实现仓储管理系统——创建应用服务(五) abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之控制器(六) abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之列表视图(七) abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之增删改视图(八) abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之菜单与测试(九) 上接( abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之菜单与测试(九) ), 在这一篇文章中我们介绍一下ABP的多语言

ABP 基础设施层——集成 Entity Framework

≡放荡痞女 提交于 2019-12-16 17:01:03
本文翻译自ABP的官方教程《EntityFramework Integration》,地址为: http://aspnetboilerplate.com/Pages/Documents/EntityFramework-Integration ABP 可以与任何 ORM 框架协同工作,它内置了对 EntityFramework 的集成支持。本文将介绍如何在 ABP 中使用 EntityFramework。本文假定你已经初步掌握了EntityFramework。 译者注:怎么才算初步掌握了 EntityFramework 呢?译者认为应当懂得使用 Code First 模式进行CRUD。 1 Nuget 包 要在 ABP 中使用 EntityFramework 作为 ORM 框架的话,需要到 Nuget 上下载一个名为 Abp.EntityFramework 的包。比较好的做法是:新建一个独立的程序集 (dll),然后在这个程序集中调用这个包和 EntityFramework。 2 创建 DbContext(Creating DbContext) 要使用 EntityFramework,首先需要定义一个 DbContext 类。下面是一个DbContex 类的示例: public class SimpleTaskSystemDbContext : AbpDbContext {