Я нашел статья на эту тему от сотрудника Microsoft, но кто-нибудь реализовал для этого более надежную структуру? Есть ли легкий фреймворк для WinForms, который можно было бы легко перенести? Я хотел бы быстро набрать скорость и не создавать собственную фреймворк / библиотеку, чтобы справиться с этим, когда кто-то более умный уже сделал это.
Я не смотрел на Завод мобильного программного обеспечения от группы P&P, но подозреваю, что это довольно тяжело. Стоит ли смотреть?
Обновлено: я не ищу информацию о проекте ASP.NET MVC. Я спрашиваю о реализации компактного фреймворка WinForms и о том, как с ним реализовать MVC.





Обновлено: приведенные выше плакаты верны. Я увидел MVC и сразу подумал о веб-формах. Мои извинения. Не стесняйтесь игнорировать это. Я оставлю свое исходное сообщение на всякий случай, если всем, кто является интересуется веб-формами MVC, понадобятся ссылки. :-)
Существует пара MVC-фреймворков, ни одна из которых не является очень "легкой", но MVC - это довольно большой отход от веб-форм, так что это вполне ожидаемо:
Ни один из вас (Дэвидг или Кевин Панг) не обратил внимания на то, что его интересует WinForms, а не Веб-формы. Ему нужна структура, которая продвигает шаблон проектирования модель-представление-контроллер (Дэвид, MVC - это не просто название платформы ASP.NET) в проекте WinForms с использованием .NET Compact Framework. Он задал свой вопрос очень хорошо.
@DavidG и @KevenPang
MVC не ограничивается веб-технологией, на самом деле исходный MVC smalltalk предназначался для настольных приложений.
Это работает так:
В чистом Smalltalk MVC представление не ограничивается формой, но может быть любым представлением данных модели ... Например, если бы у нас была модель, представляющая электронную таблицу, мы могли бы иметь следующие представления:
и т. д. Модель будет такой же, но представление будет создавать разные выходные объекты в каждом случае.
С учетом всего сказанного, я не знаю, существует ли такая структура для платформы .NET Compact, я просто хотел указать, что MVC не означает WebApp.
Я лично считаю, что Фабрика мобильного программного обеспечения не очень радует CF. Мы по-прежнему используем одну его часть (EventBroker) на работе, и я хотел бы даже удалить эту часть, если это возможно (поскольку она не поддерживает общие события, и вам нужно преобразовать аргументы в их строгие типы из EventArgs). В родственном проекте на работе он использовался для части своего пользовательского интерфейса, но его пришлось вырвать из-за проблем с производительностью (еще один большой проект, хотя и у него есть дополнительные проблемы с производительностью).
Проблема, с которой я сталкиваюсь с фреймворком MVP, который предлагает P&P lib, заключается в том, что формы и элементы управления СОБСТВЕННЫМИ презентаторами вместо презентаторов / контроллеров, владеющих формами (кто не читал «Это просто представление»: прагматичный программист?). Это прекрасно согласуется с мантрой быстрой разработки приложений MS "Form First", но это отстой, если учесть, насколько дорогими могут быть дескрипторы окон в CE (если их у вас много). Мы запускаем очень большое CF-приложение на работе и внедрили нашу собственную платформу MVC. Нетрудно развернуть свой собственный, просто убедитесь, что вы разделили все на контроллеры, представления, бизнес-объекты и службы и у вас есть UIController, который контролирует взаимодействие между контроллерами.
Фактически мы делаем еще один шаг и повторно используем формы / элементы управления, используя шаблон «Контроллер-> Вид-> Макет». Контроллер такой же, как обычно, представление - это объект, который настраивает макет в конкретное представление, а макет - это фактический UserControl. Затем мы меняем их местами в одной Форме и обратно. Это значительно сокращает количество используемых нами элементов управления Windows. Это + инициализация всех форм при запуске означает, что мы устраняем заметную паузу, которую вы получаете при создании новых элементов управления Windows «по запросу».
Очевидно, что такие вещи действительно окупаются, только если вы запускаете большое приложение. У нас есть около 20+ различных типов View, которые используют в общей сложности около 7 различных макетов. Это вредит нашей процедуре инициализации (поскольку мы загружаем формы при запуске) примерно на 10 секунд, но психологически большинство пользователей готовы принять такой удар при запуске, в отличие от заметных пауз во время выполнения.
Основная проблема с библиотекой P&P в моих книгах заключается в том, что это порт FF -> CF, и из-за определенной несовместимости и различий в производительности между двумя платформами вы теряете много полезных функций.
Кстати, это - безусловно, самая полная статья о MVC / MVP, которую я когда-либо читал. Для приложения Windows (настольного компьютера или CE) я бы рекомендовал использовать версию Taligent Model-View-Presenter без взаимодействий, команд и выбора (например, контроллер / презентатор выполняет всю работу).
Compact Framework, Windows CE, Full Framework (например, рабочий стол .net)
Взгляните на Мобильный MVC от mFly. Я никогда не использовал его, но он позиционируется как разумная среда MVC для CF.
@davidg: «Зачем вам нужен MVC на Compact Framework?»
Почему нет? Это не похоже на то, что это зарезервировано для веб-разработчиков, это шаблон.
Также существует Платформа OpenNETCF IoC (который, я не думаю, существовал, когда был задан этот вопрос), который намного легче, но похож по объектной модели на фабрику мобильного программного обеспечения P&P.
CF? CE? FF? Вы можете дать определение этим терминам?