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

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

7 ответов


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

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

Корба немного тяжеловес, но некоторые люди, по-видимому, используют его.

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


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

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


D-Bus
  • D-Bus использует логическую "шину", по которой подключенные приложения могут общаться
  • связь происходит через простую объектную модель, которая поддерживает как RPC, так и механизмы публикации-подписки
  • D-Bus включает в себя стандартный механизм интроспекции для выполнения запросов интерфейсов объектов, приложения, подключенные к шине, могут запрашивать доступность объектов, вызывать удаленные методы на них и запрашивать уведомление для сигналы, которые они излучают
  • перед: гном бонобо, KDE DCOP, описание, Sun RPC... в настоящее время люди, кажется, предпочитают D-Bus
UNO
  • интерфейс на основе компонентной модели, как 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


вы можете ознакомиться описание, Она работает на Linux и Windows, а также.


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

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


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

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


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