Если вы серьезно относитесь к изучению COM, «Essential COM» Дона Бокса, безусловно, абсолютно необходимо прочитать. СОМ может сбивать с толку, и, по моему скромному мнению, Дон Бокс - один из немногих, кто на самом деле «понял».
Пример кода в "Essential COM" написан на C ++. Вы не найдете много книг, которые поддерживают COM на C. Вы можете написать COM на C, но это будет очень, очень болезненно. COM оптимизирован для разработки на C ++.
Эта книга не идеальна и не "завершена". Есть некоторые (предоставленные, немного эзотерические) области, которые книга просматривает. Например, в книге написано около 1 1/2 страницы о «прозвищах» (я никогда не видел обращения с прозвищами, которое меня удовлетворяло бы). Я считаю эту книгу фундаментальной.
Во-вторых, в реальной жизни вы, скорее всего, захотите использовать вспомогательную библиотеку, такую как ATL, вместо того, чтобы писать весь клей COM напрямую. Существует слишком много способов сделать небольшие ошибки в COM даже в базовой настройке. ATL даст вам хорошие шаблоны и реализует для вас скучный код. В обучении вам лучше использовать простой C ++.
Есть много книг об ATL, и некоторые из них довольно хороши. Я понимаю, что ATL сильно изменился со времен VC ++ 6, но у меня там нет непосредственных знаний: к сожалению, большая часть кода COM, с которым я работаю, навсегда привязана к C ++ в VC6 .
Убедитесь, что написанная вами книга написана для той версии Visual Studio и / или ATL, которую вы планируете использовать.
Некоторые сведения о книгах COM:
Обратите внимание, что есть много книг, которые неправильно понимают COM или фокусируются на неправильных вещах. Старые книги хуже в этом отношении. Некоторые из первых нескольких книг рассматривали COM как нечто большее, чем сантехнические детали, необходимые для работы OLE («Связывание и внедрение объектов», вот что позволяет перетаскивать диапазон электронных таблиц в документ Word). Из-за этого многие материалы очень запутаны. Прошло некоторое время, прежде чем люди поняли, что OLE не так важен, и что COM на самом деле был.
К тому времени, когда Дон Бокс опубликовал "Essential COM", трещины на фундаменте COM начали становиться очевидными. В COM нет ничего ужасного, но потребности сообщества разработчиков развились и переросли возможности COM без серьезной модернизации.
.NET был рожден в результате этих усилий по устранению ограничений в COM, особенно в области «информации о типах». Спустя всего несколько лет после публикации «Effective COM» внимание сообщества переключилось на .NET. Из-за этого хорошие учебные материалы по COM сейчас и, вероятно, навсегда останутся ограниченными.
Итак, COM не сломан, и он отлично работает для вещей, для которых он используется (вот почему Explorer все еще использует его). Это просто не лучшее решение для многих проблем, которые необходимо решить сегодня.
В итоге:
Я рекомендую "Essential COM" для основ. Затем, любая из многих хороших доступных книг ATL (там нет сильных предпочтений), а затем используйте другие ресурсы, такие как MSDN или - конечно, переполнение стека, чтобы охватить области, которые представляют для вас особый интерес.
Если вы предпочитаете не полагаться на ресурсы разновидности мертвого дерева, продолжайте изучать ATL из Интернета. Но некоторые книги стоит читать по старинке - и «Essential COM» - одна из них.
Удачи.