Compact Framework - Доступен ли фреймворк / библиотека MVC?
Вопрос
Я нашел статья по этому вопросу сотрудником 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, я думаю, что это изменится относительно скоро.