2009-08-25 4 views

答えて

7

COMは、ローカル(オブジェクトからオブジェクトへ)とリモート(マシンからマシンへ、プロセスからプロセスへ)の通信をほぼ透過的に提供します。ちょっと気をつけて、あなたのコードは、同じメモリ空間のどこでもホストされているオブジェクトをインターネット上でうまく処理できます。

この抽象化には問題がありました(異なるケースのダイナミクスは非常に異なっていました)、バイナリ形式を使用することで相互運用性が問題になりました。また、非常にうまく機能します(Visual Basicが有効になっているすべてのビジネスアプリケーションを検討してください)。

+3

基準が良くない場合でも、基準は良好です。 –

+0

(どちらもあなた) – Hardryv

6

最も人気のあるオペレーティングシステムのバックボーンである製品を呼び出すのは難しいです。アプリケーションが有用でない場合は、大多数です。

+1

これは、コンピュータがユーザを助けることを可能にしました=>便利でした。 – Richard

0

COMは多くのプロジェクトで.NETに置き換えられましたが、COMは依然として下位レベルのMFC/ATL C++で書かれていて、人々はCOMを使用してすべてのCPUサイクルがカウントされる高性能アプリケーション、ハードウェアインターフェースなど。

+0

本当にそうではありません。 .NETランタイム(CLI)*はCOMコンポーネント*です。コンパイラによって.exeアセンブリに追加されるデフォルトのスタートアップコードはこれを隠しますが、.NETを自分でホストしたい場合はCOMと話をする必要があります。 – Richard

+0

COMとCLIは別のものですが、COMとして使用するように設定した場合に限り、COMとして.netアセンブリを使用できます。はい、COMとCLIにはいくつかのブリッジがありますが、ユーザーにとって透過的なので、 COM自体はCLIほど強力であり、多言語対応であったが、ランタイムがcベースであり、あまりに多くのコーディングを必要としたため、大量開発には向いていなかった。 –

3

実際に、それは何年も前から広く使われてきました。相互に統合し相互作用する多くのアプリケーションは、COMテクノロジに依存しています。私は、.NETライブラリでさえCOMとして自分自身を登録すると思います。

全体の混乱については、私はここで同意しないでしょう。それはかなり複雑ですが、混乱はありません。当然ながら、オブジェクト指向、インタフェース、ポインタ、低レベルプログラミング、良いC++プログラマを作る脳のモデルをよく理解する必要があります。

+1

私は十分に複雑なものは、それを理解していない/それを理解するためにいくつかの時間を費やすつもりはない人の混乱ですと思う。 –

+0

私はVisual BasicとDelphiを使用していましたが、COMのインコンパイラサポートが、ユーザーがCOMオブジェクトを簡単に使用できるようにすると聞いていました。 – ChrisW

0

COMはまだGISアプリケーションで広く使用されています。これは、ArcMap(ESRI)やSpatial Objects用の膨大なプログラミングAPIなど、一部のアプリケーションのバックボーンです。

誰もが言ったように、それは複雑ですが、いくつかの重要な概念を理解すれば、そのために開発する方が簡単です。

.NETはCOMオブジェクトをサポートしています。

0

COMは、当然、ネイティブコード(C++など)と.NETとのインターフェイスに最適な方法となっています。

0

名前COMまたは確かにOLEは常に私と激怒しました。 COMオブジェクトは継承できませんでした。私はそれがパッケージング技術だと思っていました....しかし、M $はそれがそれ以上のものに見えるようにするために、 "Object"という言葉を使いました。

NeXTのPortable Distributed Objectsのように同時に利用できる他のテクノロジーは、それが原始的であるように思えました。

1

COMを輝かせるユースケースは何ですか?異なるベンダー間

異なる言語間の相互運用(例えば、C++およびVisual Basic)

異なるプロセス間の相互運用(例えばOLE、Word文書にExcelスプレッドシートを埋め込む)

相互運用(例えばWindowsエクスプローラにプラグインするシェル拡張を書きたい場合は、エクスプローラが呼び出す拡張機能のCOMインターフェイスを宣言するため、COMを使用してシェル拡張を記述します)。

+0

+1アンマネージドC++と.NETの間のinteropを忘れないでください - それぞれの側は、あなたがやりたいことに応じてCOMサーバーになることができます。 – sharptooth

-1

問題のほとんどは、COMを実際に理解していない開発者のためです。 しかしCOMは、Microsoftが別の類似のプラットフォーム、つまり.Netを再設計しなければならないことを理解することは非常に難しいです。

関連する問題