Analysis Services Personalization Extensions
Le estensioni della personalizzazione di SQL Server Analysis Services rappresentano la struttura di base dell'implementazione di un'architettura plug-in. In un'architettura plug-in è possibile sviluppare dinamicamente nuovi oggetti cubo e funzionalità e condividerli facilmente con gli altri sviluppatori. Di conseguenza, le estensioni della personalizzazione di Analysis Services forniscono la funzionalità che rende possibile raggiungere i seguenti obiettivi:
Progettazione e distribuzione dinamiche Subito dopo la progettazione e la distribuzione delle estensioni della personalizzazione di Analysis Services, gli utenti dispongono dell'accesso agli oggetti e alle funzionalità all'inizio della sessione successiva.
Indipendenza dell'interfaccia Indipendentemente dall'interfaccia utilizzata per creare le estensioni della personalizzazione di Analysis Services, gli utenti possono utilizzare qualsiasi interfaccia per accedere agli oggetti e alle funzionalità.
Contesto di sessione Le estensioni della personalizzazione di Analysis Services non sono oggetti permanenti nell'infrastruttura esistente e non richiedono la rielaborazione del cubo. Vengono esposti e creati per l'utente al momento della connessione al database e rimangono disponibili per la durata della sessione dell'utente.
Distribuzione rapida È possibile condividere le estensioni della personalizzazione di Analysis Services con altri sviluppatori di software senza la necessità di specifiche dettagliate su dove o come trovare la funzionalità estesa.
Le estensioni della personalizzazione di Analysis Services possono essere utilizzate per diversi scopi. Ad esempio, la propria azienda dispone di vendite che hanno valute diverse. Viene creato un membro calcolato che restituisce le vendite consolidate nella valuta locale della persona che accede al cubo. Tale membro viene creato come estensione della personalizzazione. Il membro calcolato viene quindi condiviso con un gruppo di utenti. Quando gli utenti vengono condivisi hanno accesso immediato al membro calcolato nel momento in cui si connettono al server anche se non utilizzano la stessa interfaccia utilizzata durante la creazione del membro calcolato.
Le estensioni della personalizzazione di Analysis Services rappresentano una semplice ed elegante modifica all'architettura dell'assembly gestita esistente e vengono esposte nell'intero modello a oggetti Analysis Services Microsoft.AnalysisServices.AdomdServer, nella sintassi MDX e nei set di righe degli schemi.
Architettura logica
L'architettura delle estensioni della personalizzazione di Analysis Services è basata sull'architettura dell'assembly gestita e sui quattro elementi di base seguenti:
Attributo personalizzato [PlugInAttribute]
Quando si avvia il servizio, Analysis Services carica gli assembly necessari e determina quali classi dispongono dell'attributo personalizzato PlugInAttribute.[!NOTA]
.NET Framework definisce gli attributi personalizzati come un modo per descrivere il codice e influisce sul comportamento in fase di esecuzione. Per ulteriori informazioni, vedere l'argomento",Cenni preliminari sugli attributi" nella Guida per gli sviluppatori di .NET Framework in MSDN.
Per tutte le classi con l'attributo personalizzato PlugInAttribute, Analysis Services richiama i costruttori predefiniti. La richiamata di tutti i costruttori all'avvio fornisce un percorso comune, indipendente dalle attività dell'utente, dal quale è possibile compilare nuovi oggetti.
Oltre a compilare una piccola cache di informazioni sulla creazione e sulla gestione di estensioni della personalizzazione, in genere il costruttore sottoscrive gli eventi SessionOpened e SessionClosing. Se la sottoscrizione di tali eventi non riesce, la classe potrebbe essere erroneamente contrassegnata per la pulizia da parte del Garbage Collector del Common Language Runtime.
Contesto di sessione
Per gli oggetti basati sulle estensioni della personalizzazione, Analysis Services crea un ambiente di esecuzione durante la sessione client e compila dinamicamente la maggior parte degli oggetti dell'ambiente. Come qualsiasi altro assembly CLR, tale ambiente di esecuzione dispone anche dell'accesso ad altre funzioni e stored procedure. Al termine della sessione utente, Analysis Services rimuove gli oggetti generati dinamicamente e chiude l'ambiente di esecuzione.Eventi
La creazione degli oggetti viene attivata dagli eventi di sessione On-Cube-OpenedCubeOpened e On-Cube-ClosingCubeClosing.La comunicazione tra client e server si verifica attraverso eventi specifici. Tali eventi informano il client delle situazioni che portano alla compilazione degli oggetti del client. L'ambiente del client viene creato dinamicamente utilizzando due set di eventi: eventi di sessione ed eventi del cubo.
Gli eventi di sessione sono associati all'oggetto server. Quando un client accede a un server, Analysis Services crea una sessione e genera l'evento SessionOpened. Quando un client termina la sessione nel server, Analysis Services crea una sessione e genera l'evento SessionClosing.
Gli eventi del cubo sono associati all'oggetto connessione. La connessione a un cubo genera l'evento CubeOpened. La chiusura della connessione a un cubo, tramite la chiusura del cubo o il passaggio a un cubo diverso, genera un evento CubeClosing.
Tracciabilità e gestione degli errori
Tutte le attività sono tracciabili utilizzando SQL Server Profiler. Gli errori non gestiti vengono segnalati al registro eventi di Windows.
La creazione e la gestione degli oggetti sono indipendenti dall'architettura e rappresentano l'unica responsabilità degli sviluppatori degli oggetti.
Base dell'infrastruttura
Le estensioni della personalizzazione di Analysis Services sono basate su componenti esistenti. Di seguito è riportato un riepilogo dei miglioramenti forniti dalla funzionalità delle estensioni della personalizzazione.
Assembly
L'attributo personalizzato PlugInAttribute può essere aggiunto agli assembly personalizzati per identificare le classi delle estensioni della personalizzazione di Analysis Services.
Modifiche al modello a oggetti AdomdServer
Gli oggetti seguenti nel modello a oggetti Microsoft.AnalysisServices.AdomdServer sono stati migliorati o aggiunti al modello.
Nuova classe AdomdConnection
La classe AdomdConnection è nuova ed espone molte estensioni della personalizzazione tramite proprietà ed eventi.
Proprietà
SessionID, valore della stringa di sola lettura che rappresenta l'ID della sessione della connessione corrente.
ClientCulture, riferimento di sola lettura alle impostazioni internazionali del client associate alla sessione corrente.
User, riferimento di sola lettura all'interfaccia di identità che rappresenta l'utente corrente.
Eventi
Nuove proprietà nella classe del contesto
La classe Context ha due nuove proprietà:
Server, riferimento di sola lettura al nuovo oggetto server.
CurrentConnection, riferimento di sola lettura al nuovo oggetto AdomdConnection.
Nuova classe server
La classe Server è nuova ed espone molte estensioni della personalizzazione tramite proprietà ed eventi della classe.
Proprietà
Name, valore della stringa di sola lettura che rappresenta il nome del server.
Culture, riferimento di sola lettura alla lingua globale associata al server.
Eventi
Classe AdomdCommand
La classe AdomdCommand supporta ora i comandi MDX seguenti:
Estensioni MDX e miglioramenti
Il comando CREATE MEMBER è stato migliorato con le proprietà caption, display_folder e associated_measure_group.
Il comando UPDATE MEMBER è stato aggiunto per evitare di ricreare il membro quando è necessario un aggiornamento, con la conseguente perdita di precedenza nella risoluzione dei calcoli. Gli aggiornamenti non sono in grado di modificare l'ambito del membro calcolato, di spostare il membro calcolato in un elemento padre diverso o di definire un diverso solveorder.
Il comando CREATE SET è stato migliorato con le proprietà caption e display_folder e con la nuova parola chiave STATIC | DYNAMIC. Static indica che il set viene valutato solo al momento della creazione. Dynamic indica che il set deve essere valutato tutte le volte che viene utilizzato in una query. Se la parola chiave viene omessa, il valore predefinito è STATIC.
I comandi CREATE KPI e DROP KPI sono stati aggiunti alla sintassi MDX. Gli indicatori KPI possono essere creati dinamicamente da qualsiasi script MDX.
Estensioni dei set di righe degli schemi
In MDSCHEMA_MEMBERS è stata aggiunta la colonna scope. I valori di ambito sono i seguenti: MDMEMBER_SCOPE_GLOBAL=1, MDMEMBER_SCOPE_SESSION=2.
In MDSCHEMA_SETS è stata aggiunta la colonna set_evaluation_context. I valori di contesto di valutazione dei set sono i seguenti: MDSET_RESOLUTION_STATIC = 1, MDSET_RESOLUTION_DYNAMIC = 2.
In MDSCHEMA_KPIS è stata aggiunta la colonna Scope. I valori di ambito sono i seguenti: MDKPI_SCOPE_GLOBAL=1, MDKPI_SCOPE_SESSION=2.