2012-01-10 14 views
2

.NETのネイティブDLLと比較してCOMライブラリを使用する利点は何ですか?COM対ネイティブDLL

私が見る理由の1つは、(P/InvokeのDllImportと比較して)COMライブラリのメソッドシグネチャを定義する必要がないということです。他に何かありますか?

+0

通常は既に存在するためです。 –

+1

私は管理された.NETアセンブリ 'ネイティブ'とは言いません –

+0

@MitchWheat、私のために同じ – SiberianGuy

答えて

4

あなたはCOM、のPInvokeでは不可能な何かにオブジェクト・モデルを作成することができます。メソッド、プロパティ、およびイベントがサポートされた.NETクラスに非常に似ています。 Officeの純粋なCOMで実装されているOffice interopの名前空間(Microsoft.Office.Interop.Excelなど)が良い例です。

このような高可用性COMライブラリは、COMオートメーションを使用しています。これは、COMのサブセットであり、異なる言語間の相互運用を容易にするように設計されています。しかし、メソッド宣言で使用できる種類には厳しい制限があります。

C++でのCOMコードの記述は、ATLとビルトインのVisual Studioウィザードが多くを助けることはできますが、特に簡単ではありません。代わりにC++/CLI言語の使用を検討してください。言語の組み込みのinteropサポートのおかげで、簡単に行くことができます。

1

interopの観点から、COM DLLとネイティブ(アンマネージド)DLLとの違いがある場合は、COMサーバー(DLL/EXE)が.Netコードスタイルに自然にマップされていると言います。 .Netの世界のようなオブジェクト)。

開発者(COMまたはネイティブの "raw" dllを使用するときにいつでも決定する必要がある)という観点からは、COMではより優れた機能のグループ化(インターフェイス)が可能です提供する - 、インスタンスのプロパティをイベントなど

ちょうど私の0.02;)

ベスト

関連する問題