ECOM (RU)
Метаданные
С помощью базовых абстрактных классов и виртуальных функций C++ позволяет программам вызывать функции интерфейсов, не зная названий реализующих их классов. Если спуститься с уровня кода на уровень бинарных файлов, то вы увидите, что для реализации этого подхода в Symbian OS используются полиморфные DLL. Они реализуют определенные интерфейсы и позволяют добавлять новые функции в существующие программные комплексы. Однако, для использования полиморфных DLL каждая программа должна иметь свой механизм определения и загрузки доступных реализаций. ECom устраняет это дублирование функциональности, предоставляя общий программный комплекс, реализующий единый механизм для:
- регистрации и обнаружения реализаций интерфейсов
- выбора подходящей для использования реализации
- обеспечения контроля версий для plug-in'ов
Для того, чтобы продемонстрировать, как ECom справляется с этим, давайте вспомним задачи, возникающие в любой системе с использованием plug-in'ов.
Клиенту требуется получить доступ к объекту для выполнения какой-нибудь обработки данных. Характеристики объекта заранее не известны. Общие черты процесса обработки известны и объявлены в интерфейсе, но могут существовать несколько вариантов выполнения обработки, и, соответственно, несколько реализаций этого интерфейса.
Вот четыре явно-объявленных роли в подобной системе:
- Клиент (client), желающий получить доступ к сервисам
- Интерфейс (interface), определяющий как получить доступ к сервисам
- Реализация интерфейса (interface implementation), выполняющая требуемую обработку
- Комплекс (framework), предоставляющий клиенту доступ к реализациям
Взаимосвязи между ними показаны на следующей UML диаграмме:
Механизм реализаций формирует основу этой системы. Он ответственен за предоставление способов определения и загрузки подходящей реализации интерфейса во время работы программы. ECom является подобным механизмом.
С полным руководством по ECOM вы можете ознакомится в документации Symbian Developer Library



(no comments yet)