Comment faire pour utiliser Enterprise Services objet regroupement dans Visual Basic .NET

IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d’articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d’avoir accès, dans votre propre langue, à l’ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s’exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s’efforce aussi continuellement de faire évoluer son système de traduction automatique.

La version anglaise de cet article est la suivante: 317336
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Résumé
Cet article explique comment créer une application de console qui utilise le pool d'objet dans Visual Basic .NET. Vous pouvez activer et désactiver le pool d'objet pour voir comment pool d'objet affecte une application qui crée plusieurs objets coûteuses.

back to the top

Configuration requise

La liste suivante met en évidence le matériel recommandé, logiciel infrastructure réseau et service packs dont vous avez besoin :
  • Microsoft .NET framework
  • Microsoft Windows 2000 Professionnel, Microsoft Windows 2000 Server, Microsoft Windows XP Professionnel ou Microsoft Windows XP Server
Cet article suppose que vous êtes familiarisé avec les sujets suivants :
  • Component Object Model (COM) et Enterprise Services
  • Objet regroupement
  • L'utilisation d'attributs pour étendre des métadonnées
back to the top

Créer une application console dans Visual Basic .NET

  1. Démarrez Microsoft Visual Studio .NET.
  2. Dans le menu Fichier , pointez sur Nouveau , puis cliquez sur Nouveau projet .
  3. Dans la boîte de dialogue Nouveau projet , cliquez sur projets Visual Basic sous types de projet , puis cliquez sur application console sous modèles .
  4. Dans la zone de texte Nom , tapez PoolingDemo et puis cliquez sur OK .
  5. Assurez-vous que la fenêtre Explorateur de solutions est visible. Si l'Explorateur de solutions n'est pas visible, appuyez sur la combinaison de touches CTRL + ALT + L.
  6. Procédez comme suit pour ajouter une référence au composant COM que vous utiliserez :
    1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur Références , puis cliquez sur Ajouter une référence .
    2. Sous l'onglet .NET , cliquez sur System.EnterpriseServices dans la liste des composants disponibles, puis cliquez sur Sélectionner . Notez que System.EnterpriseServices apparaît dans la liste composants sélectionnés .
    3. Cliquez sur OK . Notez que System.EnterpriseServices apparaît sous le nœud Références dans l'application de console.
back to the top

Ajouter un Poolable et une classe non Poolable au projet

  1. Cliquez avec le bouton droit sur PoolingDemo dans l'Explorateur de solutions, pointez sur Ajouter , puis cliquez sur Ajouter un nouvel élément .
  2. Dans la boîte de dialogue Ajouter un nouvel élément , cliquez sur classe sous modèles , puis cliquez sur Ouvrir . Class1.vb est créé par défaut et contient des classes poolable et non poolable.
  3. Pour accéder à objet regroupement attributs et des membres, ajoutez le code suivant vers le haut de Class1.vb :
    Imports System.EnterpriseServices					
  4. Remplacez la déclaration de Class1 par défaut par le code suivant :
    Public Class Poolable    Sub New()        Threading.Thread.Sleep(500)    End Sub    Public Sub DoSomething()        ' Add method contents here.    End SubEnd Class						
    avertissement que le constructeur contient code qui simule une opération coûteuse.
  5. L'objet doit hériter de la classe ServicedComponent fournis sous le contrôle de services de composants runtime. Ajoutez le code suivant après la déclaration de classe :
    Inherits ServicedComponent					
  6. Pour rendre cette classe poolable, procédez comme suit :
    1. L'attribut ObjectPoolingAttribute , qui est enregistré avec les métadonnées du fichier de classe, indicateurs de l'objet de regroupement au moment de l'exécution. Ajoutez le code suivant au-dessus de la déclaration de classe pour ajouter l'attribut ObjectPoolingAttribute à la classe :
      <ObjectPooling(MinPoolSize:=0, MaxPoolSize:=1), JustInTimeActivation(True)>  _  							
      Remarque : bien que l'attribut JustInTimeActivation n'est pas nécessaire pour activer le groupement, vous souhaiterez peut-être utiliser cet attribut dans la plupart des cas. Étant donné qu'il est coûteux pour créer et supprimer des composants, vous pouvez améliorer sensiblement performances en permettant à plusieurs clients à réutiliser les instances des composants.
    2. La méthode de ServicedComponent CanBePooled renvoie False par défaut. Pour remplacer la méthode CanBePooled afin que la méthode renvoie la valeur True , ajoutez le code suivant :
      Protected Overrides Function CanBePooled() As Boolean        Return True    End Function						
  7. Ajoutez le code suivant à la classe non poolable :
    Public Class NonPoolable    Inherits ServicedComponent    Sub New()        ' Simulate an expensive operation.        Threading.Thread.Sleep(500)    End Sub    Public Sub DoSomething()        ' Add method contents here.    End SubEnd Class					
back to the top

Modifier Module1.vb pour créer plusieurs instances de ces classes

  1. Dans la fenêtre de l'éditeur de code, cliquez sur l'onglet Module1.vb .
  2. En haut du fichier, ajoutez l'instruction Imports suivante de l'espace de noms EnterpriseServices autoriser l'accès à la méthode DisposeObject :
    Imports System.EnterpriseServices						
    la méthode DisposeOjbect renvoie des objets à la liste objet, qui permet leur être réutilisé.
  3. Ajoutez la procédure Sub Main suivante :
    Sub Main()        Dim StartTime As DateTime = DateTime.Now        Dim i As Int32        Const Iterations As Int16 = 50        For i = 1 To Iterations            Dim D As New NonPoolable()            D.DoSomething()            ServicedComponent.DisposeObject(D)        Next        Dim EndTime As DateTime = DateTime.Now        Dim Elapsed As TimeSpan = EndTime.Subtract(StartTime)        Dim OperationsPerSecond = Iterations / Elapsed.TotalSeconds        Console.WriteLine("Object Creations / Second = " & OperationsPerSecond)        System.Console.ReadLine()End Sub						
    ce code définit une boucle qui crée une instance de la NonPoolable ou la classe Poolable lors de chacune de ses itérations 50. Le code enregistre le début et la fin heures pour la boucle et enregistre le nombre d'objets qui sont créés par seconde à la console.
back to the top

Générer un nom fort pour l'assembly

Vous devez générer un nom fort de l'assembly qui générera ce projet. Sans un nom fort, vous ne pouvez pas utiliser des services COM + pour enregistrer cet assembly.

Pour générer cette paire de clés cryptographique, utiliser l'outil Strong Name (Tool Sn.exe), qui se trouve dans le dossier d'emplacement dans lequel le Kit de développement SDK de .NET Framework est installé. Utilisez la syntaxe de ligne de commande suivante pour exécuter l'outil Tool Sn.exe :
sn -k drive letter \ DirectoryToPlaceKey \ KeyName .snk
  1. Pour ouvrir une invite de commande Visual Studio .NET, cliquez sur Démarrer , pointez sur programmes , pointez sur Visual Studio .NET , pointez sur Outils de Visual Studio .NET , puis cliquez sur invite de commande Visual Studio .NET .
  2. À l'invite de commandes, tapez la commande suivante :
    sn -k drive letter: \ Project Root Folder \poolkey.snk
  3. Appuyez sur la touche ENTRÉE pour générer la paire de clés. Notez que le message suivant s'affiche dans la fenêtre de commande :
    Paire de clés écrites sur...
  4. Pour associer cette clé avec assembly du projet, double-cliquez sur AssemblyInfo.vb dans l'Explorateur de solutions. Par défaut, Visual Studio .NET inclut les attributs assembly dans ce fichier lorsque vous créez un projet. Ajouter le code suivant à cette liste d'attributs d'assembly :
    <Assembly: AssemblyKeyFile("..\..\poolkey.snk")>					
back to the top

Exécuter le contenu du code

Class1.vb

Imports System.EnterpriseServices<ObjectPooling(MinPoolSize:=0, MaxPoolSize:=1), JustInTimeActivation(True)>  _Public Class Poolable    Inherits ServicedComponent    Sub New()        ' Simulate an expensive operation.        Threading.Thread.Sleep(500)    End Sub    Public Sub DoSomething()        ' Add method contents here.    End Sub    Protected Overrides Function CanBePooled() As Boolean        Return True    End FunctionEnd ClassPublic Class NonPoolable    Inherits ServicedComponent    Sub New()        ' Simulate an expensive operation.        Threading.Thread.Sleep(500)    End Sub    Public Sub DoSomething()        ' Add method contents here.    End SubEnd Class				
back to the top

Module1.vb

Imports System.EnterpriseServicesModule Module1    Sub Main()        Dim StartTime As DateTime = DateTime.Now        Dim i As Int32        Const Iterations As Int16 = 50        For i = 1 To Iterations            'Dim D As New Poolable()            Dim D As New NonPoolable()            D.DoSomething()            ' To return the object to the object pool, use DisposeObject.            ' This allows the object to be reused from the pool. If you do not call            ' DisposeObject, the garbage collector does not collect this object,             ' and the object is not reused from the object pool.            ServicedComponent.DisposeObject(D)        Next        Dim EndTime As DateTime = DateTime.Now        Dim Elapsed As TimeSpan = EndTime.Subtract(StartTime)        Dim OperationsPerSecond = Iterations / Elapsed.TotalSeconds        Console.WriteLine("Object Creations / Second = " & OperationsPerSecond)        ' Pause until the user presses ENTER.        System.Console.ReadLine()    End SubEnd Module				
back to the top

AssemblyInfo.vb

Imports System.ReflectionImports System.Runtime.InteropServices' The following set of attributes control general information about an assembly. ' Change these attribute values to modify the information that is associated with an assembly.' Review the values of the assembly attributes.<Assembly: AssemblyTitle("")> <Assembly: AssemblyDescription("")> <Assembly: AssemblyCompany("")> <Assembly: AssemblyProduct("")> <Assembly: AssemblyCopyright("")> <Assembly: AssemblyTrademark("")> <Assembly: CLSCompliant(True)> <Assembly: AssemblyKeyFile("..\..\poolkey.snk")> 'The following GUID is for the ID of the TypeLib if you expose this project to COM.<Assembly: Guid("30324ED6-329C-4B12-BDA2-8E817F1E2079")> ' Version information for an assembly consists of the following four values:''      Major Version'      Minor Version '      Build Number'      Revision'' You can specify all of these values, or you can use the asterisk (*) for' the Build Number and the Revision values.<Assembly: AssemblyVersion("1.0.*")>				
back to the top

Vérifiez qu'il fonctionne

  1. Appuyez sur la touche F5 pour exécuter l'application en mode débogage. Notez que cela crée des instances de la classe NonPoolable .
  2. Attendez environ 25 secondes. Notez que le message suivant s'affiche :
    Objet créations/deuxième = 1.73542243764044
    Remarque : le nombre exact de créations par seconde peut-être varier.
  3. Appuyez sur ENTRÉE pour quitter l'application de console et revenir à Visual Studio .NET.
  4. Modifier Module1.vb pour créer des instances de la classe Poolable . Modifiez la première ligne de la procédure Sub Main comme suit :
    Dim D As New Poolable()					
  5. Appuyez sur F5 pour exécuter l'application à nouveau.
  6. Attendez quelques secondes. Notez que le suivant message (ou similaires) s'affiche :
    Objet créations/deuxième = 29.1977213631085
    Notez l'amélioration significative des performances lorsque vous utilisez l'objet regroupement.
  7. Appuyez sur ENTRÉE pour quitter l'application de console et revenir à Visual Studio .NET.
back to the top

Résolution des problèmes

N'oubliez pas de remplacer CanBePooled . Si vous omettez cette étape, vous ne pouvez pas pool l'objet.

back to the top

RÉFÉRENCES

Pour savoir comment implémenter et déployer COM + configuré classes à l'aide le langage commun runtime, comment accéder aux contexte de l'objet et appelle le contexte et comment gérer les références d'objet et le contexte relatif, consultez site Web de Microsoft à l'adresse suivante :
Intégration de COM +: comment .NET Enterprise Services peuvent vous aident à créer applications distribuées
http://msdn.microsoft.com/en-us/library/bb985615.aspx
back to the top

Avertissement : Cet article a été traduit automatiquement.

Propriétés

ID d'article : 317336 - Dernière mise à jour : 01/11/2015 04:32:41 - Révision : 4.4

Microsoft .NET Framework Class Libraries 1.0, Microsoft Enterprise Services (included with the .NET Framework) 1.0, Microsoft Visual Basic .NET 2002 Initiation

  • kbnosurvey kbarchive kbmt kbhowtomaster KB317336 KbMtfr
Commentaires