Condividi tramite


Implementazione di una classe Connection per un'estensione per l'elaborazione dati

L'oggetto Connection rappresenta una connessione al database o una risorsa simile ed è il punto di partenza per gli utenti di un'estensione per l'elaborazione dati di SQL Server Reporting Services. Questo oggetto rappresenta le connessioni ai server database, sebbene qualsiasi entità con un comportamento simile possa essere esposta come oggetto Connection.

Per implementare un oggetto Connection, creare una classe che implementa IDbConnection e, se si desidera, che implementa IDbConnectionExtension.

Nell'implementazione è necessario assicurarsi che prima dell'esecuzione dei comandi venga creata e aperta una connessione. Assicurarsi che l'implementazione richieda ai client di aprire e chiudere le connessioni in modo esplicito, anziché lasciare che l'implementazione apra e chiuda le connessioni in modo implicito per il client. Dopo aver stabilito la connessione, eseguire i controlli di sicurezza. Richiedendo una connessione esistente per le altre classi nell'estensione per l'elaborazione dati di SSRS, è possibile garantire che vengano sempre eseguiti i controlli di sicurezza quando si utilizza l'origine dati.

Le proprietà della connessione desiderata vengono rappresentate come stringa di connessione. È consigliabile che l'estensione per l'elaborazione dati di SSRS supporti la proprietà ConnectionString utilizzando il sistema familiare di coppia nome/valore definito da OLE DB.

Nota

Per ottenere gli oggetti Connection è spesso necessario un utilizzo elevato delle risorse, pertanto è consigliabile considerare la creazione di pool di connessioni o l'utilizzo di altre tecniche che prevedano un minor sovraccarico delle risorse.

IDbConnection eredita da IExtension. È necessario implementare l'interfaccia IExtension come parte dell'implementazione della classe Connection. L'interfaccia IExtension consente a una classe di implementare un nome di estensione localizzato e di elaborare le informazioni di configurazione specifiche dell'estensione archiviate nel file di configurazione di Reporting Services.

L'oggetto Connection contiene la proprietà LocalizedName tramite l'implementazione di IExtension. È consigliabile che le estensioni per l'elaborazione dati di Reporting Services supportino la proprietà LocalizedName, in modo che gli utenti possano visualizzare un nome familiare e localizzato per l'estensione in un'interfaccia utente, ad esempio Gestione report.

IExtension consente inoltre all'oggetto Connection di recuperare ed elaborare i dati di configurazione personalizzati archiviati nel file RSReportServer.config. Per ulteriori informazioni sull'elaborazione dei dati di configurazione personalizzati, vedere il metodo SetConfiguration.

La classe che implementa IExtension non viene scaricata dalla memoria quando vengono scaricate le altre classi delle estensioni per l'elaborazione dati. Per questo motivo, è possibile utilizzare la classe Extension per archiviare le informazioni sullo stato tra le connessioni o i dati che possono essere memorizzati nella cache. La classe Extension rimane in memoria fino a quando il server di report è in esecuzione.

È possibile estendere la classe Connection per includere il supporto per le credenziali in Reporting Services implementando IDbConnectionExtension. Quando si implementano le proprietà IntegratedSecurity, UserName e Password dell'interfaccia IDbConnectionExtension, si abilitano la casella di controllo Sicurezza integrata e le caselle di testo Nome utente e Password della finestra di dialogo Origine dati di Progettazione report. In questo modo, è possibile consentire a Progettazione report di archiviare e recuperare le credenziali per le origini dati che supportano l'autenticazione. Le credenziali vengono archiviate in modo protetto e utilizzate quando viene eseguito il rendering dei report in modalità di anteprima.

Nota

L'implementazione di IDbConnectionExtension richiede in modo implicito che vengano implementati i membri delle interfacce IDbConnection e IExtension.

Per un'implementazione di esempio della classe Connection, vedere SQL Server Reporting Services Product Samples.