Plik konfiguracji aplikacji (ACF)
Mogą istnieć aspekty aplikacji rozproszonej, które mają wpływ na jeden składnik, ale nie mają nic wspólnego z innym. Na przykład obiekt może zawierać dużą, złożoną strukturę danych i przekazać zawartość tej struktury danych do innego obiektu. Dokładny układ tej struktury danych może być bez znaczenia dla odbieranej aplikacji. Ponadto struktura może zawierać typy danych, których kompilator MIDL nie rozpoznaje i nie może wygenerować kodu marshalingowego i unmarshaling.
Aplikacje klienckie mogą współużytkować ten sam interfejs, ale działają na różnych platformach; każdy z nich może potrzebować własnego zestawu procedur marshalingowych. Na koniec pojedynczy klienci mogą nie zawsze potrzebować tego samego zestawu funkcji. Nieefektywne jest generowanie kodu wycinkowego dla funkcji, które nigdy nie zostaną zaimplementowane w określonej aplikacji klienckiej.
Definiując te lokalne aspekty interfejsu w pliku konfiguracji aplikacji (ACF), można oddzielić różnice między interfejsami klienta z ich reprezentacji sieciowej, umożliwiając serwerowi wysyłanie i odbieranie danych w spójnym formacie oraz zwiększenie wydajności kodu wycinkowego.
Struktura i składnia definicji interfejsu ACF są identyczne z definicją IDL:
[ interface-attribute-list] interface interface-name {. . .}
Domyślnie nazwa interfejsu ACF musi być zgodna z jego nazwą w definicji IDL. Jeśli jednak używasz opcji kompilatora MIDL / acf jawnie określić nazwę pliku ACF, nazwy interfejsów nie muszą być zgodne. Ta funkcja umożliwia kilku interfejsom współużytkowanie pojedynczej specyfikacji ACF.