COM / OLE / ActiveX / IDispatch путаница
Вопрос
Я не могу обернуть голову в различия между этими терминами.
Являются ли COM и ActiveX синонимами? Р>
Является ли объект ActiveX просто объектом COM, который предоставляет IDispatch? Р>
На многих старых страницах MSDN упоминается IDispatch без контекста COM. Есть ли у него отдельная история, и он был только что представлен под «зонтиком» COM позже в его жизненном цикле?
Где вписывается OLE? Является ли его (значительное) присутствие в именах MFC и MSDN в целом - все это просто наследие?
Википедия дает некоторое представление, но не очень. Я не мог найти более подробную справку.
Решение
Нашел несколько цитат из Программирование COM на примере :
Еще одна вещь, с которой вы быстро найдете COM - это то, что у маркетинга была экскурсия день с терминологией. Скорее тогда помогая продвигать понимание, вы найдете в большинстве случаев это способствует тайна. ... OLE, ActiveX, Remotable Объекты - что означает, что это неделю? ...
COM развился из решения для конкретная проблема - как разрешить слово процессор для редактирования электронной таблицы в письмо без выхода пользователя текстовый процессор, чтобы сделать это. это Решение было названо OLE. ... Тем не мение, со вторым выпуском OLE (OLE2), его создатели изменили OLE32.DLL на раскрыть больше основных функций OLE, чтобы его API можно было использовать разрешить любому приложению доступ к функциональность другая. Это API, который не сильно изменился с 1993 года, это то, что считается COM API. ...
Как только COM API был открыт, Microsoft использовала это, чтобы создать то, что было затем вызвал элементы управления OLE, чтобы сложные элементы управления (например, кнопки эта спираль, списки, которые играют музыка) написана на Visual C ++, чтобы быть доступны для Visual Basic Приложения. В конце концов это то же самое технология была использована для контроля быть загруженным и используемым вашей сетью браузер. На данный момент имя изменено на элементы управления ActiveX или просто обычный ActiveX исключительно для маркетинга причины. Хотя вы можете упаковать любой функциональность в элементе управления ActiveX, его требования были специализируется на поддержке пользователя управление интерфейсом.
Мне все еще любопытно последнее предложение - должен ли COM-объект удовлетворять некоторым дополнительным требованиям, чтобы считаться элементом управления ActiveX? - но этого достаточно, чтобы отпустить.
Спасибо за ваши ответы!
Другие советы
ActiveX предназначен для COM, хотя ActiveX обычно используется в контексте «элементов управления ActiveX». которые являются объектами GUI.
IDispatch - это интерфейс, реализованный COM-объектами, так что клиентские программы могут динамически вызывать его методы во время выполнения (позднее связывание), а не во время компиляции, когда все методы и типы аргументов должны быть известны заранее. . р>
OLE - более ранняя версия COM. Р>
Что касается OLE: COM имеет корни в OLE. Но сегодня можно считать, что OLE построен поверх COM и в основном используется для того, что предполагает его название - связывание и встраивание документов. Хотя сам COM определяет только пару интерфейсов (IUnknown, IClassFactory, IMalloc и т. Д.), OLE добавляет целый ряд дополнительных интерфейсов, таких как IMoniker, IOleItemComtainer и т. Д.
Подводя итог: COM является основой, ActiveX и OLE являются слоями поверх COM.