Вопрос

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

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

Редактировать:Я не ищу информацию о проекте ASP.NET MVC.Я спрашиваю о реализации compact framework 'WinForms' и о том, как реализовать MVC с ее помощью.

Это было полезно?

Решение

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

Проблема, которую я нахожу с фреймворком MVP, который предлагает библиотека P & P, заключается в том, что формы и элементы управления ВЛАДЕЮТ презентерами, а не презентерами / контроллерами, владеющими формами (которые не читали "Это просто представление" :Прагматичный программист?).Это прекрасно сочетается с мантрой быстрой разработки приложений MS "Сначала форма", но это отстой, если учесть, насколько дорогими могут быть дескрипторы Windows в CE (если у вас их много).Мы запускаем на работе очень большое CF-приложение и внедрили наш собственный MVC-фреймворк.Создать свой собственный несложно, просто убедитесь, что вы разделили все на контроллеры, представления, бизнес-объекты и службы и у вас есть UIController, который управляет взаимодействиями между контроллерами.

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

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

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

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

Другие советы

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

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

@DavidG и @KevenPang

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

Это работает следующим образом:

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

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

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

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

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

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

@davidg:"Зачем вам нужен MVC на Compact Framework?"

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

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

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

  • ASP.NET MVC - Это попытка Microsoft создать MVC-фреймворк.Он все еще находится в режиме предварительного просмотра, поэтому используйте его по своему усмотрению, но несколько человек уже используют его в своих производственных приложениях.Вы найдете достаточно документации по этому вопросу с помощью простого поиска в Google, поскольку он становится очень популярным среди пользователей .В сети.
  • Монорельсовая дорога " Замок " - MonoRail framework - это MVC-фреймворк с открытым исходным кодом, который существует уже довольно давно и используется в нескольких производственных приложениях.Это определенно более упрощенный фреймворк, чем MVC ASP.NET, но, учитывая количество усилий, которые Microsoft прилагает к своему предложению MVC, я думаю, что это изменится относительно скоро.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top