Что ближе всего к 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 использует логическую "шину", по которой подключенные приложения могут общаться
- связь происходит через простую объектную модель, которая поддерживает как RPC, так и механизмы публикации-подписки
- D-Bus включает в себя стандартный механизм интроспекции для выполнения запросов интерфейсов объектов, приложения, подключенные к шине, могут запрашивать доступность объектов, вызывать удаленные методы на них и запрашивать уведомление для сигналы, которые они излучают
- перед: гном бонобо, KDE DCOP, описание, Sun RPC... в настоящее время люди, кажется, предпочитают D-Bus
- интерфейс на основе компонентной модели, как COM и CORBA
- все Uno-интерфейсы должны быть получены из интерфейса, который предлагает получение, выпуск и метод queryInterface (сопоставимый с COM)
- продолжительность жизни UNO-объектов контролируется глобальным подсчетом ссылок.
- компоненты общаются только через свои интерфейсы o каждый компонент живет в среде выполнения Uno (URE), нет накладных расходов на производительность для компонентов, которые создаются в одном и том же URE, например, в C++ вызов из компонента A В B-это просто виртуальный вызов
- Uno-интерфейсы указаны в IDL
- исключения используются для ошибки обращение.
- подобно 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 и сделали...