Уведомления на рабочем столе, aka Internal Alert System - PullRequest
5 голосов
/ 23 марта 2010

Стало очевидно, что там, где я работаю, внутренне нужна "система уведомлений".Дело в том, что мы очень разбросаны по нескольким зданиям, и основная масса рабочей силы регулярно держит там электронную почту закрытой часами за один раз.

Мне нужно создать простой способ, чтобы иметь возможность вытолкнутьсообщение и «всплывающее» на каждом компьютере (или на одном компьютере).

Моей первой мыслью было написать службу Windows, которая вызывает приложение winform / wpf, которое находится на каждом компьютере, который просто всплывает с сообщением.Не уверен, насколько жизнеспособна эта идея, но это просто мозговой штурм.

Другим маршрутом, как я думал, может быть приложение, которое находится в systray на каждом компьютере, которое опрашивает таблицу БД и использует Уведомления о запросах может выскакивать сообщение при каждом добавлении новой строки.Затем просто создайте безумно простое приложение для записи строки в эту таблицу.

Итак, я спрашиваю, прошел ли кто-нибудь еще этот путь.Если так, то как?

  • Что вы учли?

  • Являются ли мои идеи правильными отправными точками или «яйцо и мое лицо в идеальном выравнивании»"?

  • Есть ли другой способ, который еще проще?

Спасибо


Некоторые простые требования --> Должно быть "One Way", так как я не могу дать нашей базе пользователей систему "chat".Должно быть, несколько скрытым, чтобы не дать пользователям отключить его.А-ля системный трей или сервис.

Ответы [ 7 ]

2 голосов
/ 23 марта 2010

Разве net send не спасет ли вас изобретать колесо?

1 голос
/ 09 апреля 2010

Самый простой способ сделать это - иметь на каждом компьютере простого клиента, опрашивающего центральную службу для оповещений.Каждое предупреждение должно иметь уникальный идентификатор, чтобы каждый клиент мог иметь дело с идемпотентностью (вам не нужны центральные вкладки для хранения служб, на которых «всплывают» клиенты).

Я также рекомендую иметь достаточно короткий срок службы длякаждое предупреждение, поэтому клиенту нужно знать только очень короткий список отображаемых им предупреждений, и поэтому, если машина будет перезапущена, будет отображаться только небольшая история предупреждений.

С 300 подписчиками выВы хотите, чтобы опрос включал в себя также хороший длительный промежуток - вам не нужно 300 проверок каждые 10 секунд - поэтому вам придется сбалансировать техническое желание длинных промежутков между проверками и деловым требованием, чтобы получать оповещения в пределахопределенный период времени.

Этого можно легко достичь с помощью опроса службы WCF NET / TCP с помощью приложения WINFORM / WPF, добавляемого в качестве программы запуска, или службы Windows, которая затем создает пользовательский интерфейс для отображенияуведомление.

1 голос
/ 23 марта 2010

Это может быть нелепым ответом, но не задумывались ли вы о внедрении системы чата? Это просто реализовать и хорошо протестировано.

Вот несколько возможностей:

http://messenger.softros.com/

http://en.wikipedia.org/wiki/Instant_messaging#User_base

Статья по созданию собственного: http://www.computerworld.com/s/article/9002059/How_to_build_your_own_corporate_IM_system_

1 голос
/ 23 марта 2010

Я никогда не делал этого, но я работал в колл-центре, который использовал нечто подобное, и они безумно полезны. Я помню, как однажды все получили сообщение «Кто-нибудь знает мандарин? ПОМОГИ МНЕ !!» Brilliant. (К счастью, кто-то сделал.)

В любом случае, ваши идеи в порядке. Лично я бы сделал это как клиент-серверное приложение. Окна форм или приложение WPF, расположенное в системном окне, могут связываться с сервером с использованием дуплексного соединения TCP / IP с использованием WCF. Возможно, заставить клиента зарегистрироваться в определенных группах в зависимости от того, в каком отделе ПК он находится.

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

0 голосов
/ 25 марта 2010

Если вы не можете использовать / установить существующие чаты, вы можете подумать о реализации простого протокола "чата" в своем приложении.

Это довольно легко сделать на сокетах и многих доступных статьях..
Например:
http://www.codeproject.com/KB/IP/TCPIPChat.aspx
http://www.codeproject.com/KB/miscctrl/SimpleMessenger.aspx?display=Print

Если вам нужно что-то продвинутый (например, получать исторические уведомления, управление статусом пользователей и т. Д.), Вы можетерассмотрите возможность использования openSource Jabber API:
Например http://www.codeproject.com/KB/gadgets/googletalk.aspx

0 голосов
/ 24 марта 2010

Я бы порекомендовал вам ИСКРА . У нас такая же проблема в моей фирме, и мы наконец решили сэкономить время, а не изобретать велосипед и использовать существующее (бесплатное) решение. SPARK делает всю работу за нас.

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

0 голосов
/ 23 марта 2010

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

...