by
Simone Rota
Dynamic
Link Library
Basta
aprire la cartella Windows/System per trovare una lista
apparentemente infinita di file con estensione .DLL ed
il loro numero aumenta ad ogni nuova installazione.
Molti problemi di conflitti Software dipende da loro e
una discreta parte del registro di configurazione si occupa
della loro gestione.
Ma cosa sono le DLL?
Partiamo
dall'inizio...
Una volta i programmi
erano contenuti quasi per intero in un unico file .EXE
di dimensioni abbastanza elevate. Ogni aggiornamento
del programma comportava la sostituzione del file eseguibile
ed ogni nuova funzione ne aumentava ulteriormente le
dimensioni. Ogni programma portava nella propria cartella
tutti i file necessari per l'accesso ai dati, l'interfaccia
grafica, ecc.
Presto ci si è
resi conto che tanti file (o comunque tante funzioni
contenute nei file) risultavano duplicate più volte
all'interno delle varie cartelle e questa consapevolezza
ha portato alla creazione delle Librerie.
Le Librerie sono
file con estensione .DLL che contengono funzioni condivise
da tutti i programmi evitando una ridondanza di codice.
In questo modo si avranno, ad esempio, le DLL COMCTL32.DLL
(toolbars, contenitori di testo, barre di scorrimento,
ecc), MAPI32.DLL (che contiene le funzioni di
posta) o SHELL32.DLL (contiene la maggior parte
delle icone di windows) installate nella cartella di
sistema di Windows ed a disposizione di ogni programma.
Un altro vantaggio
dell'utilizzo delle librerie è la semplificazione degli
aggiornamenti. Ad esempio, un programma gestionale Gest.Exe potrà avere
una Libreria Data.Dll che si occupa
dell'accesso al DataBase (Inserimenti, Modifiche, Cancellazioni
e Ricerche) tramite ODBC.
Se un Domani il
gestore vorrà cambiare tecnologia di accesso ai dati
sarà sufficiente creare un nuovo file con lo stesso
nome e con la stessa interfaccia verso l'esterno che
vada a sostituire Data.Dll senza che il resto
del programma subisca modifiche.
Questo vale per
ogni programma che gira sotto Windows, SO compreso.
Tipi
di Librerie
Tecnicamente una
Dynamic Link Library (DLL) è un file compilato che contiene
una serie di funzioni che possono essere utilizzate da
qualsiasi altro Processo Server e non è detto che debba
avere l'estensione .DLL; anche gli EXE hanno questa potenzialità
così come i driver dei dispositivi di Windows non sono
altro che Librerie con estensione .DRV. Inoltre, essendo
compilate, sono completamente indipendenti dal linguaggio
in cui sono state scritte. Questo permette ad un programmatore
Visual Basic di sfruttare Librerie scritte in C++ o viceversa.
Tuttavia esistono varie tipologie di librerie con caratteristiche
molto diverse.
Prima di tutto è necessario differenziare le Librerie Standard
dalle Librerie COM.
Quando si utilizzano le prime si eseguono chiamate dirette
alle funzioni API (Application Programming Interface)
di windows. Le seconde, invece, hanno un interfaccia
COM (Component Object Model), che permette di
comunicare coi loro componenti tramite un'architettura
Software e una Libreria dei Tipi, che permette l'utilizzo
di funzioni come Object Browser e Auto List Members
a livello di programmazione. Proprio queste funzioni
fanno si che questo tipo di Librerie venga utilizzato
per la maggiore dai programmatori. A livello di prestazioni
le Librerie Standard sono più veloci mentre le Librerie
COM garantiscono una miglior gestione degli errori (evitando
il più possibile le famose schermate Blu).
Un'altra classificazione
va fatta tra i file .DLL e quelli .EXE.
Le DLL lavorano sempre nello spazio d'indirizzamento
del processo chiamante (in-process) e non possono funzionare
in un proprio task. Un file eseguibile in genere può
essere utilizzato sia come libreria che come programma
a se stante e lavora sempre in un proprio processo.
L'utilizzo di librerie .EXE è più lento perché il passaggio
dei dati tra un processo ed un altro (Marshaling) richiede
più tempo e più risorse. Lo svantaggio delle DLL è che
in caso di un loro blocco l'intero processo viene bloccato
compreso quindi il programma chiamante. [MARSHALING:
E' l'operazione che utilizza COM ogni volta che deve
comunicare con un server out-of-process.]
Un'ultima differenziazione
va fatta tra i file .DLL e gli .OCX.
Entrambi i tipi di file lavorano allo stesso modo ma
i secondi forniscono oltre alle funzioni anche una propria
interfaccia grafica. Gli Ocx sono detti anche ActiveX.
Esistono infine
altre particolari Librerie che contengono l'elenco delle
Proprietà, degli Eventi e dei Metodi dei componenti
COM; sono dette Dei Tipi e possono essere .EXE, .DLL,
.OLB, .TLB, .OCX.
API
e DLL
Si è accennato in
precedenza alle API. L'API di Win32 è costituita da un
gruppo di DLL Standard che fornisco funzioni a basso livello
al Sistema Operativo.
Eccone alcune:
KERNEL32.DLL
|
funzioni
operative di basso livello. (gestione della memoria,
dei task, delle risorse e operazioni correlate) |
USER32.DLL |
Funzioni
relative alla gestione di Windows (messaggi, menu,
cursori, timer, caret, comunicazioni e la maggior
parte delle altre funzioni che non riguardano la
visualizzazione. |
GDI32.DLL |
Funzioni
che hanno a che fare con l'output dei dispositivi |
COMDLG.DLL,
LZ32.DLL, VERSION.DLL |
Supporto
per le finestre di dialogo comuni, la compressione
dei file e il controllo della versione. In alcuni
casi sono accessibili direttamente in altri è necessario
ricorrere alla APIGID32.DLL |
APIGID32.DLL |
Fornisce
a VB l'interfaccia ad alcune funzioni non compatibili |
ODBC32.DLL |
Una delle
DLL che implementano l'Open Database Connectivy).
Queste funzioni forniscono un API standard per diversi
tipi di DataBase. |
COMCTL32.DLL |
Implementa
il nuovo gruppo di controlli delle finestre (elenco
ad albero, ecc.) |
MAPI32.DLL |
Forniscono
le API che permettono a qualsiasi applicazione di
operare sulla posta elettronica. |
NETAPI.DLL |
Funzioni
di accesso e controllo delle reti. |
WINMM.DLL |
Funzionalità multimediali di un sistema. |
| Pagina1 |
Pagina 2 | Pagina 3 |
Pagina 4 |