Если я правильно понимаю, что ваши вопросы:
Что является 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.
Вы не можете сказать, как сделать com для любого языка, поскольку каждый язык поддерживает com по-разному. Если вы просто хотите знать, как сделать com для java, пожалуйста, уточните (и добавьте тег java к вашему вопросу) и вы получите * много * лучших ответов на свой вопрос. –
Чем ты. Мой вопрос состоял из двух частей: – user1925406
Чем вы. Моя основная часть вопроса: на каком основании мы называем объект COM-объектом? И во-вторых, как достигается языковая независимость в вышеупомянутом случае, когда microsoft предоставила объектную модель файловой системы с функциями и свойствами. Извините, если мой вопрос все еще звучит расплывчато. – user1925406