zoukankan      html  css  js  c++  java
  • 深入浅出-应用程序启动模板

    介绍

    应用程序启动模板是基于领域驱动设计(DDD)分层的应用程序结构.

    在这篇文档中详细介绍了解决方案结构和项目,如果你想快速入门,请遵循以下指南:

    如何开始

    你可以使用ABP CLI创建基于此启动模板的新项目,或者你也可以在入门页面创建并下载项目. 在这里我们使用CLI创建新项目.

    如果未安装ABP CLI,第一步是安装ABP CLI

    dotnet tool install -g Volo.Abp.Cli
    

    然后使用 abp new 命令在空文件夹中创建新解决方案:

    abp new Acme.BookStore -t app
    
    • Acme.BookStore 是解决方案的名称, 如YourCompany.YourProduct. 你可以使用单级或多级名称.
    • 示例中指定了启动模板 (-t 或 --template 选项). 示指定模板时,默认模板是app .

    指定UI框架

    模板提供了多个UI框架

    • mvc: ASP.NET Core MVC Razor页面 (默认)
    • angular: Angular UI

    使用 -u 或 --ui 选择指定UI框架:

    abp new Acme.BookStore -u angular
    

    指定数据库提供程序

    MVC模板支持以下数据库提供程序:

    • EF:Entity Framework Core (默认)
    • mongodb:MongoDB

    使用 -d (或 --database-provider) 选项指定数据库提供程序:

    abp new Acme.BookStore -d mongodb

    解决方案结构

    根据命令的选项,会创建略有不同的解决方案结构。

    默认结构

    如果未指定附加选项,你会得到如下所示的解决方案:

    bookstore-visual-studio-solution-v3

    项目组织在srctest文件夹中。src文件夹包含实际应用程序,该应用程序基于前面提到的DDD原则进行分层。下图展示了解决方案的层和项目的依赖关系:

    layered-project-dependencies

    下面介绍解决方案中的项目及依赖关系。

    .Domain.Shared 项目

    项目包含常量,枚举和其他对象,这些对象实际上是领域层的一部分,但是解决方案中所有的层/项目中都会使用到。

    例如 BookType 枚举和 BookConsts 类 (可能是 Book 实体用到的常数字段,像MaxNameLength)都适合放在这个项目中。

    • 该项目不依赖解决方案中的其他项目. 其他项目直接或间接依赖该项目

    .Domain 项目

    解决方案的领域层. 它主要包含 实体, 集合根领域服务值类型仓储接口 和解决方案的其他领域对象。

    例如 Book 实体和 IBookRepository 接口都适合放在这个项目中。

    • 它依赖 .Domain.Shared 项目,因为项目中会用到它的一些常量,枚举和定义其他对象。

    .Application.Contracts 项目

    项目主要包含 应用服务 interfaces 和应用层的 数据传输对象 (DTO)。它用于分离应用层的接口和实现. 这种方式可以将接口项目做为约定包共享给客户端。

    例如 IBookAppService 接口和 BookCreationDto 类都适合放在这个项目中。

    • 它依赖 .Domain.Shared 因为它可能会在应用接口和DTO中使用常量,枚举和其他的共享对象。

    .Application 项目

    项目包含 .Application.Contracts 项目的 应用服务 接口实现。

    例如 BookAppService 类适合放在这个项目中。

    • 它依赖 .Application.Contracts 项目, 因为它需要实现接口与使用DTO。
    • 它依赖 .Domain 项目,因为它需要使用领域对象(实体,仓储接口等)执行应用程序逻辑。

    .EntityFrameworkCore 项目

    这是集成EF Core的项目. 它定义了 DbContext 并实现 .Domain 项目中定义的仓储接口。

    • 它依赖 .Domain 项目,因为它需要引用实体和仓储接口。

    只有在你使用了EF Core做为数据库提供程序时,此项目才会可用. 如果选择的是其他数据库提供程序那么项目的名称会改变

    .DbMigrator 项目

    这是一个控制台应用程序,它简化了在开发和生产环境执行数据库迁移的操作.当你使用它时;

    • 必要时创建数据库(没有数据库时)。
    • 应用未迁移的数据库迁移。
    • 初始化种子数据(当你需要时)。
  • 相关阅读:
    贝叶斯推断祭
    libstdc和glibc的一些共享库问题
    nf_conntrack之解决方案
    Too many open files 问题
    Centos系统 上下文切换的检查思路
    GPS坐标转大地坐标
    【转】关于IAP与APP互相跳转的实现
    stm32定时器计数功能
    C库函数——字符串转数字整理
    【转】sscanf函数用法实例
  • 原文地址:https://www.cnblogs.com/fxck/p/13076574.html
Copyright © 2011-2022 走看看