Я считаю, что приложения настолько отличаются друг от друга, и наше понимание того, как приложения должны быть написаны, все еще очень ограничено. Прошлые приложения Windows Forms, над которыми я работал, сильно отличались друг от друга. Некоторые из конструктивных различий, которые я видел (включая большинство комбинаций):
- Непосредственное общение с базой данных (2 уровня)
- Использовать бэкэнд, который был написан для данного приложения (3 уровня)
- Используйте набор веб-сервисов, которые были написаны для использования многими приложениями и не могут быть изменены для вашего приложения. (Сервис-ориентированная архитектура)
- Обновления выполняются CRUD Операции
- Обновления выполняются с помощью шаблона команды (отправка команд на внутренний сервер)
- Много использования привязки данных / без использования привязки данных
- Большинство данных являются «табличными» (например, счета-фактуры), которые хорошо работают в стандартных элементах управления сеткой / нуждаются в пользовательских элементах управления для большинства данных пользовательского интерфейса.
- Один разработчик / команды из 10 или 20 разработчиков (только в пользовательском интерфейсе)
- Множество юнит-тестов с использованием макетов и т. Д. / Без юнит-тестов
Поэтому я не думаю, что возможно создать одну реализацию MVC (или MVP), которая всегда будет хорошо подходить.
Лучшие посты, которые я видел на самом деле , объясняющие MVC и , почему система MVC построена такой, какая она есть, это серия "Build Your Own CAB" Джереми Д Миллер . Поработав над этим, вы сможете намного лучше понять свои возможности.
Руководство Microsoft для интеллектуальных клиентов (CAB / Microsoft Composite Application Block) также следует учитывать. Это немного сложно, но может хорошо работать для приложений, которые хорошо подходят.
Выбор Реализация MVC / MVP для проекта Winforms дает обзор, который стоит прочитать. Многим нравится PureMVC . Я никогда не использовал его, но я посмотрю на него в следующий раз, когда мне понадобится инфраструктура MVC.
" Presenter First " - это подход к разработке программного обеспечения, который объединяет идеи шаблона проектирования Model View Presenter (MVP) и управляемую тестированием разработку . Это позволяет начать с написания тестов на языке заказчика. Например:
"Когда я нажимаю кнопку" Сохранить ", то
файл должен быть сохранен и
предупреждение о несохраненном файле должно
исчезают.»
У меня нет опыта использования «Presenter First», но я попробую, когда у меня будет шанс, так как это выглядит очень многообещающе.
Другие вопросы о переполнении стека, которые вы можете задать: здесь и здесь .
Если вы собираетесь использовать WPF в любой момент, взгляните на шаблон Model-View ViewModel (MVVM) . Вот очень хорошее видео, на которое вам стоит взглянуть: Джейсон Долингер в Model-View-ViewModel .
Шаблон проектирования MVVM (модель с видом на модель) для Winforms предоставляет еще одну опцию, которая может облегчить преобразование в WPF при необходимости. Magical.Trevor - это еще один пример MVVM для Windows Forms, который также включает автоматическое связывание на основе имен свойств.
Также спросите себя почему вы используете MVC.
- Хотите ли вы иметь возможность тестировать как можно больше кода?
- Вы пытаетесь разрешить повторное использование как можно большего количества кода?
- Вы пытаетесь сделать вашу кодовую базу легкой для понимания?
- 101 другие причины, которые могут быть действительными для данного проекта.
Как только вы поняли свои цели , становится проще выбрать ту или иную реализацию.