Frage : Verlegter oder async Service

Hallo,

I raten Notwendigkeit wenig in, welchem Weg des Lassens von programm wählen. Ich bat
about um um dieses vor einiger Zeit, aber jetzt habe ich freieren Anblick von diesem. APP ist Service, diese Wartezeit für Benutzer-LOGON und Anfänge meine andere APP. Es auch Uhren, zum meiner immer laufenden APP zu bilden. Und ofcourse tut sie dies pro Benutzer, der LOGON ist. So wenn Benutzer an loged und er zu einem anderen Benutzer schält, dann, das neuer Benutzer neuen Fall von programm haben, und vorhergehendes man seine APP running.

So noch haben, ich haben die Funktionalität, zum zu hören wenn Benutzer-LOGON (ISensLogon). Ich weiß nicht bin dieses wirklich erforderliche. Weil ich immer aufpassen kann bin der Prozess, der in einige Zeitabstände läuft, indem ich mutex.

Second Funktionalität bilde, soll aufpassen bin der Prozess, der indem ich mutex und Wartezeit für sie läuft, bilde. (In der Zukunft bilde ich einige zusätzliche Mechanismen, wie IPC).

I müssen Lösungen:

1. asynchron -
I haben einfache Kategorie mir helfen gelassen, Fensterkerngegenstände (Ereignis, mutex) zu behandeln. Mit ihm kann ich Ereignis hinzufügen, also kann Kategorie es warten und wenn Ereignis occure es Feuerfunktion, die zu diesem Ereignis in ihm inicialization binded.

So meine Idee ist „addieren“ Ereignis, das für Benutzer-LOGON aufpassen. Wenn Ereignis auftreten, „addieren“ abgefeuerte Funktion neues Ereignis, das mutex warten. Und wenn dieses Ereignis sein Anfang process.

LogonEvent->SetCommand auftreten (AddMutexEventToEventListener);
EventListener->Add (LogonEvent);


2. verlegte -

In Hauptgewinde, warte ich einfach Benutzer-LOGON. Zunächst wenn Benutzer-LOGON ich neues Gewinde bilden, das Prozess und Uhr für mutex.

I laufen lassen, großen Wunsch haben, asynch Methode zu wählen, weil sie mir scheint, ehrgeizig zu sein. Aber es stark zum Code und zum Code ist zur Wartung am härtesten, die ich denke. Verlegte Lösung ist hmm Reinigungsmittel I think.

Could, das jemand mir adivse geben. Möglicherweise ich omitt etwas wichtig?

Antwort : Verlegter oder async Service

Das erste Muster, das Sie erwähnten, hat wirklich einen Namen. Es benannt das „Reaktor“ Muster, das auserwählten/der Wartezeit Wahl gegründeten Ereignisse umwandelt, die in Ereignis-abhängige Wiederholungsbesuche überwachen (ich wundere, wenn der warum sein benannter Reaktor ist). Der Reaktor (Hauptbestandteile) tut allen schmutzigen pollling Job und Sie kann ihn einfach erklären, ein Ereignis abzufeuern, wenn etwas geschieht. http://en.wikipedia.org/wiki/Reactor_pattern

, von der zurückkommt #= zur Frage wichtiger, wohl sucht er, wie Sie alwaysd Notwendigkeit ein Arbeitskraftgewinde werden, zu sein der nach dem Reaktor oder dem Prozessmonitorgewinde (es sei denn der Reaktor selbst using Ereignis-abhängige API ist). Wenn der der Fall ist, dann, das der Nutzen des Reaktors auf der Hand liegt, wenn Sie viele vielen gleichzeitig haben aufzupassen Ereignisse, wie in Ihrem Fall sagen, wenn Sie Dutzende Prozesse/mutexes überwachen müssen, dann ein Reaktor Sie die Kosten eines Gewindes pro Monitor speichert.

Einerseits wenn sein gerade eine Angelegenheit eines einzelnen Arbeitskraftgewindes dann, warum Kompliziertheit addieren, wenn Sie Sachen mit einem Monitorgewinde leicht handhaben können? Es ist ist ehrgeizig und reizend, mit hoch entwickelten Entwürfen zu gehen sicher (besonders wenn Sie bei einem sich angekommen); Ich kann das Drängen verstehen:) aber um es, Zuverlässigkeit, Benutzerfreundlichkeit kümmern und Wartung sind wichtiger als fantastischer Entwurf. Schliesslich interessiert Ihr Benutzer nicht whethers sein Reaktor gegründeter Entwurf oder nicht.

Ich vorschlage, dass Sie weitere Details bekannt geben, besonders in Bezug auf scalabity prospektiere re. Wie, wieviele Gegenstände Sie gleichzeitig aufpassen können (maximal), wieviele Prozesse etc.

Hoffen, dass Hilfen…

Weitere Lösungen  
 
programming4us programming4us