Condividi tramite


Marshalling dell'interfaccia

A meno che non si conosca oltre ogni dubbio che l'interfaccia non verrà mai usata attraverso i limiti di apartment, thread o processi, è necessario decidere come fornire supporto di marshalling per le interfacce. Esistono tre modi per fornire supporto per il marshalling:

  • Scrivere codice proxy/stub personalizzato che chiama il canale COM, che a sua volta chiama le librerie di runtime RPC. Teoricamente, è possibile farlo, ma in pratica è quasi impossibile fare senza una notevole quantità di sforzo.
  • Descrivere le interfacce in un file IDL (Interface Definition Language) e usare il compilatore MIDL per generare una DLL proxy/stub. Questo metodo offre prestazioni ottimali e la massima flessibilità in termini di tipi di dati accettabili. Usando gli stub proxy generati da MIDL, è possibile controllare non solo la gestione della memoria, ma anche il marshalling e l'annullamento del marshalling di tipi di dati complessi in piattaforme diverse.
  • Usare MIDL per generare una libreria dei tipi usata dal sistema per fornire il supporto del marshalling in fase di esecuzione. Questo è il modo più semplice per implementare il supporto del marshalling. Tutto quello che devi fare è generare una libreria dei tipi e registrarla. Le interfacce devono essere compatibili con Automazione ( oleautomation o dual), che pone alcune restrizioni sui tipi di dati che è possibile usare come parametri del metodo. Nella maggior parte dei casi, tuttavia, il vantaggio di avere le interfacce accessibili ai programmi scritti in altri linguaggi, ad esempio Microsoft Visual Basic e Java, supera le limitazioni dei tipi di dati.

Comunicazione tra oggetti