Повторно использовать ViewModel в Asp.net MVC

Я видел много блогов о MVVM и MVC, а также блоги, в которых говорится, что MVVM похож на расширение MVC в Windows.

У меня есть одна проблема с дизайном: я сделал одно выигрышное приложение, которое использует MVVM, теперь мне нужно создать такое же приложение в Интернете, поэтому я решил использовать шаблон MVC в Asp.net, но теперь я снова застрял в точке.

как повторно использовать ViewModels в MVC? поскольку ViewModel имеет импортируемое пространство имен System.Windows.Input.

Есть ли альтернативные соулсии ?? Мое основное требование - повторно использовать логику приложения?

Я использовал структуру http://waf.codeplex.com/ WpfApplication в качестве ссылки.

Заранее спасибо.


person Miraj Baldha    schedule 25.07.2011    source источник


Ответы (2)


Дело в том, что эти два понятия не взаимозаменяемы. И не должны быть (в практическом смысле). Да, вы можете создать ViewModels, которые также можно будет повторно использовать в ASP.NET MVC. Но объем абстракции, который вам придется включить, сделает упражнение бесполезным.

Вы не должны тратить свое время на беспокойство об этой несовместимости, усердно работая над ее уменьшением / устранением.

Что вам следует сделать, так это переместить действительно повторно используемый код, не зависящий ни от WPF, ни от ASP.NET, в повторно используемые библиотеки. Этот код следует повторно использовать в обоих приложениях. Ваши ViewModels и контроллеры принадлежат фреймворкам приложений, для обслуживания которых они были разработаны.

person Community    schedule 25.07.2011

Ваша бизнес-логика должна быть в ваших моделях, а не в ваших моделях представления. Итак, вы хотите использовать модели повторно, и ничего больше. Модели просмотра специфичны для вашего приложения Windows и эквивалентны контроллерам, специфичным для веб-приложения.

person Tim Rogers    schedule 25.07.2011
comment
@Will Извините, это должна быть бизнес-логика. В этом случае я согласен с вашим сообщением, т.е. повторно использовать бизнес-логику, но не пытайтесь повторно использовать логику приложения. - person Tim Rogers; 25.07.2011
comment
Пока что это лучший совет, который я нашел по этой теме, но как вы справляетесь с совместным использованием модели на разных платформах, не дублируя их определения для обработки таких вещей, как проверка и сериализация с аннотациями данных и атрибутами? Я надеялся определить их в одном месте (модели) и повторно использовать их, не нашел никакой информации о том, как это лучше всего сделать. какие-нибудь идеи или ресурсы по этой теме? - person SelAromDotNet; 27.11.2012
comment
@Josh Не совсем уверен, что вам нужно, но чтобы поделиться моделью, поместить ее в отдельный проект и повторно использовать. Аннотации к данным и атрибуты сериализации разработаны так, чтобы не зависеть от платформы: т.е. правила для действующей модели будут одинаковыми, поэтому объявите их в своей модели. Где и как вы проверяете, зависит от технологии, поэтому запускайте проверку из вашего хост-приложения. - person Tim Rogers; 27.11.2012
comment
Изначально я поместил классы model и viewmodel в переносимую библиотеку для использования в win8 и wp7 / 8. работал как шарм! но теперь я хочу повторно использовать это в моей версии проекта asp.net mvc. Я предполагаю, что могу повторно использовать свои модели, но у них также есть материал inotifyproperty (для привязки данных), есть ли опасность в их восстановлении для Интернета? - person SelAromDotNet; 27.11.2012
comment
@Josh INotifyPropertyChanged не привязан к конкретной технологии: это просто шаблон для создания событий изменений. Так что используйте повторно. - person Tim Rogers; 27.11.2012
comment
спасибо за ваш вклад, я собираюсь поэкспериментировать с этим, если это сработает, я сообщу о своих результатах в сообщении в блоге. Еще раз большое спасибо всем участникам этой ветки! - person SelAromDotNet; 28.11.2012