2016-03-31 3 views
1

Извините за смутное название. Мне довольно стыдно просить об этом, но мне действительно нужно мое осознание прямо сейчас. Я не могу определить, следую ли я шаблону MVC или шаблону MVVM.Что именно я использую?

В моей предыдущей стажировке у нас был C# -код (.NET), который имел контроллер и напрямую подключался к базе данных (там не был сервисный уровень). Контроллер будет получать информацию, форматировать в JSON и передавать ее контроллеру Angular, который отображает его на экране.

В моей нынешней стажировке мы не используем Angular. Мы используем файлы .cshtml. Сервисный уровень предоставляет свою информацию контроллеру, который форматирует MODEL и передает его в вид .cshtml и отображает содержимое.

Мои вопросы:

Какой из MVC и который один является MVVM? Пожалуйста, опуститесь до моего уровня и объясните. Большинство из того, что я читал в Интернете, похоже, путают меня больше с тем, что я наблюдаю на работе.

Все на работе называет оба из них MVC, и я действительно запутался сейчас. Если оба являются MVC, в чем разница между ними?

+1

Просто пойдите в Google. http://stackoverflow.com/questions/667781/what-is-the-difference-between-mvc-and-mvvm Или это http://stackoverflow.com/questions/19444431/what-is-difference-between-mvc -mvp-mvvm-design-pattern-in-terms-of-coding-cs и многие другие .... –

+0

У меня есть несколько раз. Несколько раз задавался вопрос. Люди дают разные ответы. Я знаю, что он заменяет контроллер модельным обзором, но у меня есть контроллер в обоих случаях, и я нахожу разницу в том, как все делается. Технически, оба будут MVC, но какая разница в этих архитектурах? Какое имя для этих различий – Oct8

+0

Вы знаете, какой ASP.NET MVC есть, не так ли? Это не должно путать. Я не знаю, какой шаблон использует углы, но если он связывает данные между вызовами сервера и пользовательским интерфейсом, это, скорее всего, MVVM. – Will

ответ

1

Угловая определенно больше Model-View-ViewModel-ish. В то время как то, что вы делаете, определенно звучит как MVC.

MVVM - это особый шаблон, в котором состояние пользовательского интерфейса инкапсулировано в ViewModel, так что рендеринг конечного пользовательского интерфейса довольно тупой и просто привязка данных. Логика состояния, чтобы сказать, показать эту кнопку или скрыть эту область, все инкапсулируется в ViewModel. Одно из преимуществ заключается в том, что это позволяет создавать единичные тесты для тестирования ViewModel и тем самым неявно тестировать все поведение пользовательского интерфейса. (См: Wikipedia article on MVVM и Martin Fowler's Introduction to Presentation Model которого MVVM является вариацией.)

В MVC, сам вид имеет широту, чтобы контролировать его поведение, что вы хотите, чтобы показать/скрыть, и т.д. Основу данных при условии, модель , Это означает, что в MVC вы не можете тестировать поведение пользовательского интерфейса (например, если что-то правильно отображается или скрывается на основе изменений данных) без тестирования самого пользовательского интерфейса.

Итак, MVVM, ViewModel контролирует поведение пользовательского интерфейса, а сам пользовательский интерфейс является немым и просто использует привязку данных и делает то, что, как ему говорят, делает на основе логики в ViewModel.

В MVC пользовательский интерфейс является «интеллектуальным» и преобразует и отображает его, но он чувствует, что он должен основываться на данных, которые он получает от модели.

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

Я надеюсь, что это поможет.

+0

Спасибо большое! Устранил мои сомнения – Oct8

1

В обоих случаях вы используете MVC (или хотя бы шаблон MVC-ish). При использовании файлов .cshtml вы используете сервер MVC на стороне сервера. При использовании Angular вы используете MVC на стороне клиента (который, вероятно, больше похож на MVVM). Самое большое различие заключается в том, что модель отображается в HTML-элементы; на клиенте или на сервере.

На мой взгляд, это лучший способ увидеть различия в том, что вы сделали.

Смежные вопросы