Uno sguardo a COM e Interop e ai tools del Framework.

Come prima cosa devo dire che questo argomento é vasto e complesso quindi in questo articolo cercherò solamente di visualizzare i passaggi principali, lascio poi a discrezione del lettore un approfondimento più dettagliato tramite l' ausilio di MSDN.

Secondo lo standard del NET Framework si definisce COM+ un componente servito, con funzioni non presenti nel Framework, pò essere utlizzato nelle applicazioni seguendo questi passaggi :

  • Creazione di una coppia di valori chiave che costituiranno il nome sicuro (strong name) tramite l' ausilio del comando sn.exe.
    Esempio : sn -k MyCompnent.snk.
  • Registrazione manuale tramite regsvc.exe, ausilio della classe RegistraionHelper, oppure utilizzo della registrazione Lazy quindi il componente vienere gistrato e utilizzato durante la prima chiamata.
Vi ricordo inoltre che per eseguire il debug di un progetto componente COM+ in Visual Studio .NET, è necessario connettersi al processo DLLHOST.EXE.

Vi sono poi i componenti ActiveX, non sono altro che controlli basati sula tecnologia COM. L' MSDN dice che per poter usufruire diun activeX nel nostro applicativo dobbiamo :

  • Registrare il componente nel nostro computer e utilizzare AXIMP per convertire un'intera libreria dei tipi di controlli ActiveX alla volta e produrre un insieme di assembly contenenti i metadati di Common Language Runtime e l'implementazione del controllo per i tipi definiti nella libreria dei tipi originale.
  • Viene creato un wrapper derivante dal controllo che espone tuttele proprietà alle quali si puo' accedere

A questo punto mi sembra corretto parlare di tblimp.exe : l'utilità di importazione della libreria dei tipi consente di convertire le definizioni dei tipi presenti in una libreria dei tipi COM nelle definizioni equivalenti di un assembly di Common Language Runtime. L'output di Tlbimp.exe è un file binario (assembly) che contiene metadati per il runtime corrispondenti ai tipi definiti all'interno della libreria dei tipi originale. È possibile esaminare questo file con strumenti quali Ildasm.exe.

Vi ricordo che in VS esiste sempre la scappatoia di inserire nelle References l' oggetto COM desiderato, e sarà VS a creare il wrapper perpoter usufruire di ManagedCode.

Vi sono anche le API di windows.Per poter eseguire una funzione API WIN32 bisogna operare nel seguente modo :

  • Dichiarare l' api con la seguente sintassi Public Declare Auto Function GetVersionEx Lib "kernel32.dll

Questo come ho precisato vuole essere solamente uno sguardo sull' argomento. Di seguito, per concludere, elenco i tools messi a disposizione dal Framework per lavorare con Assembly COM e ActiveX.

Regasm.exe : Consente di leggere i metadati all'interno di un assembly e di aggiungere le voci necessarie al Registro di sistema, permettendo così ai client COM di creare classi .NET Framework in modo trasparente.

Gacutil.exe :Consente di visualizzare e modificare il contenuto della cache dell'assembly globale e della cache di download. A differenza di Shfusion.dll, che fornisce una funzionalità simile, Gacutil.exe può essere utilizzato da script di generazione, da file makefile e da file batch.

Al.exe : Consente di generare un file con un manifesto assembly da uno o più file di risorse o file di msil.

Ngen.exe : Consente di creare un'immagine nativa da un assembly gestito e di installarla nella cache dell'immagine nativa nel computer locale.

Regsvcs : Consente di aggiungere classi gestite a Servizi componenti di Windows 2000 caricando e registrando l'assembly e generando, registrando e installando la libreria di tipi in un'applicazione COM+ 1.0 esistente.

Tblimp : Consente di convertire le definizioni dei tipi trovate all'interno di una libreria di tipi COM in definizioni equivalenti nel formato di metadati gestito.

CordBg : Consente di accedere a servizi di debug della riga di comando che utilizzano la API di debug Common Language Runtime. Utilizzare questo strumento per trovare e correggere errori nei programmi basati su runtime.

Sn.exe : Consente di creare assembly con nomi sicuri. In Sn.exe sono disponibili opzioni per la gestione delle chiavi e la generazione e la verifica di firme.

Permview.exe : Consente di visualizzare le impostazioni minime, facoltative e rifiutate richieste da un assembly. È anche possibile utilizzare questo strumento per visualizzare tutta la protezione dichiarativa utilizzata da un assembly.

Signcode : Consente di apporre una firma digitale Authenticode a un file PE (Portable Executable, eseguibile trasportabile).

Caspol.exe : Consente di esaminare e modificare i criteri di protezione per l'accesso al codice a livello di azienda, di utente e di computer.

ChkTrust.exe : Consente di controllare la validità di un file firmato con un certificato X.509.