|
Контроль целостности сущностей в многослойных приложениях
|
|||
---|---|---|---|
#18+
Это не название диссертации, это опять я... В многослоцных приложениях сущности имеют разные представления в разных слоях. Возьмём классический шаблон MVVM. В модели у нас Код: c# 1. 2. 3. 4.
В модели представления у нас Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
Если уберём в модели свойство Name или изменим имя этого свойства, но забудем поменять это в модели представления, при компиляции нам скажут, в чём ошибка. А если мы добавим в модель новое свойство, но не в модель представления? При компиляции ничего не произойдёт. И это не только в MVVM. В любых слоях любых многослойных приложений - нужно как-то контролировать целостность сущностей. Сейчас я знаю только один способ - просто помнить, что если где-то что-то поменял, то по всем представлениям изменённой сущности во всех слоях надо сделать соответствующие изменения. Т. е. это соглашение на словах. А как сделать это соглашение так, чтобы его можно было контролировать при компиляции хотя бы? Или, может, есть ещё какие-то, более лучшие способы? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2015, 10:59 |
|
Контроль целостности сущностей в многослойных приложениях
|
|||
---|---|---|---|
#18+
Alexey2112, И зачем это нужно? MVVM паттерн специально придуман, чтобы убрать жесткую привязку, а ты сейчас хочешь снова все жестко привязать. И какой смысл использования MVVM тогда, если вся его прелесть в гибкости будет убита? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2015, 11:19 |
|
Контроль целостности сущностей в многослойных приложениях
|
|||
---|---|---|---|
#18+
AxeleronAlexey2112, И зачем это нужно? MVVM паттерн специально придуман, чтобы убрать жесткую привязку, а ты сейчас хочешь снова все жестко привязать. И какой смысл использования MVVM тогда, если вся его прелесть в гибкости будет убита? Один-то ты ещё можешь об этом помнить (но всё равно забудешь что-нибудь), а когда команда работает и каждый чел над своим слоем? Ты что-то изменил, как другой об этом узнает? Только когда у него не скомпилируется? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2015, 11:23 |
|
Контроль целостности сущностей в многослойных приложениях
|
|||
---|---|---|---|
#18+
Alexey2112Один-то ты ещё можешь об этом помнить (но всё равно забудешь что-нибудь), а когда команда работает и каждый чел над своим слоем? Ты что-то изменил, как другой об этом узнает? Только когда у него не скомпилируется? Ну так если ты изменил, то ты знаешь для чего изменил, соответственно заканчиваешь свою задачу и везде где необходимо делаешь изменения и свободен. Другим-то какое дело? А вообще S OLID - полезная штука, которой стоит придерживаться. Из-за игнорирования этих принципов часто бывают проблемы в проектах, над которыми работают несколько человек одновременно. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2015, 11:27 |
|
Контроль целостности сущностей в многослойных приложениях
|
|||
---|---|---|---|
#18+
AxeleronAlexey2112Один-то ты ещё можешь об этом помнить (но всё равно забудешь что-нибудь), а когда команда работает и каждый чел над своим слоем? Ты что-то изменил, как другой об этом узнает? Только когда у него не скомпилируется? Ну так если ты изменил, то ты знаешь для чего изменил, соответственно заканчиваешь свою задачу и везде где необходимо делаешь изменения и свободен. Другим-то какое дело? А вообще S OLID - полезная штука, которой стоит придерживаться. Из-за игнорирования этих принципов часто бывают проблемы в проектах, над которыми работают несколько человек одновременно. Не понимаю, как этот солид поможет челам получать извещения об изменениях сущности на каком-нибудь слое? Тут не солид, а трекер какой-нибудь нужен. Ну или на уровне языка поддержку какую-нибудь. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2015, 11:31 |
|
Контроль целостности сущностей в многослойных приложениях
|
|||
---|---|---|---|
#18+
хранить значения свойств не по отдельности, а в виде Dictionary, предоставлять доступ к ним через index'атор. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2015, 11:37 |
|
Контроль целостности сущностей в многослойных приложениях
|
|||
---|---|---|---|
#18+
Alexey2112 А если мы добавим в модель новое свойство, но не в модель представления? ... Или, может, есть ещё какие-то, более лучшие способы?автоматическая генерация интерфейсов между слоями, как это делает EF. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2015, 11:42 |
|
Контроль целостности сущностей в многослойных приложениях
|
|||
---|---|---|---|
#18+
Alexey2112Не понимаю, как этот солид поможет челам получать извещения об изменениях сущности на каком-нибудь слое? Тут не солид, а трекер какой-нибудь нужен. Ну или на уровне языка поддержку какую-нибудь. Как ты получаешь извещение о добавлении нового класса-интерфейса-делегата-свойства в новой версии .NET Framework или любой другой библиотеки? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2015, 12:40 |
|
Контроль целостности сущностей в многослойных приложениях
|
|||
---|---|---|---|
#18+
AntonariyAlexey2112 А если мы добавим в модель новое свойство, но не в модель представления? ... Или, может, есть ещё какие-то, более лучшие способы?автоматическая генерация интерфейсов между слоями, как это делает EF. хотел написать что нужны интерфесы но побоялся выглядить глупо :) вот видео в котором по моему выход из схожей проблемы предлагали ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2015, 12:51 |
|
|
start [/forum/topic.php?fid=20&msg=39016499&tid=1401329]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 156ms |
0 / 0 |