ABP框架 – 多重叠协会

文档目录

 

本节情:

简介

ABP结构

多层

其它层(通用)

其它

总结

简介

一个使的代码库的分是一个广为接受之技能,用来减复杂度和进步代码复用性。ABP按照DDD理念来分,在DDD里生4单核心的交汇:

  • 代表层:为用户提供一个界面。使用下层来就用户交互。
  • 应用层:表示层及天地层的媒人。协调服务业对象进行指定的运用任务。
  • 世界层:包含业务对象以及事情规则。是成套应用之着力。
  • 基本功层:提供援助更高层的通用技术。一个基础层的典型例证是通过ORM框架实现和数据库的互的仓储,或是实现殡葬邮件的邮件供应器。

也堪遵照需要加加层,例如:

  • 布服务层:为远程客户端公开应用特性。像Asp.net web API和WCF等。

这些依然为世界也骨干之架构的通用层。实现上也许稍一线之出入。

 

ABP架构

臃肿及布局的概览如下:

Layers

Presentation

View
Models (Javascript), Views
(HTML/CSS), LocalizationNavigationNotifications

Web

Web
API
Controllers
MVC
Controllers
ODataASP.NET
Core

Application

Application
Services
DTOsDTO
Mappers
, AuthorizationSessionAudit
Logging

Domain (Core)

Entities,
Value Objects, RepositoriesDomain
Services
Unit
of
Work
Domain
Events

Infrastructure

ORM
(EntityFrameworkNHibernate), DB
Migrations, Background
Jobs

Others (common)

生图也一个富含5只项目之简要分层应用:

图片 1

一个叠可以兑现成为一个或多独程序集。在大型项目里或为老三正值依创立多单程序集还恰当(像这里的EntityFramework),使每个层都发出其自己的Context。

 

领域(Core)层

天地层必须兑现有业务规则。

实体:展示数据以及天地工作的操作。常常地她映射到数量库表。

储存:类似于对象集合,用来收获和持久化实体到数据源(数据库)。领域层定义了仓储,但未落实它,由基础层来促成其。

世界事件:定义领域里一定的波,并触及和处理它们。领域服务使实体(及其它领域对象)实现那一个无属有单独实体的事情规则。

办事单元:是一个管制数据库连接和事情的设计情势,跟踪实体变化并保存变化及多少存储。领域层定义了它,但由于基础层实现其。

当即同重叠应该尽可能地单独于第三在类库。

 

应用层

应用层包含用于映现层的应用服务。一个应用服务方法可收一个DTO(数据传对象)作为输入,使用是输入执行有天地层的操作,并于需要常回来外一个DTO。它不应当接受或重临实体。一个应用服务方法为看是一个办事单元。用户输入验证也是于这等同交汇实现。指出拔取类似于AutoMapper库等工具来映射实体和DTO。这层还噙当前用户新闻的对话(Session)。

 

基础层

当世界层定义仓储、工作单元、和其余服务接口后,基础层实现那个商品。用ORM工具(如NHibernate或EntityFramework)实现仓储。ABP已经及时这二种植ORM框架提供基类。基础层从旁层抽象出对第三方库的倚重性。在这层里吗可以使用数据迁移。

除外数访问,我们兴许要呢服务供应商举办抽象,例如,我说不定拔取服务供应商提供的服务发送短讯,大家得以以领域层或者应用层定义一个接口来抽象它,然后我们于当下层里实现它。

 

Web & 展示层

Web层用Asp.net、Web API和Asp.net
Core实现。两栽艺术还可每当单页面应用(SPA)或多页面使用(MPA)中贯彻,启动模板也都协助就片栽艺术。

当一个SPA里具有资源只加载同涂鸦(或先期加载主题资源然后以暴发得常延迟加载另外资源)给客户端(浏览器),后续之及服务器的竞相使用AJAX调用,从服务端获取数据后,Html代码在客户端创立。整个页面不再刷新,视图只是以需要时移出换入。现在来无数Javascript
SPA框架,例如Angularjs,Backbonejs和Emberjs。ABP可以使其它一样种植,但下示例和有扶持机制可能用Angular更便于。

以一个MPA里,客户端发送一个请求到服务端,服务端代码(平时是Asp.net
MVC控制器)从数据库获取数据,并Razor渲染视图创立HTML。创制之后的页面被发送回客户端显示。每个新页面会刷新整个页面。可是客户端也得由此额外的AJAX请求来优化体验。

SPA和MPA涉及到了两样之布局。一个管制面板的无所不包选取是SPA,此外方面,一个博客最好选MPA,因为她还有利于让搜引擎发现。虽然如此,SPA也得以因此工具使得让寻找引擎发现。当然那多少个都只是一般做法。

SignalR是一个打服务端推送通知于客户端的健全工具。它能让用户带来充分、实时的体验。

当即于客户端有无数Javascript类和框架。Jquery是无限盛并具有成千的免费插件。当然还有多家伙/框架让它与HTML和CSS更好地合作。例如,推特的Bootstrap就是一个非常流行的HTML/CSS框架。

ABP提供基础服务,从你的应用服务自动创造一个Web
API层,Javascript可以生容易地使用她。其余,它提供基础服务来治本拔取菜单、本地化和语言切换。同时寓一个简约可合的Javascript
 API来简化系统音信以及通告的示。

ABP在服务端自动处理好并回到一个对应的响应给客户端。

 

其它

ABP使用Castle
温莎(Windsor)框架补助因注入。同时利用Log4Net为客户端记录日志,不过,可以挺有益地切换日志类库,只是拔取Castle的肤浅日志基础,而非欲转移代码。

 

总结

ABP协调有最为好之框架/类库与它自己的近乎以及网来提供一个再一次好之功底服务,方便使用多交汇构造成立一个Web应用。同时提供的模板更易于地啊您的用提供多交汇解决方案。

相关文章