Compact Framework - есть ли в наличии фреймворк / библиотека MVC?

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

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
9
0
2 685
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

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

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

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

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

@DavidG и @KevenPang

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

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

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

В чистом 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 без взаимодействий, команд и выбора (например, контроллер / презентатор выполняет всю работу).

CF? CE? FF? Вы можете дать определение этим терминам?

StayOnTarget 23.06.2017 17:31

Compact Framework, Windows CE, Full Framework (например, рабочий стол .net)

Quibblesome 26.06.2017 10:02

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

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

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

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

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