Wenn eine Windows Azure-Rolle beendet wird, wird ihre OnStop()
-Methode aufgerufen. Es stellt sich heraus, dass RoleEnvironment.Stopping
event zuvor ausgelöst wurde OnStop()
wird aufgerufen. MSDN gibt an, dass dieses Ereignis der richtige Ort für den Clean-Shutdown-Code für Rollen ist.
Was ist der Unterschied zwischen den beiden? Warum sollte ich den clean shutdown code in Stopping
event und nicht in OnStop()
method override setzen?
Neben der Tatsache, dass der Event-Mechanismus eine flexible Möglichkeit bietet, Handler anzuhängen, während die OnStop
-Methode direkt auf der von RoleEntryPoint
abgeleiteten Klasse definiert werden muss, ist ein relevanter Unterschied:
So wird das stoppende Ereignis nicht ausgelöst, wenn die VM zum Aktualisieren des Gastbetriebssystems neu gestartet wird.
Ein weiterer Unterschied ist dies:
%Vor%Obwohl in der Dokumentation nicht erwähnt wird, dass das Stopp-Ereignis eine solche Begrenzung hat.
Quelle:
Ereignisse ermöglichen es anderen Abonnenten in anderen Klassen, eine Aktion auszuführen, während die Methode dem Unterklassenautor wie Ihnen erlaubt, sie in die tatsächliche Klasse zu platzieren und (zum Beispiel) zu modifizieren, welche Ereignisse ausgelöst werden.
Brent Stineman (Windows Azure MVP) blogged über den RoleEntryPoint und die zugehörige start / run / stop-Sequenz und beschreibt sowohl Stop als auch OnStop in den Sequenzbeschreibungen.
Tags und Links azure windows cloud azure-configuration