powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Где должна находиться бизнес логика в MVC?
19 сообщений из 69, страница 3 из 3
Где должна находиться бизнес логика в MVC?
    #37961227
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонМСУМодель <> Доменная модель
В MVC модель - это именно доменная модель.


ASP.NET MVC Overview

MicrosoftModels. Model objects are the parts of the application that implement the logic for the application s data domain
Во-вторых, я таки не увидел тут domain model.
...
Рейтинг: 0 / 0
Где должна находиться бизнес логика в MVC?
    #37961229
Фотография a_titeev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вооще, домен несомненно это bl в самом чистом виде...
...
Рейтинг: 0 / 0
Где должна находиться бизнес логика в MVC?
    #37961231
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_titeevА вооще, домен несомненно это bl в самом чистом виде...
Доменная модель, если говорить нормальным языком.
...
Рейтинг: 0 / 0
Где должна находиться бизнес логика в MVC?
    #37961242
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУТогда какую логику может содержать автогенеренный класс контекста? Никакую. Что и требовалось доказать.

Автогенеренный класс расширяют - partial class или extensions methods. Можно использовать Service Layer.
...
Рейтинг: 0 / 0
Где должна находиться бизнес логика в MVC?
    #37961251
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонМСУТогда какую логику может содержать автогенеренный класс контекста? Никакую. Что и требовалось доказать.

Автогенеренный класс расширяют - partial class или extensions methods. Можно использовать Service Layer.
Очень плохая практика. Особенно, когда при работе с БД дернешь свойство/метод кастомного частичного класса, а оно не сможет оттранслироваться в SQL. Получается, одни члены транслируются, другие нет, каша. Далее, возникают проблемы при транспорте такого класса куда-нибудь через сервис. Не все типы автогенеренного класса можно прогнать через SOAP, яркий тому пример тип Binary. Начинается мышиная возня, чтобы поменять в дизайнере контекса этот тип на массив байт. Половина кода из-за этого съедет. Через extensions methods это вообще песня - извращение размазывать логику по всему приложению. Service Layer тут вообще как кобыле пятое колесо.
Нормальный человеческий выход - использовать чистые нормальные классы под логику и не заниматься садомазохизмом с автогенеренными классами.
...
Рейтинг: 0 / 0
Где должна находиться бизнес логика в MVC?
    #37961270
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУНормальный человеческий выход - использовать чистые нормальные классы под логику и не заниматься садомазохизмом с автогенеренными классами.
На самом деле в большинстве случаев так бывает, но это не - ViewModels а нормальные модели домейна, созданные из одного или нескольких классов. Те что содержат UI логику я отделяю.
...
Рейтинг: 0 / 0
Где должна находиться бизнес логика в MVC?
    #37961277
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонМСУНормальный человеческий выход - использовать чистые нормальные классы под логику и не заниматься садомазохизмом с автогенеренными классами.
На самом деле в большинстве случаев так бывает, но это не - ViewModels а нормальные модели домейна , созданные из одного или нескольких классов.
Ну почему это не вьюмодели? Они готовятся под представление, там и оседают до лучших времен. Их всегда если что можно расширить, причем расширить чисто под вью, можно заколотить свойство типа твоего стися с красным колором и прочее. Это и есть вью-модель. Это и есть доменный объект с логикой. О чем я и тылдычу уже бытый час
...
Рейтинг: 0 / 0
Где должна находиться бизнес логика в MVC?
    #37961301
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУНу почему это не вьюмодели?
ViewModel это модель без логики, для типизации вью, в частности для вью состоящего из нескольких моделей.
Пример:
Код: c#
1.
2.
3.
4.
5.
6.
public class ViewModel
{
   public List<Model1> {get; set;}
   public List<Model2> {get; set;}
   public List<Model3> {get; set;}
}
...
Рейтинг: 0 / 0
Где должна находиться бизнес логика в MVC?
    #37961309
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
типа )

Код: c#
1.
public List<Model1> ModelsList1  {get; set;}
...
Рейтинг: 0 / 0
Где должна находиться бизнес логика в MVC?
    #37961310
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонViewModel это модель без логики, для типизации вью
Несусветные глупости.

http://msdn.microsoft.com/ru-ru/magazine/dd419663.aspx Если логика взаимодействия приложения находится в наборе классов модели представления, легко написать тестирующий ее код. В каком-то смысле представления и модульные тесты — разные типы потребителей модели представления. Набор тестов для модели представленияs приложения обеспечивает свободное и быстрое регрессионное тестирование, уменьшающее стоимость поддержки приложения в будущем.
...
Рейтинг: 0 / 0
Где должна находиться бизнес логика в MVC?
    #37961317
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУПарамонViewModel это модель без логики, для типизации вью
Несусветные глупости.

http://msdn.microsoft.com/ru-ru/magazine/dd419663.aspx Если логика взаимодействия приложения находится в наборе классов модели представления, легко написать тестирующий ее код. В каком-то смысле представления и модульные тесты — разные типы потребителей модели представления. Набор тестов для модели представленияs приложения обеспечивает свободное и быстрое регрессионное тестирование, уменьшающее стоимость поддержки приложения в будущем.


Это - Приложения WPF с шаблоном проектирования модель-представление-модель представления.
Мы про MVC однако :)
...
Рейтинг: 0 / 0
Где должна находиться бизнес логика в MVC?
    #37961320
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонЭто - Приложения WPF с шаблоном проектирования модель-представление-модель представления.
Мы про MVC однако :)
Там речь о модели представления, однако мы о ней и говорим. В MVC нет понятия ViewModel, поэтому обращаемся к первоисточнику.
В модели представления априори должна быть логика. Назовем это "DTO", но только с логикой :)
...
Рейтинг: 0 / 0
Где должна находиться бизнес логика в MVC?
    #37961333
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУВ MVC нет понятия ViewModel, поэтому обращаемся к первоисточнику.
Поэтому, это совсем не та ViewModel что в - MVVM.
Я уже давно наблюдаю желание, сделать MVVM из MVC :)
...
Рейтинг: 0 / 0
Где должна находиться бизнес логика в MVC?
    #37961371
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонМСУВ MVC нет понятия ViewModel, поэтому обращаемся к первоисточнику.
Поэтому, это совсем не та ViewModel что в - MVVM.
Это с какого перепугу она "не та"? Вью модель везде одна :)

ПарамонЯ уже давно наблюдаю желание, сделать MVVM из MVC :)
Не надо, MVC вполне самодостаточен и гениален. Просто чтоб было совсем вкусно, нужно раздетять дата-модель (кодогенерированный контекст) от доменной модели. И будет щастье.
...
Рейтинг: 0 / 0
Где должна находиться бизнес логика в MVC?
    #37961422
Фотография Герой дня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть модель - доменный объект с простыми геттерами и сеттерами, который есть отображение строки в БД и который можно сериализовать

есть прокси-объект, DTO, который оперирует доменным объектом и в котором находится вся логика

имхо, так правильно
...
Рейтинг: 0 / 0
Где должна находиться бизнес логика в MVC?
    #37961804
Фотография a_titeev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо. предположим, что к mvc-приложению, используемому как ui, нужно добавить десктопное приложение. что будет, если логика включена в модели представлений? Дублировать? а если еще и workflow заюзаны?
Чтобы этого не было и выносят ее в доменную модель по максимуму, плюс в некие сервисы еще. Все это дело потом выносится в отденые библиотеки классов. а само mvc-application - не более чем ui. По идее даже сквозная функциональнось, такая как валидация, должна делаться не там.
...
Рейтинг: 0 / 0
Где должна находиться бизнес логика в MVC?
    #37961821
Фотография a_titeev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парамонтипа )

Код: c#
1.
public List<Model1> ModelsList1  {get; set;}

ну вот типа, если мы добавим конструктор к этой модели, в котором будут листы создаваться, то получим уже ddd-подход и вынесем некую логику в модель. не так ли? И не удобнее ли это будет?
...
Рейтинг: 0 / 0
Где должна находиться бизнес логика в MVC?
    #37961984
Eugene22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что-то действительно все смешалось. View Model в MVC и ViewModel в MVVM - это совершенно разные понятия, не имеющие ничего общего. Смотрите соответствующий материал здесь - http://unmail22.narod.ru/Books/ASPNET_MVC3/3.4.html - из книги Галлоувея и т.д. по ASP NET MVC 3. там есть фраза:
обратите внимание, что в данном случае понятие "модель представления" ("view model") не имеет ничего общего с паттерном "Модель - Представление - Модель представления" ("Model View ViewModel", MVVM).
...
Рейтинг: 0 / 0
Где должна находиться бизнес логика в MVC?
    #37962112
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_titeev ну вот типа, если мы добавим конструктор к этой модели, в котором будут листы создаваться, то получим уже ddd-подход и вынесем некую логику в модель. не так ли? И не удобнее ли это будет?

А если будет еще несколько моделей, которые содержат такие же листы и еще пару других пропертей?
Дублирование кода не так ли?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
public class ViewModel1
{
   public List<Model1> ModelsList1  {get; set;}
   public List<Model2> ModelsList2  {get; set;}
   public List<Model3> ModelsList3  {get; set;}
   public decimal SomeValue {get;set;}
}

public class ViewModel2
{
   public string UserName {get; set;}
   public int Age {get; set;}
   public List<Model1> ModelsList1  {get; set;}
   public List<Model2> ModelsList2  {get; set;}
}
...
Рейтинг: 0 / 0
19 сообщений из 69, страница 3 из 3
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Где должна находиться бизнес логика в MVC?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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