DE602004007864T2 - Architektur für ein ausdehnbares Echtzeitzusammenarbeitssystem - Google Patents

Architektur für ein ausdehnbares Echtzeitzusammenarbeitssystem Download PDF

Info

Publication number
DE602004007864T2
DE602004007864T2 DE602004007864T DE602004007864T DE602004007864T2 DE 602004007864 T2 DE602004007864 T2 DE 602004007864T2 DE 602004007864 T DE602004007864 T DE 602004007864T DE 602004007864 T DE602004007864 T DE 602004007864T DE 602004007864 T2 DE602004007864 T2 DE 602004007864T2
Authority
DE
Germany
Prior art keywords
objects
endpoint
real
application
activity
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE602004007864T
Other languages
English (en)
Other versions
DE602004007864D1 (de
Inventor
Adrian Redmond Potra
Krishnamurthy Redmond Ganesan
Mu Redmond Han
Nikhil P. Redmond Bobde
Ajay P. Redmond Chitturi
Brian H. Redmond Ostergren
Robert J. Redmond Osborne
Warren Vincent Redmond Barkley
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of DE602004007864D1 publication Critical patent/DE602004007864D1/de
Application granted granted Critical
Publication of DE602004007864T2 publication Critical patent/DE602004007864T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1101Session protocols
    • H04L65/1104Session initiation protocol [SIP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • H04L65/403Arrangements for multi-party communication, e.g. for conferences
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1101Session protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • General Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Transfer Between Computers (AREA)
  • Telephonic Communication Services (AREA)
  • Stored Programmes (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Computer And Data Communications (AREA)
  • Electrophonic Musical Instruments (AREA)

Description

  • 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.

Claims (17)

  1. Verfahren, das durch ein Computersystem durchgeführt wird, um Echtzeitkollaborationsdienste in einer Anwendung bereitzustellen, und umfasst: Instanziieren eines Aktivitätsobjekts (106, 300, 502), welches die Funktionalität eines Endpunktobjekts (104, 200, 504) und eines Medienstapelobjekts (108, 506) bereitstellt, die beide dem Aktivitätsobjekt unterliegen (zugrunde liegen, unterhalb liegen, „underlying") und wobei das Aktivitätsobjekt eine Anwendungsprogrammierungsschnittstelle hat, um einen Kollaborationsdienst bereitzustellen; und Aufrufen von Methoden der Anwendungsprogrammierungsschnittstelle, wobei die aufgerufenen Methoden Managementdienste des Endpunktobjekts bereitstellen, welches eine Abstraktion eines Benutzers an einem Computergerät bereitstellt und durch eine Kombination einer elektronischen Adresse des Benutzers und einem Endpunktidentifikator identifiziert ist, und wobei die Managementdienste das Bereitstellen von Präsenzinformation bezüglich der Frage, ob der Benutzer an dem Computergerät präsent ist, enthält; und wobei die aufgerufenen Methoden ferner Inhaltskommunikationsdienste des Medienstapelobjekts zwischen Anwendungen (110), die Informationen des Kollaborationsdienstes kommunizieren, bereitstellen.
  2. Verfahren nach Anspruch 1, wobei das Endpunktobjekt ein Sitzungsinitiierungsprotokoll verwendet.
  3. Verfahren nach Anspruch 2, wobei das Medienstapelobjekt ein Echtzeittransportprotokoll verwendet.
  4. Verfahren nach Anspruch 2, wobei das Medienstapelobjekt ein Echtzeitsteuerprotokoll verwendet.
  5. Verfahren nach einem der Ansprüche 1 bis 4, wobei die Inhaltskommunikationsdienste die Bereitstellung von Medien enthalten.
  6. Erweiterbares Echtzeitkollaborationssystem, umfassend: mehrere Medienstapelobjekte (108, 506); ein Endpunktobjekt (104, 200, 504) zum Bereitstellen oder Empfangen von Signalisierungsinformation, wobei das Endpunktobjekt eine Abstraktion eines Benutzers an einem Computergerät bereitstellt und durch eine Kombination einer elektronischen Adresse des Benutzers mit einem Endpunktidentifikator identifiziert wird; und mehrere Aktivitätsobjekte (106, 300, 502), wobei die Aktivitätsobjekte die Funktionalität der mehreren Medienstapelobjekte und des Endpunktobjekts bereitstellen, die alle den mehreren Aktivitätsobjekten unterliegen, eine Anwendungsprogrammierungsschnittstelle für Anwendungen bereitstellen und die mehreren Medienstapelobjekte und das Endpunktobjekt verwenden, um Kollaborationsdienste bereitzustellen, wobei die Kollaborationsdienste das Bereitstellen von Präsenzinformation bezüglich der Frage, ob der Benutzer an dem Computergerät präsent ist, enthalten und wobei weiterhin die Anwendung die Anwendungsprogrammierungsschnittstelle verwendet und es nicht erfordert, dass Logik bereitgestellt wird, um die Medienstapelobjekte und das Endpunktobjekt zu koordinieren.
  7. Erweiterbares Echtzeitkollaborationssystem nach Anspruch 6, wobei die Anwendungsprogrammierungsschnittstelle einen konsistenten Schnittstellennamen bereitstellt, selbst wenn zwei unterliegende Objekte, die tatsächlich assoziierte Funktionalität bereitstellen, verschiedene Schnittstellennamen verwenden.
  8. Erweiterbares Echtzeitkollaborationssystem nach Anspruch 6 oder 7, wobei einer der Kollaborationsdienste Datentransfer (Versenden von Nachrichten, „messaging") (306) ist.
  9. Erweiterbares Echtzeitkollaborationssystem nach einem der Ansprüche 6 bis 8, wobei einer der Kollaborationsdienste das Durchführen von Videokonferenzen (308) ist.
  10. Erweiterbares Echtzeitkollaborationssystem nach einem der Ansprüche 6 bis 9, wobei einer der Kollaborationsdienste das Teilen (gemeinsame Verwenden, „sharing") einer Anwendung (310) ist.
  11. Erweiterbares Echtzeitkollaborationssystem nach einem der Ansprüche 6 bis 10, das Medienstapelobjekte hinzufügt.
  12. Erweiterbares Echtzeitkollaborationssystem nach einem der Ansprüche 6 bis 11, wobei das Endpunktobjekt eine Profilkomponente (201) umfasst, die die Abstraktion des Benutzers an dem Computergerät bereitstellt, sowie eine Veröffentlichungs- und Abonnierungskomponente („publishing and subscribing component”) (202), die Schnittstellen bereitstellt, um die Präsenzinformation bereitzustellen, eine Signalisierungskomponente (204), die dazu angepasst ist, seltene Transaktionsnachrichten bezüglich der Errichtung oder Steuerung einer Echtzeitkollaborationssitzung bereitzustellen und eine Protokollstapelkomponente (206), die für das Senden und Empfangen von Informationen unter Verwendung eines Protokolls verantwortlich ist.
  13. Erweiterbares Echtzeitkollaborationssystem nach Anspruch 12, wobei die Protokollstapelkomponente ein Sitzungsinitiierungsprotokoll verwendet.
  14. Erweiterbares Echtzeitkollaborationssystem nach Anspruch 12, wobei die Protokollstapelkomponente ein Signalisierungsprotokoll verwendet.
  15. Erweiterbares Echtzeitkollaborationssystem nach einem der Ansprüche 6 bis 14, wobei eines der mehreren Medienstapelobjekte ein Echtzeittransportprotokoll verwendet.
  16. Erweiterbares Echtzeitkollaborationssystem nach Anspruch 15, wobei die Aktivitätsobjekte die mehreren Medienstapelobjekte und das Endpunktobjekt unter Leitung einer Anwendung steuern.
  17. Computerlesbares Medium mit computerausführbaren Befehlen zum Durchführen des Verfahrens nach einem der Ansprüche 1 bis 5.
DE602004007864T 2003-10-23 2004-10-20 Architektur für ein ausdehnbares Echtzeitzusammenarbeitssystem Expired - Lifetime DE602004007864T2 (de)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US918855 1992-07-27
US51379003P 2003-10-23 2003-10-23
US513790P 2003-10-23
US59980704P 2004-08-06 2004-08-06
US599807P 2004-08-06
US91833304A 2004-08-13 2004-08-13
US918333 2004-08-13
US10/918,855 US8321506B2 (en) 2003-10-23 2004-08-14 Architecture for an extensible real-time collaboration system

Publications (2)

Publication Number Publication Date
DE602004007864D1 DE602004007864D1 (de) 2007-09-13
DE602004007864T2 true DE602004007864T2 (de) 2008-04-17

Family

ID=34397195

Family Applications (1)

Application Number Title Priority Date Filing Date
DE602004007864T Expired - Lifetime DE602004007864T2 (de) 2003-10-23 2004-10-20 Architektur für ein ausdehnbares Echtzeitzusammenarbeitssystem

Country Status (11)

Country Link
US (1) US8321506B2 (de)
EP (1) EP1526695B1 (de)
JP (1) JP2005202926A (de)
KR (1) KR101137099B1 (de)
CN (1) CN100566335C (de)
AT (1) ATE369002T1 (de)
AU (1) AU2004222762B2 (de)
BR (1) BRPI0404468A (de)
CA (1) CA2485763C (de)
DE (1) DE602004007864T2 (de)
MX (1) MXPA04010559A (de)

Families Citing this family (104)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658091B1 (en) 2002-02-01 2003-12-02 @Security Broadband Corp. LIfestyle multimedia security system
US8321506B2 (en) 2003-10-23 2012-11-27 Microsoft Corporation Architecture for an extensible real-time collaboration system
US20050089023A1 (en) * 2003-10-23 2005-04-28 Microsoft Corporation Architecture for an extensible real-time collaboration system
US7571245B2 (en) * 2003-12-19 2009-08-04 International Business Machines Corporation System and method for delivering the streaming of audio-video using external resources
US11343380B2 (en) 2004-03-16 2022-05-24 Icontrol Networks, Inc. Premises system automation
US11368327B2 (en) 2008-08-11 2022-06-21 Icontrol Networks, Inc. Integrated cloud system for premises automation
US10348575B2 (en) 2013-06-27 2019-07-09 Icontrol Networks, Inc. Control system user interface
US11811845B2 (en) 2004-03-16 2023-11-07 Icontrol Networks, Inc. Communication protocols over internet protocol (IP) networks
US10339791B2 (en) 2007-06-12 2019-07-02 Icontrol Networks, Inc. Security network integrated with premise security system
US7711796B2 (en) 2006-06-12 2010-05-04 Icontrol Networks, Inc. Gateway registry methods and systems
US9141276B2 (en) 2005-03-16 2015-09-22 Icontrol Networks, Inc. Integrated interface for mobile device
US9191228B2 (en) 2005-03-16 2015-11-17 Icontrol Networks, Inc. Cross-client sensor user interface in an integrated security network
US10721087B2 (en) 2005-03-16 2020-07-21 Icontrol Networks, Inc. Method for networked touchscreen with integrated interfaces
US11368429B2 (en) 2004-03-16 2022-06-21 Icontrol Networks, Inc. Premises management configuration and control
US8635350B2 (en) 2006-06-12 2014-01-21 Icontrol Networks, Inc. IP device discovery systems and methods
US8988221B2 (en) 2005-03-16 2015-03-24 Icontrol Networks, Inc. Integrated security system with parallel processing architecture
US9729342B2 (en) 2010-12-20 2017-08-08 Icontrol Networks, Inc. Defining and implementing sensor triggered response rules
WO2005091218A2 (en) 2004-03-16 2005-09-29 Icontrol Networks, Inc Premises management system
US10237237B2 (en) 2007-06-12 2019-03-19 Icontrol Networks, Inc. Communication protocols in integrated systems
US9531593B2 (en) 2007-06-12 2016-12-27 Icontrol Networks, Inc. Takeover processes in security network integrated with premise security system
US11916870B2 (en) 2004-03-16 2024-02-27 Icontrol Networks, Inc. Gateway registry methods and systems
US10382452B1 (en) * 2007-06-12 2019-08-13 Icontrol Networks, Inc. Communication protocols in integrated systems
US11244545B2 (en) 2004-03-16 2022-02-08 Icontrol Networks, Inc. Cross-client sensor user interface in an integrated security network
US12063220B2 (en) 2004-03-16 2024-08-13 Icontrol Networks, Inc. Communication protocols in integrated systems
US11582065B2 (en) 2007-06-12 2023-02-14 Icontrol Networks, Inc. Systems and methods for device communication
US10142392B2 (en) 2007-01-24 2018-11-27 Icontrol Networks, Inc. Methods and systems for improved system performance
US11113950B2 (en) 2005-03-16 2021-09-07 Icontrol Networks, Inc. Gateway integrated with premises security system
US10444964B2 (en) 2007-06-12 2019-10-15 Icontrol Networks, Inc. Control system user interface
US11316958B2 (en) 2008-08-11 2022-04-26 Icontrol Networks, Inc. Virtual device systems and methods
US11201755B2 (en) 2004-03-16 2021-12-14 Icontrol Networks, Inc. Premises system management using status signal
US10313303B2 (en) 2007-06-12 2019-06-04 Icontrol Networks, Inc. Forming a security network including integrated security system components and network devices
US10156959B2 (en) 2005-03-16 2018-12-18 Icontrol Networks, Inc. Cross-client sensor user interface in an integrated security network
US11677577B2 (en) 2004-03-16 2023-06-13 Icontrol Networks, Inc. Premises system management using status signal
US11159484B2 (en) 2004-03-16 2021-10-26 Icontrol Networks, Inc. Forming a security network including integrated security system components and network devices
US10522026B2 (en) 2008-08-11 2019-12-31 Icontrol Networks, Inc. Automation system user interface with three-dimensional display
US11277465B2 (en) 2004-03-16 2022-03-15 Icontrol Networks, Inc. Generating risk profile using data of home monitoring and security system
US10062273B2 (en) 2010-09-28 2018-08-28 Icontrol Networks, Inc. Integrated security system with parallel processing architecture
US10200504B2 (en) 2007-06-12 2019-02-05 Icontrol Networks, Inc. Communication protocols over internet protocol (IP) networks
US10375253B2 (en) 2008-08-25 2019-08-06 Icontrol Networks, Inc. Security system with networked touchscreen and gateway
US20090077623A1 (en) 2005-03-16 2009-03-19 Marc Baum Security Network Integrating Security System and Network Devices
US8963713B2 (en) 2005-03-16 2015-02-24 Icontrol Networks, Inc. Integrated security network with security alarm signaling system
US9609003B1 (en) 2007-06-12 2017-03-28 Icontrol Networks, Inc. Generating risk profile using data of home monitoring and security system
US11489812B2 (en) 2004-03-16 2022-11-01 Icontrol Networks, Inc. Forming a security network including integrated security system components and network devices
US7580867B2 (en) * 2004-05-04 2009-08-25 Paul Nykamp Methods for interactively displaying product information and for collaborative product design
US20060161620A1 (en) * 2004-12-30 2006-07-20 Microsoft Corporation Extensible activities within collaboration sessions
US20120324566A1 (en) 2005-03-16 2012-12-20 Marc Baum Takeover Processes In Security Network Integrated With Premise Security System
US11700142B2 (en) 2005-03-16 2023-07-11 Icontrol Networks, Inc. Security network integrating security system and network devices
US10999254B2 (en) 2005-03-16 2021-05-04 Icontrol Networks, Inc. System for data routing in networks
US20110128378A1 (en) 2005-03-16 2011-06-02 Reza Raji Modular Electronic Display Platform
US20170180198A1 (en) 2008-08-11 2017-06-22 Marc Baum Forming a security network including integrated security system components
US11496568B2 (en) 2005-03-16 2022-11-08 Icontrol Networks, Inc. Security system with networked touchscreen
US11615697B2 (en) 2005-03-16 2023-03-28 Icontrol Networks, Inc. Premise management systems and methods
US9306809B2 (en) 2007-06-12 2016-04-05 Icontrol Networks, Inc. Security system with networked touchscreen
US7925701B2 (en) * 2005-07-25 2011-04-12 Sony Ericsson Mobile Communications Ab Mobile communication terminal supporting information sharing
JP4643430B2 (ja) * 2005-12-14 2011-03-02 富士通株式会社 通信プログラム、通信方法および通信装置
US7614060B2 (en) * 2006-04-28 2009-11-03 Microsoft Corporation Unified concept of presence
US10079839B1 (en) 2007-06-12 2018-09-18 Icontrol Networks, Inc. Activation of gateway device
US12063221B2 (en) 2006-06-12 2024-08-13 Icontrol Networks, Inc. Activation of gateway device
GB0616613D0 (en) * 2006-08-22 2006-10-04 Ibm Data processing system using matching engine and routing switch
US8817668B2 (en) * 2006-09-15 2014-08-26 Microsoft Corporation Distributable, scalable, pluggable conferencing architecture
US8150798B2 (en) 2006-10-10 2012-04-03 Wells Fargo Bank, N.A. Method and system for automated coordination and organization of electronic communications in enterprises
US11706279B2 (en) 2007-01-24 2023-07-18 Icontrol Networks, Inc. Methods and systems for data communication
US20080183645A1 (en) * 2007-01-31 2008-07-31 Microsoft Corporation Media continuity service between devices
US7633385B2 (en) 2007-02-28 2009-12-15 Ucontrol, Inc. Method and system for communicating with and controlling an alarm system from a remote server
US8010093B2 (en) 2007-03-08 2011-08-30 Infineon Technologies Ag Communication network unit and method for exchanging capability information
US8451986B2 (en) 2007-04-23 2013-05-28 Icontrol Networks, Inc. Method and system for automatically providing alternate network access for telecommunications
US10616075B2 (en) 2007-06-12 2020-04-07 Icontrol Networks, Inc. Communication protocols in integrated systems
US10498830B2 (en) 2007-06-12 2019-12-03 Icontrol Networks, Inc. Wi-Fi-to-serial encapsulation in systems
US10423309B2 (en) 2007-06-12 2019-09-24 Icontrol Networks, Inc. Device integration framework
US11237714B2 (en) 2007-06-12 2022-02-01 Control Networks, Inc. Control system user interface
US10389736B2 (en) 2007-06-12 2019-08-20 Icontrol Networks, Inc. Communication protocols in integrated systems
US11089122B2 (en) 2007-06-12 2021-08-10 Icontrol Networks, Inc. Controlling data routing among networks
US10523689B2 (en) 2007-06-12 2019-12-31 Icontrol Networks, Inc. Communication protocols over internet protocol (IP) networks
US11218878B2 (en) 2007-06-12 2022-01-04 Icontrol Networks, Inc. Communication protocols in integrated systems
US11423756B2 (en) 2007-06-12 2022-08-23 Icontrol Networks, Inc. Communication protocols in integrated systems
US11212192B2 (en) 2007-06-12 2021-12-28 Icontrol Networks, Inc. Communication protocols in integrated systems
US10051078B2 (en) 2007-06-12 2018-08-14 Icontrol Networks, Inc. WiFi-to-serial encapsulation in systems
US10666523B2 (en) 2007-06-12 2020-05-26 Icontrol Networks, Inc. Communication protocols in integrated systems
US12003387B2 (en) 2012-06-27 2024-06-04 Comcast Cable Communications, Llc Control system user interface
US11601810B2 (en) 2007-06-12 2023-03-07 Icontrol Networks, Inc. Communication protocols in integrated systems
US11646907B2 (en) 2007-06-12 2023-05-09 Icontrol Networks, Inc. Communication protocols in integrated systems
US11316753B2 (en) 2007-06-12 2022-04-26 Icontrol Networks, Inc. Communication protocols in integrated systems
US8583733B2 (en) * 2007-08-17 2013-11-12 Microsoft Corporation Real time collaboration file format for unified communication
US11831462B2 (en) 2007-08-24 2023-11-28 Icontrol Networks, Inc. Controlling data routing in premises management systems
US11916928B2 (en) 2008-01-24 2024-02-27 Icontrol Networks, Inc. Communication protocols over internet protocol (IP) networks
US20170185278A1 (en) 2008-08-11 2017-06-29 Icontrol Networks, Inc. Automation system user interface
US10530839B2 (en) 2008-08-11 2020-01-07 Icontrol Networks, Inc. Integrated cloud system with lightweight gateway for premises automation
US11729255B2 (en) 2008-08-11 2023-08-15 Icontrol Networks, Inc. Integrated cloud system with lightweight gateway for premises automation
US11258625B2 (en) 2008-08-11 2022-02-22 Icontrol Networks, Inc. Mobile premises automation platform
US11758026B2 (en) 2008-08-11 2023-09-12 Icontrol Networks, Inc. Virtual device systems and methods
US11792036B2 (en) 2008-08-11 2023-10-17 Icontrol Networks, Inc. Mobile premises automation platform
US8638211B2 (en) 2009-04-30 2014-01-28 Icontrol Networks, Inc. Configurable controller and interface for home SMA, phone and multimedia
US20110154222A1 (en) * 2009-12-18 2011-06-23 Microsoft Corporation Extensible mechanism for conveying feature capabilities in conversation systems
WO2011143273A1 (en) 2010-05-10 2011-11-17 Icontrol Networks, Inc Control system user interface
US9799004B2 (en) 2010-07-30 2017-10-24 Avaya Inc. System and method for multi-model, context-aware visualization, notification, aggregation and formation
US8836467B1 (en) 2010-09-28 2014-09-16 Icontrol Networks, Inc. Method, system and apparatus for automated reporting of account and sensor zone information to a central station
US11750414B2 (en) 2010-12-16 2023-09-05 Icontrol Networks, Inc. Bidirectional security sensor communication for a premises security system
US9147337B2 (en) 2010-12-17 2015-09-29 Icontrol Networks, Inc. Method and system for logging security event data
US20140115069A1 (en) * 2012-10-22 2014-04-24 International Business Machines Corporation Generating a user unavailability alert in a collaborative environment
US9395955B2 (en) 2013-03-18 2016-07-19 Jayarama Marks Programming system and method
US11146637B2 (en) 2014-03-03 2021-10-12 Icontrol Networks, Inc. Media content management
US11405463B2 (en) 2014-03-03 2022-08-02 Icontrol Networks, Inc. Media content management
US10491641B2 (en) * 2015-02-20 2019-11-26 T-Mobile Usa, Inc. Inter-IMS service support in telecommunication systems
JP2022170173A (ja) * 2021-04-28 2022-11-10 オムロン株式会社 情報処理装置、方法およびプログラム

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5097533A (en) 1988-11-29 1992-03-17 International Business Machines Corporation System and method for interfacing computer application programs written in different languages to a software system
JPH03158947A (ja) * 1989-11-17 1991-07-08 Nec Corp 通信制御方式
JP2763663B2 (ja) * 1990-07-24 1998-06-11 株式会社ケンウッド 光ディスク記録再生装置のレーザ駆動回路
US5327558A (en) 1992-04-30 1994-07-05 Motorola, Inc. Method for asynchronous application communication
GB2272311A (en) 1992-11-10 1994-05-11 Ibm Call management in a collaborative working network.
US5872923A (en) * 1993-03-19 1999-02-16 Ncr Corporation Collaborative video conferencing system
US5576629A (en) * 1994-10-24 1996-11-19 Fourth State Technology, Inc. Plasma monitoring and control method and system
US5724508A (en) 1995-03-09 1998-03-03 Insoft, Inc. Apparatus for collaborative computing
JPH1040080A (ja) 1996-07-26 1998-02-13 Nec Corp オープンビジネス共通基盤装置
KR100227151B1 (ko) 1997-01-09 1999-10-15 진교문 다중점 통신을 지원하는 응용프로그램 공유 방법
US6167395A (en) 1998-09-11 2000-12-26 Genesys Telecommunications Laboratories, Inc Method and apparatus for creating specialized multimedia threads in a multimedia communication center
US7073172B2 (en) 1998-09-21 2006-07-04 Microsoft Corporation On demand patching of applications via software implementation installer mechanism
JP2000250756A (ja) 1999-03-02 2000-09-14 Mitsubishi Electric Corp 監視データ処理ソフトウェア開発用フレームワーク
US6748420B1 (en) 1999-11-23 2004-06-08 Cisco Technology, Inc. Methods and apparatus for providing shared access to an application
JP2001282952A (ja) 2000-03-30 2001-10-12 Namco Ltd クライアント・コンピュータ、サーバ・コンピュータ、ネットワーク・ランキング・システム、ネットワーク・ランキング方法、課題処理方法および記録媒体
EP1158740B1 (de) * 2000-05-24 2009-09-16 Sony Deutschland GmbH Dienstqualitätsunterhandlung
CA2409920C (en) 2000-06-22 2013-05-14 Microsoft Corporation Distributed computing services platform
US20020032730A1 (en) 2000-09-11 2002-03-14 Rami Amit System and method for correlating data sessions
US20020069263A1 (en) 2000-10-13 2002-06-06 Mark Sears Wireless java technology
US20040249811A1 (en) 2000-12-14 2004-12-09 Shostack Ronald N. Web based dating service with filter for filtering potential friends/mates using physical and/or personality attractiveness criteria
US20030009603A1 (en) 2000-12-27 2003-01-09 Ruths Derek Augustus Samuel System and method for managing collaborative data representations
US20030018719A1 (en) 2000-12-27 2003-01-23 Ruths Derek Augustus Samuel Data-centric collaborative computing platform
US7155681B2 (en) 2001-02-14 2006-12-26 Sproqit Technologies, Inc. Platform-independent distributed user interface server architecture
AUPR459901A0 (en) * 2001-04-27 2001-05-24 Sharinga Networks Inc. Instant messaging
US7353252B1 (en) 2001-05-16 2008-04-01 Sigma Design System for electronic file collaboration among multiple users using peer-to-peer network topology
US20030014488A1 (en) * 2001-06-13 2003-01-16 Siddhartha Dalal System and method for enabling multimedia conferencing services on a real-time communications platform
JP4233775B2 (ja) 2001-07-06 2009-03-04 インターナショナル・ビジネス・マシーンズ・コーポレーション データ通信方法、データ通信システムおよびプログラム
US20030041108A1 (en) 2001-08-22 2003-02-27 Henrick Robert F. Enhancement of communications by peer-to-peer collaborative web browsing
US7054648B2 (en) 2001-10-22 2006-05-30 Telefonaktiebolaget Lm Ericsson (Publ) Location privacy proxy server and method in a telecommunication network
US7124080B2 (en) 2001-11-13 2006-10-17 Microsoft Corporation Method and apparatus for adapting a class entity dictionary used with language models
US7535915B2 (en) 2001-12-31 2009-05-19 Samsung Electronics Co., Ltd. System and method for scalable and redundant SIP message routing in an IP multimedia subsystem
US20030144892A1 (en) 2002-01-29 2003-07-31 International Business Machines Corporation Method, system, and storage medium for providing knowledge management services
WO2003083692A1 (en) * 2002-03-27 2003-10-09 First Virtual Communications System and method for traversing firewalls with protocol communications
US7340745B2 (en) 2002-06-25 2008-03-04 Sun Microsystems, Inc. Systems and methods for mapping API calls
US7926066B2 (en) 2002-07-09 2011-04-12 Openpages, Inc. Adaptive content platform and application integration with the platform
US20040093595A1 (en) 2002-08-08 2004-05-13 Eric Bilange Software application framework for network-connected devices
AU2003295515A1 (en) 2002-11-11 2004-06-03 Supracomm, Inc. Multicast videoconferencing
US20040107256A1 (en) 2002-12-02 2004-06-03 Thomas Odenwald Collaboration integration
WO2004062227A2 (en) 2003-01-06 2004-07-22 Koninklijke Philips Electronics N.V. Multi-factor application selection
US7765551B2 (en) 2003-02-10 2010-07-27 Novell, Inc. System for dynamically loading application resources from the first server to the second server based on the modified application resources from the first server
US7360164B2 (en) 2003-03-03 2008-04-15 Sap Ag Collaboration launchpad
US7444425B2 (en) * 2003-03-10 2008-10-28 Meetrix, Inc. Applying multicast protocols and VPN tunneling techniques to achieve high quality of service for real time media transport across IP networks
US8375082B2 (en) 2003-04-17 2013-02-12 Hewlett-Packard Development Company, L.P. Communications systems and methods
US7366163B1 (en) 2003-04-25 2008-04-29 At&T Corp. Method for providing local and toll services with LNP, and toll-free services to a calling party which originates the call from an IP location connected to a sip-enabled IP network
US20040236639A1 (en) 2003-05-20 2004-11-25 Arun Candadai Dynamic data collaboration
US20050089023A1 (en) 2003-10-23 2005-04-28 Microsoft Corporation Architecture for an extensible real-time collaboration system
US8321506B2 (en) 2003-10-23 2012-11-27 Microsoft Corporation Architecture for an extensible real-time collaboration system

Also Published As

Publication number Publication date
EP1526695A1 (de) 2005-04-27
JP2005202926A (ja) 2005-07-28
CN1668038A (zh) 2005-09-14
AU2004222762B2 (en) 2010-03-04
ATE369002T1 (de) 2007-08-15
US20050091435A1 (en) 2005-04-28
CN100566335C (zh) 2009-12-02
DE602004007864D1 (de) 2007-09-13
CA2485763C (en) 2012-06-26
KR101137099B1 (ko) 2012-04-19
CA2485763A1 (en) 2005-04-23
EP1526695B1 (de) 2007-08-01
US8321506B2 (en) 2012-11-27
KR20050039596A (ko) 2005-04-29
BRPI0404468A (pt) 2005-06-21
AU2004222762A1 (en) 2005-05-12
MXPA04010559A (es) 2006-09-04

Similar Documents

Publication Publication Date Title
DE602004007864T2 (de) Architektur für ein ausdehnbares Echtzeitzusammenarbeitssystem
CN1703690B (zh) 用于会议控制中成员资格管理的侧信道
DE60210343T2 (de) Persönlicher benutzer-agent
DE69927713T2 (de) Angekündigte Sitzungsbeschreibung
DE60104532T2 (de) Proxy-vorrichtung und -verfahren
DE102010010689B4 (de) Join-US-Anruferprotokoll- und Anruferbeantwortungsnachrichten
DE102011101961B4 (de) SIP-Überwachungs-und Steuerungsankerpunkte
DE112006001922B4 (de) Verfahren und Vorrichtung zur Vergabe von Zugangsberechtigungen ("Floor-Control") in einem Kommunikationssystem
DE102004053597B4 (de) Verfahren zum automatischen Erzeugen und/oder Steuern einer Telekommunikations-Konferenz mit einer Vielzahl von Teilnehmern, Telekommunikations-Konferenz-Endgerät und Telekommunikations-Konferenz-Servereinrichtung
DE102011101963B4 (de) SIP-Ankerpunkte zum Belegen von gemeinsamen Kommunikationsprotokollen
DE102007028810A1 (de) System und Verfahren zum Bereitstellen einer Merkmalsvermittlung und -abstimmung in Internetprotokoll-Dienstenetzen
DE69917925T2 (de) Steuerung einer angekündigten sitzung
DE102011119387A1 (de) Verfahren und System zur automatischen Konferenzverbindungssitzungsmigration
DE102007056725A1 (de) Verfahren zum bedingten Aufbauen einer Telekommunikationskonferenzsitzung, Telekommunikationskonferenz-Anordnung, und Telekommunikationskonferenzsitzungs-Server
DE102011122179A1 (de) Hochgradig skalierbarer und verteilter Anruf-/Medienmodellierungs- und -Steuerungsrahmen
DE102012001394A1 (de) Gemeinsamer Medienzugang für Echtzeit-Erst- und Drittparteisteuerung
DE102011114277B4 (de) Globaler Konferenzplan für verteilte Brücken
US20060161620A1 (en) Extensible activities within collaboration sessions
DE102007058948A1 (de) Verfahren zum Ermitteln von mindestens einem Teilnehmergerät für eine Telekommunikationskonferenzsitzung, Telekommunikationskonferenz-Anordnung, und Telekommunikationskonferenzsitzungs-Server
Wu et al. Design and Implementation of A Collaboration Web-services system
DE102008029142B3 (de) Verfahren zur Ermittlung aktiver Kommunikationssitzungen und Kommunikationssitzungs-Informationsserver
Wu et al. A Web-services based conference control framework for heterogenous A/V collaboration
RU2377640C2 (ru) Архитектура для расширяемой системы совместной работы в реальном времени
DE102005013919B4 (de) Verfahren zum rechnergestützten Verwalten einer Telekommunikations-Konferenz und Telekommunikations-Konferenz-Servereinrichtungen
DE10345074A1 (de) Verfahren zum Aufbau und Betrieb einer Kommunikationsverbindung zwischen zumindest drei Teilnehmern in einem direktkommunizierenden Kommunikationsnetzwerk und Kommunikationsendgerät für ein direktkommunizierendes Kommunikationsnetzwerk

Legal Events

Date Code Title Description
8364 No opposition during term of opposition