Лучшие практики: обработка отключений оборудования в классах, которые их представляют

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

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

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

Какие-нибудь советы?


person Andrew    schedule 26.01.2010    source источник
comment
Я думаю, вы имели в виду лучшие практики.   -  person aphoria    schedule 26.01.2010
comment
Исправлено, извините за это. Я нащупал его.   -  person Andrew    schedule 26.01.2010


Ответы (1)


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

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

person cdonner    schedule 26.01.2010