MVVM для веб-разработки - PullRequest
       4

MVVM для веб-разработки

8 голосов
/ 06 августа 2010

Я читал о MVVM и пока нашел это очень интересным.Однако большинство примеров, которые я нашел, относятся к приложениям Windows, а не к веб-приложениям.Я также часто упоминал MVVM, используемый с Silverlight, и я знаю, что Silverlight можно использовать как для веб-приложений, так и для приложений Windows.

Поэтому мой вопрос - является ли MVVM допустимым шаблоном для веб-приложений?Если это так, должен ли пользовательский интерфейс быть Silverlight?Я нахожусь в процессе принятия решения о том, какие технологии использовать для нового веб-сайта среднего размера, который мы должны разработать, и Silverlight может быть трудно продать будущим державам, хотя то, что мы используем за кулисами, не имеет значениятак много.

Будем благодарны за любую информацию, которую кто-либо может предоставить при использовании MVVM в веб-среде.Пример кода тоже подойдет.

Ответы [ 10 ]

12 голосов
/ 11 октября 2015

DotVVM - это основанная на ASP.NET инфраструктура MVVM на основе ASP.NET, основанная на Knockout JS.Он прост в использовании, и вам не нужно писать тонны кода Javascript.Для большинства сценариев вам нужны только C # и HTML с CSS.

Представление выглядит следующим образом - это HTML, расширенный с серверными элементами управления и привязками данных:

<div class="form-control">
    <dot:TextBox Text="{value: Name}" />
</div>
<div class="form-control">
    <dot:TextBox Text="{value: Email}" />
</div>
<div class="button-bar">
    <dot:Button Text="Submit" Click="{command: Submit()}" />
</div>

Модель представлениякласс C #, который выглядит следующим образом:

public class ContactFormViewModel 
{
    public string Name { get; set; }
    public string Email { get; set; }

    public void Submit() 
    {
        ContactService.Submit(Name, Email);
    }
}

Существует также Расширение Visual Studio , которое добавляет IntelliSense и шаблоны проектов.

Каркас обрабатывает проверку, локализацию, SPAи другие часто используемые функции.Он поддерживает как .NET Framework, так и .NET Core.

7 голосов
/ 03 января 2012

Конечно, MVVM является допустимым «веб-шаблоном», но в настоящее время он имеет очень ограниченное использование.

Основное различие между MVC и MVVM заключается в обновлении данных вашего приложения.Для текущих веб-приложений предпочтение отдается MVC, потому что веб - это в основном односторонняя связь, и весь пользовательский ввод инкапсулируется в формы.

MVVM становится полезным при создании действительно интерактивных приложений с богатым пользовательским интерфейсом.

упрости.Если вы разрабатываете веб-решение с ASP.NET (или любой другой ориентированной на сервер техникой), используйте MVC.Если вы создаете приложение с богатым пользовательским интерфейсом, используйте MVVM и если вам не нравится Silverlight, попробуйте KnockoutJS for Javascript.

6 голосов
/ 04 января 2012

MVVM может хорошо работать в Интернете и в технологии на основе XAML.Технология XAML имеет преимущество в своих удивительных связывающих функциях, которые встроены. Но с библиотеками JavaScript, такими как Knockout (что превосходно) и JsViews / JsRender (которые вы должны изучить, как только JsViews выйдет на бета-версию).

Toотвечу вам конкретно: да, вы можете делать MVVM с веб-приложениями.Это хорошо?Да, если вы используете библиотеку типа Knockout (http://knockoutjs.com). Ключи к MVVM заключаются в том, что это простой шаблон разделения, который:

  1. разделяет представление (страница)
  2. разделяетМодель (необработанные данные)
  3. разделяет модель представления (логику представления)

Нигде не существует технологии, предписанной MVVM. Представление - это ваш html, ваша структура.ваши данные (возможно, JSON). Viewmodel - это ваш javascript-объект, который разделяет логику для вашего конкретного представления.

Knockout предоставляет средства для ежедневного связывания данных через концепцию, которую он вызывает наблюдаемыми. По сути, думайте об этом какИнтерфейс INotifyPropertyChanged, но для JavaScript. Knockout также поддерживает observableArray (который аналогичен ObservableCollection в XAML). Knockout имеет множество других функций, которые позволяют подписываться на события изменения данных, создавать поведения, настраивать привязку и многое другое. В любом случае ..с Knockout вы получите совсем немного.

Если вы решитеo MVVM без библиотеки, такой как Knockout, вы все равно можете это сделать, но вы потеряете функции привязки данных и, возможно, захотите написать что-нибудь самостоятельно.Но я настоятельно рекомендую придерживаться библиотеки, которая сделает это за вас.

Длинный ответ ... но я хотел дать вам достаточно, чтобы начать изучение.

4 голосов
/ 07 августа 2010

Для веб-сайтов (html) это не очень удобно, так как смысл в том, чтобы mvvm немедленно отображал изменения в модели представления. (через привязку данных / события).

Для веб-сайтов изменение видовой модели - это обычно сообщение + полная перестройка экрана.
Так зачем?

Однако, если у вас есть веб-сайт AJAX с одной фиксированной HTML-страницей, контент которой постоянно обновляется с помощью javascript. Тогда становится интересно.

3 голосов
/ 06 августа 2010

MVVM - это, по сути, шаблон MVC с конкретными изменениями для поддержки разработки приложений с использованием Windows Presentation Foundation.

Модель - Вид - ViewModel
Модель - Вид - Контроллер

Таким образом, ViewModel является контроллером в MVVM.Шаблон очень хороший;это позволяет легко создавать простые, но мощные приложения, которые легко тестировать и обслуживать.

Если вы хотите использовать MVVM в веб-приложении, не являющемся Silverlight, посмотрите ASP.NET MVC .MVVM также является опцией, если вы используете Silverlight.Вы даже можете смешать их, разместив свое приложение Silverlight на веб-сайте MVC.

2 голосов
/ 06 августа 2010

MVVM полностью приемлем для веб-разработки.На самом деле, это рекомендуется для разработки Silverlight.Наша компания использует MVVM + Silverlight для многих наших проектов с большим успехом.Начальная кривая обучения может быть сложной, но как только она щелкает, она предлагает много преимуществ.

По моему мнению, чтобы заставить MVVM действительно работать, вам нужна среда, которая имеет правильную поддержку связывания.В противном случае вам придется написать много «склеивающего» кода, чтобы присоединиться к вашему представлению и модели представления.Silverlight имеет отличную поддержку связывания, и, если все сделано правильно, вы можете устранить большую часть кода в своем представлении, так что вся ваша бизнес-логика останется прямо в вашей модели представления.с Silverlight.Я настоятельно рекомендую просмотреть его вещи.http://timheuer.com/blog/articles/getting-started-with-silverlight-development.aspx

1 голос
/ 06 марта 2013

У меня есть реализация MVVM для Интернета, использующая различные технологии, Knockout, jQuery, Websockets и .NET. Проверьте статью здесь: http://salmanq.com/blog/using-the-mvvm-pattern-on-web-applications-part-i/2013/02/

1 голос
/ 06 августа 2010

Для веб-разработки я бы предпочел пойти на MVC.Если это чисто Silveright, то MVVM можно считать

0 голосов
/ 16 января 2013

Как уже упоминалось, Knockout.js - это фантастическая библиотека, предоставляющая многие функции, необходимые для MVVM в Интернете.Я создал составную среду, которая является гораздо более полной средой MVVM.Он имеет сходство с Microsoft Prism и используется в довольно большом и сложном продукте, предназначенном для веб и мобильных платформ.

Проверьте: http://danderson00.blogspot.com/2012/08/introducing-knockoutcomposite.html

0 голосов
/ 19 октября 2011

MVVM полностью приемлем с WPF, а также с Silverlight.Если вы хотите использовать MVVM для веб-разработки, вам придется написать много jscript-кода.На MSDN есть пример того, как это сделать:

Проверьте ссылку ниже: http://msdn.microsoft.com/en-us/scriptjunkie/hh297451

...