<?xml version="1.0" encoding="utf-8"?>
<!-- -*- indent-tabs-mode: nil -*- -->
<chapter id="ipc-network">
  <title>Межпроцессное взаимодействие и работа с сетью</title>

<section id="clipboard">
  <title>Буфер обмена и перетаскивание</title>

  <para>Так как пользователи работают с всё большим количеством типов данных в различных приложения, то возрастает необходимость в обмене объектами и данными между приложениями. GNOME поддерживает два связанных метода обмена данными между приложениями: операция перетаскивания и копирование в общесистемный буфер обмена и вставка из него. Оба эти механизма работают между различными приложениями, включая те, что были разработаны без помощи GNOME. </para>

  <para>Буфер обмена используется, когда пользователь явно копирует данные в приложении. В этом случае приложение захватывает буфер обмена. Когда пользователь вставляет данные в другое приложение, то это приложение запрашивает буфер обмена из первого приложения. Операции с буфером обмена полностью поддерживаются в GTK+.</para>

  <para>Операции перетаскивания похожи, но требуют отслеживания курсора и его обновления при движении над потенциальными целями. Когда приложение уведомляется о движении курсора над ним во время перетаскивания, оно должно изменить курсор таким образом, чтобы показать может ли оно принять перетаскивание. GTK+ поддерживает перетаскивание с помощью сложного API, позволяющего легко управлять целями перетаскивания в приложениях.</para>

  <para>Оба механизма — перетаскивание и буфер обмена, поддерживают обмен не только текстом, но и произвольными данными. Когда у приложения есть данные для обмена оно объявляет доступные форматы этих данных. Например, при копировании текста в веб-браузере, текстовый процессор может обработать данные в формате HTML, в то время как обычный текстовый редактор может принять только обычный текст без форматирования.</para>

  <para>Необходимо обеспечить поддержку работы с буфером обмена и перетаскивания для всех данных, с которыми работает приложение. Буфер обмена и перетаскивание полезно не только для обработки текста, но и переноса между приложениями фрагментов файлов, изображений, звука. При использовании GTK+ приложения автоматически поддерживают работу с буфером обмена и перетаскивание для текстовых полей, цветовых кнопок, диалогов выбора файлов и других встроенных элементов управления. Для поддержки любого другого типа данных необходимо использовать API GTK+.</para>

  <para>For more information, see <ulink url="http://www.newplanetsoftware.com/xdnd/">Drag-and-Drop Protocol for
  the X Window System</ulink>, <ulink url="http://standards.freedesktop.org/clipboards-spec/clipboards-latest.txt">X
  Clipboard Explanation</ulink>, and <ulink url="http://freedesktop.org/wiki/ClipboardManager">The
  Clipboard Manager Specification</ulink>.</para>
</section>

<section id="dbus">
  <title>Система обмена сообщениями D-BUS</title>

  <para>D-Bus — шина сообщений, которая не зависит от рабочей среды и позволяет обмениваться сообщениями различным приложениям, средой и низкоуровневыми компонентами системы. D-Bus предоставляет простой программный интерфейс для отправки сообщений отдельным службам или широковещательных сообщений всем службам. D-Bus позволяет различным типам приложений обмениваться информацией и интегрироваться друг с другом и со средой, обеспечивая лучшую функциональность и взаимодействие с пользователем.</para>

  <para>D-Bus предоставляет шину сеанса и системную шину. Шина сеанса используется приложениями, работающими в одном сеансе пользователя, для обмена данными и уведомлении о событиях, а также интеграции с рабочим столом пользователя. Например, видеопроигрыватель может послать сообщение D-Bus, чтобы предотвратить активацию хранителя экрана во время просмотра фильма.</para>

  <para>Системная шина единственная в системе и работает независимо от сеансов пользователей. Она может взаимодействовать с приложениями в любом сеансе, позволяя приложениям взаимодействовать с системными компонентами без работы на низком уровне. Системная шина используется для обеспечения важной функциональности, которую пользователи ожидают от системы. Например, системная шина используется для слежением за включением и выключением сетевых интерфейсов, за подключением сетевых кабелей, а также состоянием батарей ноутбука.</para>

  <para>D-Bus разработан совместно с <ulink url="http://www.freedesktop.org/">freedesktop.org</ulink>, поэтому его можно использовать с различными приложениями и средами рабочего стола. Проект D-Bus используется во многих средах рабочего стола, поэтому с его использованием можно создавать универсальные приложения, которые идеально интегрируются со средой рабочего стола пользователя независимо от того какая именно среда рабочего стола используется.</para>

  <para>Для получения дополнительной информации по D-Bus обратитесь к <ulink url="http://dbus.freedesktop.org/doc/dbus-tutorial.html">The D-BUS Tutorial</ulink> and <ulink url="http://dbus.freedesktop.org/doc/dbus-specification.html">The D-BUS Specification</ulink>.</para>
</section>

<section id="bonobo-corba">
  <title>Bonobo и CORBA</title>

  <para>Bonobo — это платформа для создания повторно используемых в приложениях компонентов. Будучи построенной на основе индустриального стандарта Общей архитектуры брокера объектных запросов (COBRA) Bonobo предоставляет интерфейсы, необходимые для создания компонентов с хорошим поведением в приложениях GNOME.</para>

  <para>Компоненты Bonobo можно использовать в различных ситуациях для созданиям гибкого и расширяемого программного обеспечения. Например, компонент показа мультимедиа-содержимого можно внедрить в текстовый процессор, таким образом эффективно обеспечить поддержку мультимедиа без непосредственной её обработки. Компоненты Bonobo также используются для вставки апплетов в панель GNOME. С помощью Bonobo апплеты эффективно взаимодействуют с панелью, предоставляя пользователю целостный интерфейс.</para>

  <para>Компоненты Bonono не ограничены графическими элементами управления. Bonobo используется Evolution — почтовым клиентом и средством групповой работы — для доступа к адресной книге и календарю, что позволяет хранить информацию в одном месте, откуда её могут получить все приложения.</para>

  <para>Bonobo — реализация COBRA, позволяющая выполнять компоненты в раздельных процессах. Компоненты могут быть написаны на различных языках и выполняться в различных средах выполнения, необходимо лишь, чтобы их интерфейсы соответствовали синтаксису языка определения интерфейсов (IDL). Гибкий дизайн COBRA позволяет компонентам выполняться даже на различных машинах в сети.</para>

  <para>GNOME предоставляет собственную быструю и легкую реализацию CORBA — ORBit. Инструменты и библиотеки, поставляемые с GNOME позволяют написание компонентов на языке C, в то время как другие реализации COBRA исключают такую возможность.ORBit является невероятно быстродейственной реализацией CORBA.</para>

  <para>Bonobo помогает заполнить пробелы в CORBA, предоставляя дополнительные интерфейсы и спецификации, необходимые для поддержки совместимых компонентов. Если же всё-таки необходимо использовать CORBA без Bonobo,  можно использовать его напрямую. Например, подсистема специальных возможностей GNOME использует CORBA для того, чтобы позволить вспомогательным инструментам наблюдать и взаимодействовать с запущенными приложениями.</para>

  <para>Bonobo можно использовать для реализации сложных графических компонентов, которые могут быть внедрены в приложение. Тем не менее, для большинства задач межпроцессного взаимодействия GNOME всё больше использует подсистему D-Bus, так как интегрирование D-Bus в приложения значительно проще.</para>

  <para>За дополнительной информацией о Bonobo обратитесь к <ulink url="http://library.gnome.org/devel/libbonobo/stable/">Справочнику по Libbonobo</ulink> и<ulink url="http://library.gnome.org/devel/libbonoboui/stable/">Справочнику по LibbonoboUI</ulink>. За информацией об ORBit — GNOME реализацией CORBA обратитесь к <ulink url="http://library.gnome.org/devel/ORBit2/stable/">Справочнику по ORBit2</ulink>.</para>
</section>

<section id="dns-sd">
  <title>Обнаружение служб</title>

  <para>Обнаружение служб DNS или Zeroconf — это технология автоматического определения расположения доступных служб в сети. Zeroconf позволяет использовать ресурсы сети без необходимости явного указания адреса ресурса или ручной настройки соответствующих приложений.</para>

  <para>Обнаружение служб DNS используется во многих компонентах GNOME и его использование далее будет расширяться. Например, <application>Nautilus</application> — файловый менеджер GNOME — обнаруживает службы для определения расположения различных серверов в сети. <application>Ekiga</application> — приложение для организации видеоконференций и телефонии в GNOME — может определять и публиковать предпочтения пользователя и находить других пользователей в локальной сети с помощью обнаружения служб.</para>

  <para>Библиотека Avahi обеспечивает полную поддержку обнаружения служб DNS. За дополнительной информацией по Avahi обратитесь к <ulink url="http://avahi.org/">веб-сайту Avahi</ulink>.</para>
</section>

<section id="xml-web-services">
  <title>XML и веб-службы</title>

  <para>В нашем мире, где постоянно усиливается взаимодействие, всё большему количеству приложений необходимо обеспечивать поддержку различных веб-служб. Иногда веб-службы просто обеспечивают дополнительную функциональность, иногда они составляют главное назначение приложения. Даже для приложений, которые долгое время были автономными, сейчас считается рациональным использование веб-служб.</para>

  <para>Платформа GNOME предоставляет поддержку веб-служб приложениями и обеспечивает полным набором библиотек для использования, управления и преобразования XML — языка веб.</para>

  <section id="libsoup">
    <title>SOAP</title>

    <para>GNOME при помощи библиотеки libsoup обеспечивает поддержку SOAP — широко используемого протокола передачи XML сообщений через HTTP. SOAP позволяет разработчику опубликовать программные интерфейсы через веб, которые приложения могут использовать для обмена информацией, выполнения транзакций и выполнения любых других возможных действий.</para>

    <para>SOAP может быть использован для поиска и получения информации, взаимодействия с интернет-магазином, для управления учётными записями пользователей на других системах и множества других целей. Веб сервисы используются всё больше и больше для предоставления важной функциональности, и приложения, использующие SOAP, могут обеспечить пользователю более целостную функциональность.</para>

    <para>Библиотека libsoup содержит реализацию HTTP и набор API необходимый для создания и обработки сообщений SOAP. Она также поддерживает безопасную аутентификацию, поэтому Веб-сервисы можно использовать для доступа к секретным данным через безопасное соединение. С помощью библиотеки libsoup легко использовать веб-сервисы без необходимости вручную разбирать и интерпретировать сообщения, посылаемые по SOAP.</para>

    <para>За дополнительной информацией обратитесь к <ulink url="http://library.gnome.org/devel/libsoup/stable/">Справочнику по libsoup</ulink>.</para>
  </section>

  <section id="libxml2">
    <title>Обработка XML</title>

    <para>Со дня официального представления в 1998 г. XML (eXtensible Markup Langauge) используется во всё большем количестве приложений. Он используется для широкого круга целей: от форматов документирования, например XHMTL и DocBook, до протоколов интернета, например SOAP и Jabber. XML имеет простой и чёткий базовый синтаксис, что позволяет сконцентрироваться на конкретных нуждах приложения.</para>

    <para>GNOME поставляется с библиотекой libxml2, которая широко используется в рабочем окружении. Библиотека libxml2 обладает хорошим быстродействием и полностью совместима со стандартами XML, обеспечивая всё необходимое для работы приложений с XML.</para>

    <para>Библиотека libxml2 предоставляет различные API для работы с XML, поэтому в приложениях можно использовать наиболее подходящий API. Кроме оригинального API, libxml2 также предоставляет основанный на обратных вызовах SAX2 API, интерфейсы потокового чтения и записи XML, и полную поддержку XPath.</para>

    <para>Кроме поддержки механизма DTD, библиотека libxml2 полностью поддерживает верификацию документов с помощью RELAX NG, который предоставляет более гибкую модель верификации, оставаясь легким в использовании. Также частично поддерживается XML Schema — новый язык схем, представленный консорциумом W3C.</para>

    <para>Для непосредственной работы с XML в приложении следует использовать библиотеку libxml2, что обеспечит полностью совместимую со стандартами обработку и вывод XML. Что позволит разработчикам не беспокоиться о совместимости приложений.</para>

    <para>За подробной информацией о libxml2 обратитесь к <ulink url="http://xmlsoft.org/tutorial/index.html">Руководству по Libxml</ulink> и <ulink url="http://xmlsoft.org/html/libxml-lib.html">Справочнику по libxml2</ulink>.</para>
  </section>

  <section id="libxslt">
    <title>Преобразование XML с помощью XSLT</title>

    <para>XSLT — это язык,основанный на XML, который предназначен для преобразования XML в другие форматы. XSLT основан на шаблонах, позволяющих соотносить определённые типы элементов XML и создавать соответствующие выходные элементы. Основанный на XML и XPath, XSLT позволяет разработчикам преобразовывать одно представление на основе XML в другое, более подходящее для данного приложения.</para>

    <para>Библиотека libxslt, поставляемая с GNOME, полностью реализует XSLT и создана на базе XML и поддержки XPath в библиотеке libxml2, что обеспечивает быстродействие и полную совместимость со стандартами.</para>

    <para>Для трансформации документов необходимо использовать библиотеку libxslt, что может существенно упростить разработку, хотя выбор XSLT для обработки XML оправдан не всегда. Библиотека libxslt позволяет добавлять расширенные элементы и функции, что может обеспечить всё необходимое для использования в конкретном приложении.</para>

    <para>За дополнительной информацией о libxslt обратитесь к <ulink url="http://xmlsoft.org/XSLT/html/index.html">Библиотеке XSLT для языка C для Gnome</ulink>.</para>
  </section>
</section>

</chapter>
