Проектирование системы сигнализации

#database-design #alarm

#проектирование базы данных #тревога

Вопрос:

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

То есть, если пользователь нажимает комбинацию клавиш, петиция автоматически направляется сотрудникам службы безопасности.

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

  • По ярлыку запустите скрипт, который создает новую строку в таблице АВАРИЙНЫХ сигналов.
  • Cron или запланированное задание для сотрудников службы безопасности, постоянно проверяющих наличие новых сигналов тревоги.

Я довольно новичок в проектировании систем такого рода, и я подумал, хороший ли это путь. Кроме того, я был бы признателен, если бы кто-нибудь знал, как назначить запуск скрипта системному ярлыку в Windows.

Буду признателен за любую помощь и дам мне знать, если потребуется дополнительная информация.

Комментарии:

1. @Raj Подробнее: Я сделал что-то не так?

2. кто-то проголосовал за закрытие, и мне было интересно, почему.

3. @Raj Подробнее: О, хорошо. Я довольно новичок в SO, и я знаю, что такого рода «теоретические» вопросы могут показаться каким-то расплывчатыми, но я считаю, что это вопрос дизайна… И до сих пор не было написано никакого кода. Спасибо.

Ответ №1:

Я бы настоятельно рекомендовал использовать для этого очередь сообщений. Вы можете отправить новое сообщение в очередь с помощью простого консольного приложения (с помощью ярлыка на рабочем столе или чего-то еще).

Системы «прослушивания» будут немедленно уведомлены, и вы в это время выполните соответствующее действие.

Встроенные очереди Microsoft отлично работают:

http://msdn.microsoft.com/en-us/library/system.messaging.messagequeue.aspx

Или вы можете использовать RabbitMQ, который более надежен, но его сложнее заставить работать «из коробки».

Это избавит вас от необходимости постоянно обращаться к базе данных за обновлениями.

Редактировать:

И, конечно, вы также хотели бы записывать все вызовы в базу данных для ведения учета.

Комментарии:

1. Спасибо за ваш ответ. Я довольно новичок в разработке приложений для Windows, поэтому я бы предпочел какое-нибудь другое решение. Несмотря на это, это кажется довольно чистым, и я собираюсь взглянуть на это. Как будут работать системы прослушивания? Это должен быть процесс, выполняющийся постоянно, и при возникновении тревоги всплывающее окно, но возможно ли это с помощью обмена сообщениями? Спасибо.

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

3. Прослушивающие компьютеры «подписываются» на очередь, и как только поступает сообщение, они получают уведомление, чтобы они могли его обработать. В зависимости от того, как вы ее настроите, вы можете подключить к ней только один компьютер, все они и т.д. RabbitMQ таким образом гораздо более настраиваем, чем Microsoft queue, но это можно сделать с помощью любого из них.

4. Это действительно хорошая информация. Я пришел со стороны веб-разработки (PHP, MYSQL), и я полагаю, что именно поэтому эта «Очередь сообщений Microsoft» пугает меня. Я собираюсь попробовать научиться и вернусь, если появятся новые сомнения. Ценю 🙂

5. В этом случае RabbitMQ может быть более подходящим для ваших нужд. Он более дружелюбен к другим языкам. Это бесплатно, так что проверьте это, если Microsoft, похоже, не интегрирует так, как вы хотите.