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

Код: c#
1.
2.
3.
4.
5.
public class ProductInfo
{
    public string ProductName { get; set; }
    public string CategoryName { get; set; }
}



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

А зачем мне тянуть Категории если они мне например совсем не нужны.Выбрать имя категории подзапросом по её идентифкатору - это не проблема.
Проблема когда от стороннего сервиса прилетает один идентификатор, а чтобы отобразить имя, то нужно посылать отдельный запрос этому сервису.
Хотя и это не проблема: загружаем одним запросом справочники, кладём в кэш и дальше ничего тянуть не надо.

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

кейс №1. допустим, у нас есть объект Организация, которая характеризуется рядом полей, типа Название, Полное наименование ЮЛ, краткое наименование ЮЛ, всякие налоговые коды, и т.д.

в одном месте нам понадобилось вывести список Названий организаций. в другом Название и Наименование ЮЛ, в третьем адреса и телефоны. и т.д. если делать запросы кортежами по логике "чего хочет вью", то получим десятки и сотни разных запросов по сути одного и того же.

вместо того, чтобы СУБД, ОРМ и приложение могли закешировать всего лишь один срез данных, будет много бессмысленной грязи, в угоду наивной попытки сэкономить на объёме данных. обычные нагрузочные не показывают сколько нибудь значимой эффективности, однако нагрузка на СУБД в итоге только возрастает.

кейс №2. сегодня во вью надо отобразить список названий организаций. для этого в BLL нарисовали специальный класс кортежа, и в запросе к СУБД получилось ID, Name.

и тут заказчику, оказывается, надо ещё отобразить рядышком ОГРН. что делать? лезем в BLL, меняем кортеж. отыскиваем нужный вью и меняем там. все надо пересобирать, и все другие приложения использующие BLL тоже. короче, достанется абсолютно всем. круто!

в ином случае, достаточно во ViewModel добавить злосчастное поле, и всё будет в ажуре. BLL трогать не пришлось. оно как возвращало коллекцию Организаций, так и продолжает её возвращать.

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

во первых, весь проект с контроллером надо будет пересобрать. как минимум. во вью произвести изменения в соответствии с изменившимся классом.

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

Код: c#
1.
2.
3.
4.
5.
public class ProductInfo
{
    public string ProductName { get; set; }
    public string CategoryName { get; set; }
}



Это разве не 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;
}
}
...
Рейтинг: 0 / 0
BLL работает с Model или ViewModel?
    #38548768
мсущко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
T_STVмсущкоДля такого класса

Код: c#
1.
2.
3.
4.
5.
public class ProductInfo
{
    public string ProductName { get; set; }
    public string CategoryName { get; set; }
}



Это разве не 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.
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;
    }
}
...
Рейтинг: 0 / 0
BLL работает с Model или ViewModel?
    #38549063
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAОт чего? От настроения?

Через год спрашивают: почему тут такой подход, тут сякой, тут пятый, тут десятый?
Ответ: нууу... настроение было такое.

Тоже фантазировать начал?
Есть конкретные соображения. )
Например повторное использование, или разргрузить логику, поднять уровень абстракции и тд.

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

Через год спрашивают: почему тут такой подход, тут сякой, тут пятый, тут десятый?
Ответ: нууу... настроение было такое.

Тоже фантазировать начал?
Есть конкретные соображения. )
Например повторное использование, или разргрузить логику, поднять уровень абстракции и тд.

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

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

SELECT * не трогать, hVostt сказал это нормуль. )А, так Вы учебные примеры разрабатываете.
Тут критика бесполезна, так как упрётся в "это учебный пример, тут этого не нужно".
...
Рейтинг: 0 / 0
BLL работает с Model или ViewModel?
    #38549532
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt... естественно, бывают случаи и по сложнее. но зачем создавать себе лишние сложности там, где сразу можно их избежать?
Если у Вас несколько миллионов посетителей в день и сотни тысяч продаж то Вы каждое поле будете "вылизывать" и вдумчиво добавлять в кэш который как оказывается не резиновый и не очень хорошо масштабируется при таком объеме данных и скорости обработки...

За последнее время позиция Microsoft сильно изменилась в этом вопросе - они уже никому не навязывают n-tier application. Уровней абстракций должно быть ровно столько, чтобы Ваш проект приносил прибыль, а не служил реализацией чьих-то идей, рожденных в bedrooms...

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

ой начинается, полезли примерчики из фантазий про фейсбук... если у ВАС там несколько миллионов посетителей в день и сотни тысяч продаж, то говнокодить вам никто не даст, сразу под зад и на биржу, наберут в штат грамотных архитекторов, программистов, дизайнеров, маркетолоков, поливальщиков цветов, а весь текущий тред туда не упирался ни одним местом.

Sergey ChЗа последнее время позиция Microsoft сильно изменилась в этом вопросе - они уже никому не навязывают n-tier application. Уровней абстракций должно быть ровно столько, чтобы Ваш проект приносил прибыль, а не служил реализацией чьих-то идей, рожденных в bedrooms...

высказывание ни о чём. хорошо когда хорошо. плохо когда плохо.

Sergey ChТак что все мнения имеют право на жизнь и каждый зарабатывает себе на жизнь как умеет

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

забуть про SELECT *

SELECT <весь набор полей>
...
Рейтинг: 0 / 0
BLL работает с Model или ViewModel?
    #38549892
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt... если у ВАС там несколько миллионов посетителей в день и сотни тысяч продаж, то говнокодить вам никто не даст, сразу под зад и на биржу, наберут в штат грамотных архитекторов, программистов, дизайнеров, маркетолоков, поливальщиков цветов, а весь текущий тред туда не упирался ни одним местом...
Как же Вы далеки от реальных проектов....

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

Улыбнуло То есть в реальных проектах говнокодят, а не поля "вылизывают"? :)

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

Улыбнуло

вЫ не представляете, на сколько! занят только на фанастически нереальных проектах
...
Рейтинг: 0 / 0
BLL работает с Model или ViewModel?
    #38550059
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttSELECT <весь набор полей>
Одна модель может выглядеть так, не вопрос )
...
Рейтинг: 0 / 0
BLL работает с Model или ViewModel?
    #38550061
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAОт чего? От настроения?
skyANAА, так Вы учебные примеры разрабатываете.
skyANAТо есть в реальных проектах говнокодят, а не поля "вылизывают"?
Шерлок Холмс отдыхает ))
...
Рейтинг: 0 / 0
BLL работает с Model или ViewModel?
    #38550117
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парамон, Вы смайлики везде добавляете и я иронизирую. Низзя?
...
Рейтинг: 0 / 0
BLL работает с Model или ViewModel?
    #38550147
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонОдна модель может выглядеть так, не вопрос )

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

skyANAи я иронизирую. Низзя?

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

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

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


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