C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 98 - Правила COM и интерфейсы / ActiveX по шагам / Приложение

Шаг 98 - Правила COM и интерфейсы

Одно из правил COM гласит - нельзя изменять интерфейсы. Это правило основано на следующей идее. Допустим, Вы создаете COM объект, который умеет обращаться к базе данных и получать необходимую Вам цифру. Например, с интерфейсом IGetNumber. Этот интерфейс возвращает Вам число, например котировку $USA. Для этого элемента COM создается клиент, который умеет использовать этот интерфейс. Он спокойно обращается к IGetNumber и получаем число.

Вы создаете новый COM объект который будет возвращать не только число но и массив чисел. Что нужно сделать. Правило - Интерфейс менять нельзя. Значит нужно создать новый интерфейс IGetNumber1 который будет реализовывать новые возможности. Соответственно старый клиент будет пользоваться старым интерфейсом а новый и старым и новым если нужно, или просто новым. Если же новый клиент будет получен раньше чем новый COM то он просто не будет иметь новых возможностей.

Вы можете реально увидеть, что в жизни так и происходит. Вот, например объект Application из MS Office имеет два интерфейса Run.

_Application::Run
_Application::_Run2

Такое же повторение Вы можете найти если будут использовать объект Exploler. Там есть метод Navigate, Navigate2 и так далее.

Это правило сделано для совместной работы COM. Ведь действительно на данный момент разрабатываться COM объекты чуть ли не по всему миру. И представьте, что будут произвольно меняться интерфейсы. Все старые клиенты просто перестанут работать, а этого допустить нельзя. Кроме специальных целей естественно. Ну, например Вы поставляете и COM объекты и клиентов вместе. Если Вы не хотите что бы Вашими объектами пользовались другие очень даже неплохой выход менять интерфейсы в каждой новой версии. Но наверно есть другие методы защиты более эффективные.


| |
Автор Каев Артем.
[AD]