Interoperatività in C#
Pagina 1 di 3
Interoperatività (in inglese Interoperation) è un termine utilizzato in riferimento alla pratica di interagire con porzioni di "codice non gestito" all’interno di un codice gestito. Infatti, sebbene il .NET Framework fornisca un grande numero di funzionalità, due situazioni rendono l’interoperatività necessaria:
- L’esistenza in molte aziende del cosiddetto legacy code, ovvero codice già sviluppato e testato che però non viene più aggiornato
- Il fatto che non tutte le API Microsoft Windows siano state sviluppate per essere gestite tramite il .NET Framework
Ad esempio un’applicazione potrebbe avere la necessità di utilizzare una procedura dell’ambiente Microsoft Excel e, dato che la libreria Excel non è scritta in .NET, sarà necessario, per accedere ad essa, fare ricorso al cosiddetto Component Object Model (COM).
.NET e COM sono due ambienti di esecuzione molto differenti e l’unico modo di condividere funzionalità tra di loro è quello di utilizzare l’interoperatività, conosciuta anche come Interop. Prima dell’avvento del .NET Framework il COM era il framework di riferimento attraverso cui gli sviluppatori interagivano con i sistemi operativi Windows.
Una cosa che i due ambienti hanno in comune è il fatto che per utilizzare librerie esterne occorre prima importarle. Dopo averle importate è possibile dichiarare e istanziare oggetti appartenenti a tali librerie nello stesso modo degli oggetti appartenenti al framework stesso. E’ possibile importare nuovi tipi sia da codice, sia impostando i giusti riferimenti in Visual Studio.
Il .NET Framework fornisce un grande supporto per l’interoperatività COM, inclusa la possibilità di importare librerie di tipi. Il meccanismo che consente la comunicazione tra l’ambiente di esecuzione .NET e un componente COM è denominato Runtime Callable Wrapper (RCW). Tale componente gestisce la maggior parte degli aspetti riguardanti la comunicazione tra i due ambienti, inclusi gestione degli eventi e gestione delle interfacce.
Diversamente dai componenti .NET, i componenti COM devono essere registrati prima di essere utilizzati. Dopo la registrazione questi componenti necessitano di essere importati tramite Visual Studio o tramite lo strumento Type Library Importer. Se, ad esempio, vogliamo utilizzare una particolare libreria o DLL, denominata utility.dll, dobbiamo aprire il prompt dei comandi DOS e registrare tale componente scrivendo ed eseguendo la seguente riga
Execute Regsvr32 utility.dll
Vediamo adesso i due modi in cui è possibile importare tale DLL. In Viual Studio, all’interno del progetto in cui si vuole utilizzarla, basta cliccare con il tasto destro del mouse sul nodo References, scegliendo l’opzione Add Reference

Nella finestra che si apre apriamo la scheda COM, selezioniamo la DLL registrata e clicchiamo su OK

Per importare invece la DLL tramite lo strumento Type Library Importer occorre avviare il prompt dei comandi di Visual Studio

Impostare il percorso della DLL e scrivere la seguente linea
tlbimp utility.dll







