Обучение COM все еще используется?

От человека, желающего узнать больше о Windows Internals, прочитав книгу "Внутренние документы Windows" и желая попасть в развитие драйвера, хорошо изучает программирование COM?

Насколько глубоко я могу попасть в него? Просто ознакомьтесь с основами или следует понимать понимание, учитывая вышеизложенное.

Ответ 1

COM не используется много в текущей разработке, но есть огромное количество программного обеспечения, все еще использующего его. Простое понимание основ должно быть достаточным.

Ответ 2

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

Там много кода, то есть COM, а устаревший код занимает годы или десятилетия, чтобы исчезнуть. Но что более важно, IMO - это тот факт, что сборка .NET выглядит как объекты COM при использовании с C/С++, поэтому я думаю, что есть еще некоторое значение для знания COM, если вы намерены продолжать писать код C/С++.

Если вы планируете перейти на С#, Java или один из десятков других языков - без указателей, которые (судя по этим вопросам здесь), большинство программистов приняли, то нет, не стоит альтернативных издержек.

Ответ 3

Драйверы устройств Windows не имеют ничего общего с COM. Вы можете быть безразличны к этому.

Ответ 4

С одной стороны, COM, по-видимому, является предпочтительным для Microsoft способом взаимодействия между собственным и управляемым (. Net) кодом. И, честно говоря,.NET отлично справляется с COM.

С другой стороны, в бессмертных словах Lino Tadros:

COM похож на SMOKING: если вы еще не начали, вы не должны запускаться сейчас, если вы уже это делаете, пришло время остановиться.

Лично я использую его, когда мне нужно поговорить с существующими COM-объектами (например, MSXML), или если мне абсолютно необходимо поговорить с .NET-сборкой из собственного кода, где что-то вроде неуправляемого экспорта не является вариантом, "Это полезно для новой разработки.