Concetti relativi al distributore di risorse COM+

I componenti dell'applicazione usano il distributore di risorse COM+ per accedere e gestire informazioni sullo stato condivise, nondurable, ad esempio le connessioni tra i componenti e un determinato gestore risorse. In fase di esecuzione, pool dinamici di risorse, ad esempio connessioni di database, connessioni di rete, connessioni a code, thread, oggetti e blocchi di memoria, vengono resi disponibili al distributore di risorse. Il processo dell'applicazione ottiene prestazioni elevate usando un numero minimo di risorse usate di frequente. Il distributore di risorse può anche automatizzare le transazioni e il recupero. (Vedere Recupero automatico delle risorse per altre informazioni su questa funzionalità.

Nota

Una risorsa è qualsiasi elemento creato da un distributore di risorse. Ad esempio, una connessione a un gestore di risorse è una risorsa comune. Le risorse risiedono nella memoria del distributore di risorse e non vengono mai copiate nel gestore del distributore. Una risorsa è nota solo da un handle opaco (RESID) e può o meno essere in grado di eseguire transazioni. Sebbene le risorse gestite spesso siano connessioni a un componente che gestisce uno stato durevole, le connessioni stesse non sono durevoli. Un distributore di risorse usa spesso un gestore risorse correlato per mantenere lo stato durevole.

 

Dal punto di vista architettonico, il sistema di distributore di risorse COM+ è costituito da distributori di risorse e da un gestore del distributore. I distributori di risorse sono componenti forniti dall'utente che forniscono alle applicazioni interfacce semplici alle risorse condivise. Il gestore del distributore è un componente fornito da COM+ che coordina le attività dei vari distributori di risorse.

Un distributore di risorse è un componente DLL (Dynamic Link Library) che fornisce almeno due interfacce. Il primo, IDispenserDriver, fornisce al gestore del distributore informazioni di base su come creare, distruggere ed integrare le risorse gestite. Il secondo viene esposto alle applicazioni e può essere un'interfaccia COM o un set di interfacce o può essere un'API (Application Programming Interface) a cui un componente è collegato tramite una libreria di importazione. Un'applicazione può chiamare qualsiasi distributore di risorse, che a sua volta può offrire qualsiasi API all'applicazione. Se il distributore di risorse è un componente di automazione, è possibile accedervi da Microsoft Visual Basic. Quando un componente dell'applicazione fa riferimento a un distributore di risorse, viene creata un'istanza di un distributore di risorse.

Il gestore del distributore fornito da COM+ tiene traccia dei distributori di risorse e delle coordinate tra di essi. Implementa due interfacce: IDispenserManager e IHolder. i distributori di risorse si registrano usando l'interfaccia IDispenserManager . Il gestore del distributore dà quindi un puntatore a un IHolder che utilizzano per notificare al gestore del distributore le loro attività.

Un distributore di risorse transazionali deve essere integrato in una transazione Distributed Transaction Coordinator (DTC). Ciò implica l'uso di uno strumento di gestione risorse interno o esterno (per il distributore di risorse) conforme alle transazioni OLE.

Nota

Il modello di programmazione COM+ include transazioni dichiarative, che consentono di proteggere il lavoro eseguito da un oggetto applicazione durante la sua durata. Quando un oggetto applicazione usa un distributore di risorse COM+, il lavoro eseguito viene eseguito automaticamente transazionale; ovvero, il componente non deve dichiarare in modo esplicito le transazioni. Queste transazioni vengono definite nella specifica DELLE transazioni OLE, implementate dal DTC e avviate per conto dell'oggetto applicazione da COM+. Per altre informazioni, vedere la Guida allo sviluppo DTC.

 

Le risorse non devono essere transazionali. Un distributore di risorse che raggruppa risorse non transazionali può comunque ottenere prestazioni elevate consentendo agli oggetti applicazione di accedere a un pool condiviso di queste risorse. Questo tipo di distributore di risorse restituisce S_FAL edizione Standard dal metodo IDispenserDriver::EnlistResource, il che significa che il distributore di risorse non ha integrato la risorsa perché la risorsa non è transazionale.

Il distributore di risorse può anche funzionare indipendentemente da COM+, fornendo solo funzionalità di pool di risorse. Ad esempio, se un distributore di risorse espone un'API (ad esempio ODBC), il distributore di risorse potrebbe essere una DLL accessibile dall'applicazione tramite una libreria di importazione (o usando le funzioni LoadLibrary e GetProcAddress). Un distributore di risorse potrebbe anche essere un componente COM a cui accede un'applicazione chiamando CoCreateInstance. Senza COM+, il metodo EnlistResource di un distributore di risorse non può mai essere chiamato perché il gestore del distributore non ha alcuna conoscenza della transazione del componente corrente.

All'avvio, una DLL del distributore di risorse deve registrarsi con il gestore del distributore. Il gestore del distributore è il dirigente di controllo che gestisce il caricamento e lo scaricamento dei distributori di risorse, fornisce il contesto COM+ e controlla il gestore delle statistiche di inventario. Per altre informazioni, vedere Com+ Distributore Manager.) Il distributore di risorse chiama prima la funzione GetDispenserManager e quindi chiama il metodo IDispenserManager::RegisterDispenser, passando il puntatore IDispenserDriver implementato dal distributore di risorse. Questa chiamata restituisce un riferimento a IHolder.

Per arrestare, un distributore di risorse chiama IHolder::Close. Per garantire l'arresto di un pacchetto pulito, un distributore di risorse deve essere in grado di gestire la situazione quando le chiamate continuano ad arrivare da oggetti business dopo che COM+ ha chiesto al distributore di arrestare.

Gli argomenti seguenti in questa sezione forniscono informazioni più dettagliate sul servizio distributore di risorse COM+:

Attività del distributore di risorse COM+