Condividi tramite


Definizione di interfacce COM

Microsoft definisce molte interfacce COM. Nella maggior parte dei casi, è possibile riutilizzare queste interfacce generiche. Tuttavia, alcune applicazioni hanno requisiti specifici che rendono auspicabile o necessario definire interfacce oggetto personalizzate.

Tutte le interfacce COM devono derivare, direttamente o indirettamente, dall'interfaccia IUnknown . All'interno di tale vincolo, l'interfaccia personalizzata può supportare quasi qualsiasi metodo o parametro, inclusi i metodi asincroni. È anche possibile generare una libreria dei tipi per le interfacce personalizzate in modo che i client possano accedere alle informazioni sui metodi dell'oggetto in fase di esecuzione. Dopo aver definito un'interfaccia, descriverla in MIDL (Microsoft Interface Definition Language), compilarla e registrarla, usarla esattamente come qualsiasi interfaccia generica. Con COM distribuito, i metodi di interfaccia sono disponibili sia per i processi remoti che per altri processi nello stesso computer.

Infine, la compilazione di interfacce COM richiede un ambiente di sviluppo che include un compilatore C/C++ e il compilatore Midl.exe.

I passaggi per la creazione di un'interfaccia COM sono i seguenti:

  • Decidere come si vuole fornire il supporto del marshalling per l'interfaccia; con il marshalling basato sulla libreria dei tipi o con una DLL proxy/stub. Anche le interfacce in-process devono essere sottoposto a marshalling se devono essere usate attraverso i limiti dell'appartamento. È consigliabile creare il supporto per il marshalling in ogni interfaccia COM, anche se non si ritiene che sia necessario. Per altre informazioni, vedere Marshalling dell'interfaccia .
  • Descrivere l'interfaccia o le interfacce in un file IDL (Interface Definition). Inoltre, è possibile specificare alcuni aspetti locali dell'interfaccia in un file di configurazione dell'applicazione (ACF). Se si usa il marshalling basato sulla libreria dei tipi, aggiungere un'istruzione di libreria che faccia riferimento alle interfacce per le quali si desidera generare informazioni sul tipo.
  • Usare il compilatore MIDL per generare un file di libreria dei tipi e un file di intestazione oppure file proxy/stub in linguaggio C, file di identificatore di interfaccia, file di dati DLL e file di intestazione. Per altre informazioni, vedere Compilazione MIDL.
  • A seconda del metodo di marshalling scelto, scrivere un file di definizione del modulo (DEF), compilare e collegare tutti i file generati da MIDL in una singola DLL proxy e registrare l'interfaccia nel Registro di sistema o registrare la libreria dei tipi. Per altre informazioni, vedere Caricamento e registrazione di una libreria dei tipi e compilazione e registrazione di una DLL proxy.

Anatomia di un file IDL

Client e server COM

Regole di progettazione dell'interfaccia

Component Object Model (COM)