2009-05-12 6 views
0

Wir haben eine asp.net-Anwendung, die erweitert werden muss, um Benutzer zu benachrichtigen, wenn ein Update auftritt. Alle Benutzer müssen benachrichtigt werden, auch wenn sie die asp.net App nicht geöffnet haben. Alle Benachrichtigungen müssen für alle gleichzeitig erfolgen, sodass E-Mails keine Option sind. Die Anwendung wird in einem Unternehmensnetzwerk mit standardisierten Clientcomputern ausgeführt, auf denen Windows XP ausgeführt wird. Ungefähr 45 Benutzer/Client-Computer müssen diese Updates erhalten.Erstellen einer App, die synchronisierte Benachrichtigungen auf allen Clientcomputern erfordert

Meine ersten Gedanken sind, einen Windows-Dienst zu erstellen, der auf jedem Client-Computer ausgeführt wird und während der Geschäftszeiten einen Webdienst (etwa jede Minute) abfragt. Wenn ein Update stattfindet, wird eine Benachrichtigungszeit festgelegt (etwa 5 Minuten nach dem Update). Wenn die Clientcomputer den Webdienst abfragen, erhalten sie das Update und verwenden die Benachrichtigungszeit, um die Benachrichtigung auf dem Clientcomputer zu planen. Die Clientcomputer planen die Benachrichtigung basierend auf der Uhrzeit auf dem Server und nicht auf der Zeit auf dem lokalen Computer. Wenn dies ordnungsgemäß funktioniert, werden alle Clientcomputer die Benutzer zur gleichen Zeit benachrichtigen.

Macht diese Lösung Sinn? Wie würdest du es anders machen?

BEARBEITEN: Wenn ein Client ausgeschaltet oder nicht verbunden ist, erhalten sie das Update nicht und müssen das Update in Zukunft nicht mehr erhalten. Diese Updates sind nur für kurze Zeit relevant.

+0

Wird diese asp.net-Anwendung auf einem lokalen Host oder auf dem Server ausgeführt? –

+0

BTW, sollten Sie Ihre "Meine ersten Gedanken ..." entfernen und es als Antwort veröffentlichen. –

+0

Die asp.net App läuft auf einem Server. –

Antwort

0

Haben Sie Full Duplex WCF in Betracht gezogen? Es könnte tun, was Sie brauchen.

+0

Ich denke du hast recht, das ist was wir brauchen. Vielen Dank –

2

Ich würde sagen, eine "Push" -Methode zu verwenden, bei der sich jeder der Clients bei dem Host registriert (von einem Dienst), und wenn der Host ein Update erhält, benachrichtigt er alle registrierten Clients (Dienste). Aber es klingt für mich so, als ob es einige Probleme gibt, die Sie ebenfalls beachten müssen; Was passiert, wenn einer (oder mehrere) der Clients zum Zeitpunkt des Updates einfach ausgeschaltet ist? Erhalten sie eine verspätete Benachrichtigung oder gar keine? Was ist, wenn das Netzwerk für eine Gruppe von Benutzern nicht verfügbar ist? Macht dies das Update für alle Benutzer ungültig?

+0

Wie McWafflestix sagte, mit seiner Antwort als beste Lösung müssten Sie jetzt ein paar Design-Probleme beheben: - wenn einer (oder mehrere) der Clients zum Zeitpunkt des Updates einfach ausgeschaltet sind? Auf te Akt des Registers u tun, um eine Update-Prüfung fehlt oder Push neueste an den Teilnehmer sehr gute Antwort –

+0

Guter Punkt, dachte ich jeden Client, der aus die Benachrichtigung beim nächsten Mal, und es verbindet erhalten würde war zu ignorieren, da es in der Vergangenheit. Wenn der Client zum Zeitpunkt der Benachrichtigung nicht verbunden ist, erhält er die Benachrichtigung nicht. Ich bin nicht besorgt darüber, dass das Netzwerk für eine Gruppe von Benutzern nicht verfügbar ist. In diesem Fall haben wir größere Probleme als diese Benachrichtigungen zu erhalten. –

0

Nicht wirklich vertraut mit ASP - aber das klingt nicht wie Sie brauchen eine sprachspezifische Antwort. Lassen Sie Ihren POST einfach auf einen Webserver hochladen, dann können Ihre Kunden diesen Server nach Belieben abfragen. Geben Sie ihnen die letzten X Aktualisierungen, und sie können entscheiden, ob sie ihre Benutzeroberfläche aktualisieren müssen. Ein Design wie dieses ist sowieso besser, denn wenn Ihre App jemals von ASP weggeht (oder Sie andere Clients entwerfen, die diese Informationen benötigen), ist es in einem Standard (HTTP) Kommunikationsformat (RESTful Design).

Auch der Windows-Befehl:

net send <message> 

kann von einem Administrator eines Netzwerks Nachrichten zu drücken, um Computer in diesem Netzwerk

1

verwendet wird, würde ich nicht Polling tun, wie alle Computer sein würde das tun und Polling ist nicht "synchron". Zumindest nicht so viel wie Push sein kann. Verwenden Sie eine Push-Methode (wie Moloch - http://juggernaut.rubyforge.org/ oder Push-in-Flash). Ich bin mir auch ziemlich sicher, dass es eine Art Push-Client in Windows gibt, aber ich bin kein Desktop-App-Entwickler ...

Verwandte Themen