Что-нибудь более высокого уровня и более всеобъемлющее, чем каналы/сокеты?
Что ближе всего к Windows COM/DCOM в мире Linux?
Ответы (7)
Да, есть много вещей, но нет такой "Стандартной", как COM/DCOM. По крайней мере, в Windows COM/DCOM используются "Windowsish" вещами, а другие механизмы RPC используются "не-Windowsish" вещами.
В Linux нет ничего подобного, вместо этого вещи, которым требуются протоколы RPC более высокого уровня, обычно используют то, что предоставляет их язык, или определенную библиотеку, которая лучше всего соответствует потребностям приложения. Примерами этого могут быть RMI в Java, «пиро»-модуль Python и т. Д., Который обеспечит (некоторое) функциональное равенство с DCOM.
Corba немного тяжеловесен, но некоторые люди, по-видимому, его используют.
Многие приложения используют собственные библиотеки RPC. Не делайте этого без необходимости, это противно.
AddRef
и QueryInterface
круговых поездок, проверки связи для сборки мусора, управления памятью, специфичного для COM, и т. д.
- person acelent; 22.07.2016
Для межпроцессного взаимодействия D-Bus является стандартным механизмом более высокого уровня. И GTK, и Qt имеют привязки к D-Bus, большинство сред рабочего стола (или, по крайней мере, GNOME и KDE) предоставляют различные службы через D-Bus, а многими настольными приложениями можно управлять через интерфейс D-Bus. Системная шина также полезна для получения различной низкоуровневой информации о системе с помощью стандартных системных служб.
KDE4 (построенный на основе Qt4) также включает в себя технологию под названием KParts, которую часто сравнивают с COM в Window.
- D-Bus использует логическую шину, по которой подключенные приложения могут обмениваться данными.
- связь осуществляется через простую объектную модель, которая поддерживает механизмы RPC и публикации-подписки.
- D-Bus включает в себя стандартный механизм самоанализа для запроса интерфейсов объектов во время выполнения, приложения, подключенные к шине, могут запрашивать доступность объектов, вызывать для них удаленные методы и запрашивать уведомление о сигналах, которые они испускают.
- до: GNOME Bonobo, KDE DCOP, CORBA, Sun RPC.. , в настоящее время люди, кажется, предпочитают D-Bus
- компонентная модель на основе интерфейса, как COM и CORBA
- все UNO-интерфейсы должны быть производными от интерфейса, который предлагает получение, освобождение и метод queryInterface (сравнимый с COM)
- время жизни UNO-объектов контролируется глобальным подсчетом ссылок.
- компоненты обмениваются данными только через свои интерфейсы o каждый компонент находится в Uno Runtime Environment (URE), для компонентов, созданных в одной и той же URE, нет дополнительных затрат на производительность, например, в C++ вызов компонента A к компоненту B является просто виртуальный звонок
- UNO-интерфейсы указаны в IDL
- исключения используются для обработки ошибок.
- похоже на Microsoft COM
- Интерфейсы в XPCOM определяются на диалекте IDL, который называется XPIDL.
- недостаток заключается в том, что XPCOM добавляет много кода для сортировки объектов между разными контекстами использования, что приводит к раздуванию кода в системах на основе XPCOM.
...другой альтернативой для рассмотрения может быть Java RMI
Также стоит ознакомиться с сопутствующими вопросами:
Есть ли эквивалент COM в системах *nix? Если нет, то каким был подход *nix к повторному использованию?
Аналог программирования COM в Linux/UNIX
Сразу приходит на ум проект Mono. Главным образом потому, что CLR/.NET — это новый COM — в конце концов, COM изначально продавался как независимые от языка, совместимые с двоичными файлами объекты.
Я предполагаю, что DCOM (то есть COM с более длинным проводом) будет удаленным взаимодействием .NET? Или, возможно, некоторые веб-сервисы с сериализацией объектов. Я считаю, что Mono поддерживает оба.
Вы можете проверить Corba, он также работает в Linux и Windows.
Существует технология Mozilla XPCOM, кросс-платформенная объектная модель компонентов. Концептуально похоже на COM или DCOM.
Вот приведен список относительно небольшого числа программ, использующих D-bus.
DCOM доступен в Linux. Это не «способ ведения дел в Linux», но, эй, если вы хотите «как DCOM, но Linux», тогда просто используйте DCOM в Linux и сделайте...