2010-02-04 3 views
10

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

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

ответ

4

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

+4

«COM не используется много в текущем развитии» .. действительно? Я работаю в основном в .net, но трачу * много * времени на взаимодействие с компонентами на основе COM! – Rob

+0

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

+2

Если вы получаете предложение о работе, где будете разрабатывать COM, бегите так быстро, как можете, в противоположном направлении. –

4

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

+2

примечание полностью верно. существует форма COM, используемая стеком мультимедийных драйверов. –

+2

+1 за то, что он правдивый, но есть удивительное количество API-интерфейсов более низкого уровня, с которыми может столкнуться плакат, который использует интерфейс «COM-like». Я столкнулся с этим с VSS API, который имеет отдельную реализацию IUnknown. Знание COM позволило мне быстрее понять API. – codekaizen

7

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

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

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

+4

Когда вы оскорбляете людей здесь, они склонны реагировать, опуская ваши ответы, поэтому я пройду. : D –

1

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

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

COM является как КУРЕНИЯ: Если вы еще не начали, вы не должны начать сейчас, если вы уже делаете это, настало время стоп.

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

Смежные вопросы