File di configurazione dell'applicazione (ACF)
Potrebbero esserci aspetti dell'applicazione distribuita che influiscono su un componente, ma non hanno nulla a che fare con un altro. Ad esempio, un oggetto può contenere una struttura di dati complessa di grandi dimensioni e passare il contenuto di questa struttura di dati a un altro oggetto. Il layout esatto di questa struttura di dati può essere senza senso per l'applicazione di ricezione. Inoltre, la struttura può contenere tipi di dati che il compilatore MIDL non riconosce e non può generare il marshalling e unmarshaling del codice.
Le applicazioni client possono condividere la stessa interfaccia ma eseguite su piattaforme diverse; possono essere necessari un proprio set di routine di marshalling. Infine, i singoli client potrebbero non avere sempre bisogno dello stesso set di funzioni. È inefficiente generare codice stub per le funzioni che non verranno mai implementate in un'applicazione client specifica.
Definendo questi aspetti locali dell'interfaccia in un file di configurazione dell'applicazione (ACF), è possibile separare le differenze tra le interfacce client dalla loro rappresentazione di rete, consentendo al server di inviare e ricevere dati in un formato coerente e rendere il codice stub più compatto ed efficiente.
La struttura e la sintassi di una definizione dell'interfaccia ACF sono identiche alla definizione IDL:
[ interface-attribute-list] interface interface-name {. . .}
Per impostazione predefinita, il nome dell'interfaccia ACF deve corrispondere al nome nella definizione IDL. Tuttavia, quando si usa l'opzione del compilatore MIDL/ acf per specificare in modo esplicito un nome di file ACF, i nomi dell'interfaccia non devono corrispondere. Questa funzionalità consente a diverse interfacce di condividere una singola specifica ACF.