【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项目模板快速生成了应用程序,主要有租户管理、用户管理、角色管理等功能模块。

 

 

目录
相关文章
|
6月前
|
Dubbo Java 应用服务中间件
Apache ShenYu 架构学习指南
Apache ShenYu 是一款高性能、插件化的微服务API网关,基于Spring WebFlux + Reactor 构建,支持多协议、动态配置与实时数据同步。本指南以通俗类比和实战路径,带你深入理解其架构设计、核心流程与源码实现,助力快速掌握并参与贡献。
1007 13
|
6月前
|
负载均衡 Java API
grpc-java 架构学习指南
本指南系统解析 grpc-java 架构,涵盖分层设计、核心流程与源码结构,结合实战路径与调试技巧,助你从入门到精通,掌握高性能 RPC 开发精髓。
608 8
|
6月前
|
机器学习/深度学习 人工智能 搜索推荐
拔俗AI学伴智能体系统:基于大模型与智能体架构的下一代个性化学习引擎
AI学伴智能体系统融合大模型、多模态理解与自主决策,打造具备思考能力的个性化学习伙伴。通过动态推理、长期记忆、任务规划与教学逻辑优化,实现千人千面的自适应教育,助力因材施教落地,推动教育公平与效率双提升。(238字)
812 0
|
6月前
|
Kubernetes Go 调度
Kubeflow-Trainer-架构学习指南
本指南系统解析Kubeflow Trainer架构,涵盖核心设计、目录结构与代码逻辑,结合学习路径与实战建议,助你掌握这一Kubernetes原生机器学习训练平台的原理与应用。
782 139
|
6月前
|
分布式计算 Kubernetes 调度
Kubeflow-Spark-Operator-架构学习指南
本指南系统解析 Spark Operator 架构,涵盖 Kubebuilder 开发、控制器设计与云原生集成。通过四阶段学习路径,助你从部署到贡献,掌握 Kubernetes Operator 核心原理与实战技能。
345 0
|
6月前
|
Kubernetes API 开发工具
Kubeflow-Pipelines-架构学习指南
本指南带你深入 Kubeflow Pipelines 架构,从零掌握 ML 工作流编排。涵盖核心组件、代码结构、开发调试及贡献流程,结合实战练习与学习路径,助你由使用者进阶为贡献者。
1057 139
|
6月前
|
Kubernetes Go API
Kubeflow-Model-Registry-架构学习指南
Kubeflow Model Registry 是一个用于管理机器学习模型元数据的基础设施,采用 Go、Python、React 和 Kubernetes 技术栈,支持模型版本、注册与存储追踪。本指南系统解析其分层架构、核心流程与代码结构,提供从环境搭建到贡献代码的完整学习路径,助力开发者深入掌握模型管理实践。
376 0
|
6月前
|
Kubernetes Cloud Native Go
Kubeflow-KServe-架构学习指南
KServe是基于Kubernetes的生产级AI推理平台,支持多框架模型部署与管理。本指南从架构解析、代码结构到实战部署,系统讲解其核心组件如InferenceService、控制器模式及与Knative、Istio集成原理,并提供学习路径与贡献指南,助你快速掌握云原生AI服务技术。
951 139
下一篇
开通oss服务