1

COMの概念を理解しようとしています。私の理解によると、COMは、ベンダーによって公開された関数とプロパティの助けを借りて、任意のプログラミング言語で拡張または再利用できるバイナリインターフェイスまたは実行関数ライブラリ(機械語)です。

SO 以下のコードの場合、作成されたオブジェクトは COM または ActiveX オブジェクトであると言えFsoますTxtobjか?

また、Java などの他のプログラミング言語で同じファイル システムまたはテキスト ストリーム オブジェクトを作成したい場合は、どうすればよいでしょうか。COMは言語に依存しないと言っているからです。

Set Fso = CreateObject("Scripting.FileSystemObject")

Set Txtobj = Fso.CreateTextFile("C:\Users\ACER\Desktop\Project Folder\NewText_5.txt")
4

1 に答える 1

4

私があなたの質問が何であるかを正しく理解している場合:

何かは、それを使用する他のコードにその機能を公開するために構築された方法に基づくCOMオブジェクトです。特定のルールに従うように構築する必要があり、必須の特定の機能を提供する必要があり、バイナリレベル(ビットおよびバイト)で非常に特殊な方法で実行する必要があります。残念ながら、特定のルールは長く、複雑すぎてこの回答では説明できません。

オブジェクトを使用するコードが従わなければならないルールと特定のバイナリ要件もあります。

言語の独立性は、ルールが非常に正確であり、特定の言語に縛られないように設計されているという事実に由来しています。多くの言語を使用してCOMオブジェクトを作成でき、多くの言語でCOMオブジェクトを使用できます。つまり、これらの言語は、プログラマーがこれらのルールに従うためのメカニズムを提供する必要があるということです。それが重要です。ルールは、言語がルールに従うことを可能にする方法を指定していません。言語ごとに異なる方法があります。一部の言語は自動的に多くの詳細を処理しますが、他の言語ではほとんどの作業を手作業で行う必要があります。COM専用の特別な構文を使用するものもあれば、他のすべてに使用するのと同じ構文を使用するものもあります。

「言語の独立性」(より適切には「言語の中立性」と呼ぶ)は「言語の普遍性」と同じではないことに注意してください。すべての言語がCOMを使用できるわけではありません。

それを念頭に置いて、あなたの答えは次のとおりです。

1)例のようなコード行を読み取ることで、何かがCOMオブジェクトであるかどうかをどのように知ることができますか?

本当の答えは、「オブジェクトがどのように記述されたかによって異なります。COMの規則に従うように記述され、言語のCOMメカニズムを介して呼び出される場合、それはCOMオブジェクトです」です。コードを見て、オブジェクトの詳細を見ずにCOMかどうかを判断しようとする特定のケースでは、答えは「言語によって異なります」です。

VBScriptのサンプルコードでは、どちらもCOMオブジェクトです。式がコマンドを使用しているという事実はSet、変数がCOMオブジェクトを参照することをすぐに示します。他の言語では答えが異なることを忘れないでください(たとえば、VB6でもset、オブジェクトがCOMオブジェクトであるかどうかを知るにはの存在だけでは不十分です)。

2)言語の独立性はどのように達成されますか?

これは、バイナリレベルでの厳密なルールの使用によって実現されます。さまざまな言語がさまざまな方法でルールに準拠しており、それは問題ありません。一部の言語はこれらのルールに準拠できないため、COMをサポートしていません。

表示する特定のオブジェクトには独自の機能があり、そうです、それらは関数とプロパティを介して機能します。それらはいくつかのルールです。言語にこれらの関数を呼び出すことができるメカニズムがない場合、その言語を使用してCOMオブジェクトを使用することはできません。

ルールを学びたい場合は、通常CまたはC ++で表現されており、このテーマに関する最高の本の1つは、DonBoxの「EssentialCOM」です。

于 2013-02-24T05:37:15.550 に答える