-
Technischer Bereich
-
Die
beschriebenen Techniken beziehen sich allgemein auf Datenkommunikation
und insbesondere auf eine Architektur für ein erweiterbares Echtzeitkollaborationssystem.
-
Hintergrund
-
Verschiedene
Kommunikationsanwendungen und Protokolle ermöglichen eine Kommunikation zwischen
Softwareprogrammen und Benutzern. Z.B. ermöglichen Echtzeitkommunikationsanwendungen wie
Microsoft Windows Messenger und Voice over Internetprotokoll („VolP") eine Kommunikation
zwischen Benutzern, die sich gegenseitig Text, Video oder Sprachdaten
senden. Diese Anwendungen können
verschiedene Protokolle verwenden, wie z.B. Session Initiation Protocol
(„SIP"), Real-Time Transport
Protocol („RTP"), und Real-Time
Control Protocol („RTCP"), um Sitzungen einzurichten
und kommunikationsrelevante Information zu senden. SIP ist ein Steuerprotokoll
der Anwendungsschicht, das Geräte
verwenden können,
um sich gegenseitig zu finden und Sitzungen zwischen den Geräten einzurichten,
abzuändern
und zu beenden. RTP ist ein Protokoll zur Übertragung von Audio- und Videodaten über das
Internet und wird häufig
in Streaming Media Systemen und Videokonferenzsystemen in Verbindung mit
anderen Protokollen wie RTCP und H323 verwendet. RTCP ist ein Protokoll,
das es Clientanwendungen ermöglicht,
Daten, die unter Verwendung von RTP gesendet oder empfangen wurden,
zu überwachen
und zu steuern und wird mit RTP verwendet. SIP und RTP/RTCP sind
vorgeschlagene Internetstandards. Ihre Spezifikationen „RFC 3261" und „RFC 3550” sind im
Internet unter www.ietf.org unter /rfc/rfc3261.txt bzw. bei www.fags.org
unter /rfcs/rfc3550.html, erhältlich.
-
Anwendungen
können
zusätzlich
weitere Protokolle vewenden. Anwendungen können verbesserte Versionen
der oben angegebenen Protokolle oder völlig andere Protokolle, die
der Übertragung spezieller
Daten dienen, verwenden. Wenn z.B. ein neues oder verbessertes Protokoll
zur Übertragung von
Videokonfernzinformation verfügbar
wird, kann ein Anwendungsentwickler, der eine Anwendung erstellt
oder abwandelt, den Wunsch haben, das neue oder verbesserte Protokoll
zu verwenden, um z.B. die Leistungsfähigkeit zu verbessern oder
zusätzliche Funktionen
anzubieten. Um das neue oder verbesserte Protokoll zu verwenden,
kann es für
den Anwendungsentwickler erforderlich sein, Teile der Anwendung,
die mit dem Kommunikationsprotoll interagieren, abzuwandeln, da
eine Verbesserung des Protokolls oder ein neues Protokoll eine andere
Schnittstelle haben kann als ein bereits verwendetes Protokoll.
Wenn z.B. ein Protokoll eine NewSession-Schnittstelle zur Erzeugung
einer neuen Sitzung hat, kann eine verbesserte Version eine StartSession-Methode
haben, die eine Sitzung erzeugt und startet und zusätzliche
Paramater akzeptiert. Da StartSession zusätzliche Parameter akzeptiert,
unterscheidet sich seine Schnittstelle von NewSession und eine Anwendung,
die NewSession verwendet, muss unter Umständen angepasst werden, um StartSession
zu verwenden. Wenn ein Protokoll eine andere Schnittstelle hat,
müssen
die Anwendungsentwickler unter Umständen die andere Schnittstelle
erlernen und ihre Anwendungen anpassen, so dass sie diese Schnittstelle
verwenden, um das Protokoll zu verwenden.
-
Anwendungsentwickler
müssen
unter Umständen
mit den Details eines jeden der vielen Kommunikationsprotokolle,
die sie in den von ihnen entwickelten Anwendungen verwenden, vertraut
werden. Wenn z.B. ein Anwendungsentwickler SIP und RTP/RTCP verwendet,
muss der Anwendungsentwickler unter Umständen mit allen drei Protokollen vertraut
werden, um die Programmlogik zur Verfügung zu stellen, die sich auf
die Protokolle bezieht. Ein Anwendungsentwickler, der nicht mit
allen drei Protokollen vertraut ist, benötigt unter Umständen zusätzliches
Training und Zeit, um mit diesen Protokollen vertraut zu werden.
Wenn außerdem
die Anwendung angepasst werden muss, um mit zusätzlichen oder verbesserten
Protokollen zu funktionieren, muss der Anwendungsentwickler unter
Umständen Programmlogik überarbeiten
oder hinzufügen,
so dass die Anwendung mit diesen Protokollen funktionieren kann.
Dies könnte
zu zusätzlichen
Entwicklungskosten und Schwierigkeiten führen.
-
Außerdem stellen
verschiedene Protokolle eine Vielzahl von Kompliziertheiten dar.
Um z.B. eine Videokonferenzeinrichtung in einer Anwendung zur Verfügung zu
stellen, müsste
der Entwickler der Anwendung mit einer Anzahl von Protokollen vertraut werden
und eine Logik zur Verfügung
stellen, um diese Protokolle zu koordinieren, um so Videokonferenzfähigkeiten
hinzuzufügen.
Das Hinzufügen
anderer Kollaborationsfähigkeiten
zu einer Anwendung, wie z.B. Textnachrichten, Sprachnachrichten,
etc., stellen ähnliche
Kompliziertheiten dar.
-
Eine
Architektur für
ein erweiterbares Echtzeitkollaborationssystem, das die Hinzufügung von Kollaborationsfunktionen
zu einer Anwendung ohne große
Investitionen in die Ausbildung der Entwickler ermöglicht,
hätte daher
großen
Nutzen.
-
US 5,539,886 beschreibt
eine kollaborative Anwendungsunterstützungssystemsoftware, die die Entwicklung
von Anwendungsprogrammen zur Erstellung einer verteilten kollaborativen
Arbeitsumgebung erleichtert. Die funktionellen Hauptkomponenten
des Systems liegen zwischen zwei Schnittstellen, einer Anwendungsprogrammierungsschnittstelle
und einer Gerätetreiberschnittstelle.
Die API erlaubt es Anwendungen, gleichrangige Anwendungen (peer applications)
zu initiieren und Resouren auf einer Vielzahl von Hardware- und
Softwareplattformen, die sich auf dem Knoten eines Kommunikationsnetzwerks
befinden, gemeinsam zu nutzen. Es ermöglicht es ihnen, mehrfach injizierte
logische Datenkanäle
zwischen gemeinsam genutzten Anwendungen zu finden und das Datenstreaming
zwischen gemeinsam genutzten Anwendungen zu serialisieren, synchronisieren,
zusammenzuführen
oder zu kopieren. Es ermöglicht
es ihnen auch, eine Reihe von verbundenen Geräten zu unterstützen und
die Gerätedaten abzufangen
und umzuleiten. Auf der höchsten
Ebene besteht das durch die API angebotene Programmiermodell aus
einer Menge von kommunizierenden Knoten. Ein Knoten ist die adressierbare
Einheit, die einen Benutzer repräsentiert,
und umfasst eine Instanz der Unterstützungssystemsoftware und eine Menge
von Resourcen, wie z.B. Anwendungsprogramme, Daten, etc. Wenn das
Unterstützungssystem
in einem Knoten vollständig
aktiv ist, muss eine bestimmte Anwendung in diesem Knoten laufen:
der Call Manager. Das entscheidende Merkmal eines Call Managers
ist, dass er auf bestimmte Ereignisse, die durch das Unterstützungssystem
generiert werden, antwortet. So löst er z.B. jede Anforderung
auf, die nicht speziell an eine Instanz einer Anwendung gerichtet
ist, und kann wahlweise auch die Resourcenverwaltung für den Knoten übernehmen.
Anwendungen können
Daten und Resourcen mit anderen Anwendungen auf dem gleichen oder
einem anderen Knoten gemeinsam nutzen. Eine derartige Sammlung von
Anwendungen wird „sharing
set" genant. Eine
Anwendung startet eine Mitbenutzungsanforderung (sharing request)
durch die Angabe eines Anwendungssharingsets, einer Zielanwendung
und eines Zielknotes. Die Anforderung wird zunächst durch die Unterstützungssoftware
an den Call Manager am Absenderknoten weitergereicht, der sie typischerweise
an den Callmanager des Zielknotens weiterleitet. Gewöhnlicherweise
wird der zweite Call Manager die angeforderte Anwendung starten
und die Quellanwendung wird informiert.
-
Zusammenfassung
-
Es
ist das Ziel der vorliegenden Erfindung, ein kollaboratives Computersystem
in einer entfernten Arbeitsumgebung zu verbessern.
-
Dieses
Ziel wird durch die Erfindung, wie sie in den unabhängigen Ansprüchen definiert
wird, erreicht.
-
Ausführungsformen
werden in den abhängigen
Ansprüchen
angegeben.
-
Eine
Architektur für
ein erweiterbares Echtzeitkollaborationssystem wird zur Verfügung gestellt. Die
Architektur bietet eine vereinheitlichte Anwendungsprogrammschnittstelle
(„API") zum Schreiben von
Anwendungsprogrammen, die Kommunikationsprotokolle verwenden. Die
Architektur beinhaltet Aktivitätsobjekte,
Endpunktobjekte und mehrere Medienstapel. Diese Objekte können verschiedene Kommunikationsprotokolle
verwenden, wie z.B. das Session Initiation Protokoll oder das Real
Time Transport Protokoll, um Information enthaltende Nachrichten
zu senden und zu empfangen. Die Aktivitätsobjekte, Endpunktobjekte
und mehreren Medienstapel können
jeweils eine oder mehrere APIs haben, die ein Anwendungsentwickler
verwenden kann, um auf eine kollaborationsrelevante Funktionalität zuzugreifen
oder sie zur Verfügung
zu stellen. Diese Objekte bilden die API auf die durch andere Objekte
zur Verfügung
gestellte zugrundeliegende Implementierung ab. Die Verwendung der
Aktivitätsobjekte
ermöglicht
es einem Entwickler, weniger Anwendungslogik zur Verfügung zu
stellen, als es ansonsten nötig
wäre, um
komplexe Kollaborationsdienste zur Verfügung zu stellen.
-
Kurze Beschreibung der Zeichnungen
-
1 ist
ein Blockdiagramm, das Komponenten einer Architektur für ein erweiterbares
Echtzeitkollaborationssystem in einer Ausführungsform darstellt.
-
2 ist
ein Blockdiagramm, das Komponenten eines Endpunktobjekts des erweiterbaren Echtzeitkollaborationssystems
in einer Ausführungsform
darstellt.
-
3 ist
ein Blockdiagramm, das Aktivitätsobjekte
des erweiterbaren Echtzeitkollaborationssystems in einer Ausführungsform
darstellt.
-
4 ist
ein Flussdiagramm, das eine create_server_Endpointroutine in einer
Ausführungsform
darstellt.
-
5 ist
ein Architekturdiagramm, das die Architektur für ein erweiterbares Echtzeitkollaborationssystem
in einer Ausführungsform
darstellt.
-
Detaillierte Beschreibung
-
In
einer Ausführungsform
wird eine Architektur für
ein erweiterbares Echtzeitkollaborationssystem zur Verfügung gestellt.
Die Architektur stellt eine High-Level Anwendungsprogrammschnittstelle („API") für das Schreiben
von Anwendungsprogrammen, die Kommunikationsprotokolle zur Zurverfügungstellung
von Kollaborationsdiensten verwenden, zur Verfügung. Ein Anwendungsprogrammierer
kann einer Anwendung Kollaborationsdienste hinzufügen, indem
er die API verwendet, ohne die mit den verschiedenen zugrundeliegenden
Protokollen verbundenen Kompliziertheiten zu lernen, die die Kollaborationsdienste
implementieren.
-
Die
Architektur umfasst Aktivitätsobjekte, Endpunktobjekte
und mehrere Medienstapel (multiple media stacks). Diese Objekte
können
verschiedene Kommunikationsprotokolle verwenden, wie SIP oder RTP/RTCP,
um Nachrichten zu senden und zu empfangen. Die Aktivitätsobjekte,
Endpunktobjekte und mehreren Medienstapel können jeweils eine oder mehrere
APIs haben, die ein Anwendungsentwickler verwenden kann, um auf
die durch die Objekte zur Verfügung
gestellte Funktionalität
zuzugreifen oder sie zur Verfügung
zu stellen. Der Anwendungsentwickler kann wählen, ob er die Anwendungslogik zur
Verfügung
stellt, die die durch die Endpunktobjekte und Medienstapel zur Verfügung gestellten
APIs verwendet, oder ob er Anwendungslogik zur Verfügung stellt,
die die durch ein Aktivitätsobjekt
zur Verfügung
gestellte API verwendet. Durch die Verwendung der durch die Endpunktobjekte
und Medienstapel zur Verfügung
gestellten APIs kann der Anwendungsentwickler in der Lage sein,
einen hohen Grad von Flexibilität
auszuüben,
aber muss unter Umständen
deutlich mehr Anwendungslogik zur Verfügung stellen, als wenn nur
die API eines Aktivitätsobjekts verwendet
wird. Ein Anwendungsentwickler kann sich aus mehreren Gründen dafür entscheiden,
die API eines Aktivitätsobjekts
zu verwenden. Die API des Aktivitätsobjekts stellt eine Schnittstelle
auf einer höhe ren
Ebene als die APIs des Endpunktobjekts und der Medienstapel zur
Verfügung.
Außerdem
koordinieren die Aktivitätsobjekte
das Endpunktobjekt und den Medienstapel und daher muss die Anwendungslogik,
die die Koordination ausführt,
unter Umständen
nicht zur Verfügung
gestellt werden.
-
Aktivitätsobjekte
stellen Anwendungen und anderen Objekten Dienste zur Verfügung. Aktivitätsobjekte
sind Objekte, die es einer Anwendung ermöglichen, an einer Vielzahl
von speziellen Aktivitäten
teilzunehmen und die z.B. instant messaging, Telefonkonferenzen,
Videokonferenzen, gemeinsames Benutzen von Anwendungen und andere
Aktivitäten umfassen
können.
Aktivitätsobjekte
können
als „ Hüllobjekte" (wrapper objects") aufgefasst werden, die
die Funktionalität
der zugrundeliegenden Objekte zur Verfügung stellen, inklusive der
Endpunktobjekte und Medienstapel. Insbesondere koordinieren die Aktivitätsobjekte
Endpunktobjekte und Medienstapel, um eine nahtlose und integrierte
Sitzung in anderen Objekten zur Verfügung zu stellen, die die Aktivitätsobjekte
verwenden, wie z.B. Anwendungen.
-
Ein
Beispiel für
den Nutzen, der aus der Verwendung der Aktivitätsobjekte gezogen werden kann,
wird in dem folgenden Beispiel geliefert. Ein Anwendungsentwickler
möchte
in einer Anwendung Videokonferenzfähigkeiten zur Verfügung stellen. Um
dies zu tun, müsste
der Anwendungsentwickler zuerst mit einem Signalisierungsprotokoll,
wie z.B. SIP, und einem Medienprotokoll, wie z.B. RTP/RTCP vertraut
werden. Als nächstes
müsste
der Anwendungsentwickler die Anwendungslogik zur Verfügung stellen,
um eine Sitzung zu erzeugen, festzustellen, ob ein Kontakt, mit
dem eine Videokonferenz gewünscht
wird, gerade Online ist, eine Einladung, der Videokonferenz beizutreten,
zu versenden, die verschiedenen Parameter bezüglich der Videokonferenz auszuhandeln,
Ton und Bild von einer Ton- und Bilderfassungshardware zu erfassen
und schließlich
die Ton- und Bilddaten unter Verwendung RTP/RTCP auszutauschen.
Im Gegensatz dazu sind bei der Verwendung eines Videokonferenzaktivitätsobjekts
der Architektur viele dieser Schritte eliminiert, da das Videokonferenzobjekt
speziell so entworfen ist, dass die Anwendungsprogrammlogik zu einigen
wenigen höher
geordneten Schnittstellen zusammengefasst ist. Die Architektur hat ähnliche
Aktivitätsobjekte
für eine
Vielzahl von anderen kollaborativen Aktivitäten. Außerdem stellt die Architektur
eine Unterstützung für zusätzliche
Aktivitätsobjekte
zur Verfügung,
die später
hinzugefügt
werden können.
-
Ein
Endpunktobjekt stellt Managementdienste, wie z.B. Signalisierung,
zur Verfügung.
Ein Endpunktobjekt umfasst Profil-, Veröffentlichungs-/Abonierungs-,
Signalisierungs-, und Protokollstapelkomponenten. Die Profilkomponente
kann eine Abstraktion eines Be nutzers über eine API zur Verfügung stellen.
Die Veröffentlichungs/Abonierungskomponente stellt
eine Schnittstelle zur Verfügung,
um das Vorhandensein und die Verfügbarkeit von Information über die
Benutzer zu verfolgen. Die Signalisierungskomponente kann verwendet
werden, um wenig häufige,
transaktionale Nachrichten bezüglich
der Einrichtung oder Steuerung von Sitzungen zur Verfügung zu
stellen oder zu empfangen. Die Signalisierungskomponente kann auch
verwendet werden, um z.B. Medienparameter, wie z.B. Bandbreitengrenzen auszuhandeln.
Die Protokollstapelkomponente wird durch die Profil-, Veröffentlichungs/Abonierungs-, und
Signalisierungskomponenten verwendet, um Daten zu senden oder zu
empfangen, und unterstützt verschiedene
Protokolle, inklusive SIP.
-
Wie
zuvor beschrieben, stellt das Aktivitätsobjekt den Anwendungsentwicklern
eine Möglichkeit zur
Verfügung,
in Anwendungen kollaborative Dienste leicht hinzuzufügen. Zum
Beispiel kann ein Anwendungsentwickler, der einer Anwendung Videokonferenzen
hinzufügen
möchte,
eine Logik zur Verfügung stellen,
um ein Videokonferenzaktivitätsobjekt
zu erzeugen (oder zu „instantiieren"). Das Videokonferenzaktivitätsobjekt
kann dann ein Enpunktobjekt zur Signalisierung (wie z.B. ein SIP
Endpunktobjekt) und einen Nachrichtenmedienstapel für Audio/Videodaten
instantiieren. Während
der nachfolgenden Videkonferenzaktivitäten (z.B. beim Senden oder
Empfangen von einem Audio/Videostream) kann das Aktivitätsobjekt
die Objekte, die es erzeugt oder instantiiert hat, koordinieren.
In einer Ausführungsform kann
die Anwendung die Objekte erzeugen und wahlweise dem Aktivitätsobjekt
einen Hinweis auf die Objekte zur Verfügung stellen In einem derartigen
Fall muss das Aktivitätsobjekt
diese Objekte nicht erzeugen.
-
Medienstapelobjekte
stellen Inhaltskommunikationsdienste zur Verfügung, wie z.B. die Handhabung
von Audio/Videodatenstreams. Zum Beispiel kann ein Medienstapelobjekt
RTP/RTCP verwenden, um audiovisuelle Informationen eine Videokonferenz betreffend
zu senden oder zu empfangen.
-
Im
folgenden werden nun die Figuren beschrieben. 1 ist
ein Blockdiagramm, das Komponenten einer Architektur für ein erweiterbares
Echtzeitkollaborationssystem in einer Ausführungsform darstellt. Die Architektur
für ein
erweiterbares Echtzeitkollaborationssystem umfasst ein Kollaborationsdienstobjekt 102,
mehrere Endpunktobjekte 104, Aktivitätsobjekte 106 und
mehrere Medienstapel 108. Eine oder mehrere Anwendungen 110 können die
Architektur verwenden, indem sie auf verschiedene Methoden, Eigenschaften
und Ereignisse, die sich auf die Architektur beziehen, zugreifen.
Ein Anwendungsentwickler, der eine Anwendung schreibt, kann die
Architektur verwenden, indem er eine einheitliche API verwendet,
anstatt dass er verschiedene APIs für jeden Medienstapel, jedes
Protokoll oder jede andere Komponente, die die Anwendung oder Architektur verwendet,
erlernen und implementieren muss.
-
Das
Kollaborationsdienstobjekt 102 stellt den Anwendungen eine
Möglichkeit
zur Verfügung, mehrere
Endpunktobjekte gemeinsam zu benutzen, und kann eine über eine
Mehrzahl von Endpunktobjekten einheitliche API zur Verfügung stellen.
Wenn z.B. Endpunktobjekt 1 eine Schnittstelle, die sich
auf den Empfang (oder das Senden) von Information bezieht, und Endpunktobjekt 2 in ähnlicher
Weise eine Schnittstelle zur Verfügung stellt, die sich auf den Empfang
(oder das Senden) von Information bezieht, aber die beiden Schnittstellen
unterschiedliche Namen verwenden, obwohl sie ähnliche Funktionen ausführen, kann
das Kollaborationsdienstobjekt einen gemeinsamen Namen für beide
Schnittstellen zur Verfügung
stellen. Wenn ein Anwendungsentwickler diesen gemeinsamen Namen
in einer Anwendung verwendet, muss der Anwendungsenwickler die Anwendung
nicht überarbeiten,
wenn ein neues oder abgewandeltes Objekt, das eine Schnittstelle mit
einem anderen Namen zur Verfügung
stellt, mit dem Kollaborationsdienstobjekt verwendet wird.
-
Endpunktobjekte 104 stellen
eine Möglichkeit
zur Signalisierung anderer Objekte zur Verfügung. Die Signalisierung kann
zwischen zwei Endpunktobjekten mit einer Sitzung verwendet werden, so
dass z.B. ein Endpunktobjekt das andere Endpunktobjekt einladen
oder auffordern kann, eine Aktivität auszuführen oder Information, die
sich auf die Sitzung bezieht, auszutauschen. Beispielsweise kann
ein Endpunktobjekt das andere Endpunktobjekt der Sitzung zu einer
Instant Messaging Unterhaltung einladen und daraufhin Textnachrichten,
die sich auf die Unterhaltung beziehen, senden. Endpunktobjekte werden
weiter unten im Zusammenhang mit 2 genauer
beschrieben.
-
Aktivitätsobjekte
sind Komponenten, die es einer Anwendung ermöglichen, an eine Mehrzahl von kollaborationsrelevanten
Aktivitäten
teilzunehmen. Diese Komponenten stellen eine API zur Verfügung, die
ein Anwendungsentwickler verwenden kann, um Endpunktobjekte und
Medienstapel zu koordinieren. Aktivitätsobjekte 106 werden
weiter unten im Zusammenhang mit 3 genauer
beschrieben.
-
Ein
Medienstapelobjekt 108 stellt Inhaltkommunikationsdienste
zur Verfügung,
wie z.B. die Handhabung von Datenstreams, und stellt anderen Objekten
eine API zur Verfügung,
um die Daten zu senden oder zu empfangen. Die Architektur ist in
der Lage, eine praktisch unendliche Anzahl von Medienstapeln zu
unterstützen,
da die Architektur nicht zwischen den Daten oder Medientypen unterscheiden muss.
Daher können
neue Me dienstapel hinzugefügt werden,
oder Medienstapel können
abgeändert
werden, je nachdem, wie sich die Anforderungen verändern. Ein
Beispiel für
einen Medienstapel ist RTP/RTCP. Dieser Medienstapel kann verwendet werden,
um audiovisuelle Informationen zu senden.
-
2 ist
ein Blockdiagramm, dass Komponenten eines Endpunktobjekts des erweiterbaren Echtzeitkollaborationssystems
in einer Ausführungsform
darstellt. Endpunktobjekte stellen Managementdienste, wie z.B. eine
Möglichkeit
zur Signalisierung anderer Objekte, zur Verfügung. Die Signalisierung kann
zwischen zwei Endpunktobjekten mit einer Sitzung verwendet werden,
so dass z.B. ein Endpunktobjekt das andere Endpunktobjekt einladen
oder auffordern kann, eine Aktivität auszuführen oder Information, die
sich auf die Sitzung bezieht, auszutauschen. Beispielsweise kann
ein Endpunktobjekt das andere Endpunktobjekt der Sitzung einladen,
an einer Instant Messaging Unterhaltung teilzunehmen, und daraufhin
Textnachrichten, die sich auf die Unterhaltung beziehen, senden.
-
Die
Architektur kann mehrere Varianten von Endpunktobjekten unterstützten und
jede Variante des Endpunktobjekts kann mehrfach instantiiert werden.
Zum Beispiel kann es ein Endpunktobjekt geben, das sich auf das
persönliche
Internetserviceproviderkonto (z.B. MSN.COM) bezieht, und ein anderes Endpunktobjekt,
das sich auf das geschäftliche
Internetkonto (z.B. MICROSOFT.COM) des Benutzers bezieht. Der Benutzer
kann bei Serviceprovidern unter Verwendung der persönlichen
Konten auf verschiedenen Geräten
(z.B. einem Handheldcomputer und einem Desktopcomputer) angemeldet
sein und kann auch unter Verwendung des geschäftlichen Kontos auf manchen
der Geräte
(z.B. dem Desktopcomputer) angemeldet sein.
-
Demzufolge
kann es zwei Instanzen geben, die sich auf die mit dem persönlichen
Konto verknüpfte
URI beziehen. Die einzelnen Instanzen der Endpunktobjekte können dann
durch eine Kombination der URI (uniform resource locator) und einer
Endpunktkennung („EID)
eindeutig gekennzeichnet werden. Zum Beispiel kann ein Endpunktobjekt
durch die URI user@MSN.COM und durch EID „1234” gekennzeichnet werden. Wie
zuvor beschrieben, kann die EID verwendet werden, um insbesondere
eine Instanz eines Endpunktobjekts von einer anderen Instanz eines
Endpunktobjekts, die mit der gleichen URI verbunden ist, zu unterscheiden.
-
Ein
Endpunktobjekt kann eine „Datenschnittstelle" und eine „Signalisierungsschnittstelle" zur Verfügung stellen.
Die Datenschnittstelle kann Methoden, Ereignisse und Eigenschaften
enthalten, die sich auf Daten beziehen, die durch das Endpunktobjekt
veröffent licht
oder abonniert werden. Durch die Veröffentlichung oder Abonnierung
der Daten kann eine Anwendung Daten zur Verfügung stellen oder über Änderungen
an den Daten benachrichtigt werden. Die Signalisierungsschnittstelle
kann Methoden, Ereignisse und Eigenschaften zur Verfügung stellen, die
sich auf die Steuerung der Signalisierung des Endpunktobjekts beziehen.
Zum Beispiel können
die Signalisierungseigenschaften die Erzeugung einer Sitzung oder
den Beitritt zu einer Sitzung, das Beitreten oder Verlassen einer
Unterhaltung, die Annahme oder Ablehnung von Einladungen und andere
Signale enthalten.
-
Das
dargestellte Endpunktobjekt 200 umfasst eine Profilkomponente 201,
eine Veröffentlichungs-
und Abbonierungskomponente 202, eine Signalisierungskomponente 204 und
eine Protokollstapelkomponente 206.
-
Die
Profilkomponente kann eine Abstraktion eines Benutzers über eine
API zur Verfügung
stellen. Sie pflegt servicerelevante Informationen für Benutzer,
wie z.B. eine elektronische Adresse (z.B. URI), Legitimationen für den Serviceprovider,
den Status des Serviceproviders, Fähigkeiten und Prinzipien. Benutzer
können
mehrere Profile bezüglich
verschiedener Provider haben. Die Benutzer können auch mehr als ein Profil
pro Serviceprovider haben. Die Profilkomponente kann verwendet werden,
wenn Sitzungen mit anderen Benutzern erzeugt werden, z.B. um die
URI des Benutzers zur Verfügung
zu stellen. Die Profilkomponente kann Methoden zur Verfügung stellen,
um einen Benutzer bei einem Serviceprovider an oder abzumelden.
-
Die
Veröffentlichungs/Abonnierungskomponente
stellt eine Schnittstelle zur Verfügung, die Anwesenheit und Verfügbarkeit
von Informationen über Benutzer
zu verfolgen. Anwesenheitsinformation bezieht sich darauf, ob ein
Benutzer an einem bestimmten Computer anwesend ist. Verfügbarkeitsinformation
bezieht sich darauf, ob der Benutzer für den Empfang einer Nachricht
verfügbar
ist oder dafür
bereit ist. Zum Beispiel kann ein Benutzer eines tragbaren Telefons
anwesend sein, wenn das tragbare Telefon eingeschaltet ist, aber
er kann für
eine Nachrichtensitzung nicht verfügbar sein, wenn der Benutzer
an einem Telefongespräch
teilnimmt. In ähnlicher
Weise kann der Benutzer, der den „Besetzt"-Hinweis in MICROSOFT WINDOWS MESSENGER
gesetzt hat, anwesend, aber für
einen Nachrichtenaustausch nicht verfügbar sein.
-
Als
weitere Beispiele kann das Anwesenheitsobjekt Informationen über einen
Benutzer zur Verfügung
stellen, der anwesend ist und für
die Teilnahme an einer MICROSOFT WINDOWS MESSENGER Unterhaltung
unter Verwendung eines Computers verfügbar ist, und der auch für die Teilnahme
an einer Telefonkonferenz unter Verwendung eines tragbaren Telefons
verfügbar
ist. Wenn der Benutzer nicht länger
bei MICROSOFT WINDOWS MESSENGER angemeldet ist, kann das Anwesenheitsobjekt diese
Information aktualisieren, so dass eine Anwendung, die das Anwesenheitsobjekt
verwendet, in der Lage ist, festzustellen, dass der Benutzer nicht
länger anwesend
oder verfügbar
ist, um an der MICROSOFT WINDOWS MESSENGER Unterhaltung teilzunehmen.
Die Anwesenheitsinformation zeigt daher an, ob Benutzer oder andere
Objekte anwesend sind. Verschiedene Serviceprovider oder Protokolle
können
verschiedene Mechanismen verwenden, um Anwesenheitsinformation zu
erzeugen oder zur Verfügung
zu stellen. Um zu vermeiden, dass ein Anwendungsentwickler mit den
verschiedenen Arten der Erzeugung oder Zurverfügungstellung von Anwesenheitsinformation
vertraut sein muss, kann ein Anwendungsentwickler das Endpunktobjekt
verwenden, um Anwesenheitsinformation zu erzeugen oder zu verwenden.
-
Die
Veröffentlichungs/Abonnierungskomponente
stellt eine Abonnierungsschnittstelle zur Verfügung, um ein Abonnement für eine Veröffentlichung eines
anderen Objekts zu erzeugen, eine Veröffentlichungsschnittstelle,
um anderen Objekten Abonnements zur Verfügung zu stellen, und eine Benachrichtigungsschnittstelle,
um Benachrichtigungen bezüglich
der Dienste, dessen Veröffentlichungen
abonniert wurden, zu empfangen. Diese Schnittstelle ermöglicht es
einer Anwendung, die Komponente zu verwenden, um Anwesenheitsinformation
zur Verfügung
zu stellen, zu empfangen oder zu verfolgen. Wenn z.B. ein Benutzer
an einer MICROSOFT WINDOWS MESSENGER Unterhaltung unter Verwendung
eines Personalcomputers teilnimmt und an einer Telefonkonferenz
unter Verwendung eines tragbaren Telefons teilnimmt, kann die Veröffentlichung/Abonnierungskomponente
die Anwesenheit des Benutzers an beiden Orten erkennen und darüber berichten.
Eine URI und eine EID können
zusammen Instanzen von Endpunktobjekten eindeutig kennzeichnen.
Da ein Benutzer an mehreren Orten gleichzeitig anwesend sein kann,
kann die URI des Benutzers an diesen Orten als anwesend gekennzeichnet
werden. Die Hinzufügung
einer EID in Bezug auf eine gegebene URI stellt einen Mechanismus zur
Verfügung,
um eine bestimmte Instanz der Anwesenheit eindeutig zu kennzeichnen.
-
Benachrichtigungen
können
bezüglich
verschiedener Informationen zur Verfügung gestellt werden. Zum Beispiel
können
Benachrichtigungen darüber
zur Verfügung
gestellt werden, ob ein Benutzer Online ist, beschäftigt ist,
verfügbar
ist, in der Mittagspause ist, etc. Benachrichtigungen können auch
für den
geografischen Ort eines Benutzers (z.B. wie sie durch ein globales
Positionierungssystem oder „GPS" zur Verfügung gestellt werden,
Kontaktinformationen, Kalenderinformationen, Abwesenheitsnachrichten,
Audio/Videofähigkeiten
etc. zur Verfügung
gestellt werden.
-
Die
Signalisierungskomponente kann auch verwendet werden, um wenig häufige transaktionale Nachrichten
bezüglich
der Einrichtung oder Steuerung von Sitzungen zur Verfügung zu
stellen oder zu empfangen. Diese Komponente kann auch verwendet
werden, um z.B. Medienparameter wie die Zahl der Bilder pro Sekunde
auszuhandeln.
-
Das
Protokollstapelobjekt ist verantwortlich für das Senden und Empfangen
von Information unter Verwendung eines Protokolls. Z.B. kann SIP
verwendet werden, um Signalisierungsinformation zu senden oder zu
empfangen. In verschiedenen Ausführungsformen
können
gleichermaßen
andere Protokolle verwendet werden. In einer Ausführungsform kann
ein Endpunktobjekt mit mehreren Protokollen kompatibel sein. In
einem derartigen Fall kann das Endpunktobjekt in der Lage sein,
z.B. mehrere Protokolle, je nach Notwendigkeit, zu verwenden, um
Informationen zu senden oder zu empfangen. Alternativ dazu kann
die Architektur mehrere Endpunktobjekte-Protokollkombinationen als
getrennte Endpunktobjekte unterstützen. in einem derartigen Fall
kann ein Endpunktobjekt für
SIP verwendet werden und ein anderes für ein anderes Protokoll.
-
3 ist
ein Blockdiagramm, das Aktivitätsobjekte
des erweiterbaren Echtzeitkollaborationssystems in einer Ausführungsform
darstellt. Aktivitätsobjekte
stellen Anwendungen und anderen Objekten Dienste zur Verfügung. Aktivitätsobjekte
sind Objekte, die es einer Anwendung ermöglichen, an einer Mehrzahl
von speziellen Aktivitäten
teilzunehmen, und können
z.B. Instant Messaging, Telefonkonferenzen, Videokonferenzen, gemeinsame
Benutzung von Anwendungen und andere Aktivitäten enthalten. Aktivitätsobjekte
können
als „ Hüllobjekte" angesehen werden,
die die Funktionalität
der zugrundeliegenden Objekte, inklusive Endpunktobjekte und Medienstapel,
zur Verfügung
stellen. Insbesondere koordinieren die Aktivitätsobjekte Endpunktobjekte und Medienstapel,
um den Objekten, die die Aktivitätsobjekte
verwenden, wie z.B. Anwendungen, eine nahtlose und integrierte Sitzung
zur Verfügung
zu stellen.
-
Jedes
Aktivitätsobjekt
stellt eine Funktionalität
zur Verfügung,
die es einer Anwendung, die das Objekt verwendet, ermöglicht,
an einer Vielzahl von Aktivitäten
teilzunehmen. Z.B. kann ein Aktivitätsobjekt Signalisierungs- und
Medieninformation kapseln. Dabei kann das Aktivitätsobjekt
als Brücke
zwischen Signalisierung und Medien dienen, so dass einer Anwendung,
die das Aktivitätsobjekt
verwendet, eine integrierte Ansicht zur Verfügung gestellt wird. Zum Beispiel
würde ein
Anwendungsentwickler lediglich eine Videokonferenz anfordern, anstatt
dass er getrennte SIP und RTP/RTCP Verbindungen und Sitzungen einrichten
müsste.
Die dargestellten Beispiele der Aktivitäten werden unten beschrieben.
-
Ein
Kollaborationsdienst-Aktivitätsobjekt 304 ermöglicht es
einer Anwendung, den Benutzern der Anwendung Kollaborationsdienste
zur Verfügung
zu stellen. Zum Beispiel kann es das Kollaborationsdienstaktivitätsobjekt
zwar Benutzern ermöglichen, zwei
verschiedene Computer zu benutzen, um bei der Verfassung eines gemeinsam
benutzten Dokuments zusammen zu arbeiten.
-
Ein
Aktivitätsobjekt 310 zur
gemeinsamen Benutzung von Anwendungen (application sharing activity
object) ermöglicht
es einer Anwendung, die das Aktivitätsobjekt zur gemeinsamen Benutzung von
Anwendungen verwendet, eine Funktionalität zur Verfügung zu stellen, die sich auf
die gemeinsame Benutzung von Anwendungen durch Benutzer mit verschiedenen
Computern bezieht. Zum Beispiel können zwei Benutzer eine „Weißwandtafelanwendung" verwenden, mit der
z.B. ein Benutzer visuelle Information zur Verfügung stellen kann, die der
andere Benutzer sehen und bearbeiten kann.
-
Ein
Nachrichtenaktivitätsobjekt 306 stellt
Anwendungen die Fähigkeit
zur Verfügung,
dem Benutzer der Anwendung Nachrichtenfähigkeiten zur Verfügung zu
stellen. Zum Beispiel könnte
ein Anwendungsentwickler Benachrichtigungen innerhalb einer Anwendung,
die der Entwickler erstellt, ermöglichen wollen.
Als konkretes Beispiel, wenn zwei Benutzer an einem Dokument zusammenarbeiten,
in dem sie ein Dokument gleichzeitig bearbeiten, könnten die Benutzer
dazu in der Lage sein wollen, einander Textnachrichten zu senden,
oder an einer Videokonferenz während
der Zusammenarbeit teilzunehmen. In einem derartigen Fall kann ein
Anwendungsentwickler sowohl ein Kollaborationssitzungsaktivitätsobjekt
als auch ein Benachrichtigungs- oder Videokonferenzaktivitätsobjekt
verwenden, um die Benutzer in die Lage zu versetzen, zusammenzuarbeiten und
während
der Zusammenarbeit Nachrichten miteinander auszutauschen.
-
Ein
Videokonferenzaktivitätsobjekt 308 stellt einer
Anwendung Videokonferenzeinrichtungen zur Verfügung. Die Videokonferenz kann
das Senden und Empfangen von audiovisueller Information beinhalten.
-
Zusätzliche
Aktivitätsobjekte
sind ebenso berücksichtigt
und werden als Aktivitätsobjekte 312 dargestellt.
-
Ein
Anwendungsentwickler kann Objekte der oben beschriebenen Architektur
(und die nicht aufgezählten
und beschriebenen Objekte) verwenden, indem er APIs verwendet, die
durch die Objekte zur Verfügung
gestellt werden. Diese Objekte können eine
einfach zu verwendende API zur Verfügung stellen, so dass ein Anwendungsentwickler
nicht auf APIs zurückgreifen
muss, die von den zugrundeliegenden Komponenten zur Verfügung gestellt
werden, die die mit den Aktivitätsobjekten
verknüpften Dienste
zur Verfügung
stellen. Zum Beispiel kann ein Messaging Service Provider eine API
zur Verfügung stellen,
die ein Entwickler verwenden könnte.
Um dies zu tun, müsste
der Entwickler Zeit aufbringen, um die API zu erlernen, was ziemlich
kompliziert sein kann. Stattdessen könnte der Entwickler eine einfache
API verwenden wollen, die durch ein Objekt der Architektur zur Verfügung gestellt
wird. Darüber
hinaus kann das Objekt Schritte kapseln, die erforderlich sein können, um
verschiedene unterschiedliche Objekte zu verwenden. Zum Beispiel
kann es sein, dass ein Anwendungsentwickler, der Nachrichten zwischen
zwei Computern austauschen möchte,
eine API verwenden muss, die durch das SIP zur Verfügung gestellt
wird, als auch eine API, die durch ein anderes Objekt auf einer
unteren Ebene geliefert wird, das den Nachrichtendienst zur Verfügung stellt. Im
Gegensatz dazu müsste
der Anwendungsentwickler lediglich das Nachrichtenaktivitätsobjekt
verwenden und wäre
damit in der Lage, einer Anwendung die Nachrichtenfunktionalität viel einfacher
hinzuzufügen.
Außerdem
kann das Framework dazu dienen, mehrere Objekte zu koordinieren,
so dass weniger Programmierlogik von dem Anwendungsentwickler erforderlich
ist. In einer Ausführungsform
enthält
und verwendet eine Kollaborationssitzung Aktivitätsobjekte.
-
4 ist
ein Flussdiagramm, das eine create_server_endpoint (Erzeuge_Server_Endpunkt)
Routine in einer Ausführungsform
darstellt. Die Routine wird durch eine Anwendung aufgerufen, um
ein Endpunktobjekt zu erzeugen, das sich mit einem Server verbindet. Wenn
der Endpunkt erzeugt wurde, der sich mit einem Server verbindet,
kann die von ihm veröffentlichte
Information für
abonnierende Objekte verfügbar sein,
selbst nachdem der erzeugte Endpunkt nicht mehr länger in
Betrieb ist. Ein Endpunkt, der mit einem Server verbunden ist, kann
daher „pro-URI" Information zur
Verfügung
stellen, d.h. die Information bleibt nach der Lebensdauer des Objekts
verfügbar.
-
Die
Routine beginnt im Block 402. Im Block 404 erzeugt
die Routine ein neues Endpunktobjekt und gibt an, dass der Endpunkt
sich auf eine Anwendung bezieht. Die angegebene Anwendung kann als Parameter
an eine Erzeugungsfunktion übergeben werden,
die der Erzeugung des Endpunkts dient. Beim Erzeugen eines Endpunkts
kann ein „freundlicher" Name angegeben werde,
so dass der Endpunkt durch den freundlichen Namen referenziert werden
kann. Alternativ kann der neu erzeugte Endpunkt durch eine eindeutige
Kennung, die mit dem Endpunkt verknüpft ist, referenziert werden.
Diese ein deutige Kennung kann durch das System erzeugt werden, wenn
das Objekt erzeugt wird.
-
Bei
Block 406 kann die Anwendung beim Erzeugen des Endpunkts
das neu erzeugte Endpunktobjekt mit dem Server registrieren, um
es dem Server zu erlauben, Nachrichten an diesen Endpunkt weiterzuleiten.
Beim Erhalt der Registrierungsanforderung von dem Endpunktobjekt
kann der Server eine „Herausforderung" (challenge) an den
Endpunkt herausgeben. Die Herausforderung kann einen durch den Server
verwendeten „Bereich" (realm) enthalten.
Ein Bereich kann eine mit dem Server verknüpfte Domain angeben. Zum Beispiel
kann der Server eine Herausforderung mit dem Bereich „MICROSOFT.com" herausgeben.
-
Im
Block 408 antwortet die Routine auf die Herausforderung
durch Angabe der Legitimation (z.B. Benutzer ID und Passwort), die
mit der Anwendung verknüpft
ist. Diese Legitimation kann automatisch oder durch den Benutzer
zur Verfügung
gestellt werden. Der Benutzer kann die von der Routine zur Verfügung gestellte
Legitimation überprüfen. Die
Legitimation kann mit dem Bereich verknüpft sein. Wenn die Anwendung
z.B. eine Legitimation zur Verfügung
stellt, die nicht mit dem Bereich des Servers („MICRO-SOFT.com”) verknüpft ist, könnte der Server die Anwendung
nicht authentisieren.
-
Wenn
die Registrierung erfolgreich ist, kann der Endpunkt für den Empfang
von Nachrichten von anderen Objekten bereit sein. Ansonsten wäre der Endpunkt
nicht in der Lage, Nachrichten zu empfangen.
-
Die
Routine kehrt zu ihrem Aufrufer bei Block 412 zurück.
-
In
einer Ausführungsform
kann der Server einen Endpunkt, der nicht erfolgreich registriert
wurde, in die Lage versetzen, Nachrichten zu senden, aber keine
Nachrichten zu empfangen. In einem schwächeren Sicherheitsmodell könnte der
Server jeden Endpunkt in die Lage versetzen, Nachrichten zu senden
oder zu empfangen.
-
In
einer Ausführungsform
könnte
der Server einen Endpunkt herausfordern, wenn der Endpunkt versucht,
eine Nachricht zu senden, aber nicht wenn er Nachrichten empfängt.
-
Eine
alternative (nicht gezeigte) Routine könnte einen gleichrangigen (peer-to-peer)
Endpunkt erzeugen. Ein gleichrangiger Endpunkt ist einer, der nicht
mit einem Server verknüpft
ist. Wenn ein Endpunkt nicht mit einem Server verknüpft ist,
könnte
die Information, die der Endpunkt veröffentlicht, nicht verfügbar sein,
sobald der Endpunkt seinen Betrieb einstellt.
-
5 ist
ein Architekturdiagramm, das die Architektur für ein erweiterbares Echtzeitkollaborationssystem
in einer Ausführungsform
darstellt. Die Architektur umfasst ein Aktivitätsobjekt 502, einen Endpunkt 504,
und mehrere Medienstapelobjekte 506. Diese Objekte wurden
ausführlich
diskutiert. Das Architekturdiagramm zeigt eine Beziehung zwischen
dem Aktivitätsobjekt,
dem Endpunktobjekt und den Medienstapelobjekten in einer Ausführungsform. Insbesondere
zeigt das Architekturdiagramm, dass die von einem Aktivitätsobjekt
zur Verfügung
gestellte Funktionalität
enthält,
die durch den Endpunkt und die Medienstapelobjekte zur Verfügung gestellt
wird.
-
In
einer Ausführungsform
können
mehrere Aktivitätsobjekte
mit zugehörigen
Medienstapelobjekten verwendet werden.
-
Anwendungen
können
Methoden der Objekte der Architektur aufrufen oder können direkt
Methoden der zugrundeliegenden Objekte, die die Funktionalität implemtieren,
aufrufen. Durch das Aufrufen der Methoden der Objekte der Architektur
müssen die
Anwendungsentwickler weniger Logik zur Verfügung stellen und müssen unter
Umständen
die Anwendungslogik nicht überarbeiten,
wenn sich die darunterliegenden Komponenten ändern.
-
Das
Folgende stellt einige durch die Architektur zur Verfügung gestellte
APIs dar.
-
Eine
Anwendung kann ein Endpunktobjekt erzeugen, indem ein neuer „Kollaborationsendpunkt" („CollaborationEndpoint") erzeugt wird. Die
Anwendung kann die folgenden Parameter zur Verfügung stellen: einen URI, der
sich auf das Endpunktobjekt bezieht, einen Server, der mit dem Endpunktobjekt verknüpft ist,
und eine Angabe der Netzwerklegitimation.
-
Eine
Netzwerklegitimationsmethode (NetworkCredential) stellt die Angabe
der Netzwerklegitimation zur Verfügung. Diese Methode akzeptiert
als Parameter die Angabe eines Benutzerkontos, eine Passworts und
einer Domain, mit der das Konto verknüpft ist.
-
Eine
Eingabemethode (Enter) registriert den Endpunkt, und stellt eine
Angabe über
Erfolg oder Versagen zur Verfügung.
Diese Methode benötigt keine
Parameter.
-
Eine
Veröffentlichungsmethode
(Publish) veröffentlicht
Anwesenheitsinformation. Eine Anwendung kann z.B. angeben, dass
ein Benutzer Online, Offline, Beschäftigt, am Telefon, etc. ist.
Die Architektur ist hinreichend flexibel, um eine nahezu unbegrenzte
Zahl von Anwesenheitsangaben zur Verfügung zu stellen. Z.B. kann
eine Anwendung auch die GPS Ortsangabe eines Benutzers veröffentlichen. Umgekehrt
abonniert eine Abonniermethode (subscribe) die Veröffentlichungen
eines Endpunktobjekts.
-
Eine
Einladungsmethode (Invite) lädt
einen Benutzer zu einer Kollaborationssitzung ein. Die Methode empfängt eine
Angabe einer URI, die eingeladen werden soll.
-
Eine
Annahmemethode (Accept) nimmt eine Einladung an. Umgekehrt lehnt
eine Ablehnungsmethode (Decline) die Einladung ab.
-
Ein
Nachrichtenaktivitätsobjekt
kann über eine
InstantMessagingActivity Klasse erzeugt werden. Dieses Aktivitätsobjekt
unterstützt
verschiedene Methoden, inklusive z.B. eine Methode, um eine Nachricht
zu senden (SendMessage).
-
Die
SendMessage Methode sendet eine Nachricht. Sie empfängt eine
Nachrichtenzeichenfolge als Parameter.
-
Die
Methoden können
durch verschiedene Objekte der Architektur zur Verfügung gestellt
werden. Die Architektur kann zusätzlich
Methoden, Eigenschaften und Ereignisse, die sich auf den Abruf von
Benutzereigenschaften, das Hinzufügen eines Benutzers zu einer
Liste von Kontakten, das Hinzufügen
oder Entfernen von Teilnehmern in einer Unterhaltung beziehen, usw.,
zur Verfügung
stellen. Der Computer, auf den die Architektur implementiert ist, kann
eine zentrale Verarbeitungseinheit, Speicher, Eingabegeräte (z.B.
Tastatur und Zeigegeräte),
Ausgabegeräte
(z.B. Anzeigegeräte),
und Speichergeräte
(z.B. Plattenlaufwerke) enthalten. Der Speicher und die Speichergeräte sind
computerlesbare Medien, die Anweisungen enthalten können, die
das System implementieren. Zusätzlich
können
die Datenstrukturen und Nachrichtenstrukturen über ein Datenübertragungsmedium,
wie z.B. ein Signal auf einer Kommunikationsverbindung, gespeichert
oder übertragen
werden. Verschiedene Kommunikationsverbindungen können verwendet
werden, wie z.B. das Internet, ein lokales Netzwerk, ein Großraumnetzwerk
oder eine Punkt zu Punkt-Einwählverbindung.
-
Die
Architektur kann in einer Vielzahl von Betriebsumgebungen implementiert
werden, inklusive Computern, auf denen ein MICROSOFT WINDOWS Betriebssystem
läuft.
Diese Betriebsumgebung ist nur ein Beispiel einer geeigneten Betriebsumgebung und
ist nicht gedacht, irgendeine Beschränkung bezüglich des Umfangs der Verwendung
oder Funktionalität
des Systems anzudeuten. Andere wohlbekannte Computersystemumgebungen
und Konfigurationen, die für
die Verwendung geeignet sein können,
umfassen Personalcomputer, Servercomputer, Handheld oder Laptopgeräte inklusive
smart pho nes", Multiprozessorsysteme,
microprozessorbasierte Systeme, programmierbare Unterhaltungseleketronik,
Mehrzweck PCs, Minicomputer, Mainframecomputer, verteilte Computerumgebungen,
die irgendeines der oben genannten Systeme oder Geräte enthalten,
und dergleichen.
-
Die
Architektur kann in dem allgemeinen Kontext computerausführbarer
Instruktionen beschrieben werden, wie z.B. Programmmodulen, die durch
einen oder mehrere Computer oder andere Geräte ausgeführt werden. Im allgemeinen
enthalten Programmmodule Routinen, Programme, Objekte, Komponenten,
Datenstrukturen etc., die bestimmte Ausgaben ausführen oder
bestimmt abstrakte Datentypen implementieren. Die Funktionalität der Programmmodule
kann üblicherweise
kombiniert oder verteilt werden, wie in verschiedenen Ausführungsformen
gewünscht.
-
Aus
dem Vorangehenden wird ersichtlich, dass bestimmte Ausführungsformen
der Erfindung zum Zwecke der Erläuterung
beschrieben wurden, aber dass verschiedene Abwandlungen vorgenommen
werden können,
ohne vom Umfang der Erfindung abzuweichen. Demzufolge ist die Erfindung nicht
anders als durch die angefügten
Ansprüche
beschränkt.