DCOP

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
KDE logo.svg

DCOP (от Desktop COmmunication Protocol) — легковесная система коммуникации процессов, а также программных компонентов. Основная цель этой системы — обеспечивать межпроцессное взаимодействие и распределять сложные задачи. Таким образом DCOP — система управления, позволяющая приложениям или скриптам использовать другие приложения. Она построена поверх протокола X Window System Inter-Client Exchange.

Использование DCOP предоставляет новые возможности без необходимости написания новых приложений. Приложения и библиотеки KDE хорошо поддерживают DCOP, благодаря этому большинство приложений KDE могут контролироваться скриптами через механизм DCOP. В KDE 4 DCOP был заменен на D-Bus.

В современных KDE-системах каждое приложение KDE поддерживает базовый набор интерфейсов DCOP, даже если программист явно не вносил в коде их поддержку. Например, каждое приложение по умолчанию поддерживает команду закрытия.

Существует утилита, называемая ‘dcop’, позволяющая управлять приложениями из командной строки. Также есть GUI-утилита ‘kdcop’, отображающая интерфейсы приложения.

Для примера, рабочий стол KDE позволяет изменять обои с временным интервалом. Тем не менее он не обеспечивает напрямую интерфейс для отображения следующих обоев, если текущие не подходят под ваше настроение. Также нет способа удалить обои, которые вам не нравятся.

Эти функции могут быть легко добавлены, например, использую dcop. Команда:

 dcop kdesktop KBackgroundIface changeWallpaper

установит следующие обои, а команда

 dcop kdesktop KBackgroundIface currentWallpaper 1

укажет название файла обоев на первом рабочем столе (KDE, как и большинство X-окружений поддерживает дополнительные ‘виртуальные’ рабочие столы для удобства работы). Совместив обе команды в shell-скрипте, вы можете переключиться на следующие обои, удалив предыдущие, например так:

 OLDWALLPAPER=`dcop kdesktop KBackgroundIface currentWallpaper 1`
 dcop kdesktop KBackgroundIface changeWallpaper
 rm "$OLDWALLPAPER"

Как вы видите, DCOP делает возможным добавление новых функций, которые не были предусмотрены при создании приложения.

Модель DCOP[править | править вики-текст]

Модель проста. Каждое использующее DCOP приложение — клиент. Они взаимодействуют друг с другом через сервер DCOP, который предназначен для направления трафика, отправки сообщений/запросов в нужном направлении. Все клиенты — равноправны.

Два типа действий возможны с DCOP: сообщения без ожидания и запросы с ожиданием данных.

Все данные отправляются последовательно, используя встроенные операторы QDataStream, доступные во всех классах Qt. Существует также простой IDL-подобный компилятор (dcopidl и dcopidl2cpp), генерирующий заготовки и скелеты. Использование компилятора dcopidl обладает дополнительной выгодой — безопасностью типов.

D-Bus, система межпроцессного взаимодействия стандартизованная freedesktop.org, создана под влиянием системы DCOP и заменила её в KDE4.

Ссылки[править | править вики-текст]