DataBinding и "Чистая архитектура" не совместимы?
От: zelenprog  
Дата: 26.07.22 15:33
Оценка:
Здравствуйте!

Пробую сделать простую программу в VS-2010 на C# WinForms, которая просто читает из БД данные и отображает список полученных записей.
Хочется сделать все "красиво" в соответствии с книгой Р. Мартина "Чистая архитектура", с разделением на слои View — Presenter — Controller — Interactor — Repository.
В качестве БД — использую Access-файл (или может быть потом освою SQLite).

Не знаю как правильно сделать отображение данных во View.
Возможны два варианта отобразжения полученных записей в DataGridView: с использованием DataBinding, и без DataBinding.

Пока рассматриваю вариант с DataBinding.
Конечно, отказываться от использования DataBinding не хотелось бы. Это удобно.
Но, как я понимаю, использование DataBinding нарушает "чистую архитектуру". Верно я понимаю?
Можно ли как-то совместить DataBinding с "Чистой архитектурой"?

Если все-таки их можно совместить, то какие действия при этом должны выполнять классы?
Класс Interactor — возвращает например DataTable.
А что дальше должны делать классы Controller, Presenter, View, чтобы эта DataTable отобразилась во View с помощью DataBinding? Как у них разделены обязанности?
Подскажите пожалуйста.
Re: DataBinding и "Чистая архитектура" не совместимы?
От: Буравчик Россия  
Дата: 26.07.22 21:34
Оценка: 1 (1)
Здравствуйте, zelenprog, Вы писали:

Z>Подскажите пожалуйста.


Не претендуя на полный ответ, дам ссылочку
Clean Architecture and MVVM on iOS
Best regards, Буравчик
Re: DataBinding и "Чистая архитектура" не совместимы?
От: vaa  
Дата: 27.07.22 02:07
Оценка:
Здравствуйте, zelenprog, Вы писали:

Z>Если все-таки их можно совместить, то какие действия при этом должны выполнять классы?

Z>Класс Interactor — возвращает например DataTable.
Z>А что дальше должны делать классы Controller, Presenter, View, чтобы эта DataTable отобразилась во View с помощью DataBinding? Как у них разделены обязанности?
Z>Подскажите пожалуйста.

ReactiveUI.Winforms.Samples

Вообще, забудьте про классы, надо мыслить данными. классы метод программирования.
вообще к данным ближе ФП. Реактивное программирование как раз родом из ФП.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re: DataBinding и "Чистая архитектура" не совместимы?
От: sereginseregin Россия http://daremanager.sourceforge.net/ru/
Дата: 27.07.22 10:49
Оценка:
Здравствуйте, zelenprog, Вы писали

Z>Пробую сделать простую программу в VS-2010 на C# WinForms, которая просто читает из БД данные и отображает список полученных записей.

Z>Хочется сделать все "красиво" в соответствии с книгой Р. Мартина "Чистая архитектура", с разделением на слои View — Presenter — Controller — Interactor — Repository.


А кто вам сказал, что WinForms и Р.Мартин совместимы. Предложенная "Чистая архитектура" не имеет ничего общего с практикой обработки потоков данных, реализованной популярными фремверками. Не мучайте себя, делайте так как считаете нужным, оргументируя свою точку зрения в каждом конкретном случае.
Re[2]: DataBinding и "Чистая архитектура" не совместимы?
От: zelenprog  
Дата: 27.07.22 15:06
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>Не претендуя на полный ответ, дам ссылочку

Б>Clean Architecture and MVVM on iOS

Статью прочитал. Жаль, что там не WinForms.
А какой там язык используется?
Re[2]: DataBinding и "Чистая архитектура" не совместимы?
От: zelenprog  
Дата: 27.07.22 15:10
Оценка: +1
vaa>Вообще, забудьте про классы, надо мыслить данными. классы метод программирования.
vaa>вообще к данным ближе ФП. Реактивное программирование как раз родом из ФП.

Ну вообще, мне кажется, надо думать "слоями".
Просто мой пример достаточно простой. И в этом примере каждому слою будет соответствовать отдельный класс.
И в данном случае получается что, понятия "класс" — "данные" — "слой" эквиваленты.
Re[2]: DataBinding и "Чистая архитектура" не совместимы?
От: zelenprog  
Дата: 27.07.22 15:12
Оценка:
S>А кто вам сказал, что WinForms и Р.Мартин совместимы.
А почему нет?

S>Предложенная "Чистая архитектура" не имеет ничего общего с практикой обработки потоков данных, реализованной популярными фремверками.

Так ведь "Чистая архитектура" и предназначена для отделения логики программы от фреймворка.
Идея в принципе здравая и вполне реализуемая.
Только вот я споткнулся на DataBinding.
Re[2]: DataBinding и "Чистая архитектура" не совместимы?
От: zelenprog  
Дата: 27.07.22 15:23
Оценка:
vaa>ReactiveUI.Winforms.Samples

Что-то не нашел как там скачать исходники
Как их скачать?
Re[3]: DataBinding и "Чистая архитектура" не совместимы?
От: sereginseregin Россия http://daremanager.sourceforge.net/ru/
Дата: 27.07.22 15:32
Оценка:
Здравствуйте, zelenprog, Вы писали:


Z>Так ведь "Чистая архитектура" и предназначена для отделения логики программы от фреймворка.

Логика Архитектуры строиться сверху вниз для удобства делегирования функций между блоками программы,
А фреймверк строится снизу вверх, по наличию низкоуровневых функций обработки данных.

Эти два подхода втречаются только тогда, когда разрабатываются совместно. Хорошо, если получится трактор для VIP персон, а не лимузин для вспахивания поля.
Re[4]: DataBinding и "Чистая архитектура" не совместимы?
От: zelenprog  
Дата: 27.07.22 15:36
Оценка:
S>Эти два подхода втречаются ...

Согласно "чистой архитектуре" для "соединения" логики и фреймфорка надо написать Адаптер.
Вроде бы тут не должно быть никаких сложностей.
Re: DataBinding и "Чистая архитектура" не совместимы?
От: DiPaolo Россия  
Дата: 27.07.22 15:52
Оценка: +1 -1
Как тут уже советовали: не забивайте себе голову зубрежкой понятий из книг и не бегите впереди паровоза, пытаясь все зазубренные понятия совместить. Просто набивайте руку, делайте как считаете нужным, наступайте на грабли, просто программируйте, набирайтесь опыта. Постепенно сами начнете понимать, что с чем соотносится, совместимо/не совместимо и где какие понятия из книжек стыкуются с инструментами фреймворков. И еще: читайте больше кода, перенимайте идеи там. Со временем сможете анализировать, что работает, что нет, почему написано так, а как можно было написать лучше.

Пока, судя по вашим вопросам в теме, вы сильно спешите и бежите впереди паровоза, не набив руку на базовых вещах.
Патриот здравого смысла
Re[3]: DataBinding и "Чистая архитектура" не совместимы?
От: vaa  
Дата: 28.07.22 01:54
Оценка:
Здравствуйте, zelenprog, Вы писали:


vaa>>Вообще, забудьте про классы, надо мыслить данными. классы метод программирования.

vaa>>вообще к данным ближе ФП. Реактивное программирование как раз родом из ФП.

Z>Ну вообще, мне кажется, надо думать "слоями".

Z>Просто мой пример достаточно простой. И в этом примере каждому слою будет соответствовать отдельный класс.
Z>И в данном случае получается что, понятия "класс" — "данные" — "слой" эквиваленты.

а еще можно думать "модулями"

утилиты
базовые типы(клиент, менеджер...)
функционал(бизнес-логика)
представления

в каждом структуры и функции

в porgram.cs все это склеевается как лего.

Чистая архитектура это набор советов типа
не использовать new, зависеть от интерфейсов, следить чтобы зависимости не зацикливались.
это основное.
но зачем вам интерфейс, если реализация одна? большой вопрос.

Рекомендую еще послушать доклады ричи хики. у него другой подход к программированию — именно как работа с данными,
он даже типы отрицает. хотя у кого то читал и мне понравилось, что
вот в C# начинают с интерфейсов, а нужно с типов, ведь только зная какой тип данных можно понять какие операции возможны/необходимы.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[3]: DataBinding и "Чистая архитектура" не совместимы?
От: vaa  
Дата: 28.07.22 01:55
Оценка:
Здравствуйте, zelenprog, Вы писали:


vaa>>ReactiveUI.Winforms.Samples


Z>Что-то не нашел как там скачать исходники

Z>Как их скачать?

надо повыше подняться, появится зеленая кнопка КОД.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re: DataBinding и "Чистая архитектура" не совместимы?
От: Sharov Россия  
Дата: 30.07.22 00:06
Оценка:
Здравствуйте, zelenprog, Вы писали:

Z>Пока рассматриваю вариант с DataBinding.

Z>Конечно, отказываться от использования DataBinding не хотелось бы. Это удобно.
Z>Но, как я понимаю, использование DataBinding нарушает "чистую архитектуру". Верно я понимаю?
Z>Можно ли как-то совместить DataBinding с "Чистой архитектурой"?

Нет, databinnding будем компонентом presenter или controller, но в парадигму чистую архитектуру" укладывается,
для этого был и придуман.

Z>Если все-таки их можно совместить, то какие действия при этом должны выполнять классы?

Z>Класс Interactor — возвращает например DataTable.
Z>А что дальше должны делать классы Controller, Presenter, View, чтобы эта DataTable отобразилась во View с помощью DataBinding? Как у них разделены обязанности?
Z>Подскажите пожалуйста.

Controller присвоит св-ву DataSorce DataTable (т.е. DataTable.DataSorce) экземпляр класса Interactor. Т.е. dt.DataSorce = interactorInstance;
Или связанному с этим контролом bindingSource (т.е. bindingSource.DataSorce = interactorInstance).
Т.е. контроллер получит данные из таблицы и присвоит полям (скорее всего DataSource) соотв. контролов эти данные для отображения.
Кодом людям нужно помогать!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.