Partage via


Interface de copie en bloc pour la collecte d'événements

AppFabric inclut un fournisseur de copie en bloc par défaut pour SQL Server qui offre des performances supérieures lors de l'écriture de volumes importants de données d'événement dans le magasin de surveillance. Vous pouvez toutefois stocker vos données de surveillance des événements dans un magasin non SQL Server. Dans ce cas, vous devez développer un fournisseur de copie en bloc spécifique pour prendre en charge la copie en bloc des données d'événement vers votre magasin non SQL Server. Si aucun plug-in de copie en bloc approprié n'a été enregistré pour un magasin de données spécifique, le service de collecte d'événements ; revient au mode d'insertion de lot ADO.NET pour écrire les événements dans le magasin de surveillance.

Pour créer un fournisseur de copie en bloc spécifique, votre classe d'objets .NET Framework 4 implémente l'interface Microsoft.ApplicationServer.Monitoring.EventCollector.IBulkCopy dans le cadre des fonctionnalités du fournisseur de copie en bloc. Vous devez ensuite enregistrer le fournisseur dans le fichier Web.config racine. L'enregistrement de votre fournisseur de copie en bloc indique au service de collecte d'événements ; d'appeler l'interface IBulkCopy du fournisseur lorsqu'il a besoin d'écrire des événements dans le magasin. Seul le service de collecte d'événements ; peut accéder à cette interface par programme. Lorsqu'il est appelé, le fournisseur de copie en bloc transfère des volumes importants de données d'événements en cache à partir du suivi des événements pour une session Windows (ETW, Event Tracing for Windows) vers le magasin de surveillance.

Configuration d'un fournisseur de copie en bloc

Voici un exemple d'enregistrement du fournisseur de copie en bloc SQL Server par défaut (System.Data.SqlClient) inclus dans AppFabric auprès du service de collecte d'événements ;. Vous devez enregistrer votre fournisseur de copie en bloc spécifique de la même manière.

<microsoft.applicationServer>
  <monitoring lockElements="bulkCopyProviders, collectors">
    <bulkCopyProviders>
        <bulkCopyProvider providerName="System.Data.SqlClient" type="Microsoft.ApplicationServer.Monitoring.EventCollector.SqlServerBulkCopy, Microsoft.ApplicationServer.Monitoring, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
        </bulkCopyProviders>
    <collectors>
        <collector name="" session="0">
        <settings retryCount="10" eventBufferSize="10000" retryWait="00:00:15" maxWriteDelay="00:00:05" />
        </collector>
    </collectors>
    <default enabled="true" connectionStringName="DefaultMonitoringConnectionString" monitoringLevel="HealthMonitoring" />
  </monitoring>
</microsoft.applicationServer>
    
<connectionStrings>
    <add connectionString="Data Source=localhost;Initial Catalog=ApplicationServerMonitoring;Integrated Security=True" name="DefaultPersistenceConnectionString" providerName="System.Data.SqlClient" />
    <add connectionString="Data Source=localhost;Initial Catalog=ApplicationServerMonitoring;Integrated Security=True" name="DefaultMonitoringConnectionString" providerName="System.Data.SqlClient" />
</connectionStrings>

Microsoft.ApplicationServer.Monitoring.EventCollector.SqlServerBulkCopy est le type de la classe de fournisseur qui implémente l'interface IBulkCopy. L'opération de copie en bloc survient lorsque l'une des conditions suivantes est remplie :

  • Le nombre d'événements dans la mémoire tampon d'événements du service de collecte d'événements ; dépasse la valeur de l'attribut eventBufferSize. Dans cet exemple, il est défini pour écrire une fois la limite des 10 000 événements atteinte.

  • L'intervalle de temps a expiré dans l'attribut maxWriteDelay. Dans cet exemple, il est défini pour écrire toutes les 5 secondes.

Pour plus d'informations sur la configuration du service de collecte d'événements ; et d'un fournisseur de copie en bloc, consultez la rubrique Configuration du service de collecte d'événements.

Microsoft.ApplicationServer.Monitoring.EventCollector.IBulkCopy (Interface)

Voici une définition de l'interface IBulkCopy. Vous devez implémenter la méthode WriteServer pour gérer la tâche spécifique à la base de données d'écriture des données d'événement à l'aide de votre classe de fournisseur spécifique.

Namespace: Microsoft.ApplicationServer.Monitoring.EventCollector
namespace Microsoft.ApplicationServer.Monitoring.EventCollector
{
    using System;
    using System.Data;
    using System.Data.Common;


    public interface IBulkCopy
    {
        //Number of rows in each batch. At the end of each batch, the rows in the batch are written to store
        int BatchSize { get; set; }
      
        //The destination table name in the store to write the rows
        string DestinationTableName { get; set; }

        //The database connection to the store to which the rows are written
        DbConnection Connection { get; set; }

        //Copies all rows from the supplied IDataReader to the destination table specified by the DestinationTableName property, on the store specified by the Connection property
        void WriteToServer(IDataReader dataReader);
    }
}

Pour plus d'informations sur la classe DataTable, consultez la page DataTable, classe (https://go.microsoft.com/fwlink/?LinkId=168571).

  2012-03-05