目录git
0.引言github
1.DDD分层数据库
2.ABP应用构架模型json
客户端应用程序(Client Applications)缓存
分布式服务层(Distributed Service Layer)app
领域层spa
基础设施层命令行
应用程序的分层是一种普遍接受的技术, 能够下降复杂度和提升代码的可重用性。为了实现分层架构,ABP遵循领域驱动设计(DDD)原则。
领域驱动设计有四个基本的层:
除了DDD,现代的应用程序架构还包括逻辑和物理层等。以下图是ABP建议并实施的模型,它不只经过提供基类和服务来快速实现这个模型,并且还提供了启动模板直接开始这个模型。
远程客户端经过HTTP APIs(API Controllers,OData Controllers,GraphQL终端)等将应用程序做为服务。远程客户端能够是SPA、移动APP、或第三方消费者等。该应用程序主要包括本地化和导航功能。
ASP.NET [Core] MVC能够认为是表现层。它能够是物理层(经过HTTP APIs使用应用程序)或是逻辑层(直接注入和使用应用服务)。不管是哪种状况,通常包括本地化(Location)、导航(Navigation)、对象映射(Object Mapping)、缓存(Caching)、配置管理(Configuration Manager)、审计日志(Audit Logging)等等。还包括受权(Authorization)、会话(Session)、功能(Features,对于多租户应用程序)以及异常处理(Exception Handling)。
该层主要经过远程APIs(如REST、OData、GraphQL等)服务于应用服务/领域功能。该层只是将HTTP请求转换为领域交互,或可以使用应用服务来委托操做,而并不包含业务逻辑。一般包括受权(Authorization)、缓存(Caching)、审计日志(Audit Logging)、对象映射(Object Mapping)、异常处理(Exception Handling)、会话(Session)等。
应用层主要包括使用领域层和领域对象(领域服务、实体...)来执行应用程序功能请求的应用服务。应用层使用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)的集成,以便发送电子邮件等。基础设施层是最下、也是不严格的一层,其实是经过实现它们的抽象概念来支持其余层。
1.打开网址【Startup Templates】
2.依次选择ASP.NET Core 2.x >> .NET CORE(Cross Plateform) >> Multi Page Web Application,输入项目名称:XXX.FirstABP、验证码,点击建立项目按钮。
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项目模板快速生成了应用程序,主要有租户管理、用户管理、角色管理等功能模块。