<?xml version="1.0" encoding="utf-8"?>
<!-- -*- indent-tabs-mode: nil -*- -->
<chapter id="ipc-network">
  <title>CEP y redes</title>

<section id="clipboard">
  <title>Portapapeles y arrastrar y soltar</title>

  <para>Ya que los usuarios trabajan con más y más tipos de datos en diferentes aplicaciones, tienen una necesidad de compartir objetos y datos entre sus aplicaciones. GNOME soporta dos métodos relacionados para transferencia de datos entre aplicaciones: usar operaciones de arrastrar y soltar, y copiar y pegar desde un portapapeles global del sistema. Ambas, el portapapeles y arrastrar y soltar, trabajan sobre múltiples aplicaciones, incluyendo aquellas no desarrolladas con GNOME.</para>

  <para>El portapapeles se usa cuando un usuario copia datos explícitamente en una aplicación. La aplicación entonces reclama la propiedad del portapapeles. Cuando el usuario pega los datos en otra aplicación, la aplicación pide al portapapeles los datos de la primera aplicación. Las operaciones con el portapapeles están completamente soportadas en GTK+.</para>

  <para>Las operaciones de arrastrar y soltar son similares pero requieren que el se siga al puntero y se actualice según el usuario se mueve a lo largo de objetivos potenciales para «soltar». Cuando a una aplicación se la notifica que el puntero se está moviendo sobre ella durante una operación activa de arrastrar, debe actualizar el cursor para indicar so acepta o no la operación de soltar. GTK+ proporciona soporte para arrastrar y soltar con una API sofisticada que hace fácil gestionar los objetivos potenciales para «soltar» en sus aplicaciones.</para>

  <para>Tanto las operaciones con el portapapeles como las de arrastrar y soltar contienen negociación. Cuando una aplicación tiene datos que ofrecer, advierte qué formatos están disponibles para los datos. Las operaciones de recepción pueden requerir los formatos más apropiados. Por ejemplo, si un usuario copia texto de un navegador web, un procesador de textos puede mantener el formato pidiendo los datos en HTML, mientras que un editor de texto plano puede recibir el texto sin ningún formato.</para>

  <para>Debería proporcionar funcionalidades para las operaciones con el portapapeles y arrastrar y soltar para cualquier dato sobre el que su aplicación pueda operar. Las operaciones con el portapapeles y arrastrar y soltar son útiles para más que simple texto: archivos, gráficos y archivos de sonido son ejemplos de datos que se pueden transferir entre aplicaciones. Cuando use GTK+, automáticamente obtendrá soporte para operaciones con el portapapeles y arrastrar y soltar para áreas de texto, botones de color, selectores de archivos y otros interfaces de control integrados. Debería usar las API en GTk+ para proporcionar soporte para cualquier otro tipo de dato en su aplicación.</para>

  <para>Para obtener más información, consulte <ulink url="http://www.newplanetsoftware.com/xdnd/">protocolo de arrastrar y soltar para el sistema X Window</ulink>, <ulink url="http://standards.freedesktop.org/clipboards-spec/clipboards-latest.txt">explicación sobre el portapapeles de las X</ulink>, y <ulink url="http://freedesktop.org/wiki/ClipboardManager">La especificación del gestor del portapapeles</ulink>.</para>
</section>

<section id="dbus">
  <title>Mensajes por D-BUS</title>

  <para>D-Bus es un bus de mensajes multiescritorio para enviar eventos entre diversas aplicaciones, el escritorio y componentes de bajo nivel del sistema. D-Bus proporciona una API simple para enviar mensajes a servicios en particular y para enviar mensajes de difusión a todos los servicios interesados. D-Bus permite que diferentes tipos de aplicaciones se comuniquen e integren entre ellas y el escritorio, proporcionando una mejor interacción y una experiencia enriquecedora para el usuario.</para>

  <para>D-Bus proporciona un bus de sesión y un bus de sistema. El bus de sesión lo usan las aplicaciones en una sesión de un solo usuario, permitiéndolas compartir datos y notificaciones de eventos e integrándolos con el escritorio del usuario. Por ejemplo, los reproductores de películas pueden enviar un mensaje por D-Bus para evitar que se active el salvapantallas cuando el usuario está viendo una película.</para>

  <para>El bus del sistema es un bus de un solo mensaje que se ejecuta independientemente de cualquier sesión de usuario. Se puede comunicar con las aplicaciones de cualquier sesión, permitiendo a esas aplicaciones interactuar con los componentes del sistema sin tener que tratar con detalles de bajo nivel del sistema. El bus del sistema se usa para proporcionar una funcionalidad importante que los usuarios esperan que funcione en sus sistemas. Por ejemplo, el bus del sistema se usa para monitorizar cuando los interfaces de red se conectan o desconectan, cuando se conectan unidades externas y cuando la batería del sistema está baja.</para>

  <para>D-Bus se desarrolla conjuntamente en <ulink url="http://www.freedesktop.org/">freedesktop.org</ulink>, de tal forma que puede usarlo con diferentes entornos de escritorio y aplicaciones. Debido a que D-Bus es un proyecto multiescritorio, puede usarlo para crear software portable y versátil que se integre de un modo transparente con el escritorio del usuario, independientemente de qué escritorio sea.</para>

  <para>Para obtener más información acerca de D-Bus, consulte <ulink url="http://dbus.freedesktop.org/doc/dbus-tutorial.html">El tutorial de D-Bus</ulink> y <ulink url="http://dbus.freedesktop.org/doc/dbus-specification.html">La especificación de D-Bus</ulink>.</para>
</section>

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

  <note><para>Nótese que Bonobo, libIDL y ORBit están obsoletas, en su lugar se usan D-Bus y otras tecnologías. Vea más información encima.</para></note>

  <para>Bonobo es un «framework» para crear componentes reusables para su uso en aplicaciones. Construido sobre el estándar de la industria Common Object Request Broker Architecture (CORBA), Bonobo proporciona todos los interfaces comunes requeridos para crear y usar componentes con un comportamiento apropiado para las aplicaciones de GNOME.</para>

  <para>Los componentes Bonobo se puede usar en una variedad de situaciones, y pueden ayudar a crear software flexible y extensible. Por ejemplo, un componente para mostrar contenido multimedia podría empotrarse en un procesador de textos, añadiendo soporte multimedia efectivo al procesador de textos sin que el procesador de textos trabaje directamente con él. Los componentes Bonobo también se usan para empotrar las miniaplicaciones en el panel de GNOME. Usar Bonobo permite a las miniaplicaciones comunicarse de una forma efectiva con el panel, proporcionando a los usuarios un interfaz consistente.</para>

  <para>Los componentes Bonobo no se limitan a controles gráficos. Evolution, la suite de correo y groupware de GNOME usaba Bonobo para proporcionar acceso a los usuarios a la libreta de direcciones y al calendario. Esto permite a los usuarios mantener toda su información en un sitio mientras que todas las aplicaciones pueden acceder a ella.</para>

  <para>Bonobo está construido sobre CORBA, permitiendo que los componentes se ejecuten en procesos separados. Los componentes se pueden escribir en diferentes lenguajes y ejecutarse sobre diferentes tiempos de ejecución; sólo necesitan implementar un interfaz especificado con IDL (Interface Definition Language). El diseño flexible de CORBA incluso permite que los componentes se ejecuten en distintos equipos de una red.</para>

  <para>GNOME proporciona con ORBit su propia implementación ligera y rápida de CORBA. Las herramientas y bibliotecas proporcionadas con GNOME permiten que los componentes estén escritos en C, un lenguaje habitualmente excluido por otras implementaciones de CORBA. ORBit es una implementación de CORBA increíblemente rápida.</para>

  <para>Bonobo ayuda a rellenar los huecos en CORBA proporcionando los interfaces adicionales y especificaciones necesarias para soportar componentes consistentes. Aunque rara vez necesitará usar CORBA sin Bonobo, se puede usar directamente. Por ejemplo, la la infraestructura de accesibilidad de GNOME usa CORBA para permitir a las tecnologías de asistencia inspeccionar e interactuar con las aplicaciones en ejecución.</para>

  <para>Puede querer usar Bonobo para proporcionar componentes gráficos complejos que puedan ser empotrados en aplicaciones. No obstante, para necesidades CEP, las tecnologías de GNOME se están moviendo a D-Bus, ya que integrar D-Bus en las aplicaciones es considerablemente más fácil.</para>

  <para>Para obtener más información acerca de Bonobo, consulte <ulink url="http://library.gnome.org/devel/libbonobo/stable/">El manual de referencia de libbonobo</ulink> y <ulink url="http://library.gnome.org/devel/libbonoboui/stable/">El manual de referencia de libbonoboUI</ulink>. Para obtener más información acerca de ORBit, la implementación de CORBA de GNOME, consulte <ulink url="http://library.gnome.org/devel/ORBit2/stable/">El manual de referencia de ORBit2</ulink>.</para>
</section>

<section id="dns-sd">
  <title>Servicio de descubrimiento</title>

  <para>El servicio de descubrimiento de DNS o Zeroconf es una tecnología para localizar automáticamente los servicios disponibles en una red. Zeroconf permite a los usuarios acceder a los recursos de red sin tener que proporcionar una dirección explícita o configurar sus aplicaciones manualmente.</para>

  <para>El servicio de descubrimiento de DNS ya se usa en varios lugares a traes de GNOME y se añadirá aún más soporte en el futuro. Por ejemplo, <application>Nautilus</application>, el gestor de archivos de GNOME, usa el servicio de descubrimiento de DNS para localizar a los servidores de la red local,. <application>Ekiga</application>, la aplicación de telefonía y videoconferencia de GNOME, puede localizar y publicar la presencia del usuario así como localizar a otros usuarios en la red local usando el servicio de descubrimiento de DNS.</para>

  <para>La biblioteca Avahi proporciona soporte completo para el servicio de descubrimiento de DNS. Para obtener más información sobre Avahi, consulte <ulink url="http://avahi.org/">la pagina web de Avahi</ulink>.</para>
</section>

<section id="xml-web-services">
  <title>XML y servicios web</title>

  <para>En nuestro mundo altamente interconectado, más y más aplicaciones necesitan proporcionar soporte para diversos servicios web. A veces los servicios web simplemente proporcionan una funcionalidad añadida, mientras que otras veces son el núcleo de la aplicación. Incluso las aplicaciones que han proporcionado una experiencia individual al usuario durante años están incorporando nuevos usos con servicios web.</para>

  <para>La plataforma GNOME proporciona soporte para usar servicios web desde su aplicación, así como bibliotecas comprensivas para consumir, gestionar y transformar XML, el lenguaje de la web.</para>

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

    <para>Con la biblioteca libsoup, GNOME proporciona soporte para SOAP, un protocolo ampliamente usado para analizar mensajes XML a través de HTTP. SOAP permite a los desarrolladores exponer un interfaz a través de la web que pueden usar aplicaciones para obtener información, enviar datos, realizar transacciones o usar cualquier otro número de los servicios proporcionados.</para>

    <para>SOAP se puede usar para buscar y obtener información, para interactuar con una tienda en línea, para gestionar las cuentas de los usuarios en otros sistemas o para muchos otros propósitos. Los servicios web cada vez se usan más y más para proporcionar funcionalidades esenciales a los usuarios y las aplicaciones que usan SOAP pueden proporcionar una experiencia más integrada y llena de características al usuario.</para>

    <para>La biblioteca libsoup contiene una implementación de HTTP y un juego API para construir y consumir mensajes SOAP. También permite autenticación segura, de tal forma que podrá usar los servicios web para acceder a cuentas privadas a través de una conexión segura. Al usar libsoup se hace fácil usar los servicios web sin necesidad de analizar e interpretar los mensajes enviados a través de SOAP.</para>

    <para>Para obtener más información acerca de libsoup, consulte <ulink url="http://library.gnome.org/devel/libsoup/stable/">El manual de referencia de libsoup</ulink>.</para>
  </section>

  <section id="libxml2">
    <title>Procesamiento de XML</title>

    <para>Desde su introducción formal en 1998, XML (eXtensible Markup Language) cada vez se ha usado en más aplicaciones. Se usa para una gran variedad de propósitos, desde formatos de documentación como XHTML y DocBook a protocolos de internet como SOAP y Jabber. XML proporciona una sintaxis de base limpia y simple, permitiendo a las aplicaciones centrarse en sus necesidades particulares.</para>

    <para>GNOME posee la biblioteca libxml2 y la usa extensivamente en todo el escritorio. La biblioteca libxml2 es una biblioteca de procesado XML rápida y que cumple con los estándares, proporcionando todo lo que puede necesitar para usar XML en su aplicación.</para>

    <para>La biblioteca libxml2 proporciona un número variado de diferentes API para trabajar con XML de tal forma que puede usar la que mejor se ajuste a las necesidades de desarrollo de su aplicación. Además del árbol API nativo, libxml2 también proporciona el API SAX2 basado en retro llamadas , lector de contenido XML transmisible y escritor de interfaces además de soporte completo para XPath.</para>

    <para>Además del soporte DTD, libxml2 también proporciona soporte completo para validar documentos usando RELAX NG, que permite un modelo de validación más flexible mientras que mantiene una facilidad de uso. También existe soporte parcial para XML Schema, el nuevo lenguaje de esquemas producido por el W3C.</para>

    <para>Debería usar libxml2 siempre que necesite trabajar directamente con XML en su aplicación. Usar libxml2 asegura que tendrá análisis, procesado y salida XML que cumple completamente con los estándares. Para los desarrolladores significa que no deben preocuparse sobre incompatibilidades entre aplicaciones.</para>

    <para>Para obtener más información acerca de libxml2, consulte <ulink url="http://xmlsoft.org/tutorial/index.html">El tutorial sobre Libxml</ulink> y <ulink url="http://xmlsoft.org/html/libxml-lib.html">El manual de referencia para libxml2</ulink>.</para>
  </section>

  <section id="libxslt">
    <title>Transformar XML con XSLT</title>

    <para>XSLT es un lenguaje basado en XML para transformar XML en otros formatos. XSLT es un lenguaje basado en plantillas que le permite coincidir con particulares tipos de elementos XML y crear una salida acorde con ello. Basado en XML y XPath, XSLT permite a los desarrolladores crear plantillas limpias y modulares para convertir un «dialecto» XML en otro formato más adecuado para la aplicación.</para>

    <para>GNOME posee la biblioteca libxslt, una implementación completa de XSLT. La biblioteca libxslt está construida encima del soporte XML y XPath  en libxml2, permitiendo que sea rápida y cumpla con los estándares.</para>

    <para>Debería usar libxslt si necesita transformar documentos XML. Aunque XSLT no siempre es la solución correcta para procesar XML, a menudo puede simplificar el desarrollo. Ya que libxslt le permite añadir elementos y funciones de extensión, puede personalizarlas para que se ajusten a su aplicación.</para>

    <para>Para obtener más información acerca de libxslt, consulte <ulink url="http://xmlsoft.org/XSLT/html/index.html">La biblioteca C XSLT para GNOME</ulink>.</para>
  </section>
</section>

</chapter>
