2013-02-23 6 views
1

Я пытаюсь понять концепцию COM. По моему мнению: COM - это двоичный интерфейс или исполняемая библиотека функций (на языке машины), которая может быть расширена или повторно использована любыми языками программирования с помощью ее функций и свойств, выставленных поставщиком.Понимание COM-объектов

SO в случае нижнего кода мы можем сказать Fso или Txtobj объект создан COM или объект ActiveX?

И если мы хотим создать ту же файловую систему или объект текстового потока на других языках программирования, как Java, что нам делать? Поскольку мы говорим COM как независимый от языка.

Set Fso = CreateObject("Scripting.FileSystemObject") 

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

Вы не можете сказать, как сделать com для любого языка, поскольку каждый язык поддерживает com по-разному. Если вы просто хотите знать, как сделать com для java, пожалуйста, уточните (и добавьте тег java к вашему вопросу) и вы получите * много * лучших ответов на свой вопрос. –

+0

Чем ты. Мой вопрос состоял из двух частей: – user1925406

+0

Чем вы. Моя основная часть вопроса: на каком основании мы называем объект COM-объектом? И во-вторых, как достигается языковая независимость в вышеупомянутом случае, когда microsoft предоставила объектную модель файловой системы с функциями и свойствами. Извините, если мой вопрос все еще звучит расплывчато. – user1925406

ответ

4

Если я правильно понимаю, что ваши вопросы:

Что является COM объект, основанный на , как он построен выставить свою функциональность другого кода, который использует его. Он должен быть построен, чтобы следовать определенным правилам, и он должен обеспечивать определенные функциональные возможности, которые являются обязательными, и он должен делать это очень определенным образом на двоичном уровне (биты и байты). К сожалению, конкретные правила являются длинными и слишком сложными, чтобы объяснить в этом ответе.

Существуют также правила и конкретные бинарные требования, которые должны выполняться кодом, который использует объект.

Независимость от языка исходит из того, что правила настолько точны и что они разработаны так, что они не привязаны ни к какому-либо определенному языку. Многие языки могут использоваться для записи COM-объектов, и многие языки могут использовать COM-объекты. Под этим я подразумеваю, что этот язык должен обеспечить механизм, чтобы программист выполнял эти правила. Это ключ: в правилах не указывается , так как язык должен позволять соблюдать правила. Каждый язык имеет разные способы; некоторые языки автоматически позаботятся о многих деталях для вас, а другие потребуют от вас большей части работы. некоторые используют специальный синтаксис только для COM, в то время как другие используют тот же синтаксис, который они используют для всего остального.

Обратите внимание на то, что «независимость языка» (я бы назвал это более «языковым нейтралитетом») не совпадает с «языковой универсальностью». Не каждый язык может использовать COM.

Имея это в виду, ваши ответы:

1) Как вы знаете, если что-то есть COM объект от чтения строки кода, например, как в вашем примере?

Настоящий ответ: «это зависит от того, как был написан объект. Если он написан для подчинения правилам COM и он вызывается через COM-механизмы на вашем языке, то это COM-объект». В конкретном случае просмотра кода и попытки решить, является ли он COM, не глядя на детали объекта, ответ: «Это зависит от языка».

В вашем примере кода в VBScript оба являются объектами COM. Тот факт, что выражение использует команду Set, сразу сообщает вам, что переменные будут ссылаться на COM-объект. Помните, что ответ будет другим в других языках (например, даже в VB6 наличие set недостаточно, чтобы узнать, является ли объект COM-объектом).

2) Как достигается независимость языка?

Это достигается применением строгих правил на двоичном уровне.Различные языки соответствуют правилам по-разному, и это нормально. Некоторые языки не могут соблюдать эти правила, и они так не поддерживают COM.

Эти конкретные объекты, которые вы показываете, имеют свою собственную функциональность и да, они работают через функции и свойства; это некоторые из правил. Если язык не имеет механизма, который позволяет вам вызывать эти функции, то этот язык не может использоваться для использования COM-объектов.

Если вы хотите изучить правила, они обычно выражаются на C или C++, и одна из лучших книг на эту тему - «Essential COM» от Don Box.

+0

Большое спасибо за подробное объяснение. – user1925406