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