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

<section id="clipboard">
  <title>Zwischenablagen und Ziehen-und-Ablegen</title>

  <para>Wenn Benutzer mit immer mehr Datentypen in verschiedenen Anwendungen arbeiten, entwickelt sich häufig Bedarf an Möglichkeiten zum Austausch von Daten und Objekten zwischen ihren Anwendungen. GNOME unterstützt zwei Methoden für die Datenübertragung zwischen Anwendungen: Zum einen das Ziehen-und-Ablegen, zum anderen das Kopieren in eine un d Einfügen aus einer systemweiten Zwischenablage. Sowohl die Zwischenablage als auch Ziehen-und-Ablegen funktionieren über Anwendungsgrenzen hinweg, einschließlich mit Anwendungen, die nicht mit GNOME entwickelt wurden.</para>

  <para>Die Zwischenablage wird verwendet, wenn der Benutzer explizit Daten in einer Anwendung kopiert. Die Anwendung nimmt die Zwischenablage dann »in Beschlag«. Wenn der Benutzer Daten aus der Zwischenablage in eine andere Anwendung einfügt, erfragt diese die Daten aus der Zwischenablage, die von der ersten Anwendung stammen. Die Operationen der Zwischenablage werden durch GTK+ vollständig untertsützt.</para>

  <para>Ziehen-und-Ablegen funktioniert ähnlich. Allerdings ist es nötig, dass der Mauszeiger seine Form ändert, sobald er über mögliche Ablageziele bewegt wird. Wenn eine Anwendung erkennt, dass während einer Aktion zum Ablegen sich der Mauszeiger über ihr befindet, muss sie die Form des Mauszeigers entsprechend aktualisieren, um anzugeben, ob das Ablegen an der jeweiligen Stelle möglich ist oder nicht. GTK+ stellt Unterstützung für Ziehen-und-Ablegen über eine hochentwickelte Schnittstelle bereit und erleichtert die Verwaltung von Ablagezielen in Ihrer Anwendung dadurch wesentlich.</para>

  <para>Sowohl die Zwischenablage als auch das Ziehen-und-Ablegen erfordern Verhandlungen über die Inhalte. Wenn eine Anwendung Daten anbietet, zeigt sie an, welche Formate für diese Daten verfügbar sind. Die empfangenden Anwendungen können die verwertbaren Formate abfragen. Wenn beispielsweise ein Benutzer Text aus einem Webbrowser kopiert, dann bittet eine Textverarbeitung um den Empfang der Daten in HTML, während ein gewöhnlicher Texteditor dir Daten als reinen Text ohne Formatierung empfangen kann.</para>

  <para>Sie sollten die Funktionalität zum Ziehen-und-Ablegen für jegliche Daten anbieten, mit denen Ihre Anwendung umgehen kann. Die Zwischenablage und das Ziehen-und-Ablegen sind für weitaus mehr als nur für reinen Text zu gebrauchen. Auch Dateien, Grafiken und Klänge sind Beispiele für mögliche zwischen Anwendungen übertragbare Daten. Wenn Sie GTK+ verwenden, erhalten Sie automatisch Unterstützung für das Ziehen-und-Ablegen in Textdarstellungen, Farbknöpfen, Dateiwählern und anderen in der Schnittstelle eingebauten Bedienelementen. Sie sollten die Schnittstellen in GTK+ verwenden, um Unterstützung für alle Daten in Ihrer Anwendung anzubieten.</para>

  <para>Weitere Informationen finden Sie in <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>, und <ulink url="http://freedesktop.org/wiki/ClipboardManager">The Clipboard Manager Specification</ulink>.</para>
</section>

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

  <para>D-BUS ist ein plattformübergreifendes Nachrichtensystem zum Senden von Ereignismeldungen zwischen verschiedenen Anwendungen sowie den eingebauten Komponenten des Systems. D-BUS stellt eine einfache Schnittstelle zum Senden von Nachrichten zu bestimmten Diensten und für die Verbreitung von Meldungen an alle interessierten Dienste dar. D-BUS ermöglicht die Kommunikation zwischen verschiedenen Anwendungstypen und deren gemeinsame Integration in den Desktop, wobei eine bessere Interaktion durch den Benutzer erreicht wird.</para>

  <para>D-Bus stellt einen Sitzungs- und einen Systembus bereit. Der Sitzungsbus wird von Anwendungen in einer einzelnen Benutzersitzung verwendet, was den Anwendungen die Freigabe von Daten und Benachrichtigungen über Ereignisse sowie die Integration in die Arbeitsumgebung des Benutzers ermöglicht. Beispielsweise können Video-Wiedergabeprogramme eine D-Bus-Meldung senden, um die Aktivierung des Bildschirmschoners zu verhindern, wenn der Benutzer ein Video abspielt.</para>

  <para>Der Systembus ist ein einzelner Nachrichtenbus, der unabhängig von einer Benutzersitzung läuft. Er kann mit Anwendungen in einer beliebigen Sitzung kommunizieren, wobei diesen Anwendungen die Interaktion mit Systemkomponenten ermöglicht wird, ohne auf Low-Level-Details des Systems zurückgreifen zu müssen. Der Systembus wird verwendet, um wichtige Funktionalitäten bereitzustellen, die der Benutzer erwartet. Beispielsweise überwacht der Systembus Vorgänge wie das Aktivieren oder Deaktivieren von Netzwerkschnittstellen, das Anschließen externer Laufwerke oder die Kapazität der Laptop-Akkus.</para>

  <para>D-Bus wird plattformübergreifend auf <ulink url="http://www.freedesktop.org/">freedesktop.org</ulink> entwickelt, so dass Sie es in verschiedenen Arbeitsumgebungen und Anwendungen nutzen können. Weil D-Bus ein plattformübergreifendes Projekt ist, eignet es sich zum Entwurf portierbarer und vielseitiger Software, die sich nahtlos in die Arbeitsumgebung einfügt, unabhängig von deren Ursprung.</para>

  <para>Weitere Informationen über D-Bus finden Sie im <ulink url="http://dbus.freedesktop.org/doc/dbus-tutorial.html">D-BUS-Tutorial</ulink> und der <ulink url="http://dbus.freedesktop.org/doc/dbus-specification.html">D-BUS-Spezifikation</ulink>.</para>
</section>

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

  <note><para>Beachten Sie, dass Bonobo, libIDL und ORBit als veraltet markiert wurden und durch D-Bus und andere Technologien abgelöst wurden. Siehe oben.</para></note>

  <para>Bonobo ist ein Framework zur Erzeugung wiederverwendbarer Komponenten für Anwendungen. Aufsetzend auf dem Industriestandard »Common Object Request Broker Architecture« (CORBA), stellt Bonobo alle gemeinsamen Schnittstellen zur Erzeugung und einfachen Verarbeitung von Komponenten in GNOME-Anwendungen zur Verfügung.</para>

  <para>Bonobo-Komponenten können in einer Vielzahl von Situationen verwendet werden und helfen Ihnen bei der Erstellung flexibler und erweiterbarer Software. Wenn beispielsweise eine Komponente zur Darstellung von Multimedia-Inhalten in einer Textverarbeitung entwickelt e'wird, so kann die Textverarbeitung nun auch mit solchen Inhalten umgehen, ohne dass die Textverarbeitung direkt damit arbeiten muss. Bonobo-Komponenten werden auch zur Einbettung von Applets in das GNOME-Panel verwendet. Die Verwendung von Bonobo erlaubt die effektive Kommunikation der Applets mit dem Panel, was einer konsistenten Benutzeroberfläche zugute kommt.</para>

  <para>Bonobo-Komponenten sind nicht auf grafische Bedienelemente beschränkt. Bonobo wurde von Evolution, der E-Mail- und Groupware-Suite von GNOME verwendet, um den Benutzerzugriff auf Adressbuch und Kalender zu ermöglichen. Dadurch kann der Benutzer alle seine Informationen an einer zentralen Stelle speichern, worauf alle Anwendungen zugreifen können.</para>

  <para>Bonobo wird außerhalb von CORBA erstellt, was die Ausführung von Komponenten als separate Prozesse erlaubt. Komponenten können in verschiedenen Sprachen geschrieben werden und auf verschiedene Laufzeitumgebungen aufsetzen. Es ist lediglich erforderlich, sie mit einer Schnittstelle gemäß der »Interface Definition Language« (IDL) zu verknüpfen. Das flexible Design von CORBA ermöglicht die Ausführung von Komponenten auf separaten Rechnern in einem Netzwerk.</para>

  <para>GNOME stellt seine eigene und ressourcenschonende CORBA-Implementation mit ORBit bereit. Die in GNOME enthaltenen Werkzeuge und Bibliotheken ermöglichen das effektive Schreiben von Komponenten in C, einer Sprache, die für andere CORBA-Implementationen oft nicht verfügbar ist. ORBit ist eine unglaublich schnelle CORBA-Implementation.</para>

  <para>Bonobo hilft, die Lücken in CORBA zu füllen, indem zusätzliche Schnittstellen und Spezifikationen zur Unterstützung konsistenter Komponenten bereitgestellt werden. Sie werden CORBA kaum ohne Bonobo nutzen können, es ist direkt einsetzbar. Beispielsweise nutzt GNOMEs Barrierefreiheits-Architektur CORBA, um Hilfstechnologien die Überwachung von und Interaktion mit Anwendungen zu ermöglichen.</para>

  <para>Sie wollen Bonobo vielleicht verwenden, um komplexe grafische Komponenten bereitzustellen, die in Anwendungen eingebettet werden können. Für die meisten IPC-Erfordernisse jedoch schwenkt GNOME in Richtung D-Bus um, weil die Integration von D-Bus in Anwendungen deutlich einfacher sein dürfte.</para>

  <para>Weitere Informationen über Bonobo finden Sie im <ulink url="http://library.gnome.org/devel/libbonobo/stable/">Libbonobo-Referenzhandbuch</ulink> und <ulink url="http://library.gnome.org/devel/libbonoboui/stable/">LibbonoboUI-Referenzhandbuch</ulink>. Informationen über ORBit, die CORBA-Implementation von GNOME, sind im <ulink url="http://library.gnome.org/devel/ORBit2/stable/">ORBit2-Referenzhandbuch</ulink> verfügbar.</para>
</section>

<section id="dns-sd">
  <title>Dienste</title>

  <para>»DNS Service Discovery«, oder Zeroconf, ist eine Technologie zum automatischen Lokalisieren von Diensten in einem Netzwerk. Zeroconf erlaubt den Benutzern den Zugriff auf Netzwerkressourcen, ohne explizit Adressen angeben oder das Netzwerk manuell konfigurieren zu müssen.</para>

  <para>»DNS Service Discovery« wird bereits an einer Anzahl von Stellen in GNOME verwendet. Weitere Unterstützung wird in Zukunft hinzugefügt. Beispielsweise verwendet der GNOME-Dateimanager <application>Nautilus</application> DNS Service Discovery zum Lokalisieren von Dateiservern im lokalen Netzwerk. GNOMEs Videokonferenz- und Telefonieanwendung <application>Ekiga</application> kann mit DNS Service Discovery die Anwesenheit des Benutzers im Netzwerk ermitteln und veröffentlichen.</para>

  <para>Die volle Unterstützung für DNS Service Discovery wird durch die Avahi-Bibliothek bereitgestellt. Weitere Informationen über Avahi finden Sie auf <ulink url="http://avahi.org/">dessen Webseite</ulink>.</para>
</section>

<section id="xml-web-services">
  <title>XML und Web-Dienste</title>

  <para>In unserer sich immer mehr vernetzenden Welt steigt die Anzahl der Anwendungen, die Unterstützung für Webdienste benötigen. Manchmal fügen Webdienste nur einfache Funktionalitäten hinzu, während sie bei anderen Anwendungen die Kernfunktion darstellen. Anwendungen, die eine für sich stehende Bedienbarkeit bereits über Jahre hinweg anbieten, finden innovative Betätigungsfelder in Webdiensten.</para>

  <para>Die GNOME-Plattform bietet Unterstützung sowohl für die Nutzung von Webdiensten aus Ihrer Anwendung heraus, als auch umfassende Bibliotheken für die Verarbeitung, Verwaltung und Umwandlung von XML, der Sprache des Webs. </para>

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

    <para>Mit der libsoup-Bibliothek stellt GNOME Unterstützung für SOAP bereit, ein oft verwendetes Protokoll für die Übertragung von XML-Meldungen über HTTP. SOAP erlaubt Entwicklern die Bereitstellung einer Web-Schnittstelle, die dann von Anwendungen zum Abrufen von Informationen, Senden von Daten, für Transaktionen oder jeden anderen verfügbaren Dienst verwendet werden kann.</para>

    <para>SOAP kann zum Suchen und Abrufen von Informationen verewendet werden, zur Interaktion mit einem Online-Speicher, zur Verwaltung von Benutzerkonten auf anderen Systemen und für viele andere Zwecke. Webdienste stellen mehr und mehr grundlegende Funktionen für Benutzer bereit. Anwendungen, die SOAP verwenden, können die Integration und Bedienbarkeit für Benutzer verbessern.</para>

    <para>Die libsoup-Bibliothek enthält eine HTTP-Implementation sowie eine Reihe von Schnittstellen für die Konstruktion und Verarbeitung von SOAP-Meldungen. Sie erlaubt die sichere Legitimierung, so dass Webdienste auf private Benutzerkonten über eine sichere Verbindung zugreifen können. Die Verwendung von libsoup ermöglicht den leichten Zugriff auf Webdienste ohne manuelles Parsen und Interpretieren der durch SOUP gesendeten Meldungen.</para>

    <para>Weitere Informationen über libsoup finden Sie im <ulink url="http://library.gnome.org/devel/libsoup/stable/">libsoup-Referenzhandbuch</ulink>.</para>
  </section>

  <section id="libxml2">
    <title>XML-Verarbeitung</title>

    <para>Seit seiner formellen Einführung im Jahre 1998 wird XML (eXtensible Markup Language) in einer ständig steigenden Zahl von Anwendungen verwendet. XML hat einen sehr weit gefassten Anwendungsbereich, der von Dokumentformaten wie XHTML und DocBook bis hin zu Internetprotokollen wie SOAP und Jabber reicht. XML verfügt über eine saubere und einfache Syntax, wodurch sich Anwendungen auf Ihre speziellen Bedürfnisse zuschneiden lassen.</para>

    <para>GNOME wird mit der libxml2-Bibliothek geliefert und verwendet diese sehr intensiv im gesamten Desktop. Die libxml2-Bibliothek ist eine schnelle und vollständig standardkonforme Bibliothek zur XML-Verarbeitung und stellt alles Nötige zur Verfügung, was für die Verwendung von XML in Ihrer Anwendung erforderlich ist.</para>

    <para>Die libxml2-Bibliothek stellt eine Reihe von Schnittstellen für die Arbeit mit XML bereit. Sie können das verwenden, was für Ihre Anwendungsentwicklung am besten geeignet ist. Zusätzlich zum eigentlichen Schnittstellenbaum bietet libxml2 auch die Callback-basierte SAX2-Schnittstelle, Lese- und Schreibschnittstellen für XML-Datenströme und eine vollständige Unterstützung für XPath.</para>

    <para>Zusätzlich zur DTD-Unterstützung kann die Validierung von Dokumenten mittels RELAX NG erfolgen. Dies erlaubt Ihnen ein flexibleres Validierungsmodell und trotzdem eine einfache Verwendung. XML Schema wird teilweise unterstützt, die neue Schema-Sprache des W3C.</para>

    <para>Sie sollten libxml2 verwenden, wo immer Sie in Ihrer Anwendung direkt mit XML arbeiten. Die Verwendung von libxml2 stellt sicher, dass das Parsen, die Verarbeitung und die Ausgabe von XML standardkonform erfolgt. Damit dürfte der Ärger über Inkompatibilitäten zwischen Anwendungen ein Ende haben.</para>

    <para>Weitere Informationen über libxml2 finden Sie in <ulink url="http://xmlsoft.org/tutorial/index.html">The Libxml Tutorial</ulink> und <ulink url="http://xmlsoft.org/html/libxml-lib.html">The Reference Manual for libxml2</ulink>.</para>
  </section>

  <section id="libxslt">
    <title>Umwandlung von XML mittels XSLT</title>

    <para>XSLT ist eine XML-basierte Sprache zur Umwandlung von XML in andere Formate. XSLT ist vorlagenbasiert, was Ihnen die Auswahl bestimmter XML-Elementtypen und deren entsprechende Ausgabe ermöglicht. Basierend auf XML und XPath hilft XSLT Entwicklern bei der Erzeugung sauberer und modularisierter, zur jeweiligen Anwendung passender Vorlagen für die Umwandlung eines XML-Dialekts in ein anderes Format.</para>

    <para>GNOME wird mit der libxslt-bibliothek geliefert, einer vollständigen Umsetzung des XSLT-Standards. Die libxslt-Bibliothek setzt auf die Unterstützung für XML und XPath in libxml2 auf, wodurch sie schnell und standardkonform ist.</para>

    <para>Sie sollten libxslt verwenden, um XML-Dokumente umzuwandeln. Obwohl XSLT nicht immer der perfekte Weg für die Verarbeitung von XML ist, so kann damit doch oft die Entwicklung vereinfacht werden. Seit es libxslt ermöglicht, Funktionen und Elemente als Erweiterungen einzubinden, können Sie es besser an Ihre Anwendung anpassen.</para>

    <para>Weitere Informationen über libxslt finden Sie in <ulink url="http://xmlsoft.org/XSLT/html/index.html">The XSLT C library for Gnome</ulink>.</para>
  </section>
</section>

</chapter>
