Идеи для структуры приложения .net GUI - PullRequest
1 голос
/ 10 января 2010

Я ищу стратегию структурирования приложения с графическим интерфейсом VB.net. У меня есть приложение, которое в основном является интерфейсом к базе данных. Он состоит из TabControl с 6 вкладками, каждая вкладка имеет несколько пользовательских элементов управления и выполняет бизнес-операции с базой данных.

Функции табуляции:

  1. Разобрать XLS во вставки SQL и зафиксировать в db

  2. Создание XLS из результатов запроса базы данных

  3. Создание XLS из результатов запроса базы данных

  4. Быстрый доступ к данным из БД (запись в журнал)

  5. Модификация базы данных вручную через форму GUI (выполнение инструкции вставки / обновления)

  6. Настройки подключения к БД

Общие функции кода:

  1. Подключение / отключение к / от DB

  2. Выполнение не-запросов

  3. Выполнение запросов

  4. Перебор результатов запроса

  5. Запись в XLS

  6. Общие подзапросы (поставщик БД не разрешает просмотр)

В настоящее время у меня есть большинство всех операций, встроенных в функции обработчика событий в потоке GUI. Я хотел бы перейти к более объектно-ориентированной структуре для повторного использования кода и упрощения многопоточности.

Я борюсь с несколькими дизайнерскими вещами:

  1. Какие объекты / классы имеют смысл?

  2. Существуют ли передовые отраслевые стандарты или шаблоны проектирования для разделения графического интерфейса пользователя и внутренних функций? Какие-нибудь особенно хорошие статьи, которые я должен прочитать?

  3. Является ли BackgroundWorker лучшим способом для выполнения внутренних функций?

1083 * Благодарения и *

Jonathan

1 Ответ

4 голосов
/ 10 января 2010
  1. ... это, вероятно, слишком большой вопрос, на который трудно ответить;извиняюсь.Но вы можете сделать разумный первый проход, используя традиционную технику «поиска существительных».

  2. Для Windows Forms, посмотрите Model-View-Controller или Model-View-Presenter.(Если вы будете использовать WPF или Silverlight в будущем проекте, вам может понадобиться альтернативный шаблон Model-View-ViewModel, но он не очень хорошо работает с WinForms.)

  3. Да, BackgroundWorker - хорошая ставка для фоновых задач WinForms, поскольку он предоставляет удобный способ доставки уведомлений о ходе выполнения и завершении.У него есть некоторые ограничения, но явная многопоточность через Thread или ThreadPool здесь, вероятно, будет излишней, и просто приведет к дополнительному коду для обратной связи с GUI.Поэтому используйте хотя бы BackgroundWorker в качестве отправной точки и рассматривайте явную многопоточность, только если она начинает причинять вам боль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...