Verfahrensweise: Erstellen eines gepoolten Objekts und Festlegen seiner Größe und Timeoutgrenzwerte
Bei einer Klasse, die von der System.EnterpriseServices.ServicedComponent-Klasse abgeleitet wird, kann mithilfe des COM+-Objektpoolings der unnötige Arbeitsaufwand vermieden werden, Objekte vollständig neu zu instanziieren. Stattdessen werden Objekt bei Aktivierung aus dem Pool abgerufen. Weitere Informationen hierzu finden Sie unter Objektpooling.
So erstellen Sie ein gepooltes Objekt und legen dessen Größe und Timeoutgrenzwerte fest
Definieren Sie eine Klasse, die von der System.EnterpriseServices.ServicedComponent-Klasse abgeleitet wird, und wenden Sie das ObjectPoolingAttribute-Attribut auf die Klasse an. Im folgenden Code wird beispielsweise eine Klasse namens
TestObjectPooling
definiert, und die Eigenschaften MinPoolSize, MaxPoolSize und CreationTimeout werden für die Klasse festgelegt.<ObjectPooling(MinPoolSize := 2, MaxPoolSize := 5, _ CreationTimeout := 20000)> _ Public Class TestObjectPooling Inherits ServicedComponent End Class
[ObjectPooling(Enabled=true, MinPoolSize=2, MaxPoolSize=5, CreationTimeout=20000)] public class TestObjectPooling : ServicedComponent { }
Setzen Sie die Methoden Activate , Deactivate und CanBePooled der System.EnterpriseServices.ServicedComponent-Klasse außer Kraft.
Testen Sie das gepoolte Objekt in einer Clientanwendung:
Erstellen Sie eine Instanz der gepoolten Objektklasse, und rufen Sie die Methoden für das gepoolte Objekt auf. Im folgenden Code wird beispielsweise eine Instanz der
TestObjectPooling
-Klasse erstellt und einePerform
-Methode aufgerufen.Public Class App Overloads Public Shared Sub Main(args() As String) Dim order As New TestObjectPooling() order.Perform()
public class App { public static int Main(string[] args) { TestObjectPooling order = new TestObjectPooling(); order.Perform();
Rufen Sie die DisposeObject-Methode auf, um das Objekt wieder an den Pool zurückzugeben.
ServicedComponent.DisposeObject (order)
ServicedComponent.DisposeObject (order);
Beispiel
<ObjectPooling(MinPoolSize := 2, MaxPoolSize := 5, _
CreationTimeout := 20000)> _
Public Class TestObjectPooling
Inherits ServicedComponent
Public Sub Perform ()
' Method contents go here.
End Sub
Protected Overrides Sub Activate()
' Called when removed from the pool.
End Sub
Protected Overrides Sub Deactivate()
' Called before deactivating or placing back in pool.
End Sub
Protected Overrides Function CanBePooled() As Boolean
' Called after Deactivate. Indicate your vote here.
Return True
End Function
End Class
[ObjectPooling(Enabled=true, MinPoolSize=2, MaxPoolSize=5, CreationTimeout=20000)]
public class TestObjectPooling : ServicedComponent
{
public void Perform ()
{
// Method contents go here.
}
protected override void Activate()
{
// Called when removed from the pool.
}
protected override void Deactivate()
{
// Called before deactivating or placing back in pool.
}
protected override bool CanBePooled()
{
// Called after Deactivate. Indicate your vote here.
return true;
}
}
Siehe auch
Referenz
ObjectPoolingAttribute
System.EnterpriseServices Namespace
Konzepte
Zusammenfassung der verfügbaren COM+-Dienste
Objektpooling
Copyright © 2007 by Microsoft Corporation. Alle Rechte vorbehalten.