Этот баннер — требование Роскомнадзора для исполнения 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 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
hVosttDTO не мапится в "свою копию". оно мапится во ViewModel. и их полная идентичность -- это лишь частный случай, который не даёт право подсовывать DTO вместо ViewModel. Кроме как "дает право" и "так нужно" ничего внятного от тебя не слышно. Начнем с матчасти. ) Для каких нужд мы создаем DTO? hVosttModel >= ViewModel, и не стоит делать "узкие кортежи" ради призрачной производительности. это глупо. выигрыша даже в 10мс вы не получите. ORM умеет офигенно кешировать. если мало, делается агрессивное кеширование там где это требуется. кстати, где это требуется, кортежи не помогут Истинные джедаи всю модель выгружают в кеш, целиком. )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 20:02 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
Парамон, мой репо может юзаться другими платформами, например, впф. Зачем мне в впф твои вью модели с привинченными атрибутами валидации? Ты предлагаешь в впф тянуть референс на мвц? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 20:17 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
hVostt, МСУ, skyANA А как быть если мне надо достать джоин 2х таблиц Table1 и Table2? как решается эта задача, учитывая что у меня только 2 класса в BLL Table1 и Table2? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 20:32 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
T_STVhVostt, МСУ, skyANA А как быть если мне надо достать джоин 2х таблиц Table1 и Table2? как решается эта задача, учитывая что у меня только 2 класса в BLL Table1 и Table2? Да хоть три Код: c# 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 20:41 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
Парамон4. Проблемы с List<GridItem> GetMyItems(bool isActive) пока не ясны ) Очень и очень плохая практика отдавать наружу реализацию списка, а не абстракцию (IList<T>, IEnumerable<T>). Абстракция описывает поведение, а список является реализацией этого поведения. Потребители могут захотеть иметь какую-то свою реализацию. Например, в впф мне нужна такая реализация - отслеживаемая коллекция ObservableCollection<T>. Поэтому, не нужно навязывать реализацию, правильнее отдать низкоуровневую абстракцию в угоду универсальности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 20:48 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
МСУT_STVhVostt, МСУ, skyANA А как быть если мне надо достать джоин 2х таблиц Table1 и Table2? как решается эта задача, учитывая что у меня только 2 класса в BLL Table1 и Table2? Да хоть три Код: c# 1. 2. 3. 4. 5. 6. А это разве не ViewModel? Этот класс нужен конкретному интерфейсу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 20:53 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
МСУПотребители могут захотеть иметь какую-то свою реализацию. Например, в впф мне нужна такая реализация - отслеживаемая коллекция ObservableCollection<T>. Поэтому, не нужно навязывать реализацию, правильнее отдать низкоуровневую абстракцию в угоду универсальности. List просто говорит мне, что это уже готовые к употреблению данные. МСУПарамон, мой репо может юзаться другими платформами, например, впф. Зачем мне в впф твои вью модели с привинченными атрибутами валидации? Ты предлагаешь в впф тянуть референс на мвц? В принципе валидация менятся не должна. Можно вью модели вынести в отдельню сборку, не суть, мне такой вариант тоже не по вкусу. Юзать один репо хорошо, в случае если впф и все остальные платформы имеют идентичную логику. На практике такое редко, обычно там покажи больше, здесь это лишнее и тд. В итоге для каждой платформы разные срезы данных, dto для сервиса это не dto для впф. Какой тогда профит от одной общей, избыточной библиотеки, если там каждый метод используется один раз? Ну разве что инкапсуляция ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 21:11 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
ПарамонskyANAПарамон, а как Вы думаете почему вообще разделяют Model и ViewModel? Понятие Model зависит от контекста, а ViewModel уже как то связана с View, логично? )Не увиливайте от ответа. Контекст в названии и начале топика определён ПарамонskyANAНапример у меня в маленьком проекте одни и те же классы бизнес-логики используются как в десктоп админке, в MVC приложении, в API сервисе для интеграции с внешними системами, так и в сервисе для мобильных клиентов. То есть части одной и той же доменной модели доступны абсолютно разным представлениям. Вам оно может быть и не надо сейчас, но подумайте, что если завтра заказчик к сайту захочет ещё и сервис, отдающий JSON его партнёрам, а послезавтра ещё и экспортировать и ипортировать данные в формате XML? Для каждой выборки свой dto?1. У меня в Domain Model нет DTO, а полноценные бизне-объекты. 2. Что есть каждая выборка? ПарамонА потом оно мапится в свои копии ака ViewModels?Да, это нормальная практика. Даже с примерами в книжках ПарамонВот и представь, что...Хорошо себе представляю, т.к. продукт развивается вместе с предметной областью и требованиями бизнеса . Не вижу проблем. P.S.: подумайте над тем, зачем я выделил жирным строчку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 22:18 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
ПарамонskyANAНа фига вообще DAL, BLL? Из грида сразу в БД, фигли. Всего-то надо SqlDataSource прописать. Вот кстати в ObjectDataSource по идее что передавать нужно? А GridView вообще отлично IQueryable кушает, это нормально?Не могу отвтеить, так как ни разу не пользовался ObjectDataSource и IQueryable в представление не пробрасывал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 22:20 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
ПарамонМСУПотребители могут захотеть иметь какую-то свою реализацию. Например, в впф мне нужна такая реализация - отслеживаемая коллекция ObservableCollection<T>. Поэтому, не нужно навязывать реализацию, правильнее отдать низкоуровневую абстракцию в угоду универсальности. List просто говорит мне, что это уже готовые к употреблению данные. МСУПарамон, мой репо может юзаться другими платформами, например, впф. Зачем мне в впф твои вью модели с привинченными атрибутами валидации? Ты предлагаешь в впф тянуть референс на мвц? В принципе валидация менятся не должна. Можно вью модели вынести в отдельню сборку, не суть, мне такой вариант тоже не по вкусу. Юзать один репо хорошо, в случае если впф и все остальные платформы имеют идентичную логику. На практике такое редко, обычно там покажи больше, здесь это лишнее и тд. В итоге для каждой платформы разные срезы данных, dto для сервиса это не dto для впф. Какой тогда профит от одной общей, избыточной библиотеки, если там каждый метод используется один раз? Ну разве что инкапсуляция )Без конкретики спорить не имеет смысла. О какой предметной области идёт речь? P.S.: лично я с избыточностью пока не сталкивался. Может потому, что не пытался запихнуть всё в ядро системы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 22:28 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
T_STVhVostt, МСУ, skyANA А как быть если мне надо достать джоин 2х таблиц Table1 и Table2? как решается эта задача, учитывая что у меня только 2 класса в BLL Table1 и Table2?А что лежит в этих таблицах? Как это связано с бизнес-логикой? Зачем делать джоин? Очень часто используют Object-Relational Mapping, чтобы из реляционных данных получить бизнес-сущность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 22:31 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
skyANA1. У меня в Domain Model нет DTO, а полноценные бизне-объекты. 2. Что есть каждая выборка? Выборка, это когда мне нужно выбрать только два поля модели из 5 свзязанных таблиц. Такое бывает? ПарамонP.S.: подумайте над тем, зачем я выделил жирным строчку. Не знаю, красивое предложение? ) skyANAНе могу отвтеить, так как ни разу не пользовался ObjectDataSource и IQueryable в представление не пробрасывал Вот пример ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 22:38 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
ПарамонskyANA1. У меня в Domain Model нет DTO, а полноценные бизне-объекты. 2. Что есть каждая выборка? Выборка, это когда мне нужно выбрать только два поля модели из 5 свзязанных таблиц. Такое бывает?Не припомню. Помню нужно было основную часть данных страницы вытащить из MongoDB, без компонентов и их настроек. А два поля из 5 таблиц. Нет, не было такого. А как Вы решаете такие задачи? SELECT прям в коде страницы выполняете? ПарамонskyANAP.S.: подумайте над тем, зачем я выделил жирным строчку. Не знаю, красивое предложение? )Не угадали ПарамонskyANAНе могу отвтеить, так как ни разу не пользовался ObjectDataSource и IQueryable в представление не пробрасывал Вот пример )А зачем он мне? Вам же был нужен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 22:50 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
skyANAА как Вы решаете такие задачи? SELECT прям в коде страницы выполняете? Делаю класс с нужными полями (для меня это dto и viewmodel в одном флаконе), и передаю куда нужно. На самом деле ViewModel я называю класс, который объединяет в себе несколько сущностей, нужных для комплексного представления. Типа этого. Код: c# 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 23:13 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
Парамон, и как он используется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 01:13 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
skyANAT_STVhVostt, МСУ, skyANA А как быть если мне надо достать джоин 2х таблиц Table1 и Table2? как решается эта задача, учитывая что у меня только 2 класса в BLL Table1 и Table2?А что лежит в этих таблицах? Как это связано с бизнес-логикой? Зачем делать джоин? Очень часто используют Object-Relational Mapping, чтобы из реляционных данных получить бизнес-сущность. Я имею в виду если мне в грид надо вынести джоин, чтобы пользователю было всё видо наглядно. А по поводу ORM - так у меня 2 объекта Table1 И Table2. Я же не буду тянуть всегда связь одной таблицы со всеми, на которые она ссылается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 10:13 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
T_STV, ещё раз: как это связано с бизнес-логикой? То есть пользователь работал себе с "плоскими" данными и тут бац, оказалось, что нагляднее выводить JOIN? Дайте больше конкретики: что в Table1, что в Table2? Почему на уровне DAL нельзя сделать JOIN и результат представить в виде объекта(ов) предметной области? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 10:24 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
skyANAT_STV, ещё раз: как это связано с бизнес-логикой? То есть пользователь работал себе с "плоскими" данными и тут бац, оказалось, что нагляднее выводить JOIN? Дайте больше конкретики: что в Table1, что в Table2? Почему на уровне DAL нельзя сделать JOIN и результат представить в виде объекта(ов) предметной области? Давайте так. Есть классы: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Мне в грид надо вывести: Product.Name | Category.Name ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 11:11 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
ПарамонList просто говорит мне, что это уже готовые к употреблению данные. List ни о чём таком не говорит. это эффективная коллекция для использования в реализации, но никак не для обмена данными. для обмена нужно использовать что-нибудь из следующего: IReadOnlyCollection<T> IReadOnlyList<T> IEnumerable<T> ICollection<T> IList<T> Collection<T> при чём экземпляр List проканает за любой из вышеописанных интерфейсов и обстракций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 11:35 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
T_STV, сразу бы так. А то Table1, Table2. ИМХО должно быть так: Код: c# 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 11:37 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
ПарамонВыборка, это когда мне нужно выбрать только два поля модели из 5 свзязанных таблиц. Такое бывает? это ярый олдскул. бывает, но нафиг не нужно. over 90% уверенности, что это можно качественно зарефакторить и убрать "грязь". работа с чистой Domain моделью, это очень и очень хорошая концепция. которая очень часто вступает в противоречие у людей, десятилетями привыкшими работать с чистым SQL (и которые наплодили столько говнокода, что по сей день не разгребсти). они берут теперь новые технологии (потому что, понимаешь, требование!) и продолжают колбасить в старом стиле, поклав на преимущства готовой к употреблению парадигмы. ладно бы ей было год-два от роду. так об этом столько написано-переписано, столько уже сказано-пересказано, столько человеко-часов опыта убито и выстрадано. но нет же. продолжают бубнить одно да потому что "производительность, бла-бла-бла...", "меньше кода, бла-бла-бла..." было б хоть чего общего с реальностью. нет. всё дело в закостенелости мышления и привычки. не надо придумывать никаких глупых отговорок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 11:43 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
hVosttList ни о чём таком не говорит. это эффективная коллекция для использования в реализации, но никак не для обмена данными. для обмена нужно использовать что-нибудь из следующего: IReadOnlyCollection<T> IReadOnlyList<T> IEnumerable<T> ICollection<T> IList<T> Collection<T> Опять "нужно", "должен", внятно объясни зачем. Допустим IEnumerable<T> может быть отложенный, но мне не нужен. Пресловутой реализации тоже не будет. skyANAПарамон, и как он используется? Передается во view. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 11:57 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
hVosttПарамонВыборка, это когда мне нужно выбрать только два поля модели из 5 свзязанных таблиц. Такое бывает? это ярый олдскул. бывает, но нафиг не нужно. over 90% уверенности, что это можно качественно зарефакторить и убрать "грязь". работа с чистой Domain моделью, это очень и очень хорошая концепция. Предлагаешь тащить данные на все поля 5 сущностей? Ты там чего укурился? Задача классическая, решается элементарно. Если мне нужно только Product.Name и Category.Name, я отдают Product с заполненными Name и Category.Name, остальное всё пустое. Тем самым из базы я тяну только 2 поля! Код: c# 1. 2. 3. 4. 5. 6. Хвост, ты меня просто поражаешь. Если структура такая (почему бы и нет) Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. тоже самое, я беру из базы только 2 поля, намаплимаю на свою расширенную модель ProductInfo и отдаю в выхлоп. public class ProductInfo { public Product Product {get;set;} public Category Category {get;set;} } Будут заполнены только ProductInfo.Product.Name и ProductInfo.Category.Name ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 12:01 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
hVosttэто ярый олдскул. бывает, но нафиг не нужно. over 90% уверенности, что это можно качественно зарефакторить и убрать "грязь". работа с чистой Domain моделью, это очень и очень хорошая концепция. которая очень часто вступает в противоречие у людей, десятилетями привыкшими работать с чистым SQL (и которые наплодили столько говнокода, что по сей день не разгребсти). они берут теперь новые технологии (потому что, понимаешь, требование!) и продолжают колбасить в старом стиле, поклав на преимущства готовой к употреблению парадигмы. ладно бы ей было год-два от роду. так об этом столько написано-переписано, столько уже сказано-пересказано, столько человеко-часов опыта убито и выстрадано. но нет же. продолжают бубнить одно да потому что "производительность, бла-бла-бла...", "меньше кода, бла-бла-бла..." было б хоть чего общего с реальностью. нет. всё дело в закостенелости мышления и привычки. не надо придумывать никаких глупых отговорок. Слезь с броневичка, не на митинге ) Нахватался умных слов, которые не совсем понимаешь. Что такое Domain модель в твоем понимании, какие у нее цели? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 12:07 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
ПарамонskyANAПарамон, и как он используется? Передается во view.А как данными заполняется? Напрямую из БД, минуя BLL и DAL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 12:13 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
мсущкотоже самое, я беру из базы только 2 поля, намаплимаю на свою расширенную модель ProductInfo и отдаю в выхлоп. public class ProductInfo { public Product Product {get;set;} public Category Category {get;set;} } Будут заполнены только ProductInfo.Product.Name и ProductInfo.Category.Name Можно пример кода как Вы достаёте только нужные поля? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 12:14 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
T_STVмсущкотоже самое, я беру из базы только 2 поля, намаплимаю на свою расширенную модель ProductInfo и отдаю в выхлоп. public class ProductInfo { public Product Product {get;set;} public Category Category {get;set;} } Будут заполнены только ProductInfo.Product.Name и ProductInfo.Category.Name Можно пример кода как Вы достаёте только нужные поля?За него это ORM делает :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 12:15 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
T_STV, а какие проблемы получить одним запросом данные для объекта сл. типа: Код: c# 1. 2. 3. 4. 5. 6. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 12:17 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
skyANAT_STV, а какие проблемы получить одним запросом данные для объекта сл. типа: Код: c# 1. 2. 3. 4. 5. 6. ? А зачем мне тянуть Категории если они мне например совсем не нужны. А если там будет 100 ссылок на другие сущности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 12:39 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
skyANAА как данными заполняется? Напрямую из БД, минуя BLL и DAL? DAL у меня это EF. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 12:43 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
ПарамонСлезь с броневичка, не на митинге ) Нахватался умных слов, которые не совсем понимаешь. Что такое Domain модель в твоем понимании, какие у нее цели? объектная модель, объединящая данные и поведение. и вообще говоришь умные вещи -- "нахватался умных слов" говоришь глупости -- "иди четай что умные люди пишут" при чем тут броневичок. просто аргументы "производительность" и "меньше кода" -- очевидная глупость. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 13:36 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
T_STVА зачем мне тянуть Категории если они мне например совсем не нужны. А если там будет 100 ссылок на другие сущности? добавьте после слова public и не парьте мозги. ваши категории будут подтягиваться только тогда, когда вы к ним обратитесь. есть и другие способы контроллировать количество получаемой информации. кроме того, на счёт этого особенно беспокоиться не нужно. откуда конкретный метод контроллера знает, что категории не нужны? это его не должно вообще парить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 13:39 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
hVosttдобавьте после слова public * .. слово virtual ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 13:39 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
hVosttT_STVА зачем мне тянуть Категории если они мне например совсем не нужны. А если там будет 100 ссылок на другие сущности? добавьте после слова public и не парьте мозги. ваши категории будут подтягиваться только тогда, когда вы к ним обратитесь. есть и другие способы контроллировать количество получаемой информации. кроме того, на счёт этого особенно беспокоиться не нужно. откуда конкретный метод контроллера знает, что категории не нужны? это его не должно вообще парить. BLL у нас будет возвращать IEnumerable, а не IQueryable. Что значит будут подтягиваться когда нужны? А контроллер я пишу для конкретного View и я знаю что надо во вью а что нет (по крайней мере на текущий момент). А нафига я буду вытаскивать сотни сущностей, если они не используются? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 13:51 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
T_STVмсущкотоже самое, я беру из базы только 2 поля, намаплимаю на свою расширенную модель ProductInfo и отдаю в выхлоп. public class ProductInfo { public Product Product {get;set;} public Category Category {get;set;} } Будут заполнены только ProductInfo.Product.Name и ProductInfo.Category.Name Можно пример кода как Вы достаёте только нужные поля? Для такого класса Код: c# 1. 2. 3. 4. 5. Код: c# 1. 2. Для такого класса Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Код: c# 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 13:52 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
T_STVBLL у нас будет возвращать IEnumerable, а не IQueryable. Что значит будут подтягиваться когда нужны? А контроллер я пишу для конкретного View и я знаю что надо во вью а что нет (по крайней мере на текущий момент). А нафига я буду вытаскивать сотни сущностей, если они не используются? еще раз повторю. добавите слово virtual. тащиться ничего не будет. как только вы обратитесь к полю Category, прокси-класс вытащит вам категорию из базы. всё просто. а все эти поигрушки с заменой IQueryable и IEnumerable действительно бессмысленные (ооо! я спрятал DAL и его IQueryable за IEnumerable... даже не смешно). хотите коллекцию? дайте честную коллекцию вида IReadOnlyCollection/ICollection/IList/etc. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 14:00 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
T_STVskyANAT_STV, а какие проблемы получить одним запросом данные для объекта сл. типа: Код: c# 1. 2. 3. 4. 5. 6. ? А зачем мне тянуть Категории если они мне например совсем не нужны.Выбрать имя категории подзапросом по её идентифкатору - это не проблема. Проблема когда от стороннего сервиса прилетает один идентификатор, а чтобы отобразить имя, то нужно посылать отдельный запрос этому сервису. Хотя и это не проблема: загружаем одним запросом справочники, кладём в кэш и дальше ничего тянуть не надо. T_STVА если там будет 100 ссылок на другие сущности?Вы сейчас на ходу придумываете, или у Вас реально в таблице 100 внешних ключей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 14:01 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
skyANA, это из области "нафига казе баян?". использовать ОРМ, чтобы потом всеми силами бороться с ним ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 14:03 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
hVostt, интерфейс IReadOnlyCollection появился в .Net Framework 4.5 :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 14:03 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
hVosttобъектная модель, объединящая данные и поведение Заучивание предложений из букваря конечно полезно, но хорошо бы и понимание включать. ) hVosttпросто аргументы "производительность" и "меньше кода" -- очевидная глупость. Вопросов больше нет ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 14:04 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
hVosttskyANA, это из области "нафига казе баян?". использовать ОРМ, чтобы потом всеми силами бороться с ним А кто и где использует ОРМ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 14:04 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
ПарамонskyANAА как данными заполняется? Напрямую из БД, минуя BLL и DAL? DAL у меня это EF.EF напрямую дёргается в контроллере (в коде страницы)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 14:06 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
skyANAhVostt, интерфейс IReadOnlyCollection появился в .Net Framework 4.5 :) знамо. но это правильный интерфейс, жаль что так поздно появился. ПарамонЗаучивание предложений из букваря конечно полезно, но хорошо бы и понимание включать. ) что не так с пониманием? личный опыт с использованием классов BLL во View был. давненько, даж удивлялся, нафига люди себе лишний гемморой изобретают, какие-то вью модели пишут. вот ведь придурки. собственно, тепреь опыта стало больше, понимание пришло вместе с ним. как я уже сказал, площадь зависимости должна быть как можно меньше. это играет очень большую роль при разработке и сопровождении. на производительность вытягивание целых моделей не влияет, проверено опытным путём. больше кода? вовсе наоборот. разрабатывать и дорабатывать вью можно полностью независимо от BLL. из BLL во вью не попадают технические поля, и данные которые там просто не нужны. только то, что нужно для отображения. каждая вью берёт своё. а из BLL берётся модель. целиком. никаких проблем. если же ваш командный опыт показывает обратное, ну чтож... дело сугубо ваше. но я лично так рассуждал года 3 назад. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 14:12 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
skyANAEF напрямую дёргается в контроллере (в коде страницы)? Бывает в контроллере, бывает выношу в отдельные классы или сборки, зависит от. Какую проблематичность в этом наблюдаете? Начнем с кода страницы. ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 14:16 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
ПарамонskyANAEF напрямую дёргается в контроллере (в коде страницы)? Бывает в контроллере, бывает выношу в отдельные классы или сборки, зависит от. Какую проблематичность в этом наблюдаете? Начнем с кода страницы. ) Пецдетс... Друх, яд стоит на полке. Как можно писать код с такой кашей в голове, как у тебя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 14:21 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
hVosttразрабатывать и дорабатывать вью можно полностью независимо от BLL. Что значит разрабатывать и дорабатывать вью и какие проблемы возникают без DDD подхода? hVosttиз BLL во вью не попадают технические поля, и данные которые там просто не нужны. только то, что нужно для отображения. каждая вью берёт своё. а из BLL берётся модель. целиком Что случится если во вью попадут эти данные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 14:27 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
мсущкоПецдетс... Друх, яд стоит на полке. Как можно писать код с такой кашей в голове, как у тебя? Вы меня вразумите, объясните что да почему, яд и каша это не метод ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 14:31 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
ПарамонЧто значит разрабатывать и дорабатывать вью и какие проблемы возникают без DDD подхода? это значит, что изменения в BLL придётся ловить сначало в контроллерах, потом во вью. спрашивается. оно вам надо? ПарамонЧто случится если во вью попадут эти данные? может случиться, что они могут быть отображены, а также могут быть испорчены, при возврате из вью. например, генераторы форм, которые берут тип модели и её атрибуты -- сразу отпадают. отпадает всякие гарантии, что во вью находится исключительно только то, что ей надо и ничего лишнего. лапша не лапша... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 14:39 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
hVosttПарамонЧто значит разрабатывать и дорабатывать вью и какие проблемы возникают без DDD подхода? это значит, что изменения в BLL придётся ловить сначало в контроллерах, потом во вью. спрашивается. оно вам надо? Если ViewModel приходит сразу из БЛ, что там ловить в контроллере и вью? hVosttможет случиться, что они могут быть отображены, а также могут быть испорчены, при возврате из вью. Неубедительно. Отображено может быть только то что я хотел показать, испортить можно и в БЛ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 14:57 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
ПарамонskyANAEF напрямую дёргается в контроллере (в коде страницы)? Бывает в контроллере, бывает выношу в отдельные классы или сборки, зависит от.От чего? От настроения? Через год спрашивают: почему тут такой подход, тут сякой, тут пятый, тут десятый? Ответ: нууу... настроение было такое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 15:00 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
мсущкоДля такого класса Код: c# 1. 2. 3. 4. 5. Это разве не ViewModel? У Вас в BLL кастомный класс, который нужен конкретной реализации интерфейса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 15:03 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
skyANAT_STVпропущено... А зачем мне тянуть Категории если они мне например совсем не нужны.Выбрать имя категории подзапросом по её идентифкатору - это не проблема. Проблема когда от стороннего сервиса прилетает один идентификатор, а чтобы отобразить имя, то нужно посылать отдельный запрос этому сервису. Хотя и это не проблема: загружаем одним запросом справочники, кладём в кэш и дальше ничего тянуть не надо. T_STVА если там будет 100 ссылок на другие сущности?Вы сейчас на ходу придумываете, или у Вас реально в таблице 100 внешних ключей? На текущем проекте такого нет, но я встречал таблицы со 150ю полями. около сотни ссылочные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 15:04 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
что касается производительности. кейс №1. допустим, у нас есть объект Организация, которая характеризуется рядом полей, типа Название, Полное наименование ЮЛ, краткое наименование ЮЛ, всякие налоговые коды, и т.д. в одном месте нам понадобилось вывести список Названий организаций. в другом Название и Наименование ЮЛ, в третьем адреса и телефоны. и т.д. если делать запросы кортежами по логике "чего хочет вью", то получим десятки и сотни разных запросов по сути одного и того же. вместо того, чтобы СУБД, ОРМ и приложение могли закешировать всего лишь один срез данных, будет много бессмысленной грязи, в угоду наивной попытки сэкономить на объёме данных. обычные нагрузочные не показывают сколько нибудь значимой эффективности, однако нагрузка на СУБД в итоге только возрастает. кейс №2. сегодня во вью надо отобразить список названий организаций. для этого в BLL нарисовали специальный класс кортежа, и в запросе к СУБД получилось ID, Name. и тут заказчику, оказывается, надо ещё отобразить рядышком ОГРН. что делать? лезем в BLL, меняем кортеж. отыскиваем нужный вью и меняем там. все надо пересобирать, и все другие приложения использующие BLL тоже. короче, достанется абсолютно всем. круто! в ином случае, достаточно во ViewModel добавить злосчастное поле, и всё будет в ажуре. BLL трогать не пришлось. оно как возвращало коллекцию Организаций, так и продолжает её возвращать. естественно, бывают случаи и по сложнее. но зачем создавать себе лишние сложности там, где сразу можно их избежать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 15:05 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
ПарамонЕсли ViewModel приходит сразу из БЛ, что там ловить в контроллере и вью? во первых, весь проект с контроллером надо будет пересобрать. как минимум. во вью произвести изменения в соответствии с изменившимся классом. ты походу троллишь меня с изрядным удовольствием? очевидно, что такой подход полнейший идиотизм. писец, хренли тут ещё объяснять? среди продвинутых школьников и то можно обнаружить, тех кто это прекрасно понимает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 15:17 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
T_STVмсущкоДля такого класса Код: c# 1. 2. 3. 4. 5. Это разве не ViewModel? У Вас в BLL кастомный класс, который нужен конкретной реализации интерфейса. Нет это доменный объект. Может содержать и логику. Учи матчасть и паттерны уже... Вот вьюмодель: public class ProductViewModel: IDataErrorInfo, IValidatableObject { [Required] [Display(Name = "Название")] public string Title { get; set; } [Required] [Display(Name = "Название")] [StringLength(100, ErrorMessage = "Длина значения поля \"Название продукта\" не должна первышать 100")] public string ProductName { get; set; } [Display(Name = "Выберите тип из списка")] public int? SelectedTypeId { get; set; } public IEnumerable<Types> ProductTypes { get; set; } // Обновить фото продукта [HiddenInput(DisplayValue = false)] public System.Web.HttpPostedFileBase File { get; set; } public string Error { get { return null; } } public string this[string columnName] { get { return null; } } public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) { var results = new List<ValidationResult>(); if (SelectedTypeId.HasValue) { Validator.TryValidateProperty(SelectedTypeId, new ValidationContext(this, null, null) { MemberName = "SelectedTypeId" }, results); if (SelectedTypeId >= 100) { results.Add(new ValidationResult("Выбор такого типа заблокирован")); } } return results; } } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 15:21 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
T_STVмсущкоДля такого класса Код: c# 1. 2. 3. 4. 5. Это разве не ViewModel? У Вас в BLL кастомный класс, который нужен конкретной реализации интерфейса. Нет это доменный объект. Может содержать и логику. Вот вьюмодель: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 15:21 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
skyANAОт чего? От настроения? Через год спрашивают: почему тут такой подход, тут сякой, тут пятый, тут десятый? Ответ: нууу... настроение было такое. Тоже фантазировать начал? Есть конкретные соображения. ) Например повторное использование, или разргрузить логику, поднять уровень абстракции и тд. Трезвая критика кода в странице будет, или только пустой звук и куча вопросов? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 17:18 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
ПарамонskyANAОт чего? От настроения? Через год спрашивают: почему тут такой подход, тут сякой, тут пятый, тут десятый? Ответ: нууу... настроение было такое. Тоже фантазировать начал? Есть конкретные соображения. ) Например повторное использование, или разргрузить логику, поднять уровень абстракции и тд. Трезвая критика кода в странице будет, или только пустой звук и куча вопросов? )Сначала я хочу понять твою позицию, а потом уже будет критика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 17:26 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
Парамон...разргрузить логику...То есть встречаются страницы, где логика и доступ к данным в одном классе, в классе страницы, так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 17:30 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
skyANAТо есть встречаются страницы, где логика и доступ к данным в одном классе, в классе страницы, так? Вот, критикуй :) SELECT * не трогать, hVostt сказал это нормуль. ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 19:03 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
ПарамонskyANAТо есть встречаются страницы, где логика и доступ к данным в одном классе, в классе страницы, так? Вот, критикуй :) SELECT * не трогать, hVostt сказал это нормуль. )А, так Вы учебные примеры разрабатываете. Тут критика бесполезна, так как упрётся в "это учебный пример, тут этого не нужно". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 23:08 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
hVostt... естественно, бывают случаи и по сложнее. но зачем создавать себе лишние сложности там, где сразу можно их избежать? Если у Вас несколько миллионов посетителей в день и сотни тысяч продаж то Вы каждое поле будете "вылизывать" и вдумчиво добавлять в кэш который как оказывается не резиновый и не очень хорошо масштабируется при таком объеме данных и скорости обработки... За последнее время позиция Microsoft сильно изменилась в этом вопросе - они уже никому не навязывают n-tier application. Уровней абстракций должно быть ровно столько, чтобы Ваш проект приносил прибыль, а не служил реализацией чьих-то идей, рожденных в bedrooms... Так что все мнения имеют право на жизнь и каждый зарабатывает себе на жизнь как умеет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 00:52 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
Sergey ChЕсли у Вас несколько миллионов посетителей в день и сотни тысяч продаж то Вы каждое поле будете "вылизывать" и вдумчиво добавлять в кэш который как оказывается не резиновый и не очень хорошо масштабируется при таком объеме данных и скорости обработки... ой начинается, полезли примерчики из фантазий про фейсбук... если у ВАС там несколько миллионов посетителей в день и сотни тысяч продаж, то говнокодить вам никто не даст, сразу под зад и на биржу, наберут в штат грамотных архитекторов, программистов, дизайнеров, маркетолоков, поливальщиков цветов, а весь текущий тред туда не упирался ни одним местом. Sergey ChЗа последнее время позиция Microsoft сильно изменилась в этом вопросе - они уже никому не навязывают n-tier application. Уровней абстракций должно быть ровно столько, чтобы Ваш проект приносил прибыль, а не служил реализацией чьих-то идей, рожденных в bedrooms... высказывание ни о чём. хорошо когда хорошо. плохо когда плохо. Sergey ChТак что все мнения имеют право на жизнь и каждый зарабатывает себе на жизнь как умеет право на жизнь или ещё на что-то там не всегда реализуется, таковы законы природы и рынка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 02:45 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
ПарамонSELECT * не трогать, hVostt сказал это нормуль. ) забуть про SELECT * SELECT <весь набор полей> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 02:47 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
hVostt... если у ВАС там несколько миллионов посетителей в день и сотни тысяч продаж, то говнокодить вам никто не даст, сразу под зад и на биржу, наберут в штат грамотных архитекторов, программистов, дизайнеров, маркетолоков, поливальщиков цветов, а весь текущий тред туда не упирался ни одним местом... Как же Вы далеки от реальных проектов.... Улыбнуло ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 11:30 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
Sergey ChhVostt... если у ВАС там несколько миллионов посетителей в день и сотни тысяч продаж, то говнокодить вам никто не даст, сразу под зад и на биржу, наберут в штат грамотных архитекторов, программистов, дизайнеров, маркетолоков, поливальщиков цветов, а весь текущий тред туда не упирался ни одним местом... Как же Вы далеки от реальных проектов.... Улыбнуло То есть в реальных проектах говнокодят, а не поля "вылизывают"? :) ТСу Вы что посоветуете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 11:58 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
Sergey ChКак же Вы далеки от реальных проектов.... Улыбнуло вЫ не представляете, на сколько! занят только на фанастически нереальных проектах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 12:13 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
hVosttSELECT <весь набор полей> Одна модель может выглядеть так, не вопрос ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 12:49 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
skyANAОт чего? От настроения? skyANAА, так Вы учебные примеры разрабатываете. skyANAТо есть в реальных проектах говнокодят, а не поля "вылизывают"? Шерлок Холмс отдыхает )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 12:49 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
Парамон, Вы смайлики везде добавляете и я иронизирую. Низзя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 13:14 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
ПарамонОдна модель может выглядеть так, не вопрос ) справочники, справочники, справочники... де нормальная нормальзация? да, сорри за тофтоологию ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 13:23 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
hVosttсправочники, справочники, справочники... де нормальная нормальзация? да, сорри за тофтоологию ) Все нормализовано, в школе модели из трёх полей в основном? ) skyANAи я иронизирую. Низзя? Иронизировать можно, передергивать нет. ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 14:17 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
Парамон, о чём это Вы? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 14:21 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
ПарамонhVosttсправочники, справочники, справочники... де нормальная нормальзация? да, сорри за тофтоологию ) Все нормализовано, в школе модели из трёх полей в основном? ) Я бы поспорил на счёт этого. Картинка маленькая, видимо стыдно за архитектурный дизайн ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 14:46 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
hVosttЯ бы поспорил на счёт этого. Картинка маленькая, видимо стыдно за архитектурный дизайн ;) Там ведь просто названия полей, которые я не хотел светить. Маленькая часть модели, типов нет, реальной картины не видно, что даст увеличение? ) Покажи может свою, я хоть гляну как у реальных парней? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 15:23 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
ПарамонМаленькая часть модели а, ну если так... предпочитаю нормализацию, снижая количество полей в таблице до минимума. не до 2-3 конечно, но и не 15-20 -- это кошмар. конечно, с таким подходом надо костылями вовсю размахивать, плодя кортежи как кроликов. максимальная декомпозиция и нормализация раскрывают истиный потенциал модели, которая обходится без костылей и костыликов :) хотя уж всё от задачи зависит, от постановщика и от людей в команде. кто-то любит SQL-и писать, аж хрен оттащишь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 15:51 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
ПарамонhVosttЯ бы поспорил на счёт этого. Картинка маленькая, видимо стыдно за архитектурный дизайн ;) Там ведь просто названия полей, которые я не хотел светить. Маленькая часть модели, типов нет, реальной картины не видно, что даст увеличение? ) Покажи может свою, я хоть гляну как у реальных парней? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 15:58 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
hVostt15-20 -- это кошмар. Детсадовский ужос. ) Видел и любителей связи 1:1. ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 16:12 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
ViPRos, Эту я тут уже видел ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 16:20 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
ViPRos, Сча hVostt нормализует на скоряк ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 16:22 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
ПарамонViPRos, Сча hVostt нормализует на скоряк ) невозможно, ВИПРОС автоматом все нормализовывает да беспредела ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 16:25 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
а потом дает "денормализовать", персистентно или виртуально ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 16:26 |
|
||
|
BLL работает с Model или ViewModel?
|
|||
|---|---|---|---|
|
#18+
ПарамонДетсадовский ужос. ) Видел и любителей связи 1:1. ) любить или не любить связи это одно. хотя связи это хорошо на 1:1, кстати, в EF реализуется один из способов наследования. правда это мегавзрывоопасная штука. лучше не использовать, или о-о-ооочень осторожно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 16:47 |
|
||
|
|

start [/forum/topic.php?all=1&fid=18&tid=1357705]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
103ms |
get tp. blocked users: |
1ms |
| others: | 250ms |
| total: | 444ms |

| 0 / 0 |
