<?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>Докладнішу інформацію наведено у описі протоколів <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>, та <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 provides a session and a system bus.  The session bus is
  used by applications in a single user session, allowing them to share
  data and event notifications and to integrate into the user's desktop.
  For example, movie players can send a D-Bus message to prevent the
  screensaver from activating when the user is watching a movie.</para>

  <para>The system bus is a single message bus which runs independently of
  any user sessions.  It can communicate with applications in any session,
  enabling those applications to interact with system components without
  dealing with low-level system details.  The system bus is used to provide
  important functionality that users expect to work on their systems.  For
  example, the system bus is used to monitor when network interfaces go up
  or down, when external drives get plugged in, and when laptop batteries
  are low.</para>

  <para>D-Bus is developed jointly on <ulink url="http://www.freedesktop.org/">freedesktop.org</ulink>, so you can
  use it with different desktop environments and applications.  Because
  D-Bus is a cross-desktop project, you use it to create portable and
  versatile software that seamlessly integrates with the user's desktop,
  regardless of which desktop it is.</para>

  <para>For more information on D-Bus, see <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>

  <note><para>Зауважте, що Bonobo, libIDL та ORBit застаріли; натомість використовуйте D-Bus та інші технології. Дивіться вище.</para></note>

  <para>Bonobo is a framework for creating reusable components for use
  in applications.  Built on top of the industry-standard Common Object
  Request Broker Architecture (CORBA), Bonobo provides all the common
  interfaces needed to create and use well-behaved components in GNOME
  applications.</para>

  <para>Bonobo components can be used in a variety of situations, and can
  help create flexible and extensible software.  For example, a component
  to display multimedia content could be embedded inside a word processor,
  effectively adding multimedia support to the word processor without the
  word processor working directly with it.  Bonobo components are also used
  to embed the applets in the GNOME panel.  Using Bonobo enables the applets
  to communicate effectively with the panel, affording users a consistent
  interface.</para>

  <para>Bonobo components are not limited to graphical controls.  Bonobo was
  used by Evolution, GNOME's email and groupware suite, to provide access
  to users' addressbook and calendar.  This allows users to keep all their
  information in one place, where all applications can access it.</para>

  <para>Bonobo is built off of CORBA, allowing components to run in seperate
  processes.  Components can be written in different languages and run on top
  of different runtimes; they need only adhere to an interface specified with
  the Interface Definition Language (IDL).  CORBA's flexible design even allows
  components to run on seperate machines over a network.</para>

  <para>GNOME provides its own fast and lightweight CORBA implementation with
  ORBit.  The tools and libraries supplied with GNOME even allow components
  to be written effectively in C, a language often excluded by other CORBA
  implementations.  ORBit is an incredibly fast CORBA implementation.</para>

  <para>Bonobo helps fill the gaps in CORBA, providing the additional
  interfaces and specifications needed to support consistent components.
  Although you will rarely need to use CORBA without Bonobo, it can be
  used directly.  For instance, GNOME's accessibility infastructure uses
  CORBA to allow assistive tools to inspect and interact with running
  applications.</para>

  <para>You may wish to use Bonobo to provide complex graphical components
  that can be embedded into applications.  For most IPC needs, however,
  GNOME is moving towards D-Bus, as integrating D-Bus into applications
  is considerably easier.</para>

  <para>For more information on Bonobo, see the <ulink url="http://library.gnome.org/devel/libbonobo/stable/">Libbonobo
  Reference Manual</ulink> and the <ulink url="http://library.gnome.org/devel/libbonoboui/stable/">LibbonoboUI
  Reference Manual</ulink>.  For information on ORBit, GNOME's
  CORBA implementation, see the <ulink url="http://library.gnome.org/devel/ORBit2/stable/">ORBit2
  Reference Manual</ulink>.</para>
</section>

<section id="dns-sd">
  <title>Виявлення служб</title>

  <para>DNS Service Discovery, or Zeroconf, is a technology for automatically
  locating available services on a network.  Zeroconf allows users to access
  network resources without having to provide explicit addresses or configure
  their applications manually.</para>

  <para>DNS Service Discovery is already used in numerous places throughout
  GNOME, and further support will be added in the future.  For example,
  <application>Nautilus</application>, the GNOME file manager, uses DNS
  Service Discovery to locate various file servers on the local network.
  <application>Ekiga</application>, the videoconferencing and telephony
  application in GNOME, can locate and publish the user's presence and
  locate other users on a local network using DNS Service Discovery.</para>

  <para>Full DNS Service Discovery support is provided by the Avahi library.
  For more information on Avahi, visit <ulink url="http://avahi.org/">the
  Avahi web site</ulink>.</para>
</section>

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

  <para>In our increasingly inter-connected world, more and more applications
  need to provide support for various web services.  Sometimes web services
  simply provide added functionality, while other times they are the core
  purpose of the application.  Even applications that have been providing
  a standalone user experience for years have found innovative new uses for
  web services.</para>

  <para>The GNOME Platform provides support for using web services from
  within your application, as well as comprehensive libraries for consuming,
  managing, and transforming XML, the language of the web.</para>

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

    <para>With the libsoup library, GNOME provides support for the SOAP,
    a widely-used protocol for passing XML messages over HTTP.  SOAP allows
    developers to expose an interface over the web, which can then be used
    by applications to retrieve information, send data, make transactions,
    or use any number of other services provided.</para>

    <para>SOAP can be used to search and retrieve information, to interact
    with an online store, to manage users' accounts on other systems, or for
    many other purposes.  Web services are being used more and more to provide
    essential functionality for users, and applications using SOAP can provide
    a more integrated and featureful user experience.</para>

    <para>The libsoup library contains an HTTP implementation and a set of
    API for constructing and consuming SOAP messages.  It also allows for
    secure authentication, so you can use web services to access private
    accounts over a secure connection. Using libsoup makes it easy to use
    web services without manually parsing and interpreting the messages
    sent through SOAP.</para>

    <para>For more information on libsoup, see the <ulink url="http://library.gnome.org/devel/libsoup/stable/">libsoup
    Reference Manual</ulink>.</para>
  </section>

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

    <para>Since its formal introduction in 1998, XML (eXtensible Markup
    Langauge) has been used in increasingly more applications.  It is used
    for a wide variety of purposes, from document formats like XHMTL and
    DocBook to internet protocols like SOAP and Jabber.  XML provides a
    clean and simple base syntax, allowing applications to focus on their
    particular needs.</para>

    <para>GNOME ships with the libxml2 library, and uses it extensively
    throughout the desktop.  The libxml2 library is a fast and fully
    standards-compliant XML processing library, providing everything you
    need to use XML in your application.</para>

    <para>The libxml2 library provides a number of different APIs for
    working with XML, so you can use whatever best suits your application
    development needs.  In addition to a native tree API, libxml2 also
    provides the callback-based SAX2 API, streaming XML reader and writer
    interfaces, and complete support for XPath.</para>

    <para>In addition to DTD support, libxml2 also provides full support
    for validing documents using RELAX NG, which allows a more flexible
    validation model while remaining simple to use.  There is also partial
    support for XML Schema, the new schema language produced by W3C.</para>

    <para>You should use libxml2 whenever you need to work directly with
    XML in your application.  Using libxml2 ensures that you have fully
    standards-compliant parsing, processing, and XML output.  This means
    developers can stop worrying about incompatibilities between
    applications.</para>

    <para>For more information on libxml2, see <ulink url="http://xmlsoft.org/tutorial/index.html">The Libxml Tutorial</ulink>
    and <ulink url="http://xmlsoft.org/html/libxml-lib.html">The Reference
    Manual for libxml2</ulink>.</para>
  </section>

  <section id="libxslt">
    <title>Перетворення XML за допомогою XSLT</title>

    <para>XSLT is an XML-based language for transforming XML into other
    formats.  XSLT is a template-based language, allowing you to match
    particular types of XML elements and create output accordingly.
    Based on XML and XPath, XSLT enables developers to create clean and
    modularized templates to convert an XML dialect into another format
    more suitable for the application.</para>

    <para>GNOME ships with the libxslt library, a complete implementation of
    XSLT.  The libxslt library is built on top of the XML and XPath support
    in libxml2, allowing it to be fast and fully standards-compliant.</para>

    <para>You should use libxslt if you need to transform XML documents.
    Although XSLT is not always the right solution for XML processing, it
    can often simplify development.  Since libxslt allows you to add extension
    elements and extension functions, you can customize it to fit your
    application.</para>

    <para>For more information on libxslt, see <ulink url="http://xmlsoft.org/XSLT/html/index.html">The XSLT C library for
    Gnome</ulink>.</para>
  </section>
</section>

</chapter>
