Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 10.07.2018, 12:30   #1
oldsnowman
Участник клуба
 
Аватар для oldsnowman
 
Регистрация: 20.02.2015
Сообщений: 783
Репутация: 254
Вопрос C# MVVM где должна находиться логика приложения?

Я только начал изучать MVVM в C#.
У меня вопрос, где должна храниться логика приложения?
Во View располагается внешний вид приложения, во ViewModel находится взаимодействие вьюхи и модели, в Model находятся классы данных.
Вот в MVC, все понятно, внешний вид во вьюхе, класс работы с данными в модели, а в контроллере располагается логика взаимодействия данных и внешнего вида, там же и методы расчетов. В MVVM, я как-то запутался, где мне размещать логику(к примеру классы и методы пересчетов, и всяких расчетов). Вроде бы ViewModel - это для минимальной логики работы с View. Вот где размещать методы со сложными расчетами? в Model или ViewModel? И где вообще размещать технические классы которые высчитывают что-либо?
И можете скинуть проект на mvvm или ссылку для скачивание, где не простенький проект, а нормальный полный проект. Хочу разобраться, что к чему.
oldsnowman вне форума   Ответить с цитированием
Старый 10.07.2018, 13:00   #2
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 16,333
Репутация: 3242

icq: 512-765
skype: alexp.frl
По умолчанию

Model это не просто данные, там и может. Еще часто бывают другие слои типа Service и т.п.

В контроллере в MVC как раз расчеты обычно не делают.

Ну и что значит "должна"? Надо понимать зачем вы что-то делаете, что вам это даст.
Alex11223 вне форума   Ответить с цитированием
Старый 10.07.2018, 13:52   #3
oldsnowman
Участник клуба
 
Аватар для oldsnowman
 
Регистрация: 20.02.2015
Сообщений: 783
Репутация: 254
По умолчанию

Цитата:
В контроллере в MVC как раз расчеты обычно не делают
Я делал, видимо не правильно делал...
Где тогда все-таки расчеты делать в Модели? Или Классы с расчетами вообще выносить в папку Common. Есть где про это почитать? а то везде простые примеры как биндить, а мне нужно больше инфы, и желательно на русском, но в данном случаи, и инглишем не побрезгую.
oldsnowman вне форума   Ответить с цитированием
Старый 10.07.2018, 16:10   #4
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 16,333
Репутация: 3242

icq: 512-765
skype: alexp.frl
По умолчанию

Ну так вы определитесь какую вы проблему решаете выносом куда-либо.

Например простые причины не делать расчеты в контроллерах могут быть такими:
  • Сложнее тестировать, придется делать запрос (если речь о HTTP) или как-то иначе имитировать инфраструктуру фреймворка нужную для вызова контроллера + может быть еще авторизация и т.п.
  • Нужно предоставить их где-то еще, придется копипастить
Цитата:
Сообщение от oldsnowman Посмотреть сообщение
а мне нужно больше инфы, и желательно на русском, но в данном случаи, и инглишем не побрезгую.

Последний раз редактировалось Alex11223; 10.07.2018 в 16:12.
Alex11223 вне форума   Ответить с цитированием
Старый 11.07.2018, 09:51   #5
oldsnowman
Участник клуба
 
Аватар для oldsnowman
 
Регистрация: 20.02.2015
Сообщений: 783
Репутация: 254
По умолчанию

Alex11223, я так у гугла и спросил "Ну ка ГЮГль, скажи где ставить логику, и шоб быстро!", а он мне в ответ "Слющай, иди ка ты по тысячам фейковых ссылок, сц--ко!"
Alex11223, на твой взгляд, как поступить? Есть большущий класс с разными сложными расчетами. Мне его лучше в модель кинуть? А если модель другая будет, этот же класс в другую модель вставлять, или как?
oldsnowman вне форума   Ответить с цитированием
Старый 11.07.2018, 11:32   #6
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 16,333
Репутация: 3242

icq: 512-765
skype: alexp.frl
По умолчанию

хз где там фейковые, в основном стековерфлоу и другие подсайты, msdn.

MVVM, MVC и т.п. про GUI, они не описывают все остальное.
И никто нигде не говорит, что модель это просто тупые классы со свойствами.

Копипаста из первой попавшейся ссылки: "The Model encapsulates the business logic and data that is used by the application. The best way to think of the Model is everything that is not Presentation -- when using a layered application approach, it is everything below the presentation layer (which may include a business layer, service layer, data access layer, data storage layer, etc.)"

Еще на русском обсуждение про разные MVC: https://github.com/Hexlet/hexlet-sla...BD%D0%B8%D0%B9

А вообще про куда и что кидать, я ж сказал, в первую очередь зависит от решаемых проблем. Ну и всегда можно перекинуть
Не надо просто тупо следовать какому-то паттерну предложенному кем-то когда-то.
https://ru.wikipedia.org/wiki/%D0%9A...BB%D1%8C%D1%82

"модель другая будет" это как? Другое приложение что ли? Ну вместо копипаста может быть стоит выделить в библиотеку.
Alex11223 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Архитектура приложения и MVVM Egoist42 Общие вопросы по программированию, компьютерным наукам 1 25.08.2014 09:56
Где должны находиться координаты объекта который движется? pastuhdima Помощь студентам 2 03.11.2011 22:47
C#кнопка выход должна находиться в невидимом состоянии до 3 и после 5 кликов по картинкам jgosohbis Помощь студентам 2 30.09.2010 09:17
Определить где находиться курсор в ТстрингГрид IgorKr Компоненты Delphi 6 11.07.2008 00:48


00:29.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru