10

これらの用語の違いに頭を悩ませることはできません。

COM と ActiveX は同義語ですか?

ActiveX オブジェクトは、IDispatch を公開する単なる COM オブジェクトですか?

多くの古い MSDN ページでは、COM コンテキストなしで IDispatch について言及しています。それには別の歴史があり、そのライフサイクルの後半でCOMの「傘」の下に導入されたばかりですか?

OLE はどこに適合しますか? MFC のネーミングと MSDN における一般的な (かなりの) 存在は、単なるレガシーですか?

ウィキペディアはある程度の洞察を提供しますが、多くはありません。詳細なリファレンスは見つかりませんでした。

4

3 に答える 3

9

COM Programming by Exampleからの引用をいくつか見つけました:

COM についてすぐにわかるもう 1 つのことは、マーケティング部門が用語についてのフィールドトリップを行ったことです。理解を促進するのを助けるのではなく、ほとんどの場合、それは謎を促進することに気付くでしょう. ... OLE、ActiveX、Remotable Objects - 今週はどれが何を意味するのでしょうか? ...

COM は、特定の問題に対する解決策から発展しました。つまり、ユーザーがワード プロセッサを終了しなくても、ワード プロセッサがレター内のスプレッドシートを編集できるようにする方法です。このソリューションは OLE と呼ばれていました。... しかし、OLE (OLE2) の 2 番目のリリースでは、その作成者は OLE32.DLL を変更して OLE の基本機能をさらに公開し、その API を使用して任意のアプリケーションが別のアプリケーションの機能にアクセスできるようにしました。1993 年からほとんど変わっていないこの API は、COM API と見なされているものです。...

COM API が公開されると、Microsoft はそれを使用して当時 OLE コントロールと呼ばれていたものを作成し、Visual C++ で記述された洗練されたコントロール (スパイラル ボタン、音楽を再生するリスト ボックスなど) に Visual Basic アプリケーションからアクセスできるようにしました。最終的に、これと同じテクノロジーを使用して、コントロールをダウンロードして Web ブラウザーで使用できるようになりました。この時点で、純粋にマーケティング上の理由から、名前が ActiveX コントロールまたは単なる ActiveX に変更されました。ActiveX コントロールには任意の機能をパッケージ化できますが、その要件はユーザー インターフェイス コントロールのサポートに特化しています。

私はまだ最後の文に興味があります.COMオブジェクトは、ActiveXコントロールとしての資格を得るためにいくつかの追加要件を満たす必要がありますか? -しかし、それを手放すのに十分です。

回答ありがとうございます。

于 2009-05-05T07:30:40.417 に答える
5

ActiveX は通常、GUI オブジェクトである「ActiveX コントロール」のコンテキストで使用されますが、ActiveX は COM のマーケティング用です。

IDispatch は、すべてのメソッドと引数の型を事前に把握しておく必要があるコンパイル時とは対照的に、クライアント プログラムが実行時にメソッドを動的に呼び出すことができる (レイト バインディング) ように、COM オブジェクトによって実装されるインターフェイスです。

OLE は COM の以前のバージョンです。

于 2009-05-04T15:49:38.043 に答える
1

OLE について: COM のルーツは OLE にあります。しかし今日では、OLE は COM の上に構築されていると見なされる可能性があり、主にその名前が示すように、ドキュメントのリンクと埋め込みに使用されます。COM 自体はいくつかのインターフェイス (IUnknown、IClassFactory、IMalloc など) しか定義していませんが、OLE は IMoniker、IOleItemComtainer などの追加インターフェイスを多数追加します。

要約すると、COM は基盤であり、ActiveX と OLE は COM 上のレイヤーです。

于 2009-05-04T16:36:21.940 に答える