2009-08-20 6 views
2

Angenommen, es gibt verschiedene Gruppen von Wissenschaftlern (Medizin), die Notfalltickets anbieten. Wenn ein Notfallticket für den gemeinsamen Pool (Gruppe) eintrifft, jederzeit kann nur ein Wissenschaftler das Ticket abholen, während andere automatisch benachrichtigt werden können oder werden, dass dieser bestimmte Typ an dem Ticket arbeitet.C# - Publisher-Abonnent lösen das?

Hinweis: Ein einzelner Typ kann an mehreren Tickets mit unterschiedlichen Deadlines arbeiten.

Wenn das Ticket zu kompliziert ist, um es zu lösen, kann der Typ, der das Ticket abgeholt hat, es an andere in derselben Gruppe oder anderen Gruppe weitergeben. In einem solchen Fall sollte der Grund für eine solche Übergabe sofort an andere weitergegeben werden.

Bei einem extremen Bedarf kann die Aufgabe auf Einzelticket zerlegt und auf Gruppen verteilt werden. Wenn eine Aufgabe aufgeteilt und unter Gruppen für Einzeltickets aufgeteilt wird, können die Teilnehmer, die die Tickets teilen, kein neues Ticket abholen oder an einem anderen bestehenden Ticket arbeiten (da er darüber informiert wird, dass er arbeitet) auf geteiltes Ticket).


Meine Frage ist:
Ist Observer Muster die beste Wahl Muster für die Benachrichtigung des Service oder anderen Entwurf ist es zu handhaben glatt (Deadlock frei).?

+0

Hausaufgabenalarm. –

Antwort

3

würde Was Sie brauchen eine Queue ist.

Je nachdem, wie Sie es implementieren, könnte man

  • System.Collections.Generic.Queue, nützlich für die einzelnen Thread enqueue oder dequeue verwenden. Sie können es auch mit einer Sperre für den gleichzeitigen Zugriff schützen.
  • The concurrent Queue in VS10, für mehrere Threads setzen und
  • MSMQ für seine Queuing-Funktionen bekommen, besonders nützlich, wenn ein verteiltes Design
  • eine SQL Server-Datenbank, wieder interessant zu verwenden, wenn ein verteiltes Design für Benachrichtigungen

mit Ja, ein Pub/Sub-Mechanismus ist erforderlich. Auch hier gibt es Möglichkeiten.

  • System.Event bietet einen grundlegenden pub/sub Mechanismus zur Verwendung in einem einzigen Prozess
  • you can build larger pub/sub systems für die verteilte Nutzung basierend auf WCF.
+0

Sicher ist das, was ich suche.Nur bin ich 6 Monate alt in der Programmierung (frische Hand). Vielen Dank für die Bereitstellung der Details. – user158977

2

Klingt für mich wie Messaging/Queuing eine gute Passform

+0

Danke Frank für den Vorschlag geben – user158977