Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
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 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=38547744&tid=1357705]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
84ms |
get tp. blocked users: |
2ms |
| others: | 233ms |
| total: | 423ms |

| 0 / 0 |
