Правило зависимостей в Onion Architecture сбивает с толку - PullRequest
0 голосов
/ 09 апреля 2019

В Onion Architecture правило зависимостей находится снаружи, стрелка означает, что внешний слой зависит от нижнего слоя, как показано ниже:

enter image description here

В реальном мире предположим, что у нас есть проекты, структурированные так:

  1. Project.DomainEntities
  2. Project.RepositoryInterfaces (ссылка на {1})
  3. Project.ServiceInterfaces (ссылка на {1} и {2})
  4. Project.Test (ссылка на {1}, {2}, {3})
  5. Project.Web (ссылка на {1}, {2}, {3})

Вопрос в том, что означает стрелка или я неправильно настроил решение?Если да, не могли бы вы помочь мне указать?

Спасибо

1 Ответ

2 голосов
/ 12 апреля 2019

enter image description here Стрелки в этом случае будут ссылочными указаниями;в C #, например, все будет ссылаться на доменные объекты, но доменные объекты не будут содержать ссылок ни на что.

Преимущество здесь в том, что вы не смешиваете какую-либо инфраструктурную логику с вашей доменной логикой, это на самом деледелает это невозможным, поскольку ваш домен даже не знает о существовании таких вещей, как ваш ORM, или даже о том, что такое база данных.

Продвигаясь дальше, ваш сервисный уровень знает, какие объекты существуют в вашем домене, поэтомуможет настроить интерфейс для сохранения объектов вашего домена, но не сможет вернуть объект из вашего ORM;конкретная реализация будет единственной, которая знает, как сохранить доменные объекты, и должна будет преобразовать ее обратно из любой формы в объект домена, прежде чем возвращать его.

...