Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
Всем привет! Тут на работе возник спор. У нас есть DAL, есть BLL. Соответственно контроллеры общаются с BLL. Так вот в чем вопрос - методы BLL должны использовать классы Model и в контроллере конвертить ViewModel в Model или же стразу ViewModel? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2014, 20:49 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
T_STV, про ViewModel BLL ничего не знает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2014, 21:03 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
hVosttT_STV, про ViewModel BLL ничего не знает. Вот и я это говорю. ViewModel - это уже клиентская часть. но мне говорят нафига мы будем лишние движения делать, проще сразу из BLL вытаскивать ViewModel. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2014, 21:13 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
T_STVВот и я это говорю. ViewModel - это уже клиентская часть. но мне говорят нафига мы будем лишние движения делать, проще сразу из BLL вытаскивать ViewModel. ох огребёте же потом проблем... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2014, 21:16 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
hVosttT_STVВот и я это говорю. ViewModel - это уже клиентская часть. но мне говорят нафига мы будем лишние движения делать, проще сразу из BLL вытаскивать ViewModel. ох огребёте же потом проблем... Ещё не совсем поздно всё исправить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2014, 21:27 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
hVosttпро ViewModel BLL ничего не знает. Хорошо бы, вот только половина выборок создаются именно для View. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 13:50 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
ПарамонhVosttпро ViewModel BLL ничего не знает. Хорошо бы, вот только половина выборок создаются именно для View. так чего мелочиться, отдавайте из BLL сразу JSON ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 14:14 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
hVosttтак чего мелочиться, отдавайте из BLL сразу JSON hVosttох огребёте же потом проблем... Можно описание проблем с которыми придется столкнутся? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 14:20 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
Парамон, зависимость. при использовании отдельных ViewModel, точка зависимости V-M будет сосредоточена исключительно в контроллерах. если пойти дальше, то и вообще в маппере. кода конечно больше, но контроля и возможностей при этом больше. на ViewModel можно безпрепятственно вешать разные атрибуты, влияющие на отображение, генерацию HTML-кода (UIHint, например), клиентскую валидацию, модель-байндинги всякие. на BLL-классы эти вещи вешать категорически нельзя. а кто так делает, культяпки на плаху и долой их ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 15:03 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
Парамон, а проблемы начнут сразу же возникать на предмет, где же этот нужный с*ка-класс определён, и рыскать по моделям, а не найдя в BLL. классно, чо. некоторые отдельные привыкли считать, что программист намертво привязан к своему проекту и у него фантастически феноменальная память. на счёт того, что программист человек, его могут уволить и заменить другим, или он просто подзабудет детали реализации, особо не заморачиваются. главное быстрей быстрей что-нибудь выпустить, чтобы хоть как-то ворочалось ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 15:06 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
hVosttкультяпки на плаху hVosttрыскать по моделям hVosttнекоторые отдельные привыкли считать Пустое. hVosttпри использовании отдельных ViewModel, точка зависимости V-M будет сосредоточена исключительно в контроллерах Зачем? Каким образом в контроллере появятся нужные данные из БЛ? Тянуть всю модель и мапить? Давай ближе к практике. Допустим есть грид, который отображает некий срез данных. Делаю для него модель (viewmodel GridItem). В слое BL, добавлю метод вроде List<GridItem> GetMyItems(bool isActive). Как предлагаешь это реализовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 15:41 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
ПарамонДавай ближе к практике. Допустим есть грид, который отображает некий срез данных. Делаю для него модель (viewmodel GridItem). В слое BL, добавлю метод вроде List<GridItem> GetMyItems(bool isActive). Как предлагаешь это реализовать? от эменно, хороший пример! во вью у меня генератор грида, который берёт из модели GridItem набор полей, распределяя их по колонкам. порядок следования, заголовок и описание для колонки берётся из атрибута Display. можно ли фильтровать, оттуда же. можно ли сортировать по полю или нет, к примеру, берётся из кастомного атрибута Sort... ну и так далее. тянуть всю модель и мапить. в чём проблема-то? Mapper.Map<IEnumerable<SomeDto>, Collection<SomeViewModel>>(source) эта сколька ж буков! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 15:49 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
Парамон, на счёт срезов, выбор модели в абсолютном приоритете. если срезы предполагают рассчёты данных на стороне сервера, будет Dto для среза. и не надо экономить, вытаскивая модель. если получается так, что модели пухлые, из не одного десятка полей состоят, то пинать надо ногами горе-архитектора. прям под зад. сильно пинать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 15:52 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
hVosttтянуть всю модель и мапить. в чём проблема-то? Mapper.Map<IEnumerable<SomeDto>, Collection<SomeViewModel>>(source) эта сколька ж буков! Проблемы: 1. Дублирование. SomeDto создан специально для среза, фактически для View, то есть дубль ViewModel. Лишняя сущность. 2. Лишний код. Маппинг и другие, совершенно ненужные телодвижения. 3. Производительность. Если тянуть модель целиком. Пинать архитекторов можешь и дальше, пока архитекторы тебя сами не пнут ) 4. Проблемы с List<GridItem> GetMyItems(bool isActive) пока не ясны ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 16:13 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
Парамон1. Дублирование. SomeDto создан специально для среза, фактически для View, то есть дубль ViewModel. Лишняя сущность. 2. Лишний код. Маппинг и другие, совершенно ненужные телодвижения. 3. Производительность. Если тянуть модель целиком. Пинать архитекторов можешь и дальше, пока архитекторы тебя сами не пнут ) не обижайся, но аргументы на уровне школьника. 1) это не дублирование: у DTO и у ViewModel совершенно разные задачи. это только в шарашкиных конторах бывают программисты-админы-заправлялщики-принтеров-подключальщики-мышей-меняльщики-обоев-на-рабочем-столе в одном лице. и точно также в шарашкиных конторах не умеют увидеть разницу между DTO и ViewModel. 2) маппинг как раз создан для облегчения непосильного труда ленивых программистов, и "лишние" телодвижения окупятся рано или поздно с лихвой. 3) бред какой-то по поводу производительности. а вот архитекторов по ходу набирают откуда попало и хорошо, если им вообще платят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 16:55 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
ПарамонList<GridItem> GetMyItems(bool isActive) во-первых, за использование List как типа возврата, по рукам! во-вторых, понятие "Grid" есть только во вью, и то: сегодня грид, а завтра красивая адаптивная плитка. в этом и смысл. BLL по барабану должно быть в каком виде будут отображены данные. он не подстраивается под View. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 17:00 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
hVosttне обижайся, но аргументы на уровне школьника. Я не обижаюсь на блаженных ) hVostt2) маппинг как раз создан для облегчения непосильного труда ленивых программистов, и "лишние" телодвижения окупятся рано или поздно с лихвой. Для решения проблем, которые сам и создал на ровном месте ). Остальное в том же стиле ) hVosttво-первых, за использование List как типа возврата, по рукам! За ответы без аргументов, по голове ) hVosttBLL по барабану должно быть в каком виде будут отображены данные. он не подстраивается под View. Заказчик хочет определенный функционал с определенным дизайном. Если пляшем от этого, значит BLL подстраивается под View. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 17:29 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
Парамон, дело ваше. хороший BLL не подстраивается под View. это просто-напросто не нужно. в конце концов, если вообще не писать BLL и не использовать всякие там глупые паттерны, будет ещё раз в 10 быстрей. что может быть быстрее лапши? поражаете вы меня ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 17:35 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
Парамон, а как Вы думаете почему вообще разделяют Model и ViewModel? Например у меня в маленьком проекте одни и те же классы бизнес-логики используются как в десктоп админке, в MVC приложении, в API сервисе для интеграции с внешними системами, так и в сервисе для мобильных клиентов. То есть части одной и той же доменной модели доступны абсолютно разным представлениям. Вам оно может быть и не надо сейчас, но подумайте, что если завтра заказчик к сайту захочет ещё и сервис, отдающий JSON его партнёрам, а послезавтра ещё и экспортировать и ипортировать данные в формате XML? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 17:52 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
hVosttв конце концов, если вообще не писать BLL и не использовать всякие там глупые паттерны, будет ещё раз в 10 быстрей. что может быть быстрее лапши?+1 На фига вообще DAL, BLL? Из грида сразу в БД, фигли. Всего-то надо SqlDataSource прописать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 17:54 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
А вообще такие вопросы конечно доставляют. Сложно что-ли определение MVC (model-view-controller) хотя бы на Википедии прочитать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 17:59 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
T_STVТак вот в чем вопрос - методы BLL должны использовать классы Model и в контроллере конвертить ViewModel в Model или же стразу ViewModel?Пройдёмся по определениям:ВикипедиЯ - Модель (англ. Model ). Модель предоставляет знания: данные и методы работы с этими данными, реагирует на запросы, изменяя своё состояние. Не содержит информации, как эти знания можно визуализировать . ...в объектно-ориентированном программировании используется активная модель MVC, где модель — это не только совокупность кода доступа к данным и СУБД, а вся бизнес-логика , следует отметить о возможности модели инкапсулировать в себе другие модели... - Модель представления (англ. View Model ) является , с одной стороны, абстракцией Представления , а с другой, предоставляет обёртку данных из Модели, которые подлежат связыванию. То есть, она содержит Модель, которая преобразована к Представлению , а также содержит в себе команды, которыми может пользоваться Представление, чтобы влиять на Модель. Ответ, думаю, очевиден. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 18:08 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
skyANAПарамон, а как Вы думаете почему вообще разделяют Model и ViewModel? Понятие Model зависит от контекста, а ViewModel уже как то связана с View, логично? ) skyANAНапример у меня в маленьком проекте одни и те же классы бизнес-логики используются как в десктоп админке, в MVC приложении, в API сервисе для интеграции с внешними системами, так и в сервисе для мобильных клиентов. То есть части одной и той же доменной модели доступны абсолютно разным представлениям. Вам оно может быть и не надо сейчас, но подумайте, что если завтра заказчик к сайту захочет ещё и сервис, отдающий JSON его партнёрам, а послезавтра ещё и экспортировать и ипортировать данные в формате XML? Для каждой выборки свой dto? А потом оно мапится в свои копии ака ViewModels? Вот и представь, что в API сервисе нужно на одно поле меньше, значит в топку твой dto. А завтра в десктоп админке нужно приджойнить еще табличку, и где тут у нас "те же классы бизнес-логики"? Делаем новые, получаем перегруженные библиотеки с неявной ответственностью. Или может быть, у вас все клиенты модели с идентичной и неизменной логикой? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 18:30 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
skyANAНа фига вообще DAL, BLL? Из грида сразу в БД, фигли. Всего-то надо SqlDataSource прописать. Вот кстати в ObjectDataSource по идее что передавать нужно? А GridView вообще отлично IQueryable кушает, это нормально? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 18:39 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
ПарамонДля каждой выборки свой dto? А потом оно мапится в свои копии ака ViewModels? Вот и представь, что в API сервисе нужно на одно поле меньше, значит в топку твой dto. А завтра в десктоп админке нужно приджойнить еще табличку, и где тут у нас "те же классы бизнес-логики"? Делаем новые, получаем перегруженные библиотеки с неявной ответственностью. Или может быть, у вас все клиенты модели с идентичной и неизменной логикой? ) даже не смешно. что за детский лепет? какое ещё "на одно поле меньше"? что чушь вообще? как это относится к программированию? DTO не мапится в "свою копию". оно мапится во ViewModel. и их полная идентичность -- это лишь частный случай, который не даёт право подсовывать DTO вместо ViewModel. Model >= ViewModel, и не стоит делать "узкие кортежи" ради призрачной производительности. это глупо. выигрыша даже в 10мс вы не получите. ORM умеет офигенно кешировать. если мало, делается агрессивное кеширование там где это требуется. кстати, где это требуется, кортежи не помогут. короче пппц. страшно представить что вы там накуралесили с такими "идеями". учите матчасть. не ипайте мозг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 19:39 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=38547410&tid=1357705]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 258ms |
| total: | 387ms |

| 0 / 0 |
