File di configurazione dell'applicazione (ACF)
Ci possono essere 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ò non essere significativo per l'applicazione ricevente. Inoltre, la struttura può contenere tipi di dati che il compilatore MIDL non riconosce e non può generare il marshalling e l'annullamento del marshalling del codice.
Le applicazioni client possono condividere la stessa interfaccia, ma vengono eseguite su piattaforme diverse; ognuno può avere bisogno di 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 una determinata applicazione client.
Definendo questi aspetti locali dell'interfaccia in un file di configurazione dell'applicazione (ACF), è possibile separare le differenze tra le interfacce client dalla relativa rappresentazione di rete, consentendo al server di inviare e ricevere dati in un formato coerente e rendendo il codice stub più compatto ed efficiente.
La struttura e la sintassi di una definizione di 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.