Что ближе всего к Windows COM/DCOM в мире Linux?

Что-нибудь более высокого уровня и более всеобъемлющее, чем трубы / розетки?

7 ответов

Решение

Да, есть много вещей, но нет такого "Стандартного", как COM/DCOM. По крайней мере, в Windows COM / DCOM используются "Windowsish", а другие механизмы RPC используются "Windowsish".

В Linux нет ничего подобного, вместо этого вещи, которые требуют высокоуровневых протоколов RPC, обычно используют то, что обеспечивает их язык, или специальную библиотеку, которая лучше всего соответствует потребностям приложения. Примерами этого могут быть RMI в Java, Python-модуль Pyro и т. Д., Которые обеспечат (некоторую) функциональную четность с DCOM.

Corba немного тяжеловес, но некоторые люди, очевидно, используют его.

Многие приложения запускают свои собственные библиотеки RPC. Не делай этого, если не нужно, это противно.

Для межпроцессного взаимодействия D-Bus является стандартным механизмом более высокого уровня. Как GTK, так и Qt имеют привязки для D-Bus, большинство настольных сред (или, по крайней мере, GNOME и KDE) предоставляют различные сервисы через D-Bus, и многие настольные приложения могут управляться через интерфейс D-Bus. Системная шина также полезна для поиска различной низкоуровневой информации о системе с использованием стандартных системных служб.

KDE4 (построенный на Qt4) также включает технологию под названием KParts, которую часто сравнивают с COM в Windows.

D-Bus
  • D-Bus использует логическую "шину", по которой подключенные приложения могут обмениваться данными
  • общение происходит через простую объектную модель, которая поддерживает как RPC, так и механизмы публикации-подписки
  • D-Bus включает в себя стандартный механизм самоанализа для запросов объектов во время выполнения, приложения, подключенные к шине, могут запрашивать доступность объектов, вызывать удаленные методы для них и запрашивать уведомление о сигналах, которые они излучают.
  • раньше: GNOME Bonobo, KDE DCOP, CORBA, Sun RPC... в настоящее время люди, кажется, предпочитают D-Bus
Организация Объединенных Наций
  • компонентная модель на основе интерфейса, как COM и CORBA
  • все UNO-интерфейсы должны быть получены из интерфейса, который предлагает получение, выпуск и метод queryInterface (сравнимый с COM)
  • время жизни объектов UNO контролируется глобальным подсчетом ссылок.
  • компоненты обмениваются данными только через свои интерфейсы. o каждый компонент живет в среде выполнения Uno (URE), при этом отсутствуют потери производительности для компонентов, которые создаются в одном и том же URE, например, в C++ вызов из компонента A в B является просто виртуальный звонок
  • UNO-интерфейсы указаны в IDL
  • исключения используются для обработки ошибок.
XPCOM
  • похож на Microsoft COM
  • Интерфейсы в XPCOM определены на диалекте IDL под названием XPIDL
  • недостатком является то, что XPCOM добавляет много кода для маршалинга объектов между различными контекстами использования, что приводит к переполнению кода в системах на основе XPCOM

... другой альтернативой для рассмотрения может быть также Java RMI

Также стоит посмотреть похожие вопросы:
Есть ли эквивалент в COM в *nix системах? Если нет, то каков *nix подход к повторному использованию?
Аналог COM-программирования в Linux/UNIX

Проект Mono приходит на ум. Главным образом потому, что CLR/.NET - это новый COM - в конце концов, COM изначально продавался как независимые от языка бинарные объекты.

Я думаю, что DCOM (то есть COM с более длинным проводом) будет удаленным.NET? Или, возможно, некоторые веб-сервисы с сериализацией объектов. Я верю, что Моно поддерживает оба.

Вы можете проверить Corba, он работает на Linux и Windows, а также.

Существует технология XPCOM компании Mozilla, кросс-платформенная объектная модель компонентов. Вроде как в COM или DCOM концептуально.

Вот список относительно немногих программ, которые используют D-шину

DCOM доступен в Linux. Это не "linux-способ делать вещи", но, эй, если вы хотите "как DCOM, но Linux", тогда просто используйте DCOM на Linux и сделали...

Другие вопросы по тегам