Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / BLL работает с Model или ViewModel? / 25 сообщений из 109, страница 1 из 5
02.02.2014, 20:49
    #38546535
T_STV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLL работает с Model или ViewModel?
Всем привет! Тут на работе возник спор. У нас есть DAL, есть BLL. Соответственно контроллеры общаются с BLL. Так вот в чем вопрос - методы BLL должны использовать классы Model и в контроллере конвертить ViewModel в Model или же стразу ViewModel?
...
Рейтинг: 0 / 0
02.02.2014, 21:03
    #38546550
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLL работает с Model или ViewModel?
T_STV,

про ViewModel BLL ничего не знает.
...
Рейтинг: 0 / 0
02.02.2014, 21:13
    #38546557
T_STV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLL работает с Model или ViewModel?
hVosttT_STV,

про ViewModel BLL ничего не знает.
Вот и я это говорю. ViewModel - это уже клиентская часть. но мне говорят нафига мы будем лишние движения делать, проще сразу из BLL вытаскивать ViewModel.
...
Рейтинг: 0 / 0
02.02.2014, 21:16
    #38546560
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLL работает с Model или ViewModel?
T_STVВот и я это говорю. ViewModel - это уже клиентская часть. но мне говорят нафига мы будем лишние движения делать, проще сразу из BLL вытаскивать ViewModel.

ох огребёте же потом проблем...
...
Рейтинг: 0 / 0
02.02.2014, 21:27
    #38546579
T_STV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLL работает с Model или ViewModel?
hVosttT_STVВот и я это говорю. ViewModel - это уже клиентская часть. но мне говорят нафига мы будем лишние движения делать, проще сразу из BLL вытаскивать ViewModel.

ох огребёте же потом проблем...
Ещё не совсем поздно всё исправить
...
Рейтинг: 0 / 0
03.02.2014, 13:50
    #38547144
Парамон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLL работает с Model или ViewModel?
hVosttпро ViewModel BLL ничего не знает.
Хорошо бы, вот только половина выборок создаются именно для View.
...
Рейтинг: 0 / 0
03.02.2014, 14:14
    #38547179
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLL работает с Model или ViewModel?
ПарамонhVosttпро ViewModel BLL ничего не знает.
Хорошо бы, вот только половина выборок создаются именно для View.

так чего мелочиться, отдавайте из BLL сразу JSON
...
Рейтинг: 0 / 0
03.02.2014, 14:20
    #38547194
Парамон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLL работает с Model или ViewModel?
hVosttтак чего мелочиться, отдавайте из BLL сразу JSON

hVosttох огребёте же потом проблем...


Можно описание проблем с которыми придется столкнутся?
...
Рейтинг: 0 / 0
03.02.2014, 15:03
    #38547269
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLL работает с Model или ViewModel?
Парамон,

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

кода конечно больше, но контроля и возможностей при этом больше. на ViewModel можно безпрепятственно вешать разные атрибуты, влияющие на отображение, генерацию HTML-кода (UIHint, например), клиентскую валидацию, модель-байндинги всякие.

на BLL-классы эти вещи вешать категорически нельзя. а кто так делает, культяпки на плаху и долой их
...
Рейтинг: 0 / 0
03.02.2014, 15:06
    #38547277
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLL работает с Model или ViewModel?
Парамон,

а проблемы начнут сразу же возникать на предмет, где же этот нужный с*ка-класс определён, и рыскать по моделям, а не найдя в BLL. классно, чо.

некоторые отдельные привыкли считать, что программист намертво привязан к своему проекту и у него фантастически феноменальная память. на счёт того, что программист человек, его могут уволить и заменить другим, или он просто подзабудет детали реализации, особо не заморачиваются. главное быстрей быстрей что-нибудь выпустить, чтобы хоть как-то ворочалось
...
Рейтинг: 0 / 0
03.02.2014, 15:41
    #38547331
Парамон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLL работает с Model или ViewModel?
hVosttкультяпки на плаху

hVosttрыскать по моделям

hVosttнекоторые отдельные привыкли считать

Пустое.

hVosttпри использовании отдельных ViewModel, точка зависимости V-M будет сосредоточена исключительно в контроллерах
Зачем?
Каким образом в контроллере появятся нужные данные из БЛ? Тянуть всю модель и мапить?

Давай ближе к практике.
Допустим есть грид, который отображает некий срез данных. Делаю для него модель (viewmodel GridItem).
В слое BL, добавлю метод вроде List<GridItem> GetMyItems(bool isActive).

Как предлагаешь это реализовать?
...
Рейтинг: 0 / 0
03.02.2014, 15:49
    #38547345
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLL работает с Model или ViewModel?
ПарамонДавай ближе к практике.
Допустим есть грид, который отображает некий срез данных. Делаю для него модель (viewmodel GridItem).
В слое BL, добавлю метод вроде List<GridItem> GetMyItems(bool isActive).

Как предлагаешь это реализовать?

от эменно, хороший пример! во вью у меня генератор грида, который берёт из модели GridItem набор полей, распределяя их по колонкам. порядок следования, заголовок и описание для колонки берётся из атрибута Display. можно ли фильтровать, оттуда же. можно ли сортировать по полю или нет, к примеру, берётся из кастомного атрибута Sort... ну и так далее.

тянуть всю модель и мапить. в чём проблема-то?

Mapper.Map<IEnumerable<SomeDto>, Collection<SomeViewModel>>(source)

эта сколька ж буков!
...
Рейтинг: 0 / 0
03.02.2014, 15:52
    #38547349
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLL работает с Model или ViewModel?
Парамон,

на счёт срезов, выбор модели в абсолютном приоритете. если срезы предполагают рассчёты данных на стороне сервера, будет Dto для среза. и не надо экономить, вытаскивая модель. если получается так, что модели пухлые, из не одного десятка полей состоят, то пинать надо ногами горе-архитектора. прям под зад. сильно пинать.
...
Рейтинг: 0 / 0
03.02.2014, 16:13
    #38547373
Парамон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLL работает с Model или ViewModel?
hVosttтянуть всю модель и мапить. в чём проблема-то?

Mapper.Map<IEnumerable<SomeDto>, Collection<SomeViewModel>>(source)

эта сколька ж буков!

Проблемы:

1. Дублирование.
SomeDto создан специально для среза, фактически для View, то есть дубль ViewModel. Лишняя сущность.

2. Лишний код.
Маппинг и другие, совершенно ненужные телодвижения.

3. Производительность.
Если тянуть модель целиком. Пинать архитекторов можешь и дальше, пока архитекторы тебя сами не пнут )

4. Проблемы с List<GridItem> GetMyItems(bool isActive) пока не ясны )
...
Рейтинг: 0 / 0
03.02.2014, 16:55
    #38547410
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLL работает с Model или ViewModel?
Парамон1. Дублирование.
SomeDto создан специально для среза, фактически для View, то есть дубль ViewModel. Лишняя сущность.

2. Лишний код.
Маппинг и другие, совершенно ненужные телодвижения.

3. Производительность.
Если тянуть модель целиком. Пинать архитекторов можешь и дальше, пока архитекторы тебя сами не пнут )

не обижайся, но аргументы на уровне школьника.
1) это не дублирование: у DTO и у ViewModel совершенно разные задачи. это только в шарашкиных конторах бывают программисты-админы-заправлялщики-принтеров-подключальщики-мышей-меняльщики-обоев-на-рабочем-столе в одном лице. и точно также в шарашкиных конторах не умеют увидеть разницу между DTO и ViewModel.
2) маппинг как раз создан для облегчения непосильного труда ленивых программистов, и "лишние" телодвижения окупятся рано или поздно с лихвой.
3) бред какой-то по поводу производительности. а вот архитекторов по ходу набирают откуда попало и хорошо, если им вообще платят.
...
Рейтинг: 0 / 0
03.02.2014, 17:00
    #38547421
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLL работает с Model или ViewModel?
ПарамонList<GridItem> GetMyItems(bool isActive)

во-первых, за использование List как типа возврата, по рукам!

во-вторых, понятие "Grid" есть только во вью, и то: сегодня грид, а завтра красивая адаптивная плитка. в этом и смысл. BLL по барабану должно быть в каком виде будут отображены данные. он не подстраивается под View.
...
Рейтинг: 0 / 0
03.02.2014, 17:29
    #38547461
Парамон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLL работает с Model или ViewModel?
hVosttне обижайся, но аргументы на уровне школьника.

Я не обижаюсь на блаженных )

hVostt2) маппинг как раз создан для облегчения непосильного труда ленивых программистов, и "лишние" телодвижения окупятся рано или поздно с лихвой.
Для решения проблем, которые сам и создал на ровном месте ).
Остальное в том же стиле )

hVosttво-первых, за использование List как типа возврата, по рукам!
За ответы без аргументов, по голове )
hVosttBLL по барабану должно быть в каком виде будут отображены данные. он не подстраивается под View.

Заказчик хочет определенный функционал с определенным дизайном. Если пляшем от этого, значит BLL подстраивается под View.
...
Рейтинг: 0 / 0
03.02.2014, 17:35
    #38547473
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLL работает с Model или ViewModel?
Парамон,

дело ваше. хороший BLL не подстраивается под View. это просто-напросто не нужно. в конце концов, если вообще не писать BLL и не использовать всякие там глупые паттерны, будет ещё раз в 10 быстрей. что может быть быстрее лапши?

поражаете вы меня
...
Рейтинг: 0 / 0
03.02.2014, 17:52
    #38547501
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLL работает с Model или ViewModel?
Парамон, а как Вы думаете почему вообще разделяют Model и ViewModel?

Например у меня в маленьком проекте одни и те же классы бизнес-логики используются как в десктоп админке, в MVC приложении, в API сервисе для интеграции с внешними системами, так и в сервисе для мобильных клиентов.
То есть части одной и той же доменной модели доступны абсолютно разным представлениям.

Вам оно может быть и не надо сейчас, но подумайте, что если завтра заказчик к сайту захочет ещё и сервис, отдающий JSON его партнёрам, а послезавтра ещё и экспортировать и ипортировать данные в формате XML?
...
Рейтинг: 0 / 0
03.02.2014, 17:54
    #38547505
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLL работает с Model или ViewModel?
hVosttв конце концов, если вообще не писать BLL и не использовать всякие там глупые паттерны, будет ещё раз в 10 быстрей. что может быть быстрее лапши?+1

На фига вообще DAL, BLL? Из грида сразу в БД, фигли. Всего-то надо SqlDataSource прописать.
...
Рейтинг: 0 / 0
03.02.2014, 17:59
    #38547510
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLL работает с Model или ViewModel?
А вообще такие вопросы конечно доставляют. Сложно что-ли определение MVC (model-view-controller) хотя бы на Википедии прочитать?
...
Рейтинг: 0 / 0
03.02.2014, 18:08
    #38547531
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLL работает с Model или ViewModel?
T_STVТак вот в чем вопрос - методы BLL должны использовать классы Model и в контроллере конвертить ViewModel в Model или же стразу ViewModel?Пройдёмся по определениям:ВикипедиЯ - Модель (англ. Model ). Модель предоставляет знания: данные и методы работы с этими данными, реагирует на запросы, изменяя своё состояние. Не содержит информации, как эти знания можно визуализировать .
...в объектно-ориентированном программировании используется активная модель MVC, где модельэто не только совокупность кода доступа к данным и СУБД, а вся бизнес-логика , следует отметить о возможности модели инкапсулировать в себе другие модели...

- Модель представления (англ. View Model ) является , с одной стороны, абстракцией Представления , а с другой, предоставляет обёртку данных из Модели, которые подлежат связыванию. То есть, она содержит Модель, которая преобразована к Представлению , а также содержит в себе команды, которыми может пользоваться Представление, чтобы влиять на Модель.
Ответ, думаю, очевиден.
...
Рейтинг: 0 / 0
03.02.2014, 18:30
    #38547571
Парамон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLL работает с Model или ViewModel?
skyANAПарамон, а как Вы думаете почему вообще разделяют Model и ViewModel?

Понятие Model зависит от контекста, а ViewModel уже как то связана с View, логично? )

skyANAНапример у меня в маленьком проекте одни и те же классы бизнес-логики используются как в десктоп админке, в MVC приложении, в API сервисе для интеграции с внешними системами, так и в сервисе для мобильных клиентов.
То есть части одной и той же доменной модели доступны абсолютно разным представлениям.

Вам оно может быть и не надо сейчас, но подумайте, что если завтра заказчик к сайту захочет ещё и сервис, отдающий JSON его партнёрам, а послезавтра ещё и экспортировать и ипортировать данные в формате XML?

Для каждой выборки свой dto? А потом оно мапится в свои копии ака ViewModels?
Вот и представь, что в API сервисе нужно на одно поле меньше, значит в топку твой dto. А завтра в десктоп админке нужно приджойнить еще табличку, и где тут у нас "те же классы бизнес-логики"? Делаем новые, получаем перегруженные библиотеки с неявной ответственностью.

Или может быть, у вас все клиенты модели с идентичной и неизменной логикой? )
...
Рейтинг: 0 / 0
03.02.2014, 18:39
    #38547587
Парамон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLL работает с Model или ViewModel?
skyANAНа фига вообще DAL, BLL? Из грида сразу в БД, фигли. Всего-то надо SqlDataSource прописать.
Вот кстати в ObjectDataSource по идее что передавать нужно? А GridView вообще отлично IQueryable кушает, это нормально?
...
Рейтинг: 0 / 0
03.02.2014, 19:39
    #38547658
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BLL работает с Model или ViewModel?
ПарамонДля каждой выборки свой dto? А потом оно мапится в свои копии ака ViewModels?
Вот и представь, что в API сервисе нужно на одно поле меньше, значит в топку твой dto. А завтра в десктоп админке нужно приджойнить еще табличку, и где тут у нас "те же классы бизнес-логики"? Делаем новые, получаем перегруженные библиотеки с неявной ответственностью.

Или может быть, у вас все клиенты модели с идентичной и неизменной логикой? )

даже не смешно. что за детский лепет? какое ещё "на одно поле меньше"? что чушь вообще? как это относится к программированию?

DTO не мапится в "свою копию". оно мапится во ViewModel. и их полная идентичность -- это лишь частный случай, который не даёт право подсовывать DTO вместо ViewModel.

Model >= ViewModel, и не стоит делать "узкие кортежи" ради призрачной производительности. это глупо. выигрыша даже в 10мс вы не получите. ORM умеет офигенно кешировать. если мало, делается агрессивное кеширование там где это требуется. кстати, где это требуется, кортежи не помогут.

короче пппц. страшно представить что вы там накуралесили с такими "идеями".

учите матчасть. не ипайте мозг.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / BLL работает с Model или ViewModel? / 25 сообщений из 109, страница 1 из 5
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]