Resource Dispenser Resource Allocation Process
Jedes Mal, wenn ein Ressourcenspender eine Ressource von seinem Besitzer zuweist, geschieht Folgendes:
Der Ressourcenspender deklariert einen Ressourcentypbezeichner (RESTYPID), der den erforderlichen Ressourcentyp beschreibt.
Der Ressourcenspender ruft die IHolder::AllocResource-Methode des Halters auf und übergibt diese RESTYPID.
Der Inhaber generiert eine Kandidatenliste aus den verfügbaren Ressourcen. Kandidaten sind Ressourcen, die entweder nicht in einer Transaktion eingetragen oder bereits in der Transaktion des aufrufenden Objekts eingetragen sind.
Diese Kandidaten werden einzeln an die IDispenserDriver::RateResource-Methode übergeben, wo sie bewertet werden (auf einer Skala von 0 bis 100), wie gut die Kandidatenressource mit der gewünschten RESTYPID übereinstimmt.
Der Besitzer wählt die Ressource aus, für die der Ressourcenspender den höchsten Preis erhält.
Der Ressourcenspender kann die Bewertungsschleife frühzeitig beenden, indem dem Kandidaten eine Ressourcenbewertung von 100 zugewiesen wird (eine perfekte Anpassung). Eine Bewertung von 100 wäre normalerweise für kandidatenfähige Ressourcen reserviert, die bereits ordnungsgemäß eingetragen sind, es sei denn, der Ressourcenspender kommt zu dem Schluss, dass die Aufnahme ein kostengünstiger Vorgang ist. Wenn alle kandidatenfähigen Ressourcen (falls vorhanden) mit 0 (nicht verwendbar) bewertet werden, wird eine neue Ressource erstellt, indem IDispenserDriver::CreateResource aufgerufen wird.
Wenn die zuvor ausgewählte Ressource nicht bereits in der Transaktion des aufrufenden Objekts eingetragen ist, wird die IDispenserDriver::EnlistResource-Methode des Ressourcenspenders aufgerufen.
Der AllocResource-Methodenaufruf wird an den Ressourcenspender mit der eingetragenen Ressource zurückgegeben.
Zugehörige Themen