Подтвердить что ты не робот

COM, COM +, DCOM, с чего начать?

Мне интересно, COM +, DCOM. Я знаю, что MSFT не поощряет вас использовать эти инструменты изначально (это означает, что C/С++, на самом деле, не так много документации), но я хочу научиться использовать эти технологии, например, внедрение Internet Explorer в программу на C.

Я подумал, что, может быть, я найду людей, которые работали над тем или иным способом, которые знают об этой технологии.

С чего начать? Есть идеи? Любой пример (например, Hello World DCOM)?

4b9b3361

Ответ 1

Если вы серьезно относитесь к изучению COM, Don Box "Essential COM" определенно является абсолютным "должен читать". COM может сбивать с толку и, по моему скромному мнению, Дон Бокс - один из немногих людей, которые на самом деле "получили".

Пример кода в "Essential COM" находится на С++. Вы не найдете много книг, которые поддерживают COM в C. Вы можете писать COM на C, но это будет очень, очень болезненно. COM оптимизирован для разработки на С++.

Эта книга не совершенна и не "полна". Есть некоторые (предоставленные, немного эзотерические) области, которые книга перескакивает. Например, книга имеет 1 1/2 страницы на "прозвищах" (я никогда не видел обращения к прозвищам, которые меня удовлетворяют). Я считаю эту книгу фундаментальной книгой.

Во-вторых, в реальной жизни вы, скорее всего, захотите использовать вспомогательную библиотеку, такую ​​как ATL, вместо того, чтобы напрямую писать весь COM-клей. Слишком много способов сделать тонкие ошибки в COM даже в базовой настройке. ATL предоставит вам хорошие шаблоны и реализует скучный код для вас. В процессе обучения вам лучше использовать простой С++.

Существует много книг об ATL, а некоторые - неплохие. Я понимаю, что ATL сильно изменился со времен старых VС++ 6, но у меня нет первых знаний: грустно, большая часть COM-кода, с которым я работаю, навсегда заблокирована для аромата С++ в VC6.

Убедитесь, что всякая книга, которую вы получаете, написана для версии Visual Studio и/или ATL, которую вы планируете использовать.

Некоторый фон в книгах COM:

Обратите внимание, что есть много книг, которые неправильно понимают COM, или фокусируются на неправильных вещах. В этом отношении более старые книги хуже. Некоторые из первых нескольких книг рассматривали COM как нечто большее, чем детали сантехники, необходимые для работы OLE ( "Связывание объектов и встраивание" ), что позволяет перетаскивать диапазон таблиц в документ Word). Из-за этого много материала там очень сбивает с толку. Потребовалось некоторое время, прежде чем люди поняли, что OLE не так важно и что COM действительно был.

К тому времени, когда Дон Бокс опубликовал "Essential COM" , трещины на фундаменте COM стали очевидными. Нет ничего ужасно ошибочного в COM, но потребности сообщества разработчиков развивались и переросли то, что COM мог сделать без серьезной реконструкции.

.NET был рожден из этих усилий для устранения ограничений в COM, особенно в области "информации о типе". Спустя несколько лет после публикации "Эффективного COM" внимание сообщества переключилось на .NET. Из-за этого хороший учебный материал COM теперь и, вероятно, останется навсегда ограниченным.

Итак, COM не сломан, и он отлично работает для тех вещей, которые он использовал (почему Explorer все еще использует его). Это просто не лучшее решение для многих проблем, которые необходимо решить сегодня.

Вкратце:

Я рекомендую "Essential COM" для основ. Затем доступна любая из многих хороших книг ATL (там нет сильных предпочтений), а затем используйте другие ресурсы, такие как MSDN или, конечно же, - переполнение стека, чтобы охватить области, которые вас особенно интересуют.

Если вы предпочитаете не полагаться на ресурсы сорта мертвых деревьев, продолжайте изучать ATL из Интернета. Но некоторые книги стоит читать старомодным способом - и "Essential COM" является одним из них.

Удачи.

Ответ 2

COM, COM + и DCOM - это три совершенно разные вещи. На данный момент, есть очень мало оснований для изучения COM и почти нет оснований для изучения DCOM. Единственная причина, по которой я могу думать, - это поддерживать или интегрировать устаревшие компоненты. COM + по-прежнему используется, поскольку позволяет исключить хостинг компонентов и приятные вещи, например, распределенное управление транзакциями.

Лучший способ начать запись некоторого COM - это использовать ATL. В .NET COM + называется Enterprise Services.

Лучшая книга, которую я знаю на COM, - это Don Box Essential COM и Tim Ewald COM + книга отлично.

Ответ 3

Я составил список книг, которые следует читать в следующем порядке:

  • "Внутри COM" от Дейла Роджерсона, это должна быть ваша первая книга. В нем объясняются основы подсчета ссылок, интерфейсов, IUnknown, компонентов, idl, IDispatch, типов автоматизации и квартир. Из этой книги вы заметите, что для создания компонентов требуется довольно некоторый код, и вы можете легко пропустить "Release", что приводит к утечке ресурсов. Также в этих книгах не хватает деталей.
  • "Внутренние ATL" из Тавареса. ATL помогает вам использовать оба клиента как компонент COM. С помощью интеллектуальных указателей (например, CComPtr) в эти дни сложно получить счетчик ссылок. ATL также облегчает создание компонентов в С++. К сожалению, ATL скрывает множество функций в макросе и имеет интуитивно понятный способ реализации IUnknown. Альтернативой может быть "Inside ATL".
  • "Существенный COM" от Don Box. Эта книга часто упоминается, но это не хорошая книга для начинающих. Он пропускает общую картину, но отлично подходит для ее деталей (например, разница между "size_is" и "length_is" в idl).
  • "Понимание ActiveX и OLE: руководство для разработчиков и менеджеров". В этих книгах затрагиваются некоторые более эзотерические интерфейсы, такие как IPersist, IStorage; IMoniker и т.д., Но не вдаваясь в подробности.

Имейте в виду, что COM - это уже старая технология, хотя она по-прежнему жизнеспособна специально для разработчиков.

Ответ 4

COM по-прежнему полезен, если вы хотите работать с различными API-интерфейсами Windows, например, расширениями оболочки, сервером сценариев и т.д. или расширять его, или расширять его.

Основные COM (Box) и ATL Internals (Rector and Sells) - отличные источники. Эффективный COM (Box, и др.) Также в порядке.

Если вам действительно нужна полная картина на COM, попробуйте получить копию огромного Inside OLE (Brockschmidt).

Распределенный COM (Eddon, Eddon) является достойным в DCOM, как и внутренние COM + базовые службы (Eddon, Eddon) на COM +.

даже некоторые якобы "чистые" книги на С++ имеют в них биты на COM. У Мэтью Уилсона у Imperfet С++ есть несколько полезных частей для того, чтобы увидеть, как он работает внутри, а его расширенная книга STL содержит пару глав о том, как адаптировать COM к коллекциям STL.

Если вы хотите узнать больше о том, как писать COM-серверы, вам, вероятно, придется зайти на ATL. Вышеупомянутые ATL Internals являются обязательными. Несмотря на свое скромное звучание, у Beginning ATL COM есть и некоторые полезные вещи.

Также полезным в процессе обучения может быть сравнение COM с .NET. Справочник по совместимости .NET и COM - это большая ласточка, но в нем есть полезная информация. Кроме того, я бы рассмотрел общие ресурсы CLI Essentials, чтобы помочь противопоставить два технолога.

НТН

Ответ 5

Начните с "Inside COM", затем перейдите к "Inside DCOM", а затем прочитайте "Essential COM". Вы получите доступ к COM. Обе книги Inside COM и Inside DCOM являются публикациями Microsoft. Отличные книги для тех, кто хочет хорошо знать COM/DCOM.

Ответ 6

Essential COM особенно подходит для реализации или использования COM-компонентов из С++, без использования среды IDE, фреймворка или библиотеки.

COM тривиально использовать от VB или Delphi, например, которые скрывают COM-специфический клей от прикладного программиста. В С++ вы часто используете некоторую библиотеку классов, которая пытается абстрагировать детали... Essential COM расскажет вам, что представляют собой эти детали (и, соответственно, реализует свою собственную библиотеку/фреймворк).