Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Single page aplication
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Что мне мешает создать из ViewModel диалог? Используется "диалоговый" сервис commonDialogs, всё в лучших традициях.А, это сервис :) Понятно. Почему же ajax в отдельный сервис не вынесен "в лучших традициях"? На фига ViewModel знать, откуда данные (локальные, или с сервера получены ajax-ом, или не ajax-ом)?Ну я не вижу в данном случае необходимости добавлять ещё одну абстракцию: писанины больше, пользы - ноль. Но я не спорю, такое решение в других случаях может иметь право на жизнь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2015, 13:57 |
|
||
|
Single page aplication
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... MVVM.На MVVM не тянет.Кстати по поводу "не тянет": если бы в данном коде велась работа непосредственно с HTML-элементами, тогда да, на MVVM бы это не тянуло. А тут тянет. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2015, 13:59 |
|
||
|
Single page aplication
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAА вот кстати лучшие традиции Ajax calls относят к модели.Как мне кажется, там описывается ViewModel - класс, к которому биндится View.Там описывается и model, и view model, и view. Ajax calls относятся к model, ровно как и другие "operations in your business domain". А к view model относится "data and operations on a UI". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2015, 14:01 |
|
||
|
Single page aplication
|
|||
|---|---|---|---|
|
#18+
Алексей КНу я понял, что ты тут самый самый специалист по SPA фреймворкам. Извини, что потревожил твои религиозные чувства. Похоже, ты обиделся ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2015, 14:19 |
|
||
|
Single page aplication
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... А, это сервис :) Понятно. Почему же ajax в отдельный сервис не вынесен "в лучших традициях"? На фига ViewModel знать, откуда данные (локальные, или с сервера получены ajax-ом, или не ajax-ом)?Ну я не вижу в данном случае необходимости добавлять ещё одну абстракцию: писанины больше, пользы - ноль. Но я не спорю, такое решение в других случаях может иметь право на жизнь."Keeping the view model abstract in this way lets it stay simple, so you can manage more sophisticated behaviors without getting lost". Опять приходим к тому, что у тебя ничего никогда не меняется, не усложняется, не расширяется... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2015, 14:31 |
|
||
|
Single page aplication
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... На MVVM не тянет.Кстати по поводу "не тянет": если бы в данном коде велась работа непосредственно с HTML-элементами, тогда да, на MVVM бы это не тянуло. А тут тянет. :-)view model ничего не должна знать о сервере и ajax, так же как и о HTML. Так что пока не тянет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2015, 14:35 |
|
||
|
Single page aplication
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Ну я не вижу в данном случае необходимости добавлять ещё одну абстракцию: писанины больше, пользы - ноль. Но я не спорю, такое решение в других случаях может иметь право на жизнь."Keeping the view model abstract in this way lets it stay simple, so you can manage more sophisticated behaviors without getting lost". Опять приходим к тому, что у тебя ничего никогда не меняется, не усложняется, не расширяется... :)Ну менять источник данных в данном случае мне точно не придётся. По поводу изменений - чем больше абстракций, тем больше кода придётся менять при изменении предметной области, скорее всего в таком случае изменения коснуться всех слоёв. skyANAАлексей Кпропущено... Кстати по поводу "не тянет": если бы в данном коде велась работа непосредственно с HTML-элементами, тогда да, на MVVM бы это не тянуло. А тут тянет. :-)view model ничего не должна знать о сервере и ajax, так же как и о HTML. Так что пока не тянет :)Если бы это был десктоп, то я бы согласился. Но для Веб AJAX является единственным способом взаимодействия с сервером, поэтому данная независимость нам ничего не даёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2015, 14:50 |
|
||
|
Single page aplication
|
|||
|---|---|---|---|
|
#18+
hVosttАлексей КНу я понял, что ты тут самый самый специалист по SPA фреймворкам. Извини, что потревожил твои религиозные чувства. Похоже, ты обиделся )Совсем нет. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2015, 15:02 |
|
||
|
Single page aplication
|
|||
|---|---|---|---|
|
#18+
Алексей КСовсем нет. :-) ну слава Богу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2015, 15:06 |
|
||
|
Single page aplication
|
|||
|---|---|---|---|
|
#18+
Алексей КПо поводу изменений - чем больше абстракций, тем больше кода придётся менять при изменении предметной области, скорее всего в таком случае изменения коснуться всех слоёв. При чём тут "больше" абстракций? Ты так легко варьируешь этим понятием. Абстракций не надо ни больше, ни меньше, а ровно столько, чтобы решить простейшую задачу разделения ответственности. Не надо их лепить по принципу больше/меньше, много/мало. Есть определённые уровни, их всего 3: уровень изоляции модели, уровень вью-модели и уровень презентации. Чего ты там городишь, я не понимаю? Кода как раз меньше придётся менять при изменении слоёв, так как у тебя полная, изолированная независимость. Хочешь наследуй контроллеры, вью-модели, фабрики, создавай изменяй их поведение, аггрегируй, выноси целые куски в отдельные компоненты (со строгим MVC-MVVM естественно). Я работал с этим, это очень гибко и удобно. Никаких 100500 абстракций, которые ты тут навыдумывал. Не надо боятся абстракций, надо их применять. Знаю, тебе не интересно, но ты бы всё же посмотрел на какой-нибудь популярный фреймворк, да пусть даже Ангуляр, хотя бы для общего развития. Неужели не интересно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2015, 15:22 |
|
||
|
Single page aplication
|
|||
|---|---|---|---|
|
#18+
hVosttАлексей КПо поводу изменений - чем больше абстракций, тем больше кода придётся менять при изменении предметной области, скорее всего в таком случае изменения коснуться всех слоёв. При чём тут "больше" абстракций? Ты так легко варьируешь этим понятием. Абстракций не надо ни больше, ни меньше, а ровно столько, чтобы решить простейшую задачу разделения ответственности. Не надо их лепить по принципу больше/меньше, много/мало. Есть определённые уровни, их всего 3: уровень изоляции модели, уровень вью-модели и уровень презентации. Чего ты там городишь, я не понимаю?Ну представь, надо добавить поле в БД и форму редактирования, а у тебя данная сущность представлена разными классами в разных слоях: DAL, DTO и VM, свойство придётся добавлять в трёх классах вместо одного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2015, 15:39 |
|
||
|
Single page aplication
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... "Keeping the view model abstract in this way lets it stay simple, so you can manage more sophisticated behaviors without getting lost". Опять приходим к тому, что у тебя ничего никогда не меняется, не усложняется, не расширяется... :)Ну менять источник данных в данном случае мне точно не придётся. По поводу изменений - чем больше абстракций, тем больше кода придётся менять при изменении предметной области, скорее всего в таком случае изменения коснуться всех слоёв.Ну скорее всего всех. Но сделать это можно будет параллельно (совместная разработко, о которой уже упоминали). А если например потребуется написать другую морду к этому же API? Мобильную к примеру и респонсив, и тоже на JavaScript? Предметная область не изменилась, а изменения всё равно коснутся "всех слоёв" :) Алексей КskyANAпропущено... view model ничего не должна знать о сервере и ajax, так же как и о HTML. Так что пока не тянет :)Если бы это был десктоп, то я бы согласился. Но для Веб AJAX является единственным способом взаимодействия с сервером, поэтому данная независимость нам ничего не даёт.Не единственным. Плюс завтра попросят добавить поддержку offline режима и IndexedDB. Хотя это же опять не про тебя :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2015, 15:51 |
|
||
|
Single page aplication
|
|||
|---|---|---|---|
|
#18+
Алексей КНу представь, надо добавить поле в БД и форму редактирования, а у тебя данная сущность представлена разными классами в разных слоях: DAL, DTO и VM, свойство придётся добавлять в трёх классах вместо одного. А вот и нет. Если ты добавишь поле, и у тебя не генерится форма на основе метамодели, которую легко можно запрашивать через тот же REST при желании, или без мета, тебе в любом случае надо добавить его в презентацию (в HTML), и этого в приницпе будет достаточно, так как вью-модель работает поверх модели, полученной из REST, ничего не поменяется, разве что если с этим полем не будет связана дополнительная логика, воможно слой валидации надо будет расширить. Но это в любом случае надо будет сделать, только тут изменения минимальны, практически ты трогаешь только то, что действительно надо изменить, а инфраструктуру не трогаешь, ничего не переколбашиваешь. Так как у каждого слоя чёткая область ответственности, прописывание всех полей поимённо в каждом слое обычно не требуется, ты наследуешь и агрегируешь, пользуешься метамоделью и... и не описываешь набор колонок прямо в коде, как это сделано у тебя (очень, очень плохо). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2015, 15:59 |
|
||
|
Single page aplication
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Ну менять источник данных в данном случае мне точно не придётся. По поводу изменений - чем больше абстракций, тем больше кода придётся менять при изменении предметной области, скорее всего в таком случае изменения коснуться всех слоёв.Ну скорее всего всех. Но сделать это можно будет параллельно (совместная разработко, о которой уже упоминали).У нас контора маленькая, разработчики делятся по предметной области. skyANAА если например потребуется написать другую морду к этому же API? Мобильную к примеру и респонсив, и тоже на JavaScript? Предметная область не изменилась, а изменения всё равно коснутся "всех слоёв" :)А вот и нет. :-) Мы обсуждаем клиентскую HTML+JS часть. Серверная WebAPI часть тут и так есть, она останется без изменений. skyANAАлексей Кпропущено... Если бы это был десктоп, то я бы согласился. Но для Веб AJAX является единственным способом взаимодействия с сервером, поэтому данная независимость нам ничего не даёт.Не единственным. Плюс завтра попросят добавить поддержку offline режима и IndexedDB. Хотя это же опять не про тебя :)Да, это не про меня. :-) Таких требований на настоящий момент у нас нет и не планируются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2015, 16:03 |
|
||
|
Single page aplication
|
|||
|---|---|---|---|
|
#18+
hVosttАлексей КНу представь, надо добавить поле в БД и форму редактирования, а у тебя данная сущность представлена разными классами в разных слоях: DAL, DTO и VM, свойство придётся добавлять в трёх классах вместо одного. А вот и нет. Если ты добавишь поле, и у тебя не генерится форма на основе метамодели, которую легко можно запрашивать через тот же REST при желании, или без мета, тебе в любом случае надо добавить его в презентацию (в HTML), и этого в приницпе будет достаточно, так как вью-модель работает поверх модели, полученной из REST, ничего не поменяется, разве что если с этим полем не будет связана дополнительная логика, воможно слой валидации надо будет расширить. Но это в любом случае надо будет сделать, только тут изменения минимальны, практически ты трогаешь только то, что действительно надо изменить, а инфраструктуру не трогаешь, ничего не переколбашиваешь. Так как у каждого слоя чёткая область ответственности, прописывание всех полей поимённо в каждом слое обычно не требуется, ты наследуешь и агрегируешь, пользуешься метамоделью и... и не описываешь набор колонок прямо в коде, как это сделано у тебя (очень, очень плохо).Я не сторонник генерации форм по метаданным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2015, 16:06 |
|
||
|
Single page aplication
|
|||
|---|---|---|---|
|
#18+
Алексей К, Вот, кстати, совершенно свежий пример из опыта. В чужом проекте, которого до селе я в глаза не видел попросили добавить 2 поля и кнопку на форму (поле, чекбокс и кнопка), с логикой: если чекбокс нажат, поле разрешено изменять, если отжат поле запрещено изменять и оно очищается, кнопка работает только когда поле заполнено, и отправляет данные в REST. Так как это Ангуляр, я чуть ли не с закрытыми глазами нашёл эту форму, так как у ангуляров структура типичная, без всяких больных фантазий, открыл HTML, добавил поля: два инпута и один баттон, прибиндил их, из REST эти поля уже приходят, и также уходят, ничего трогать не пришлось, и строчка в контроллер для логики UI (очищение значения text при изменении поля bool). Если надо, можно было бы в слой валидации добавить логику. Совершенно чётко всё разложено по феншую, никто никуда не лезет, контроллер вообще не знает как отправляются данные и куда, они просто сохраняются, а как отвечает модель, и модели пофиг что там сохраняется, она лишь принимает данные и отправляет, всё работает как часы, вся доработка заняла 25 минут вместе с доставанием проекта из репы и заливкой коммита. Чудеса! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2015, 16:06 |
|
||
|
Single page aplication
|
|||
|---|---|---|---|
|
#18+
Алексей К, А если бы в репо лежало нечто похожее на то, что ты привёл, я бы отказался от каких-либо действий, так как ХРЕН ЕГО ЗНАЕТ как это работает, как оно связано, и на что может повлиять любое изменение. Нафиг надо такое счастье, вот кто это УГ писал, тот пусть и разгребает его, как никак, это теперь незаменимый разработчик ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2015, 16:09 |
|
||
|
Single page aplication
|
|||
|---|---|---|---|
|
#18+
hVosttАлексей К, Вот, кстати, совершенно свежий пример из опыта. В чужом проекте, которого до селе я в глаза не видел попросили добавить 2 поля и кнопку на форму (поле, чекбокс и кнопка), с логикой: если чекбокс нажат, поле разрешено изменять, если отжат поле запрещено изменять и оно очищается, кнопка работает только когда поле заполнено, и отправляет данные в REST. Так как это Ангуляр, я чуть ли не с закрытыми глазами нашёл эту форму, так как у ангуляров структура типичная, без всяких больных фантазий, открыл HTML, добавил поля: два инпута и один баттон, прибиндил их, из REST эти поля уже приходят, и также уходят, ничего трогать не пришлось, и строчка в контроллер для логики UI (очищение значения text при изменении поля bool). Если надо, можно было бы в слой валидации добавить логику. Совершенно чётко всё разложено по феншую, никто никуда не лезет, контроллер вообще не знает как отправляются данные и куда, они просто сохраняются, а как отвечает модель, и модели пофиг что там сохраняется, она лишь принимает данные и отправляет, всё работает как часы, вся доработка заняла 25 минут вместе с доставанием проекта из репы и заливкой коммита. Чудеса!Ты не поверишь, в моём случае всё будет точно так же. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2015, 16:24 |
|
||
|
Single page aplication
|
|||
|---|---|---|---|
|
#18+
Алексей КТы не поверишь, в моём случае всё будет точно так же. :-) ну а чего боишься тогда этих чёртовых обстракций? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2015, 16:31 |
|
||
|
Single page aplication
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... Ну скорее всего всех. Но сделать это можно будет параллельно (совместная разработко, о которой уже упоминали).У нас контора маленькая, разработчики делятся по предметной области. skyANAА если например потребуется написать другую морду к этому же API? Мобильную к примеру и респонсив, и тоже на JavaScript? Предметная область не изменилась, а изменения всё равно коснутся "всех слоёв" :)А вот и нет. :-) Мы обсуждаем клиентскую HTML+JS часть. Серверная WebAPI часть тут и так есть, она останется без изменений.Ты не понял. В JS у нас есть model, которая инкапсулирует в себе все Ajax calls (IndexedDB calls, offline calls). Это набор js-"классов". Я беру этот код и просто использую в другой HTML+JS морде без изменений. А в твоём случае нужный код надо выдирать из view model и писать на его базе новую view model. Да и почему view model? Новую морду может быстрее и проще реализовать используя другой MV* подход, не MVVM. "Серверная WebAPI часть" в обоих случаях "тут и так есть, она останется без изменений". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2015, 16:59 |
|
||
|
Single page aplication
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... У нас контора маленькая, разработчики делятся по предметной области. пропущено... А вот и нет. :-) Мы обсуждаем клиентскую HTML+JS часть. Серверная WebAPI часть тут и так есть, она останется без изменений.Ты не понял. В JS у нас есть model, которая инкапсулирует в себе все Ajax calls (IndexedDB calls, offline calls). Это набор js-"классов". Я беру этот код и просто использую в другой HTML+JS морде без изменений.Ок. skyANAА в твоём случае нужный код надо выдирать из view model и писать на его базе новую view model.Да, если случится что-то невероятное, то придётся. Но чудес не бывает, невероятное не случится. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2015, 17:09 |
|
||
|
Single page aplication
|
|||
|---|---|---|---|
|
#18+
hVosttАлексей КТы не поверишь, в моём случае всё будет точно так же. :-) ну а чего боишься тогда этих чёртовых обстракций? Я один раз нагородил абстракций, разгребал потом. Больше не хочу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2015, 17:10 |
|
||
|
Single page aplication
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... Ты не понял. В JS у нас есть model, которая инкапсулирует в себе все Ajax calls (IndexedDB calls, offline calls). Это набор js-"классов". Я беру этот код и просто использую в другой HTML+JS морде без изменений.Ок. skyANAА в твоём случае нужный код надо выдирать из view model и писать на его базе новую view model.Да, если случится что-то невероятное, то придётся. Но чудес не бывает, невероятное не случится. :-)Помнится достаточно недавно за репозиторий спорили. Так что-то кроме SQL Server было для тебя невероятным :) Не зарекайся... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2015, 20:32 |
|
||
|
|

start [/forum/topic.php?fid=18&gotonew=1&tid=1356554]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
13ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
81ms |
get tp. blocked users: |
2ms |
| others: | 238ms |
| total: | 424ms |

| 0 / 0 |
