【ABP框架系列学习】N层架构(3)

简介: 原文:【ABP框架系列学习】N层架构(3)目录 0.引言 1.DDD分层 2.ABP应用构架模型 客户端应用程序(Client Applications) 表现层(Presentation Layer) 分布式服务层(Distributed Service Layer) 应用层(Application Layer) 领域层 基础设施层 3.使用ABP项目模版快速生成应用程序 0.引言 应用程序的分层是一种广泛接受的技术, 可以降低复杂度和提高代码的可重用性。
原文: 【ABP框架系列学习】N层架构(3)

目录

0.引言

1.DDD分层

2.ABP应用构架模型

客户端应用程序(Client Applications)

表现层(Presentation Layer)

分布式服务层(Distributed Service Layer)

应用层(Application Layer)

领域层

基础设施层

3.使用ABP项目模版快速生成应用程序


0.引言

应用程序的分层是一种广泛接受的技术, 可以降低复杂度和提高代码的可重用性。为了实现分层架构,ABP遵循领域驱动设计(DDD)原则。

1.DDD分层

领域驱动设计有四个基本的层:

  • 表现层(Presentaiton Layer):为用户提供接口。使用应用层实现与用户交互。
  • 应用层(Application Layer):表现层和领域层的中间者。协调业务对象以执行特定的应用程序任务。
  • 领域层(Domain Layer):包含业务对象和规则,是整个应用程序的核心。
  • 基础设施层:提供支持上层通用的技术能力,大部分是借助于第三方库

2.ABP应用构架模型

除了DDD,现代的应用程序架构还包括逻辑和物理层等。如下图是ABP建议并实施的模型,它不仅通过提供基类和服务来快速实现这个模型,而且还提供了启动模板直接开始这个模型。

客户端应用程序(Client Applications)

远程客户端通过HTTP APIs(API Controllers,OData Controllers,GraphQL终端)等将应用程序作为服务。远程客户端可以是SPA、移动APP、或第三方消费者等。该应用程序主要包括本地化和导航功能。

表现层(Presentation Layer)

ASP.NET [Core] MVC可以认为是表现层。它可以是物理层(通过HTTP APIs使用应用程序)或是逻辑层(直接注入和使用应用服务)。无论是哪一种情况,一般包括本地化(Location)、导航(Navigation)、对象映射(Object Mapping)、缓存(Caching)、配置管理(Configuration Manager)、审计日志(Audit Logging)等等。还包括授权(Authorization)、会话(Session)、功能(Features,对于多租户应用程序)以及异常处理(Exception Handling)。

分布式服务层(Distributed Service Layer)

该层主要通过远程APIs(如REST、OData、GraphQL等)服务于应用服务/领域功能。该层只是将HTTP请求转换为领域交互,或可使用应用服务来委托操作,而并不包含业务逻辑。通常包括授权(Authorization)、缓存(Caching)、审计日志(Audit Logging)、对象映射(Object Mapping)、异常处理(Exception Handling)、会话(Session)等。

应用层(Application Layer)

应用层主要包括使用领域层和领域对象(领域服务、实体...)来执行应用程序功能请求的应用服务。应用层使用DTO(数据传输对象)从表现层或分布式服务层获取或返回数据。包括授权(Authorization)、缓存(Caching)、审计日志(Audit Logging)、对象映射(Object Mapping)、会话(Session)等。

领域层

这是实现领域逻辑主要的层,包括执行业务/领域逻辑的实体(Entities)、值对象(Value Objects)、和领域服务(Domain Services)。它还包括规约(Specifications)和触发领域事件(trigger Domain Events),并定义了用于从数据源(通常是DBMS)读取和持久化实体的仓储接口(Repository Interfaces)。

基础设施层

基础设施层用于辅助其它层:包括实现仓储接口(Repository Interfaces,如EF Core)实际操作数据库。还可能包括与供应商(vendor)的集成,以便发送电子邮件等。基础设施层是最下、也是不严格的一层,实际上是通过实现它们的抽象概念来支持其他层。

3.使用ABP项目模版快速生成应用程序

1.打开网址【Startup Templates】

2.依次选择ASP.NET Core 2.x  >>  .NET CORE(Cross Plateform)   >>   Multi Page Web Application,输入项目名称:XXX.FirstABP、验证码,点击创建项目按钮。

​3.跳转自动下载源代码。

4.解压并用Visual Studio 2017打开,启动程序后VS会自动还原项目所需要的包,wait for a minute......使用ABP项目模版生成的解决方案如下:

5.设置【XXX.FirstABP.Web.MVC】为启动项目,打开appsetting.json文件修改连接字符串,如下:

6.打开【程序包管理控制台】,默认项目选择【XXX.FirstABP.EntityFrameworkCore】,在命令行依次输入:Add-Migration "FirstABP"、Update-Database,wait for a minute...

7.执行步骤6的操作后,默认生成了ABP的数据。

8.回到Visual Studio 2017,按F5运行程序...有惊喜哟,登录界面出现了,输入admin/123qwe,点击登录。

9.如图,进入主界面。至此,利用ABP项目模板快速生成了应用程序,主要有租户管理、用户管理、角色管理等功能模块。

 

 

目录
相关文章
|
2天前
|
存储 Java Maven
从零到微服务专家:用Micronaut框架轻松构建未来架构
【9月更文挑战第5天】在现代软件开发中,微服务架构因提升应用的可伸缩性和灵活性而广受欢迎。Micronaut 是一个轻量级的 Java 框架,适合构建微服务。本文介绍如何从零开始使用 Micronaut 搭建微服务架构,包括设置开发环境、创建 Maven 项目并添加 Micronaut 依赖,编写主类启动应用,以及添加控制器处理 HTTP 请求。通过示例代码展示如何实现简单的 “Hello, World!” 功能,并介绍如何通过添加更多依赖来扩展应用功能,如数据访问、验证和安全性等。Micronaut 的强大和灵活性使你能够快速构建复杂的微服务系统。
18 5
|
2天前
|
缓存 Java 应用服务中间件
随着微服务架构的兴起,Spring Boot凭借其快速开发和易部署的特点,成为构建RESTful API的首选框架
【9月更文挑战第6天】随着微服务架构的兴起,Spring Boot凭借其快速开发和易部署的特点,成为构建RESTful API的首选框架。Nginx作为高性能的HTTP反向代理服务器,常用于前端负载均衡,提升应用的可用性和响应速度。本文详细介绍如何通过合理配置实现Spring Boot与Nginx的高效协同工作,包括负载均衡策略、静态资源缓存、数据压缩传输及Spring Boot内部优化(如线程池配置、缓存策略等)。通过这些方法,开发者可以显著提升系统的整体性能,打造高性能、高可用的Web应用。
11 2
|
5天前
|
设计模式 开发框架 前端开发
在开发框架中实现事件驱动架构
【9月更文挑战第2天】事件驱动架构(EDA)通过事件机制让组件间解耦交互,适用于动态扩展和高响应性的系统。本文提供一个基于Beego框架实现事件驱动的示例,通过事件管理器注册和触发事件,实现用户注册和登录时的不同处理逻辑,展示了其在Web应用中的灵活性和高效性。
29 5
|
10天前
|
XML 开发框架 .NET
.NET框架:软件开发领域的瑞士军刀,如何让初学者变身代码艺术家——从基础架构到独特优势,一篇不可错过的深度解读。
【8月更文挑战第28天】.NET框架是由微软推出的统一开发平台,支持多种编程语言,简化应用程序的开发与部署。其核心组件包括公共语言运行库(CLR)和类库(FCL)。CLR负责内存管理、线程管理和异常处理等任务,确保代码稳定运行;FCL则提供了丰富的类和接口,涵盖网络、数据访问、安全性等多个领域,提高开发效率。此外,.NET框架还支持跨语言互操作,允许开发者使用C#、VB.NET等语言编写代码并无缝集成。这一框架凭借其强大的功能和广泛的社区支持,已成为软件开发领域的重要工具,适合初学者深入学习以奠定职业生涯基础。
67 1
|
6天前
x86体系架构学习
x86体系架构学习
|
7天前
|
消息中间件 Kafka Java
Spring 框架与 Kafka 联姻,竟引发软件世界的革命风暴!事件驱动架构震撼登场!
【8月更文挑战第31天】《Spring 框架与 Kafka 集成:实现事件驱动架构》介绍如何利用 Spring 框架的强大功能与 Kafka 分布式流平台结合,构建灵活且可扩展的事件驱动系统。通过添加 Spring Kafka 依赖并配置 Kafka 连接信息,可以轻松实现消息的生产和消费。文中详细展示了如何设置 `KafkaTemplate`、`ProducerFactory` 和 `ConsumerFactory`,并通过示例代码说明了生产者发送消息及消费者接收消息的具体实现。这一组合为构建高效可靠的分布式应用程序提供了有力支持。
30 0
|
15天前
|
资源调度 分布式计算 监控
【揭秘Hadoop YARN背后的奥秘!】从零开始,带你深入了解YARN资源管理框架的核心架构与实战应用!
【8月更文挑战第24天】Hadoop YARN(Yet Another Resource Negotiator)是Hadoop生态系统中的资源管理器,为Hadoop集群上的应用提供统一的资源管理和调度框架。YARN通过ResourceManager、NodeManager和ApplicationMaster三大核心组件实现高效集群资源利用及多框架支持。本文剖析YARN架构及组件工作原理,并通过示例代码展示如何运行简单的MapReduce任务,帮助读者深入了解YARN机制及其在大数据处理中的应用价值。
31 0
|
1月前
|
监控 架构师 项目管理
项目管理架构师的角色与职责:构建高效项目交付框架
【8月更文第7天】在当今快速变化的商业环境中,组织需要灵活高效的项目交付机制来应对不断出现的新挑战。项目管理架构师(Project Management Architect, PMA)作为一种新兴的角色,在确保项目成功交付方面扮演着至关重要的角色。本文将探讨PMA的核心职责,以及他们如何通过设计和实施项目管理流程来提高项目的可扩展性和适应性,并通过有效的项目治理来提升团队的整体表现。
64 0
|
10天前
|
Kubernetes Cloud Native Docker
云原生之旅:从容器到微服务的架构演变
【8月更文挑战第29天】在数字化时代的浪潮下,云原生技术以其灵活性、可扩展性和弹性管理成为企业数字化转型的关键。本文将通过浅显易懂的语言和生动的比喻,带领读者了解云原生的基本概念,探索容器化技术的奥秘,并深入微服务架构的世界。我们将一起见证代码如何转化为现实中的服务,实现快速迭代和高效部署。无论你是初学者还是有经验的开发者,这篇文章都会为你打开一扇通往云原生世界的大门。
|
10天前
|
消息中间件 Java 网络架构
AMQP与微服务架构的集成策略
【8月更文第28天】在微服务架构中,各个服务通常通过HTTP/REST、gRPC等协议进行交互。虽然这些方法在很多场景下工作得很好,但在需要高并发、低延迟或需要处理大量消息的情况下,传统的同步调用方式可能无法满足需求。此时,AMQP作为异步通信的一种标准协议,可以提供一种更为灵活和高效的消息传递机制。
18 1

热门文章

最新文章

下一篇
DDNS