ABP开发手记3 - 解决方案
创建项目
如图操作,我们先生成一个基于.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层核心功能。
下一篇: php中文语义分析实现方法示例