Procédure de création d'un objet pool et de définition de sa taille et de ses délais

Pour une classe dérivée de la classe System.EnterpriseServices.ServicedComponent, il est possible d'utiliser le pool d'objet de COM+ pour éviter toute charge liée à l'instanciation d'objets de toutes pièces. Ainsi, les objets sont extraits d'un pool lorsqu'ils sont activés. Pour plus d'informations, voir la rubrique sur le pool d'objet.

Pour créer un objet mis en pool et définir sa taille et ses délais

  1. Définissez une classe dérivée de la classe System.EnterpriseServices.ServicedComponent, puis appliquez l'attribut ObjectPoolingAttribute à cette classe. Par exemple, le code ci-dessous définit une classe appelée TestObjectPooling et définit les propriétés MinPoolSize, MaxPoolSize et CreationTimeout de la classe.

    <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. Remplacez les méthodes Activate , Deactivate et CanBePooled de la classe System.EnterpriseServices.ServicedComponent.

  3. Testez l'objet mis en pool dans une application cliente :

    1. Créez une instance de la classe d'objets mis en pool et appelez les méthodes sur l'objet mis en pool. Par exemple, le code ci-après crée une instance de la classe TestObjectPooling et appelle une méthode Perform.

      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. Appelez la méthode DisposeObject pour que l'objet regagne le pool.

      ServicedComponent.DisposeObject (order)
      
      ServicedComponent.DisposeObject (order);
      

Exemple

<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;
      }
}
 

Voir aussi

Référence

ObjectPoolingAttribute
System.EnterpriseServices Namespace

Concepts

Résumé des services COM+ disponibles
Pool d'objet

Footer image

Copyright ©2007 par Microsoft Corporation. Tous droits réservés.