Почему ASP.NET MVC ограничивается ASP? - PullRequest
7 голосов
/ 25 марта 2009

Дублирование

MVC .NET для рабочего стола?

Я разработал несколько приложений ASP.NET MVC, и мне нравится этот фреймворк. Тем не менее, я не совсем понимаю, почему он ограничен веб-интерфейсом. Кажется, что одна из причин для разделения представления и контроллера состоит в том, чтобы позволить нескольким представлениям повторно использовать одну и ту же логику контроллера. Например, я должен иметь возможность повесить пользовательский интерфейс WPF на тех же контроллерах, что и веб-интерфейс. Я подозреваю, однако, что я неправильно понимаю нечто фундаментальное в разделении интересов. Существует ли причина, по которой контроллеры ASP.NET MVC ограничены для использования в веб-приложениях?

Обновление: меня меньше интересует "можно ли сделать MVC на рабочем столе" - я знаю, Prism и т. Д. Позволяют это. Однако с точки зрения дизайна, одна из «причин», по которой мы хотим разделить проблемы, заключается в возможности повторного использования. Если мы не можем повторно использовать контроллеры, создается впечатление, что мы повторяем себя при переписывании идентичной логики в приложении WPF. Ответы ниже действительно проясняют это для меня.

Ответы [ 6 ]

6 голосов
/ 25 марта 2009

Я должен сказать, что модель MVC особенно полезна в веб-приложениях, и это потому, что представление (html-страница) действительно отключено и находится далеко от контроллера и модели.

В настольных приложениях это не так, и вы скоро упустите некоторые возможности нарушить шаблон, чтобы сделать приложение более полезным.
Например, вы не можете выполнить мощную и экономящую время привязку данных в WPF, потому что она нарушает шаблон MVC.

Хороший шаблон, используемый в WPF: M-V-VM

3 голосов
/ 26 марта 2010

Легко сказать, я знаю, но если вы хорошо реализуете свой уровень доступа к данным и бизнес-объекты, можно повторно использовать значительную часть вашего кода.

Мы используем ASP.NET MVC. У нас есть отдельный проект, в котором есть наши бизнес-объекты и уровень доступа к данным. Наши «модели» в веб-проекте - это, как правило, легкие оболочки для наших бизнес-объектов.

Все наши методы контроллеров довольно легковесны, поскольку между уровнем доступа к данным и нашими бизнес-объектами мы инкапсулировали и упростили большую часть нашей бизнес-логики, представленной их потребителям.

После того, как мы создали наше приложение MVC, мы хотели использовать некоторые из наших данных в приложении WPF (для экрана отображения состояния). Мы только что создали новый проект, сослались на наш слой доступа к данным и модель данных, и мы были в отъезде. Действительно просто и много повторного использования кода.

3 голосов
/ 25 марта 2009

Model View Controller - это шаблон, ASP.NET MVC - это шаблон, применяемый к веб-инфраструктуре ASP.NET. Как уже упоминалось, это связывает маршрутизацию URL с вещами, чтобы упростить навигацию и сделать ее более понятной для вызова действий.

При этом технически ничто не мешает вам использовать компоненты в библиотеках ASP.NET MVC. Слои доступа к данным через LINQ или Entities доступны за пределами ASP.NET MVC. Аналогично, сам шаблон имеет бесчисленные примеры его реализации для приложений Winforms. Те же самые методы могут быть применены к WPF.

2 голосов
/ 25 марта 2009

Я бы не сказал, что вы вообще неправильно понимаете разделение интересов, фактически ваш вопрос говорит о том, что вы его хорошо понимаете.

Название «ASP.NET MVC» показывает, что Microsoft приняла разумное решение создать более специализированную реализацию MVC для приложений на основе w3eb. Это позволяет им оптимизировать дизайн, чтобы сделать его более продуктивным для разработчиков, создающих веб-приложения и сервисы.

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

Лично я думаю, что подход Microsoft может сделать его более запутанным для менее опытных разработчиков, которые часто предполагают, что реализация шаблона является шаблоном.

1 голос
/ 25 марта 2009

Вот предыдущий вопрос , где я попробовал аналогично - посмотрим, что мы придумаем на этот раз.

Другим аспектом этого вопроса является то, почему у VS так мало абстрактных инструментов проектирования, которые можно использовать как для разработки на настольном компьютере .NET, так и для разработки asp.NET?

1 голос
/ 25 марта 2009

ASP.NET MVC - это фреймворк для выполнения MVC с ASP.NET; это включает в себя такие вещи, как маршрутизация URL и так далее. Вы можете очень хорошо выполнять программирование в стиле MVC (Model-View-Controller) с WPF и WinForms.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...