Файл конфигурации приложения (ACF)

Могут быть аспекты распределенного приложения, которые влияют на один компонент, но не имеют ничего общего с другим. Например, объект может содержать большую сложную структуру данных и передавать содержимое этой структуры данных другому объекту. Точный макет этой структуры данных может быть бессмысленным для принимающего приложения. Кроме того, структура может содержать типы данных, которые компилятор MIDL не распознает и не может создавать код маршалинга и распаковки.

Клиентские приложения могут использовать один и тот же интерфейс, но работать на разных платформах; Каждому из них может потребоваться собственный набор процедур маршалинга. Наконец, для отдельных клиентов не всегда может потребоваться один и тот же набор функций. Создание кода заглушки для функций, которые никогда не будут реализованы в конкретном клиентском приложении, неэффективно.

Определив эти локальные аспекты интерфейса в файле конфигурации приложения (ACF), можно отделить различия между клиентскими интерфейсами от их сетевого представления, что позволяет серверу отправлять и получать данные в согласованном формате, а также делает код заглушки более компактным и эффективным.

Структура и синтаксис определения интерфейса ACF идентичны определению IDL:

[ interface-attribute-list] interface interface-name {. . .}

По умолчанию имя интерфейса ACF должно совпадать с именем в определении IDL. Однако при использовании параметра компилятора MIDL / acf для явного указания имени файла ACF имена интерфейсов не обязательно должны совпадать. Эта функция позволяет нескольким интерфейсам совместно использовать одну спецификацию ACF.