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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

Пустое.

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

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

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

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

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

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

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

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

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

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

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

Проблемы:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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