Существует ли эквивалент COM на *, отклоняют системы? В противном случае, что было *, отклоняют подход к возможности многократного использования?

У меня есть понимание окон COM и идей позади него. Я пытаюсь понять, отклоняют ли *системы, даже имеют эквивалент или почему они не делают?

35
задан RyBolt 17 June 2010 в 15:52
поделиться

3 ответа

Модель Unix построена на идее облегченных процессов, которые взаимодействуют друг с другом через сокеты, каналы, сигналы и командные строки. Исторически в Unix не было потоков (модель потоков POSIX - это всего лишь 10-летняя модель IIRC), но процессы в Unix всегда были намного дешевле, чем в Windows, поэтому было более эффективно разделить функциональные возможности на отдельные исполняемые файлы, чем разрешить единая программа для выращивания больших и монолитных.

В COM вы определяете двоичные интерфейсы, которые разрешают обмен данными с общей памятью. COM привязан к объектно-ориентированной парадигме. В классической модели Unix вы определяете ориентированные на поток интерфейсы, которые позволяют осуществлять обмен данными по каналам без общей памяти. Концептуально это намного ближе к парадигме функционального программирования.

Модель Unix поощряет создание небольших программ, которые можно легко связать вместе с помощью облегченной «оболочки», в то время как модель COM поощряет создание больших программ, которые предоставляют «компоненты», которые могут быть повторно использованы другими большими программами. Это действительно сравнение яблок и апельсинов, поскольку обе модели имеют преимущества и недостатки для разных сценариев.

Конечно, современные системы Unix могут иметь COM-подобные средства. В Mozilla есть XPCOM, кроссплатформенный фреймворк, построенный на тех же принципах, что и COM. GNOME долгое время использовал Bonobo, который концептуально очень похож на Microsoft OLE, который был предшественником COM. Но последние версии GNOME отошли от Bonobo в пользу D-Bus, который больше похож на шаблон событий / сообщений.

41
ответ дан 27 November 2019 в 06:52
поделиться

Ближайшим, вероятно, будет CORBA

4
ответ дан 27 November 2019 в 06:52
поделиться

Ближе всего, вероятно, будет D-Bus. D-Bus - это легкий протокол IPC и брокер объектных запросов (ORB), очень похожий на COM и сильно вдохновленный как COM, так и предшественниками D-Bus - DCOP (KDE) и CORBA (GNOME), а также Netlink (Linux Kernel).

До появления D-Bus обе основные среды рабочего стола Unix имели свои собственные модели компонентов и шины рабочего стола. GNOME имел Bonobo, который был основан на CORBA, а KDE имел KParts, который был основан на DCOP. А ядро Linux имеет Netlink, который является протоколом связи между ядром и пользовательским пространством, который используется, например, инструментом iproute2, когда вы настраиваете сетевой интерфейс.

Разработчики ядра постоянно получали просьбы выпустить Netlink как отдельную часть для связи между программами пользовательского пространства, однако они опасались, что это приведет к разрастанию функций и проблемам с обслуживанием. В конце концов, под эгидой организации Free Desktop, целью которой является создание стандартов для кросс-десктопов, разработчики KDE и GNOME объединились для разработки системы обмена сообщениями IPC, основанной на лучших частях DCOP и Netlink, и в результате получилась D-Bus.

В текущих версиях GNOME и KDE D-Bus полностью заменила CORBA и DCOP, что позволило запускать приложения GNOME в KDE и наоборот с гораздо большей точностью. D-Bus также был подхвачен многими другими средами рабочего стола и приложениями, не только в Linux, но и в других Unix-системах, а также в OSX и даже Windows.

Альтернативой, которую следует упомянуть, является XPCOM от Mozilla, которая представляет собой кроссплатформенную объектную модель, сильно вдохновленную CORBA и COM. (На самом деле XPCOM - это аббревиатура от Cross-Platform Component Object Model.) Она использует IDL, очень похожую на CORBA, под названием XPIDL. Однако, насколько я знаю, никто на самом деле не использует XPCOM, он признан как критиками, так и разработчиками Firefox и других приложений Mozilla как один из основных источников раздутости, и разработчики Mozila на самом деле активно работают над сокращением использования XPCOM, особенно внутри компонентов, таких как Gecko.

Однако, как отмечает @Daniel Pryden, в Unix уже есть много вещей, которые следует предпочесть D-Bus в случаях, когда не требуется тесная интеграция с рабочим столом. Я говорю о таких вещах, как трубы, именованные трубы и сокеты.

30
ответ дан 27 November 2019 в 06:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: