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

  1. 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
    {
    }
    
  2. Setzen Sie die Methoden Activate , Deactivate und CanBePooled der System.EnterpriseServices.ServicedComponent-Klasse außer Kraft.

  3. Testen Sie das gepoolte Objekt in einer Clientanwendung:

    1. 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 eine Perform-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();
      
      
    2. 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

Footer image

Copyright © 2007 by Microsoft Corporation. Alle Rechte vorbehalten.