2010-01-26 2 views
2

Я работаю в VB.Net, разрабатывая программное обеспечение для регистрации данных. Я разработал классы, реализующие общий интерфейс, который работает со многими регистраторами данных, которые производит моя компания. Эти классы обрабатывают низкоуровневое аппаратное сопряжение и выставляют общие методы для доступа к записям регистратора данных.Рекомендации: Обработка отключений аппаратного обеспечения в классах, которые представляют их

Моя проблема заключается в том, что было бы хорошей практикой в ​​том, чтобы обращаться с кем-то, внезапно отключая аппаратное обеспечение? Должен ли я генерировать исключение, поднять событие или вернуть false в какой-то пакет статуса?

Основная мысль заключается в том, что я хочу, чтобы объект уведомил отправителя, когда устройство, которое оно представляет, отключено и сбой, а затем каким-то образом связывается с классом DeviceLocator (который автоматически обнаруживает устройства и поддерживает коллекцию), который был отключен и удалить его из коллекции устройств и утилизировать.

Любые советы?

+0

Я думаю, что вы имели в виду «Лучшие практики». – aphoria

+0

Исправлено, извините за это. Я толкнул его. – Andrew

ответ

1

На высоком уровне, я думаю, вы должны вернуть код результата или сообщение об ошибке со своего «драйвера». В будущем вам может потребоваться предоставить пакеты данных для разных типов клиентов. Если у вас есть клиент WCF или мобильный клиент, вызывающий веб-службы, бросание исключения или создание события бесполезно. Вам нужно будет создать еще один слой, который поймает эти условия и переведет их для каждого клиента, поэтому почему бы не сделать это на самом низком возможном уровне.

Более подробный ответ зависит от вашей фактической архитектуры. Используете ли вы делегатов, например, для уведомления потребителя о новых данных? Почему бы не вызвать делегата, который вызывается при возникновении ошибки.