Проектирование многоуровневого применения для использования бара прогресса

StackOverflow https://stackoverflow.com/questions/4425587

  •  09-10-2019
  •  | 
  •  

Вопрос

У меня есть многоуровневое приложение в C #, которое предполагается выполнять задачи в базе данных (если использование первого раз, мы можем создавать базу данных и заполнить ее некоторыми данными). Когда я изначально разработал приложение, которое я не учитывал возможный контроль блока прогресса, не говоря уже о любой отчетности прогресса любого рода. Как я могу изменить дизайн приложения, чтобы иметь возможность отчитывать операции базы данных до слоя пользовательского интерфейса? Есть ли решение там, который многоразовый и не заставляет меня изменить все мои функции для получения дополнительных входов для отчетности?

Это было полезно?

Решение

Нет. В зависимости от того, насколько большое ваше приложение, у вас впереди много работы.

Для работы по работе с прогрессом вам нужен код, который выполняет работу для повышения событий, когда завершена единица работы. Это событие необходимо обрабатывать в пользовательском уровне UI, и индикаторы прогресса, обновленные.

Хорошее место для начала было бы посмотреть на использование фона Worker (есть пример на MSDN здесь - http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx.asp.aspx.). Как только вы знакомы с FlainWorker, вы должны быть в лучшем положении, чтобы решить, какие изменения вам необходимы для вашего приложения.

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

Как сказал Грег, впереди много работы. Тем не менее, существует много способов подходить к проблеме, и лучшее для вас зависит от того, какая контекстная информация выходит с клиента к слоям приложения / базы данных уже. Например, если идентификатор сеанса или идентификатор транзакции передается от клиента к приложению в обычном ходе выполнения запроса / транзакции или ссылка подтверждения, передаваемая асинхронно из приложения к клиенту, а затем для этих запросов / транзакций для которых Было бы необходимым отчетности о ходе работы Вы можете получить приложение обновить таблицу состояния, которую клиент может запросить запрос. Это может уменьшить количество требуемой повторной работы. По сути, вам нужно уже учитывать «промежуточное программное обеспечение» уже и посмотреть, может ли кто-нибудь из этого можно использовать для корреляции транзакций через ярусы.

Вы можете изменить код сервера, чтобы он обновил информацию о прогрессе на конце сервера (без изменения подписей функций), а затем иметь отдельный способ, который может запрашивать эту информацию отдельно.

Это позволило бы вам решить поддержку для прогресса, не имея никакого влияния на ваши существующие вызовы на сервере, просто добавьте новую фоновую резьбу на проверку UI для обновленной информации о ходе работы, когда продолжается длительная задача.

Редактировать: Я думаю, что тот же подход будет работать для задач, которые происходят в клиенте. Но все же здесь также может быть использован статический класс индикатора прогресса.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top