Компактный каркас - есть ли рамки / библиотека MVC?

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

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

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

7 ОТВЕТОВ
РЕШЕНИЕ

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

Проблема, которую я нахожу с платформой MVP, которую предлагает библиотека P & P, заключается в том, что формы и элементы управления OWN вместо форматоров / контроллеров, владеющих формами (кто не читал «Это просто представление»: прагматичный программист?), Контролируют собственные формы. Это прекрасно согласуется с мантрой быстрой разработки приложений 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 без взаимодействий, команд и выборов (например, контроллер / презентатор выполняет всю работу).

5
25.08.2008 17:16:59
CF? CE? FF? Можете ли вы определить эти термины?
UuDdLrLrSs 23.06.2017 14:31:48
Компактный каркас, Windows CE, полный каркас (т.е. настольный компьютер .net)
Quibblesome 26.06.2017 07:02:59

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

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

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

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

3
25.08.2008 16:58:07

@DavidG и @KevenPang

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

Это работает так:

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

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

  • SpreadSheet View
  • Версия для печати
  • Вид значка

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

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

1
25.08.2008 17:00:28

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

0
30.10.2008 23:23:19

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

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

0
10.11.2008 06:58:35

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

2
18.11.2010 13:53:44