Implémentation d'une classe Connection pour une extension pour le traitement des données
L'objet Connection représente une connexion de base de données ou une ressource similaire et représente le point de départ pour les utilisateurs d'une extension pour le traitement des données SQL Server Reporting Services. Il représente des connexions aux serveurs de base de données, bien que toute entité ayant un comportement similaire puisse être exposée comme un objet Connection.
Pour implémenter un objet Connection, créez une classe qui implémente IDbConnection et peut implémenter IDbConnectionExtension.
Dans votre implémentation, vous devez garantir qu'une connexion est créée et ouverte avant que les commandes puissent être exécutées. Veillez à ce que votre implémentation oblige les clients à ouvrir et fermer des connexions explicitement, plutôt qu'une implémentation qui ouvre et ferme des connexions implicitement pour le client. Effectuez vos vérifications de la sécurité lorsque la connexion est obtenue. La nécessité d'une connexion existante pour les autres classes dans votre extension pour le traitement des données SSRS garantit ensuite que les vérifications de la sécurité sont toujours effectuées lors de l'utilisation de votre source de données.
Les propriétés de la connexion souhaitée sont représentées sous la forme d'une chaîne de connexion. Il est fortement recommandé que les extensions pour le traitement des données SSRS prennent en charge la propriété ConnectionString à l'aide du système de paire nom/valeur familier défini par OLE DB.
[!REMARQUE]
Les objets Connection consomment souvent beaucoup de ressources, vous pouvez donc envisager de regrouper des connexions ou faire appel à d'autres techniques pour réduire ce problème.
IDbConnection hérite de IExtension. Vous devez implémenter l'interface IExtension dans le cadre de votre implémentation de classe de connexion. L'interface IExtension permet à une classe d'implémenter un nom d'extension localisé et de traiter des informations de configuration spécifiques à l'extension stockées dans le fichier de configuration Reporting Services.
Votre objet Connection contient la propriété LocalizedName dans le cadre de son implémentation de IExtension. Il est fortement recommandé que les extensions pour le traitement des données Reporting Services prennent en charge la propriété LocalizedName, afin que les utilisateurs soient confrontés à un nom localisé familier pour l'extension dans une interface utilisateur, telle que Gestionnaire de rapports.
IExtension permet également à votre objet Connection d'extraire et traiter les données de configuration personnalisées stockées dans le fichier RSReportServer.config. Pour plus d'informations sur le traitement des données de configuration personnalisées, consultez la méthode SetConfiguration.
La classe qui implémente IExtension n'est pas déchargée de la mémoire lorsque vos classes restantes d'extension pour le traitement des données sont déchargées. De ce fait, vous pouvez utiliser votre classe Extension pour stocker des informations d'état intra-connexion ou stocker des données qui peuvent être mises en cache dans la mémoire. Votre classe Extension reste en mémoire durant l'exécution du serveur de rapports.
Vous pouvez étendre votre classe Connection pour inclure la prise en charge des informations d'identification dans Reporting Services en implémentant IDbConnectionExtension. Lorsque vous implémentez les propriétés IntegratedSecurity, UserName et Password de l'interface IDbConnectionExtension, activez la case à cocher Sécurité Intégrée et les zones de texte Nom d'utilisateur et Mot de passe de la boîte de dialogue Source de données dans le Générateur de rapports. Cette opération permet au Générateur de rapports de stocker et d'extraire des informations d'identification pour les sources de données qui prennent en charge l'authentification. Les informations d'identification sont stockées de manière sécurisée et utilisées lors du rendu des rapports en mode aperçu.
[!REMARQUE]
L'implémentation implicite de IDbConnectionExtension nécessite d'implémenter les membres des interfaces IDbConnection et IExtension.
Pour un exemple d'implémentation de la classe Connection, consultez SQL Server Reporting Services Product Samples (page éventuellement en anglais).
Voir aussi