Я вважаю, що програми так сильно відрізняються один від одного, і наше розуміння того, як слід писати заявки, все ще дуже обмежене. Минулі програми Windows Forms, над якими я працював, настільки відрізнялися один від одного. Деякі з дизайнерських відмінностей, які я бачив (включаючи більшість комбінацій):
- Безпосередньо поговоріть із базою даних (2-х рівневий)
- Використовуйте резервний текст, написаний для даної програми (3-х рівневий)
- Використовуйте набір веб-служб, які були написані для використання багатьма програмами і не можуть бути змінені для вашої програми. (Сервісно-орієнтована архітектура)
- Оновлення, здійснювані операціями CRUD
- Оновлення виконуються за допомогою шаблону команд (відправка команд на сервер бекенда)
- Багато звичок використання прив'язки даних / відсутність використання прив'язки даних
- Більшість даних є "подібними до таблиці" (наприклад, рахунки-фактури), які добре працюють у стандартних елементах управління сіткою / потребують спеціальних елементів управління більшості даних інтерфейсу користувача
- Один розробник / команди з 10 або 20 розробників (лише в інтерфейсі)
- Багато тестування одиниць з використанням макетів тощо / без тестування одиниць
Тому я не думаю, що можливо створити одну реалізацію MVC (або MVP), яка завжди добре підходить.
Найкращі пости, які я бачив, як справді пояснюють MVC і чому система MVC побудована таким, яким він є, - це серія "Побудуй свій власний CAB" від Джеремі Д Міллера . Після роботи, хоча це, ви повинні мати можливість зрозуміти свої варіанти набагато краще.
Слід також враховувати інтелектуальне керівництво Майкрософт (CAB / Microsoft Composite Application Block) . Він трохи складний, але може добре працювати для додатків, які добре підходять.
Вибір реалізації MVC / MVP для проекту Winforms дає огляд, який варто прочитати. Дуже багато людей люблять PureMVC . Я ніколи його не використовував, але я би переглянув це наступного разу, коли мені потрібна рамка MVC.
" Presenter First " - це підхід до розробки програмного забезпечення, який поєднує ідеї моделі дизайну Presenter 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 інші причини, які можуть бути дійсними для даного проекту.
Як тільки ви зрозумієте свої цілі , вам стає легше вибрати ту чи іншу реалізацію.