Компактный каркас - есть ли рамки / библиотека MVC? - PullRequest
9 голосов
/ 25 августа 2008

Я нашел статью на эту тему сотрудника Microsoft, но кто-нибудь реализовал более надежную платформу для этого? Существует ли облегченный фреймворк для WinForms, который можно легко перенести? Я хотел бы довольно быстро освоиться и избежать создания собственной инфраструктуры / библиотеки, чтобы справиться с этим, когда кто-то умнее уже сделал это.

Я не смотрел на Mobile Software Factory из группы P & P, но подозреваю, что это довольно тяжело. Стоит ли смотреть?

Редактировать: я не ищу информацию о проекте ASP.NET MVC. Я спрашиваю о реализации компактного фреймворка "WinForms" и о том, как реализовать MVC с этим.

Ответы [ 7 ]

5 голосов
/ 25 августа 2008

Лично я считаю, что Фабрика мобильного программного обеспечения не очень радует CF. Мы по-прежнему используем одну его часть (EventBroker) на работе, и я хотел бы даже удалить эту часть, если это возможно (поскольку она не поддерживает универсальные события, и вам необходимо преобразовать аргументы в их строгие типы из EventArgs). Родственный проект на работе использовал его для части своего пользовательского интерфейса, но пришлось его удалить из-за проблем с производительностью (еще один большой проект, хотя у него также есть и дополнительные проблемы с производительностью).

Проблема, которую я нахожу с платформой MVP, которую предлагает библиотека P & P, состоит в том, что формы и контролирует собственные докладчики вместо контролеров, владеющих формами (которые не читали «Это просто представление»: прагматичный программист?). Это прекрасно согласуется с мантрой быстрой разработки приложений MS «Form First», но это отстой, если учесть, насколько дорогими могут быть дескрипторы окон в CE (если их много). Мы запускаем очень большое CF-приложение на работе и развернули собственную MVC-инфраструктуру. Нетрудно свернуть свой собственный, просто убедитесь, что вы разделяете все на контроллеры, представления, бизнес-объекты и сервисы и имеете UIController, который контролирует взаимодействия между контроллерами.

На самом деле мы делаем еще один шаг и повторно используем формы / элементы управления, используя шаблон Controller-> View-> Layout. Контроллер такой же, как обычно, представление - это объект, который настраивает макет в конкретное представление, а макет - это фактический UserControl. Затем мы поменяем их в одной форме. Это значительно уменьшает количество элементов управления Windows, которые мы используем. Эта + инициализация всех форм при запуске означает, что мы устраняем заметную паузу, возникающую при создании новых элементов управления Windows «по требованию».

Очевидно, что делать подобные вещи действительно выгодно, только если вы запускаете большое приложение. У нас есть около 20 + различных типов просмотра, которые в общей сложности используют около 7 различных макетов. Это вредит нашей процедуре инициализации (когда мы загружаем формы при запуске) примерно на 10 секунд, но психологически большинство пользователей готовы принять такой удар при запуске, а не заметные паузы во время выполнения.

Основная проблема с библиотекой P & P в моих книгах заключается в том, что это порт FF -> CF, и из-за определенных несовместимостей и различий в производительности между двумя платформами вы теряете много полезных функций.

Кстати, эта , безусловно, самая полная статья, которую я когда-либо читал о MVC / MVP. Для приложений Windows (для настольных ПК или CE) я бы рекомендовал использовать версию Taligent Model-View-Presenter без взаимодействий, команд и выборов (например, контроллер / докладчик выполняет всю работу).

3 голосов
/ 25 августа 2008

Никто из вас (Дэвидг или Кевин Панг) не обратил внимания на тот факт, что ему интересны WinForms , а не Веб-формы . Ему нужна среда, которая использует шаблон проектирования Model-View-Controller (davidg, MVC - это не просто имя платформы ASP.NET) в проекте WinForms с использованием .NET Compact Framework. Он задал свой вопрос очень хорошо.

2 голосов
/ 18 ноября 2010

Существует также OpenNETCF IoC framework (который, я думаю, не существовал, когда задавался этот вопрос), который намного легче, но похож на объектную модель на Фабрику программного обеспечения P & P.

1 голос
/ 25 августа 2008

@ DavidG и @ KevenPang

MVC не ограничивается веб-технологией, фактически оригинальный MVC для smalltalk был предназначен для настольных приложений.

Работает так:

  • Просмотр = Форма клиента
  • Контроллер = Оборачивает клиентские события и маршалы между View и Model
  • Модель = Данные приложения и бизнес-логика

В чистом Smalltalk MVC представление не ограничивается формой, но может представлять собой любое представление данных модели ... Например, если бы у нас была модель, представляющая электронную таблицу, мы могли бы иметь следующие представления: 1015 *

  • Просмотр таблицы
  • Версия для печати
  • Просмотр значков

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

Все это говорит о том, что я не знаю, существует ли такая структура для .NET Compact, я просто хотел отметить, что MVC не означает WebApp.

0 голосов
/ 10 ноября 2008

@ davidg: «Зачем вам MVC на Compact Framework?»

Почему бы и нет? Это не то, что зарезервировано для веб-разработчика, это шаблон.

0 голосов
/ 31 октября 2008

Взгляните на mFly's Mobile MVC . Я никогда не использовал его, но он представляет собой разумную инфраструктуру MVC для CF.

0 голосов
/ 25 августа 2008

Редактировать: вышеуказанные плакаты верны. Я увидел MVC и сразу подумал о веб-формах. Мои извенения. Не стесняйтесь игнорировать это. Я оставлю свое исходное сообщение на всякий случай, если кому-то, кто заинтересован в веб-формах, MVC понадобятся ссылки. : -)

Существует пара MVC-фреймворков, ни одна из которых не очень "легковесна", но MVC довольно сильно отличается от веб-форм, поэтому ожидается:

  • ASP.NET MVC - это попытка Microsoft создать инфраструктуру MVC. Он все еще находится в режиме предварительного просмотра, поэтому используйте его по своему усмотрению, но несколько человек уже используют его в своих производственных приложениях. Вы найдете обширную документацию по этому вопросу с помощью простого поиска Google, поскольку он становится очень популярным среди .NET.
  • Castle MonoRail - Платформа MonoRail - это инфраструктура MVC с открытым исходным кодом, которая существует уже довольно давно и используется в нескольких производственных приложениях. Это определенно больше, чем платформа ASP.NET MVC, но, учитывая количество усилий, которые Microsoft прилагает к своему предложению MVC, я думаю, что это изменится относительно скоро.
...