Architettura di estensibilità della finestra di progettazione di dati
Estensibilità di progettazione di dati (DDEX) fornisce un meccanismo per le finestre di progettazione che estende di dati in Visual Studio per comunicare con le origini dati esterni e per esporre le relative gerarchie di oggetti e per consentire le visualizzazioni della gerarchia in Esplora server. DDEX consente l'accesso agli oggetti origine dati esterna in fase di progettazione, non solo fornendo la visibilità dell'oggetto dati in Visual Studio, ma anche che abilita la funzionalità di trascinamento della selezione, la visibilità della griglia delle proprietà dell'oggetto e l'integrazione delle funzionalità delle finestre di progettazione di Visual Studio. In breve, DDEX consente ai provider delle origini dati di terze parti godano di cittadinanza completa relativi alla fase di progettazione di Visual Studio.
Nota
I provider di DDEX sono diversi dai provider di dati.NET.Per ulteriori informazioni, vedere provider di DDEX.
Estensibilità di progettazione di dati, quindi, è relativo all'utilizzo del DDEX SDK e API gestite dell'architettura della funzionalità e per integrare gli oggetti origine dati esterna nell'ambiente di Visual Studio.
Nota
Il presente SDK deve essere utilizzato con Cenni preliminari sull'estensione di Visual Studio.
Cenni preliminari sull'architettura
Nella figura riportata di seguito fornisce un livello elevato, visualizzazione del disegno diagrammatico dell'architettura di DDEX. In, si vedrà che il client di DDEX è ospitato in Visual Studioe che utilizza l'accesso e i servizi di base (parte della libreria di classi gestite di DDEX) per comunicare e interagire con un provider di DDEX. Il provider stesso di DDEX è semplicemente un'implementazione di entità di supporto, ovvero classi gestite. DDEX quindi comunica con il livello dati utilizzando un provider di dati dedicato.NET. Si noti, tuttavia, che il provider di dati può essere omesso nei casi in cui il provider di DDEX viene fornita la funzionalità necessarie per interagire con l'origine dati.
Diagramma dell'architettura di DDEX
Il livello di DDEX, due dei relativi elementi sono controlli comuni: Entità del supporto tecnico DDEX e servizi di DDEX.
Entità di supporto, servizi di base e servizi di accesso
Le entità del supporto tecnico DDEX sono interfacce che un provider di DDEX implementa per abilitare l'estensibilità di dati. Infatti, è l'implementazione di queste entità di supporto che costituisce un provider di DDEX.
I servizi di DDEX, invece, vengono bloccati sui servizi di base e servizi di accesso. I servizi di base sono servizi di base da cui le entità di supporto sono esposte. Sono interfacce implementate internamente come classi gestite che chiamate di Visual Studioper creare le entità di primo livello di supporto del provider di DDEX e da utilizzare provider di dati e le origini dati. I servizi di accesso, che sono anche accede internamente implementato come classi gestite, forniscono Visual Studio con la possibilità di creare e gestire le connessioni dati e di accedere a elementi visivi di struttura dei dati in memoria del supporto XML dell'oggetto dati e del supporto XML di visualizzazione dati. Inoltre, i servizi di accesso utilizzano le entità di supporto.
Nella figura riportata di seguito viene illustrato in dettaglio la relazione tra entità di supporto e i servizi.
Diagramma di entità di supporto e dei servizi di Accesso
Entità di supporto
Le API gestite che costituiscono il problema una fanno parte del provider di DDEX in tre categorie:
Supporto della connessione
Supporto dell'oggetto dati
supporto di visualizzazione dati
Supporto della connessione
Il supporto di connessione fornisce un modo per specificare le informazioni di connessione, tra l'origine dati e la stringa di connessione. Questa operazione può essere eseguita o a livello di codice, se le informazioni di connessione sono note, o tramite l'interfaccia utente di connessione utilizzate per richiedere le informazioni di connessione. Facoltativamente, un provider di DDEX possibile esporre un controllo di connessione ospitato nella finestra di dialogo di connessione di Visual Studio.
Supporto dell'oggetto dati
L'utilizzo di un file XML di supporto dell'oggetto dati, un provider di DDEX definisce gli oggetti dati esposti dal provider di dati da un'origine dati. Viene inoltre definita una gerarchia di oggetti, o il modello a oggetti, per questi oggetti.
Il motore dei metadati di Visual Studiogestisce una libreria di classi fortemente tipizzate che consentono a un oggetto origine dati generico quali tabelle, visualizzazioni e stored procedure nonché di proprietà generiche dell'oggetto, che riduce ai tipi mappati. Le definizioni degli oggetti dati fornito nel file XML consentono ai tipi di oggetto di mapping supportati dal provider di dati a uno di questi tipi generici riconosciuti dal motore dei metadati.
Oltre alla definizione dei tipi di oggetti e a eseguirne il mapping ai tipi generici, lo schema di supporto dell'oggetto dati inoltre necessario specificare quanto segue:
Come enumerare gli oggetti di tipo specificato, che viene eseguita specificando un gestore che viene chiamato quando enumerano l'oggetto è obbligatorio.
Come recuperare i metadati dell'oggetto dei metadati, come identificatore di oggetto o proprietà dell'oggetto.
Come costruire un oggetto degli Appunti nei casi in cui un'operazione di copia viene eseguita su un oggetto del tipo specificato. le finestre di progettazione di dati diVisual Studioutilizzano il formato degli Appunti di riferimento (DSRef) dell'origine dati. Gli oggetti che supportano DSRef possono trascinare-e-essere rilasciati sulle finestre di progettazione di dati di Visual Studio .
Per ulteriori informazioni sul supporto dell'oggetto dati, vedere Supporto di dati di DDEX.
supporto di visualizzazione dati
L'utilizzo di un file XML di supporto di visualizzazione dati, un provider di DDEX definisce la gerarchia fisica di oggetti dati visualizzati in un nodo specificato di connessione in Visual Studio Esplora server. È possibile definire più visualizzazioni per la stessa origine dati.
Oltre a definire la gerarchia di oggetti fisica, è anche possibile specificare informazioni aggiuntive sui nodi della gerarchia, ad esempio il nome visualizzato localizzato, i comandi del menu di scelta rapida (nome del comando, CLSID e gestore), icone e altre informazioni, in base alle necessità.
Per ulteriori informazioni sul supporto di visualizzazione dati, vedere supporto di visualizzazione dati di DDEX.
Servizi di base
DDEX fornisce un set di interfacce implementate internamente come classi gestite che Visual Studio chiama per accedere alla funzionalità implementata dal provider di DDEX sotto forma di entità di primo livello di supporto. Queste interfacce sono conosciuti collettivamente come servizi di base di DDEX.
i servizi di base più importanti includono quanto segue:
Gestione del provider consente di enumeriate i provider registrati e la query di DDEX per gli oggetti di un tipo specifico (interfaccia diIVsDataProviderManager ).
La factory dell'oggetto del provider di dati consente di creare gli oggetti dati distribuiti dal provider di DDEX (interfaccia diIVsDataProviderObjectFactory ).
I servizi di base di DDEX consentono di Visual Studio comunichi con le origini dati in un contesto in fase di progettazione. A tale scopo è necessario disporre di componenti che consentono la connessione a un'origine dati nonché disporre di un set di servizi specializzati che forniscono i tipi di oggetto di origine di accesso ai dati e le visualizzazioni del layout gerarchici.
In un'implementazione tipica, le chiamate client di un DDEX sul provider di dati gestiti la factory per creare un'istanza di blocchi predefiniti principali. Questi blocchi predefiniti principali includono gli oggetti di supporto della connessione e la connessione-compilazione (vedere le entità di supporto e i servizi di Accesso diagramma). Alcuni di questi oggetti di blocchi predefiniti quindi generano gli oggetti secondari, in base alle necessità, basso nella gerarchia delle entità di supporto.
servizi di accesso
DDEX fornisce un set di interfacce implementate internamente come classi gestite che Visual Studio chiama per accedere alla funzionalità per connessione dati e la rappresentazione in memoria del supporto XML dell'oggetto dati e del supporto XML di visualizzazione dati. Queste interfacce sono conosciuti collettivamente come servizi di accesso di DDEX.
Alcuni dei servizi di accesso più importanti includono quanto segue:
La factory della connessione dati consente di creare oggetti connessione (interfaccia diIVsDataConnectionFactory ).
La finestra di dialogo di connessione dati consente di richiedere informazioni all'utente informazioni di connessione e creare oggetti connessione (interfaccia diIVsDataConnectionDialog ).
È possibile visualizzare la connessione all'origine dati (e i relativi componenti chiave, come la factory di connessione e di connection manager) come un servizio integrato offerto dal framework di estensibilità di dati. In questa visualizzazione, la classe agisce da con i metadati del motore di Visual Studio come un client di connessione, utilizzando i servizi di accesso API, che a sua volta chiama nelle entità corrispondenti di supporto. Questo è il meccanismo grazie al quale Visual Studio presenti in una struttura di supporto per supportare la connessione all'origine dati.
Sovrapposizione tra i servizi e le entità di accesso di supporto
La differenza principale tra entità di supporto e i servizi di accesso è necessario che i client di estensibilità utilizzano servizi di accesso (principalmente l'oggetto connessione), che a sua volta comunicano con il provider di DDEX. Visualizzato dalla direzione opposta, i provider interagiscono con la connessione tramite le API di entità di supporto.
In alcune circostanze, i ruoli dei servizi di accesso e le entità di supporto si sovrappongono, in particolare in cui è necessario garantire la caratteristica thread-safe. L'architettura di DDEX fornisce un livello sicuro del blocco tra il provider di dati e client della connessione a questo scopo. Nell'esempio seguente viene illustrata la funzionalità.
Quando si ottengono, ad esempio, il servizio di IVsDataCommand dall'oggetto connessione, anziché ottenere un oggetto comando dati, l'oggetto connessione anziché ottiene un'implementazione del proxy dell'interfaccia di IVsDataCommand . L'implementazione del proxy comunica con l'entità di supporto che implementa; inoltre, l'implementazione del proxy è thread-safe. In questo modo, il proxy per primo cosa blocca la connessione e quindi chiama nelle entità di supporto; una volta terminata la connessione, sbloccare nuovamente la connessione, vengono un blocco del thread.
In questo esempio, l'interfaccia di IVsDataCommand viene implementata come un servizio di accesso (in quanto il client lo chiama direttamente), ma si comporta come entità di supporto, in quanto il provider di dati implementa la stessa interfaccia e che il risultato è la creazione di un livello sicuro del blocco tra il provider e client di connessione.
Informazioni di riferimento su DDEX
Il DDEX SDK fornisce la documentazione completa di riferimento del linguaggio:
XML Schema di supporto dell'oggetto dati
Utilizzare lo schema di supporto dell'oggetto dati (DataObjectSupport.xsd) per gestire a livello di codice ed enumerare le istanze degli oggetti origine dati. per ulteriori informazioni sugli oggetti dati, vedere Supporto di dati di DDEX.
XML Schema di supporto di visualizzazione dati
Utilizzare lo schema di supporto di visualizzazione dati (DataViewSupport.xsd) per gestire uno o più visualizzazioni del layout della gerarchia dell'oggetto dati come verrà visualizzata in Esplora server. Per ulteriori informazioni sulle visualizzazioni dati, vedere supporto di visualizzazione dati di DDEX.
Riferimenti alla libreria di classi gestite
Il DDEX SDK offre un set di interfacce gestite e di classi di base che consentono di scrivere un provider gestito di DDEX.