COM против родной DLL - PullRequest
       11

COM против родной DLL

2 голосов
/ 10 января 2012

Каковы преимущества использования COM-библиотек по сравнению с собственными DLL-библиотеками из .NET.

Одна причина, по которой я вижу, заключается в том, что мне не нужно определять сигнатуры методов для COM-библиотек (по сравнению с P / Invoke's DllImport). Есть ли другие?

Ответы [ 2 ]

4 голосов
/ 10 января 2012

Вы можете создать объектную модель в COM, что невозможно с помощью pinvoke. Очень похоже на классы .NET с поддерживаемыми методами, свойствами и событиями. Хорошим примером являются пространства имен взаимодействия Office (например, Microsoft.Office.Interop.Excel), реализованные в чистом COM на стороне Office.

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

Написание COM-кода на C ++ не особенно легко, хотя ATL и встроенные мастера Visual Studio могут сильно помочь. Попробуйте вместо этого использовать язык C ++ / CLI. Намного легче начать работу благодаря встроенной поддержке взаимодействия в языке.

1 голос
/ 10 января 2012

Если вы имеете в виду отличия от COM DLL и нативных (неуправляемых) DLL с точки зрения взаимодействия, я бы сказал, что COM-серверы (DLL / EXE) более естественно отображаются в стиле кода .Net (я имею в виду, что они выглядят какобъекты в мире .Net).

С точки зрения разработчика (который должен принимать решение всякий раз, когда идут с COM или родными "необработанными" dll), я бы сказал, что COM позволяет вам иметь лучшую функциональностьгруппировка (интерфейсы) (конечно, COM может предложить больше - например, свойства, события и т. д.

Просто мои 0,02;)

Best

...