2017-01-09 8 views
1

Я пытался узнать больше о чистой архитектуре дяди Боба из блогов, статей и видео.Чистая архитектура: поток последовательности между структурами

Если бы я использовал базу данных в этой архитектуре, то что должен знать интерфейс UI (как структура, например, сеть или форма) о базе данных? Или в более общем плане, как данные должны проходить между двумя или более частями/частями, находящимися в одном слое?

Например, пользовательский интерфейс будет взаимодействовать с моими адаптерами/шлюзами для взаимодействия с бизнес-объектами. Для чтения/записи я вижу, что пользовательский интерфейс может вызывать любой класс/классы, которые могут обращаться к базе данных и передавать их в адаптеры (а)/шлюз (ы), чтобы он мог взаимодействовать с бизнес-объектами.

public class SomeUI 
    { 
     public static void Main(string[] args) 
     { 
      SomeAdapter adapter = new SomeAdapter(); 
      SomeDataAccess db = new SomeDataAccess(); 
      db.Save(adapter); 
     } 
    } 

    public class SomeDataAccess 
    { 
     public void Save(SomeAdapter adapter) 
     { 
      //Interact with database 
     } 
    } 

    public class SomeAdapter 
    { 
     //properties 
    } 

Многие из статей едва отличаться от этого одного (https://subvisual.co/blog/posts/20-clean-architecture). Я не нашел хорошую статью, которая описывает, как части, которые находятся на одном слое, должны работать друг с другом. Таким образом, статьи, ссылающиеся на это, будут приемлемым ответом.

Это, похоже, не нарушает правило зависимостей, но похоже, что я не делаю что-то правильно, так как я создаю зависимость между моим пользовательским интерфейсом и базой данных. Я считаю, что я могу передумать концепцию, и я полагаю, что это может быть от удара по изучению трехуровневой архитектуры (UI -> BLL -> DAL).

ответ

1

Я делаю больше исследований в других примерах чистой архитектуры.

architecture design http://retromocha.com/assets/images/obvious-architecture-e3b86eaa.png (source).

Из приведенной выше диаграммы видно, что приложение (бизнес-единицы и прецеденты) переводит сообщения с доставкой (Внешние элементы: пользовательский интерфейс). Поставка используется для общения с Внешними (Внешние: DAL).

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

Итак, что заставляет меня верить, что да пример кода в верхней допустима, но я все еще открыты, чтобы услышать, если кто-то имеет больше, чтобы обеспечить на ответ.