Как организован код в рамках ABP?

#aspnetboilerplate

#aspnetboilerplate

Вопрос:

У меня есть некоторые сомнения по поводу организации кода. Я вижу два способа организации кода: package by layer и package by component . http://www.codingthearchitecture.com/2015/03/08/package_by_component_and_architecturally_aligned_testing.html

Сама структура ABP не требует принятия конкретной формы, и обе формы, по-видимому, поддерживаются. package by layer Это видно только в примере, предоставленном ABP framework. Неясно 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?

Ответ №1:

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/
  

Комментарии:

1. @SAssassin Прочитайте остальную часть ответа.

2. Спасибо. Я думаю, что нашел ответ. github.com/aspnetboilerplate/aspnetboilerplate/issues/… Фреймворк ABP может быть package by components и был воплощен в ABP vNext.