问题描述
我对组织代码有一些疑问。我看到了两种组织代码的方式:package by layer
和package by component
。
http://www.codingthearchitecture.com/2015/03/08/package_by_component_and_architecturally_aligned_testing.html
ABP框架本身不需要采用特定的形式,并且似乎支持这两种形式。
在ABP框架提供的示例中只能看到package by layer
。尚不清楚是否可以使用package by component
。
例如,存在三个边界上下文:订单,产品和客户。
如果使用package by layer
,将如下图所示。
Project.sln
Project.Application
OrderContext
ProductContext
CustomerContext
Project.Core
OrderContext
ProductContext
CustomerContext
Project.EntityFrameworkCore
...
如果使用package by component
,将如下图所示。
Project.sln
hosts
Project.Host
modules
orders
Order.Application
Order.Core
Order.EntityFrameworkCore
products
Product.Application
Product.Core
Product.EntityFrameworkCore
customers
Customer.Application
Customer.Core
Customer.EntityFrameworkCore
哪种方法在ABP框架中使用更广泛?
解决方法
ASP.NET样板使用package by layer
或“域驱动设计层”。
https://aspnetboilerplate.com/Pages/Documents/NLayer-Architecture
以下是可从https://aspnetboilerplate.com/Templates下载的官方模板的文件夹结构,其源代码位于https://github.com/aspnetboilerplate/module-zero-core-template:
AbpCompanyName.AbpProjectName.sln
src/
AbpCompanyName.AbpProjectName.Application/
Authorization/
Configuration/
MultiTenancy/
Roles/
Users/
AbpCompanyName.AbpProjectName.Core/
Authorization/
Roles/
Users/
Configuration/
MultiTenancy/