ABP开发手记3 - 解决方案

点这里进入ABP开发手记目录

创建项目

点这里进入ABP启动模板

如图操作,我们先生成一个基于.NET Core的MPA(多页面应用).点击"Create my project!"即可创建项目.

解读项目

展示层 (JD.CRS.Web.Mvc)

提供一个用户界面,实现用户交互操作。

ASP.NET Core MVC(模型-视图-控制器)可以视为展示层。它可以是物理层(通过HTTP API使用应用程序)或逻辑层(直接注入和使用应用程序服务)。无论哪种情况,它都可以包括 本地化,导航,对象映射, 缓存,配置管理,审计日志等。它还处理 授权,会话, 功能(用于 多租户应用程序)和异常处理。

分布式服务层(JD.CRS.Web.Host)

用于公开应用程序接口供远程客户端调用。比如通过ASP.NET Web API和WCF来实现。

该层用于通过REST,OData,GraphQL等远程API来提供应用程序/域功能...它们不包含业务逻辑,而仅将HTTP请求转换为域交互,或者可以使用应用程序服务来委托操作。该层通常包括授权,缓存, 审核日志记录,对象映射,异常处理,会话等。

应用层 (JD.CRS.Application)

进行展现层与领域层之间的协调,协调业务对象来执行特定的应用程序的任务。它不包含业务逻辑。

应用层主要包括应用服务的使用领域层和领域对象(领域服务, 实体 ...)来执行请求的应用程序的功能。它使用数据传输对象从表示层或分布式服务层获取数据并将数据返回到表示层或分布式服务层。它还可以处理 授权,缓存,审核日志记录,对象映射,会话等。

领域层 (JD.CRS.Core)

包括业务对象和业务规则,这是应用程序的核心层。

这是实现我们的领域逻辑的主要层。它包括 实体,值对象和领域服务以执行业务/领域逻辑。它还可以包括规范和触发领域事件。它定义了存储库接口以从数据源(通常是DBMS)读取和保留实体。

基础设施层 (JD.CRS.EntityFrameworkCore)

提供通用技术来支持更高的层。例如基础设施层的仓储(Repository)可通过ORM来实现数据库交互。

基础设施层使其他层起作用:它实现存储库接口(例如,使用Entity Framework Core)以实际使用实际数据库。它还可能包括与供应商的集成,以发送电子邮件等。这不是所有层下的严格层,但实际上通过实现抽象层来支持其他层。

补充说明

JD.CRS.Migrator 提供数据库迁移操作。

JD.CRS.Web.Core 封装Web层核心功能。

原文地址:https://www.cnblogs.com/IT-Evan/p/ABP3.html

时间: 2024-08-28 15:51:40

ABP开发手记3 - 解决方案的相关文章

ABP开发手记4 - 初始化运行

点这里进入ABP开发手记目录 编译解决方案 重新生成解决方案,确保生成成功. 连接数据库 打开JD.CRS.Web.Host / appsettings.json,修改数据库连接设置ConnectionStrings. 打开JD.CRS.Web.Host / appsettings.json,做同样修改. 迁移数据库 方法一 设置JD.CRS.Web.Mvc为启始项目 打开工具 / NuGet包管理器 / 程序包管理器控制台 默认项目选择JD.CRS.EntityFrameworkCore 依次

ABP开发手记1 - 开篇

点这里进入ABP开发手记目录 基于DDD的现代ASP.NET开发框架 - ABP ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WEB应用程序的新起点,它旨在成为一个通用的WEB应用程序框架和项目模板. ABP的官方网站:http://www.aspnetboilerplate.com ABP在Github上的开源项目:https://github.com/aspne

ABP开发手记2 - 体系架构

点这里进入ABP开发手记目录 ABP分层体系架构 介绍 应用程序代码库的分层是一种广泛接受的技术,可帮助降低复杂性并提高代码可重用性.为了实现分层体系结构,ASP.NET Boilerplate遵循域驱动设计的原理. 域驱动设计层 域驱动设计(DDD)有四个基本层: 展示层:为用户提供界面.使用应用程序层来实现用户交互. 应用层:在表示层和域层之间进行中介.编排业务对象以执行特定的应用程序任务. 领域层:包括业务对象及其规则.这是应用程序的核心. 基础设施层:提供通用技术功能,这些功能主要使用第

ABP开发手记5 - 界面调整

点这里进入ABP开发手记目录 调整前 调整后 调整项 页面标题 把favicon.ico替换为指定Logo JD.CRS.Web.Mvc\wwwroot\favicon.ico 顶部工具栏 把logo.png替换为指定Logo JD.CRS.Web.Mvc\wwwroot\images\logo.png 左侧菜单栏 调整用户信息区布局 JD.CRS.Web.Mvc\Views\Shared\Components\SideBarUserArea\Default.cshtml 右侧内容区 调整右侧内

ABP开发手记8 - 应用层创建应用服务

点这里进入ABP开发手记目录 创建目录 在应用层(即JD.CRS.Application)下新建文件夹Course //用以存放Course相关应用服务 在JD.CRS.Application/Course下新建文件夹Dto //用以存放Course相关数据传输对象 创建数据传输对象 在JD.CRS.Application/Course/Dto下新建两个Dto 只读对象 CourseDto.cs //用于查询Course对象 贴上AutoMapFrom的特性 [AutoMapFrom(typeo

ABP开发手记6 - 领域层创建实体

点这里进入ABP开发手记目录 创建实体 在领域层(即JD.CRS.Core)下新建文件夹Entitys //用以存放实体对象添加一个实体类Course.cs //课程信息 1 using Abp.Domain.Entities; 2 using Abp.Domain.Entities.Auditing; 3 using Abp.Timing; 4 using System; 5 using System.Collections.Generic; 6 using System.ComponentM

ABP开发手记10 - 展示层实现增删改查-控制器

点这里进入ABP开发手记目录 创建视图模型 在展示层(即JD.CRS.Web.Mvc)的Controllers下新建一个控制器CourseController.cs 1 using Abp.Application.Services.Dto; 2 using Abp.AspNetCore.Mvc.Authorization; 3 using JD.CRS.Authorization; 4 using JD.CRS.Controllers; 5 using JD.CRS.Course; 6 usin

ABP开发手记9 - 展示层实现增删改查-视图模型

点这里进入ABP开发手记目录 创建视图模型 在展示层(即JD.CRS.Web.Mvc)的Models下新建文件夹Course //用以存放Course相关视图模型 在JD.CRS.Web.Mvc/Models/Course下新建两个视图模型 只读模型 CourseListViewModel.cs //用于查询Course视图模型 1 using System.Collections.Generic; 2 using JD.CRS.Course.Dto; 3 4 namespace JD.CRS.

ABP开发手记7 - 基础设施层更新数据库

点这里进入ABP开发手记目录 设置数据库 在基础设施层(即JD.CRS.EntityFrameworkCore)打开数据库环境设置 JD.CRS.EntityFrameworkCore/EntityFrameworkCore/CRSDbContext.cs添加一行 public DbSet<Course> Course { get; set; } //创建数据表Course 1 using Microsoft.EntityFrameworkCore; 2 using Abp.Zero.Enti