DE60038705T2 - Verfahren und vorrichtung für die aktivitäts-basierte zusammenarbeit eines rechnersystems, ausgestattet mit einem kommunikations-manager - Google Patents

Verfahren und vorrichtung für die aktivitäts-basierte zusammenarbeit eines rechnersystems, ausgestattet mit einem kommunikations-manager Download PDF

Info

Publication number
DE60038705T2
DE60038705T2 DE60038705T DE60038705T DE60038705T2 DE 60038705 T2 DE60038705 T2 DE 60038705T2 DE 60038705 T DE60038705 T DE 60038705T DE 60038705 T DE60038705 T DE 60038705T DE 60038705 T2 DE60038705 T2 DE 60038705T2
Authority
DE
Germany
Prior art keywords
network
deltas
local
relay
data
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
DE60038705T
Other languages
English (en)
Other versions
DE60038705D1 (de
Inventor
Raymond E. Manchester Ozzie
Kenneth G. Westford MOORE
Robert H. Newton MYHILL
Brian M. North Andover LAMBERT
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
Application granted granted Critical
Publication of DE60038705D1 publication Critical patent/DE60038705D1/de
Publication of DE60038705T2 publication Critical patent/DE60038705T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1813Arrangements for providing special services to substations for broadcast or conference, e.g. multicast for computer conferences, e.g. chat rooms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/131Protocols for games, networked simulations or virtual reality
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • 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
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Description

  • Erfindungsgebiet
  • Die Erfindung betrifft allgemein Computer, die miteinander für die Kommunikation über ein Netz, wie z. B. das Internet und Intranetze, verbunden sind, und insbesondere ein verteiltes computerbasiertes System für das Koordinieren und anderweitige Vorhalten von Daten entsprechend einem verteilten Datenmodell.
  • Stand der Technik
  • Das Internet hat sich als eine dynamische öffentliche Umgebung für die Kommunikation und Interaktion unter seinen Millionen von Nutzern etabliert. In der Wirtschaft hat das Internet die Beziehungen Lieferant-Hersteller, Hersteller-Vertrieb, Vertrieb-Kunde und andere neu definiert. Mit der Erweiterung der Internet-Technologie auf innere, geschützte Netze einzelner Unternehmen hat das "Intranet" oder "private Internet", wie es genannt wird, neue Formen der gemeinsamen Nutzung von Dokumenten und Informationen zwischen einzelnen Mitarbeitern und Arbeitsgruppen unter Verwendung des Unternehmens-Dateiverzeichnisses und der Netz-Infrastruktur ermöglicht. Online-Dienstleistungen, wie z. B. elektronische Anzeigetafeln und Chat-Räume, Elektronikkommerz und technische Kundenbetreuung für Produkte, sind im World Wide Web ("WWW" oder "Web"), das über das Internet funktioniert, verfügbar.
  • Das Internet weist in seinem Kern eine Server-Client-Architektur auf, in der einzelne Clients (d. h. Nutzer von Internetinhalten) über computerausführbare Anwendungen, wie z. B. Browser, Verbindungen zu Servern (d. h. Anbietern von Internetinhalten) herstellen, um Dokumente von Websites zu erhalten. Browser sind Software-Programme, welche die Personalcomputer in die Lage versetzen, Internet-Dokumente anzufordern, zu empfangen (z. B. herunterzuladen), auszuwerten und darzustellen und allgemein im Internet zu navigieren. Webserver weisen üblicherweise Standardschnittstellen auf, um externe Programme laufen zu lassen, die gebräuchlichste ist die Common Gateway Interface (CGI). Websites sind Sammlungen von Dokumenten, die gewöhnlich aus einer Homepage und darauf bezogenen verbundenen Dokumenten bestehen, die auf Servern angeordnet sind, die vom Client entfernt liegen. Die Dokumente können Verbunddokumente sein, die Daten, Grafiken, Video, Ton und andere Medientypen sowie Verbindungen zu anderen Dokumenten enthalten. Im Wesentlichen ist das WWW ein Netz von untereinander verbundenen Dokumenten oder, genauer gesagt, von Dokumentenobjekten, die an verschiedenen Stellen im Internet angeordnet sind.
  • Unter den Dokumentobjekttypen im WWW gibt es Dokumenten und Skripte. Ein Skript ist ein ausführbares Programm oder ein in einer Datei gespeicherter Befehlssatz, der durch einen Webserver ausgeführt werden kann, um ein Dokument zu erzeugen, das dann an den Webbrowser zurückgegeben wird. Typische Skriptaktionen schließen das Ausführen von Bibliotheksprogrammen oder anderen Anwendungen ein, um Informationen von einer Datei oder einer Datenbank zu erhalten oder eine Anforderung auszulösen, um Informationen von einem anderen Computer zu erhalten oder ein Dokument entsprechend einer ausgewählten Hypertext-Verbindung aufzufinden. Ein Skript läuft auf dem Webserver ab, wenn zum Beispiel ein Nutzer eine spezielle Hypertext-Verbindung im Webbrowser auswählt.
  • Der Internettechnologie liegen Fortschritte in der Standardisierung, einschließlich der Personalcomputer-Hardware, -Software, den Netzprotokollen und den Infrastrukturkonventionen (wie z. B. dem "Uniform Resource Locator" oder "URL") zugrunde. Die URLs stellen Standortadres sen für alle Dokumentenobjekte im WWW bereit. Eine URL verweist eindeutig auf ein Dokumentenobjekt und definiert oft einen Zugangsalgorithmus unter Verwendung von Internetprotokollen.
  • "Internetprotokolle", wie dieser Ausdruck hier verwendet wird, werden als aktuelle oder zukünftige Sprachkonventionen und vorhandene oder zukünftige Kommunikationsprotokolle definiert, die allgemein akzeptiert sind und verwendet werden, um Nachrichten unter Einschluss von Dokumenten zur Übertragung über das Internet zu erzeugen, bzw. um derartige Nachrichten über das Internet zu senden. Derartige Sprachkonventionen umfassen gegenwärtig zum Beispiel die Hypertext Markup Language ("HTML") und die eXtensible Markup Language ("XML"). Derartige Kommunikationsprotokolle umfassen gegenwärtig zum Beispiel das Hypertext Transfer Protocol ("HTTP"), TCP/IP, FTP, GOPHER, NetBros, SPX/IPXTM und AppleTalkTM. Eine grundlegende Anforderung des Kommunikationsprotokolls besteht darin, dass es das Etablieren von zuverlässig oder nicht zuverlässig angewiesenen Sitzungen zwischen adressierbaren Netzeinrichtungen unterstützt. Fachleute werden mit diesen Sprachkonventionen und Protokollen vertraut sein.
  • HTML ist eine Sprache, die zum Schreiben von Hypertext-Dokumenten verwendet wird, die Multimedia-Inhalte und Verbindungen zu anderen Dokumenten enthalten. Ein HTML-Dokument enthält einen hierarchischen Satz von Auszeichnungselementen, wobei die meisten Elemente eine Startmarkierung gefolgt von Inhalt und gefolgt von einer Endemarkierung aufweisen. Die Markierungen sind in spitzen Klammern ("<" und ">") eingeschlossen und zeigen an, wie das Dokument strukturiert ist und wie das Dokument darzustellen ist, sowie die Bestimmungsziele und Kennzeichnungen für Hypertext-Verbindungen. Es gibt Markierungen für Auszeichnungselemente, wie z. B. Titel, Dateiköpfe, Textattribute, wie z. B. fett und kursiv, Verzeichnisse, Abschnittsgrenzen, Verbindungen nach außen zu anderen Dokumenten und innere Verbindungen zu anderen Teilen desselben Dokuments, grafische Ansichten und viele andere Dokumentenmerkmale. Es sind viele Bücher zur Programmierung unter Verwendung von HTML in Umlauf.
  • XML ist eine weitere Sprachkonvention, die in den Internetprotokollen enthalten ist. XML ist zumindest in seiner gegenwärtigen Version mit HTML kompatibel und ergänzt es. Es ist ein Standardweg zur Beschreibung von Datenobjekten, wie sie in Computer gespeichert sind, welche als XML-Datenobjekte bezeichnet werden, und des Verhaltens von Programmen, die diese Objekte verarbeiten. XML-Dokumente sind aus Speichereinheiten aufgebaut, die als Entitäten bezeichnet werden, die entweder Text oder Binärdaten enthalten. Text ist aus Zeichen aufgebaut, von denen einige den Zeicheninhalt des Dokuments und einige die Auszeichnung bilden. Die Auszeichnung codiert eine Beschreibung des Dokuments, wie z. B. seinen Speicherbelegungsplan und die logische Struktur. Ein Software-Modul, das als ein XML-Prozessor bezeichnet wird, wird verwendet, um XML-Dokumente zu lesen und einen Zugriff auf ihren Inhalt und ihre Struktur bereitzustellen.
  • Ein Webserver und ein Webbrowser kommunizieren normalerweise unter Verwendung des HTTP-Nachrichtenprotokolls und des zugrundeliegenden TCP/IP-Datentransportprotokolls des Internets. Im HTTP stellt der Webbrowser einen Anschluss an einen Webserver her und sendet eine HTTP-Anforderungsnachricht an den Server. In Reaktion auf die Anforderungsnachricht überprüft der Webserver die Autorisierung, führt eine beliebige angeforderte Aktion aus, wie z. B. das Herunterladen eines durch seine URL identifizierten Dokuments, und sendet eine HTTP-Antwortnachricht zurück, die entweder das HTML-Dokument enthält, das aus der angeforderten Aktion hervorgeht, oder eine Fehlernachricht. Das zurückgesendete Dokument kann einfach eine statische Datei sein, die auf dem Webserver gespeichert ist, oder es kann unter Verwendung eines Skripts, das in Reaktion auf die Anforderungsnachricht aufgerufen wird, dynamisch erzeugt werden.
  • Netze, die das TCP/IP-Protokoll verwenden, leiten die Nachrichten auf Basis von Internet-Protokoll(IP)-Adressen der Bestimmungszielvorrichtungen weiter. Die IP-Adressen halten ein festgelegtes Format ein, das zurzeit eine numerische Adresse von 32 Bit enthält, die als vier Zahlen geschrieben wird, die durch Punkte abgetrennt sind. Jede Vorrichtung auf einem Netz hat eine eindeutige IP-Adresse, die für die Kommunikation über das Netz verwendet wird. Es ist vorgesehen, dass der Begriff "IP-Adresse", wie er nachfolgend verwendet wird, im Abhängigkeit vom Kontext das Adressieren in Übereinstimmung mit gegenwärtigen und zukünftigen Internetprotokollen umfasst.
  • Um sich das Internet zunutze zu machen, wurden Werkzeuge und Hilfsmittel in Übereinstimmung mit den Internetprotokollen, einschließlich der für die Gesellschaft wegweisenden Anwendungen, wie z. B. des E-Mail, entwickelt. E-Mail ist eine elektronische Post, mit deren Hilfe Dokumente elektronisch an ausgewählten Adressen gesendet und empfangen werden. Es wurde eingeschätzt, dass die überwiegende Mehrheit der auf dem Internet beruhenden Interaktionen über die Verwendung des E-Mail und anderer auf dem Browser beruhenden Medien abläuft, die einem Modell „Senden und Empfangen von Dokumenten" folgen. Vielleicht wegen dieses Modells nehmen die Nutzer das Internet oft so wahr, als liege ihm das "Peer-zu-Peer"-Prinzip zugrunde, wobei Individuen ohne Einmischung durch eine höhere Autorität auf Dokumente zugreifen, die durch andere Individuen bereitgestellt wurden.
  • Das Internet ist bei der Bereitstellung unterhaltsamer und nützlicher Kommunikationsformen für die Nutzer dynamisch und flexibel, kommt jedoch nicht allen Bedürfnissen der Nutzer nach. Obwohl die Nutzer zunehmend über das Internet Wechselwirken, setzen sie ihre Wechselwirkungen "außerhalb" des Internets auf gebräuchlicheren Wegen fort, wie z. B. durch multimediale (Telefon, Fax, Weißwandtafel), multitemporale (Echtzeit, Postzustellung über Nacht) und andere informelle Kommunikationsmittel.
  • Es wäre wünschenswert, das Internet-Modell auf persönliche und private Kommunikationen sowie andere gemeinsame und wechselseitige Aktivitäten zwischen Individuen und Kleingruppen in gemeinsam genutzten privaten Räumen auszudehnen. Solche Wechselwirkungen sollten vorzugsweise momentan, direkt und vertraulich zwischen den Personalcomputern der Teilnehmer oder anderen netzfähigen Vorrichtungen der Teilnehmer stattfinden, ohne dass derartige Wechselwirkungen den Engstellen der Server ausgesetzt sind, durch welche der Internetverkehr üblicherweise zu den Websites Dritter geschleust wird, wo die Kommunikation abgehört und die Vertraulichkeit verletzt werden kann.
  • Es wäre auch wünschenswert, ein Verfahren bereitzustellen, dass es Nutzern an verschiedenen entfernt liegenden Stellen ermöglicht, Dokumente auf einer Peer-zu-Peer-Basis gemeinsam zu nutzen und zu bearbeiten, wobei übereinstimmende Kopien der Dokumente an den lokalen Standorten aufbewahrt werden. Ein derartiges Verfahren sollte es jedem Nutzer erlauben, Änderungsanforderungen bezüglich der Dokumente auszugeben, wobei die Änderungen an den Kopien asynchron an allen lokalen Standorten in einer abgestimmten Weise ausgeführt werden können, selbst wenn die Standorte bei der Ausgabe der Änderungsanforderungen vom Netz getrennt sind.
  • In GB-A-2 303 946 wird ein Datenkonferenzsystem offenbart, das eine Anzahl von Computer-Arbeitsstationen enthält, die durch ein Datennetz verbunden sind. Jede Computer-Arbeitsstation ist in der Lage, eine elektronische Tafel zu speichern und darzustellen, die logisch in einen Satz von Zellen unterteilt ist, von denen jede getrennt bearbeitet werden kann. Um die Konsistenz der elektronischen Tafel zu erhalten, ist es wichtig, dass die Bearbeitungen auf der elektronischen Tafel an jeder Arbeitsstation in der gleichen Reihenfolge ausgeführt werden, welche ein Seriali sierungstyp ist. Dieses Problem kann gelöst werden, indem ein "Token" verwendet wird, der im Netz umläuft. Eine mitarbeitende Computer-Arbeitsstation kann Änderungen nur dann ausführen, wenn sie den Token besitzt. Nach dem Ausführen einer Änderung wartet die Computer-Arbeitsstation, bis die Änderung von allen anderen Computer anerkannt ist, bevor sie den Token freigibt.
  • In WO 94/19751 wird ein objektorientiertes, auf Zusammenarbeit beruhendes Arbeitssystem offenbart, das eine Rahmenarchitektur verwendet, um einen gleichzeitigen Zugriff auf eine Rahmenanwendung durch mehrere Nutzer bereitzustellen. Die Nutzer können in der Anwendung zusammenarbeiten und gemeinsam ein Endprodukt erzeugen. Das System umfasst einen Benachrichtigungsrahmen zur Verbreitung von Änderungsinformationen zwischen den Objekten. Der Rahmen ermöglicht es den Objekten, ein Interesse an einer Benachrichtigung über Änderungen an den Objekten, von denen sie abhängen, zu äußern und die Benachrichtigung zu erhalten. Für die Benachrichtigungsklassen, welche den Clients die Benachrichtigung bereitstellen, ist eine Standardschnittstelle vorgesehen. Benachrichtigungsklassen stellen Benachrichtigungs-Quellobjekte mit Mitteln bereit, um die Clientlisten zu verwalten und um Benachrichtigungs-Quellobjekte an diese Clients abzusenden. Verknüpfungsobjekte stellen Mittel zum Senden der Benachrichtigungen von der benachrichtigenden Stelle an die Benachrichtigungs-Empfängerobjekte bereit, welche ein Interesse an spezifischen Daten äußern. Die Verknüpfungsobjekte ermöglichen auch eine Festlegung, wie die Benachrichtigungen den verschiedenen Empfängerklassen zugeleitet werden.
  • In US-A 5,806,075 wird ein Verfahren und eine Vorrichtung für die Peer-zu-Peer-Datenreplikation in einem Datenbanksystem offenbart. Die Datenreplikation wird zwischen den Datenstellen ausgeführt. Jede Datenstelle kann ein Datenserver oder ein beliebiges anderes Computersystem sein. Jede Datenstelle enthält eine Datenbank, und die Datenbanken verschie dener Datenstellen sind miteinander über Kommunikationsleitungen verbunden. In einem Anfangsstatus enthalten die Datenbanken identische Dateneingaben, die in Tabellen organisiert sind. Auf jede Datenbank ist ein freier Zugriff möglich, so dass verschiedene Modifizierungen der Dateneingaben erfolgen können. Datenmodifizierungen, die an einer lokalen Stelle ausgeführt wurden, werden an mehreren entfernt liegenden Stellen nachgebildet. Die Informationen bezüglich dieser Modifizierungen, z. B. Einfügen, Löschen oder Aktualisieren, sind in einem Satz von Replikationstabellen enthalten. Somit können die Modifizierungen an anderen Stellen sofort nach der ursprünglichen Modifizierung kopiert werden, oder sie können verzögert werden, bis die entfernt liegende Stelle verfügbar ist. Eine Replikation auf Prozedurebene stellt die Fähigkeit bereit, widersprüchliche Aktualisierungen zu ermitteln. Informationen bezüglich der ermittelten Widersprüche können in den Replikationstabellen festgehalten werden, und sie können sofort oder nachträglich verwendet werden, um auf die ermittelten Widersprüche einzugehen. Das System stellt die Fähigkeit bereit, beliebige ausgeführte Modifizierungen zurückzunehmen, sobald ein Widerspruch ermittelt wurde. Die Fernprozeduren verwenden die alten und neuen Werte aus der ursprünglichen Modifizierung, um die Modifizierungen an den entfernt liegenden Stellen nachzubilden und widersprüchliche Aktualisierungen aufzuspüren.
  • Kurzdarstellung der Erfindung
  • Die Erfindung stellt eine netzfähige Vorrichtung nach Anspruch 1 und ein Verfahren zum Bereitstellen eines Kommunikationsdienstes nach Anspruch 15 bereit.
  • Die Erfindung befindet sich in einer Einrichtung, die als eine Aktivität bezeichnet wird, welche in einem Personalcomputersystem, einer Kommunikationseinrichtung oder einer anderen netzfähigen Vorrichtung betrieben werden kann, um eine gemeinsame, anvisierte Aufgabe, wie zum Beispiel ein „Chat", Spiel oder eine kommerzielle Anwendung, mit anderen, entfernt positionier ten Nutzern auszuführen. Die Aktivität enthält ein Werkzeug, um in Reaktion auf Nutzerwechselwirkungen die Erzeugung von Datenänderungsanforderungen, die als Deltas bezeichnet werden, zu veranlassen. Die Aktivität weist auch eine Datenänderungsmaschine auf, um Daten in einem vorzugsweise nichtflüchtigen, beständigen Speicher entsprechend einem Datenmodell vorzuhalten. Die Datenänderungsmaschine umfasst ein Werkzeugende zum Empfang von Deltas aus dem Werkzeug, das die Deltas mit aktivitätsspezifischen Befehlen zum Ausführen der Anforderung versieht und das dem Werkzeug eine Benachrichtigung über Datenänderungen liefert, die durch die Delta-Ausführung verursacht wurden. Die Datenänderungsmaschine umfasst auch ein Dynamikmanagerende, um von einem Dynamikmanager Datenänderungsanweisungen zum Ausführen der Deltas zu empfangen, d. h. um die Befehle der Deltas auszuführen, so dass die angeforderten Änderungen der Daten erfolgen.
  • In einer weiteren Ausbildung befindet sich die Erfindung in einem System zum Bereitstellen von Kommunikationen und anderen gemeinsamen und wechselseitigen Aktivitäten zwischen Individuen und Kleingruppen in gemeinsam genutzten privaten Räumen, die als "Teleräume" bezeichnet werden. In dem System Wechselwirken Teilnehmer oder Mitglieder eines Teleraums über netzfähige Vorrichtungen, die miteinander über ein Netz, z. B. das Internet oder ein Intranet, in Verbindung stehen und individuell lokale Kopien der Teleraumdaten speichern können. Jeder Teleraum ist eine Instantiierung von einer oder mehreren Aktivitäten, die auf jeder der netzfähigen Vorrichtungen der Mitglieder des Teleraums betreibbar ist. Jede Aktivität enthält ein oder mehrere Werkzeuge, um Datenänderungsanforderungen oder Deltas, die auf Wechselwirkungen von Teleraummitgliedern zurückgehen, zu veranlassen. Jede Aktivität enthält getrennt von den Werkzeugen auch eine oder mehrere Datenänderungsmaschinen, um die lokale Kopie von Teleraumdaten in Übereinstimmung mit einem gemeinsamen Datenmodell aufrechtzuerhalten. Das Datenmodell ist zum Beispiel aktivitätsspezifisch und reicht vorzugsweise über den Teleraum hinweg. Jede netzfähige Vorrichtung enthält auch einen Dynamikmanager, um lokal Deltas zu erzeugen, um die Datenänderungsmaschine in Reaktion auf die Deltas anzuweisen, die Deltas auszuführen, indem die angeforderten Änderungen an der lokalen Datenkopie ausgeführt werden, und um das Ausführen der Deltas aus den verschiedenen netzfähigen Vorrichtungen zu koordinieren.
  • In noch einer weiteren Ausbildung kann die Erfindung in einem vernetzten System betrieben werden, das mehrere, vorzugsweise netzfähige Vorrichtungen an verschiedenen Orten aufweist, die für die Kommunikation vorzugsweise entsprechend den Internet-Protokollen verbunden sind. Jede netzfähige Vorrichtung weist auf (a) einen Speicher zum Speichern einer lokalen Kopie von aktivitätsbezogenen Daten gemäß einem gemeinsamen Datenmodell; (b) eine oder mehrere Aktivitäten, von denen jede ein oder mehrere Werkzeuge und die entsprechenden Datenänderungsmaschinen enthält, wie oben beschrieben ist; (c) einen Kommunikationsmanager, um zu veranlassen, dass die Deltas auf alle netzfähigen Vorrichtungen des vernetzten Systems aufgeteilt werden, die am Teleraum teilnehmen, zu dem die Deltas gehören; und (d) einen Dynamikmanager, um das Ausführen sowohl der lokal erzeugten als auch der fernerzeugten Deltas zu koordinieren. An einer beliebigen netzfähigen Vorrichtung des vernetzten Systems können die Nutzerwechselwechselwirkungen veranlasst und die resultierenden Deltas erzeugt werden, und die Deltas werden vorzugsweise über das Netz zu jeder Vorrichtung hin übertragen. Die Dynamikmanager weisen den Betrieb ihrer lokalen Datenänderungsmaschinen an, vorzugsweise bei der Ausführung der Deltas Prioritäten zu setzen und die weitgehende Konsistenz der Daten über das vernetzte System hinweg aufrechtzuerhalten. Das vernetzte System ermöglicht es so den Nutzern an den verschiedenen entfernt liegenden Stellen, die Daten auf einer Peer-zu-Peer-Basis z. B. gemeinsam zu nutzen, zu bearbeiten oder andere Aktivitäten unabhängig auszuführen, wobei weitgehend konsistente Kopien der Daten bei jeder der netzfähigen Vorrichtungen zur Verwendung aufrechterhalten werden, selbst wenn sie vom Netz abgetrennt sind.
  • In noch einer weiteren Ausbildung kann die Erfindung als ein aktivitätsbezogenes Kooperations(ABC)-System für die interpersonelle Wechselwirkung realisiert sein. Das ABC-System enthält mehrere netzfähige Vorrichtungen, die z. B. über öffentliche Netze (z. B. das Internet oder Ferndatennetze (WAN)) oder über private Netze (z. B. lokale Netze (LAN) oder Intranetze) mittels Kabel, Faseroptiken, Infrarot (IR) oder andere Formen der Kommunikationsverbindungen verknüpfbar sind, um das oben beschriebene vernetzte System zu bilden. Jede netzfähige Vorrichtung ist mit dem oben beschriebenen Speicher und einem Rahmen einschließlich eines oder mehrerer Dynamikmanager ausgestattet. Die netzfähigen Vorrichtungen sind vorzugsweise steckerkompatibel mit der Infrastruktur des öffentlichen Netzes, mit persönlichen Desktop-Anwendungen und der Infrastruktur (manchmal als "persönliches Internet" bezeichnet) und zutreffendenfalls mit einem Firmen-Internet. Das ABC-System verwendet vorzugsweise dynamische, einrastende Aktivitätskomponenten, jede für das Ausführen einer speziellen Aufgabe, wie z. B. "Chat", Dokumentenbearbeitung, Spiele usw. Die Aktivitätskomponenten können Software umfassen, die zum Beispiel als eingeschweißte Produkte oder durch Herunterladen über das Netz, z. B. das Internet, zur Verfügung gestellt werden. Die Aktivitätskomponenten können durch gewöhnliche Anwendungsprogrammierungsschnittstellen (API) mit dem Rahmen arbeiten. Dementsprechend kann der Rahmen als eine Plattform für Anwendungen in der Form der Aktivitätskomponenten angesehen werden und funktionieren.
  • Noch eine weitere Ausbildung der Erfindung beruht auf dem Rahmen, der ferner einen Kommunikationsmanager enthält, der auf einer lokalen netzfähigen Vorrichtung betriebsfähig ist, um lokal erzeugte Deltas an entfernt liegende netzfähige Vorrichtungen zu senden und fernerzeugte Deltas von den entfernt liegenden netzfähigen Vorrichtungen zu empfangen. Die Kommunikationsmanager können die lokalen Deltas wahlweise in Reaktion auf Netzanschlussstatusinformationen, welche die entfernt liegende netzfähige Vorrichtung betreffen, entweder direkt an die entfernt liegenden netzfähigen Vorrichtungen, d. h. an ihre jeweiligen URLs, senden, oder sie kön nen sie an ein "Speicher- und Weitergabe"-Relais, d. h. an seine URL, senden. Die Netzanschlussstatusinformationen können Anschließbarkeitsinformationen enthalten, die durch den Kommunikationsmanager vorgehalten werden, die z. B. Informationen bezüglich der Kommunikationsprotokoll-Kompatibilität, der Sicherheitsauflagen (z. B. Firewalls) umfassen, welche die entfernt liegende Vorrichtung für die lokale Vorrichtung unerreichbar machen können. Die Anschlussstatusinformationen können auch Informationen enthalten, die durch einen Präsenzmechanismus, wie z. B. einen Präsenzserver, vorgehalten werden, welche den Online/Offline-Status der entfernt liegenden Vorrichtung betreffen. Der Präsenzserver kann ein Teil des ABC-Systems sein, und er kann z. B. für das Senden der Online/Offline-Statusinformationen an den Kommunikationsmanager verantwortlich sein. In Situationen, in denen die entfernt liegende netzfähige Vorrichtung zeitweilig nicht an das Netz angeschlossen ist ("offline"), kann das Relais die Deltas speichern, bis es davon in Kenntnis gesetzt ist, dass die entfernt liegende netzfähige Vorrichtung wieder an das Netz angeschlossen wurde, und es kann dann die Deltas an die wieder angeschlossene, entfernt liegende netzfähige Vorrichtung senden. Als Eingangsbestätigung der Deltas aus den entfernt liegenden netzfähigen Vorrichtungen sendet der Kommunikationsmanager eine Online/Offline-Statusbenachrichtigung an den Präsenzserver, die anzeigt, ob die lokale netzfähige Vorrichtung an das Netz angeschlossen ("online") und folglich in der Lage ist, Deltas von entfernt liegenden Vorrichtungen zu empfangen.
  • Somit kann die Erfindung als separate kommerzielle Produkte und Dienste umgesetzt werden, einschließlich der Bereitstellung der individuellen Aktivitätskomponenten, des Rahmens für individuelle netzfähige Vorrichtungen und/oder des vernetzten oder ABC-Systems sowie der Kommunikationsdienste für das Ausführen der Wechselwirkungen zwischen den Vorrichtungen, die das System bilden.
  • Kurzbeschreibung der Zeichnungen
  • Die obigen und weitere Vorzüge der Erfindung können durch Bezugnahme auf die nachfolgende Beschreibung im Zusammenhang mit den beigefügten Zeichnungen besser verstanden werden, in denen;
  • 1 ein Blockdiagramm einer veranschaulichenden Architektur eines herkömmlichen Computersystems ist;
  • 2 ein Blockdiagramm einer herkömmlichen Anwendung ist, die auf dem Computersystem von 1 läuft, in welchem ein Steuermodul sowohl verantwortlich ist für das Koppeln mit einer Anzeige oder anderen Nutzerschnittstellen als auch für das Vorhalten der Daten gemäß einem Datenmodell;
  • 3 ein Blockdiagramm eines Systems auf Internet-Basis ist, das sowohl ein Client-Server-System für das WWW als auch ein Peer-zu-Peer-System für ein persönliches Web gemäß einer Ausführungsform der Erfindung darstellt;
  • 4 ein Blockdiagramm eines Teils eines ABC-Systems ist, wie es auf dem Computersystem von 1 gemäß einer Ausführungsform der Erfindung implementiert ist;
  • 5 ein Blockdiagramm eines Teils eines ABC-Systems ist, wie es auf dem Computersystem von 1 implementiert ist und das die typischen Teleraum-Anwendungen gemäß einer Ausführungsform der Erfindung darstellt;
  • 6 ein Blockdiagramm eines Teils des ABC-Systems ist, wie es für den Schach-Teleraum von 5 implementiert ist;
  • 7 ein Blockdiagramm eines Rahmens 700 ist, der Teile des ABC-Systems von 4 enthält;
  • 8 und 9 Blockdiagramme einer Ausführungsform von Teilen des ABC-Systems von 4 sind, die in die Kommunikation zwischen Peereinheiten einbezogen sind;
  • 10 ein Blockdiagramm ist, das die Verwendung des Ressourcen-Awareness-Managers von 9 veranschaulicht;
  • 11 ein Blockdiagramm einer Ausführungsform des Relais von 8 ist; und
  • 12 ein Blockdiagramm eines Routingverfahrens für das ABC-System von 4 ist.
  • Ausführliche Beschreibung der bevorzugten Ausführungsform
  • A. Terminologie
  • Es kann sich als nützlich erweisen, gleich zu Beginn bestimmte Fachausdrücke und Abkürzungen einzuführen, die in dieser Beschreibung verwendet werden, einschließlich von: Aktivität, Client, Kommunikationsmanager, Komponente, Controller, Delta, Vorrichtung, Dynamikmanager, Maschine, Rahmen, Identität, Mitglied, Navigation, Person, Server, Teleraum, Werkzeug, URL und XML.
  • "Aktivität" bezeichnet das, was ein Nutzer tatsächlich mit dem ABC-System tut, um mit anderen Nutzern zu Wechselwirken. Der Begriff „"Aktivität" kann in Abhängigkeit vom Kontext eine von zwei Bedeutungen aufweisen. Von einer "Außenansicht" her bedeutet sie eine Laufzeitwechselwirkung zwischen dem ABC-System und einem Computernutzer; z. B. ermöglicht eine Aktivität dieses Typs den Nutzern, auf einer gemeinsam benutzten Weißwandtafel zu zeichnen, oder sie ermöglicht zwei oder mehreren Nutzern, einen Chat in Echtzeit zu führen. Eine Aktivität in diesem Sinne kann auch ein Hintergrunddienst (d. h. Agent) sein, der im Auftrag des Nutzers auf einer lokalen oder Server-Vorrichtung läuft, wie z. B. ein Archivserver-Agent oder ein FAX-Eingangs-Agent. Von einer "Innenansicht" eines Softwaredesigners her bedeutet "Aktivität" ein modulares computerausführbares Programm, das auf dem Personalcomputer eines Nutzers oder einem anderen Vorrichtungstyp laufen und eine anvisierte Aufgabe auszuführen kann. In diesem Sinne beinhaltet eine Aktivität zwei Typen von Komponenten, ein Werkzeug und eine Maschine, die zur vorgesehenen Zeit kombiniert werden, um eine "Aktivitätsvorlage" zu erzeugen. Eine Aktivitätsvorlage kann auf vielen Wegen vertrieben werden, zum Beispiel als eingeschweißte Software oder als Software, die aus dem Web heruntergeladen werden kann. Es ist vorgesehen, dass die in einem großen Umfang vertriebenen Programme, die für die Textverarbeitung, Tabellenkalkulation usw. verwendet werden, Versionen aufweisen, die für die Verwendung im ABC-System ausgelegt sind, und als solche in Aktivitätsvorlagenform verkauft werden, die zu den Schnittstellen der ABC-Systemprogrammierer passen.
  • "Client" bezeichnet einen Personalcomputer eines Nutzers, eine Kommunikationseinrichtung oder eine andere Form einer Vorrichtung, die zur Wechselwirkung mit dem Menschen fähig ist und an ein Netz, z. B. das Internet, angeschlossen werden kann. Hintergrundprogramme, die auf dem Personalcomputer des Nutzers laufen, werden als "Client-Dienstcontroller" bezeichnet. Vordergrund-Nutzerschnittstellen(UI)-Programme, die auf dem Personalcomputer des Nutzers laufen, werden als "Client-UI-Controller" bezeichnet.
  • "Kommunikationsmanager" bezeichnet einen Mechanismus, um eingehende und abgehende Deltas an die entsprechenden Bestimmungsorte zu leiten. Der Kommunikationsmanager kann zum Beispiel als ein computerausführbares Programm implementiert sein, welches lokal veranlasste Deltas, die durch ein Werkzeug/Maschine-Paar für die Übertragung über ein Netz, z. B. das Internet, erzeugt wurden, einem anderen entfernt liegenden Personalcomputer oder einer anderen Form einer netzfähigen Vorrichtung oder einem Relais zuleitet. Der Kommunikationsmanager leitet solche Deltas einem Relais zu, wenn z. B. diese entfernt liegende Vorrichtung nicht an das Netz angeschlossen ist oder um die Netzbandbreite besser auszunutzen oder wegen der Effizienz bei der Kommunikation (z. B. Auffächerung oder Routing). Der Kommunikationsmanager leitet die fernerzeugten Deltas, die er über ein Netz, z. B. das Internet, empfangen hat, einem Dynamikmanager zu.
  • "Komponente" bezeichnet ein computerausführbares Programm und seine Ressourcen, die in einer Aktivität verwendet werden. Alle Komponenten sind durch URLs gekennzeichnet. Es ist vorgesehen, dass das Web ein globaler Aufbewahrungsort für Komponenten sein kann, mit Versionen, die sicher auf eine geeignete Komponentenplattform im ABC-System heruntergeladen werden können.
  • "Computer" bezeichnet eine Vorrichtung, so wie dieser Begriff nachfolgend definiert ist.
  • "Controller" bezeichnet ein computerausführbares Programm der obersten Ebene, das die "innere" Funktionalität des ABC-Systems treibt. Ein Controller ist auf eine gegebene Plattform abgestimmt, zum Beispiel ein UNIXTM-Daemon-Controller oder ein Controller für Microsoft WindowsTM, der auf einem mikroprozessorbasierten Computersystem von INTELTM läuft. Zwei allgemeine Typen von Controllern sind ein Dienstcontroller, der als ein Hintergrundprozess gewöhnlich für die Nutzer nicht sichtbar arbeitet, und ein Nutzerschnittstellen(UI)-Controller, der interaktiv von einem Nutzer gesteuert wird.
  • "Delta" bezeichnet eine eigenständige Dateneinheit, die eine oder mehrere Werkzeug-zu-Maschine-Datenänderungsanforderungen enthält (d. h. Benachrichtigungen oder Aufforderungen, welche die gewünschten Veränderungen an den Daten betreffen). Werkzeuge initiieren die Deltaerzeugung durch den Dynamikmanager in Reaktion auf die Nutzerwechselwirkung und übermitteln sie den Maschinen zur asynchronen Ausführung unter der Leitung eines Dynamikmanagers, wie nachfolgend beschrieben wird. Ein Delta weist ein spezifisches Format auf, einschließlich eines Kopfteils zur Bereitstellung von Steuerinformationen und eines Nutzdatenteils zur Bereitstellung von Informationen bezüglich der Daten, auf die sich die Anforderung bezieht. Ein individuelles Delta kann eine oder mehrere Nutzdatenmengen aufweisen, und wenn mehrere Nutzdatenmengen verwendet werden, dann kann jede auf Teleraummitglieder mit unverwechselbaren Vorrichtungsfähigkeiten oder Nutzerfunktionen ausgerichtet sein. Die Werkzeuge fordern Informationen bezüglich der möglichen Datenänderungen von den Maschinen zur Anzeige oder eine andere Form der Darstellung für die Nutzer an und werden asynchron benachrichtigt, wenn die Deltas Anzeigenänderungen verursachen.
  • "Vorrichtung" bezeichnet eine physische Hardware-Vorrichtung, wie z. B. einen Personalcomputer oder eine Kommunikationseinrichtung, die zu den hier dargelegten Zwecken normalerweise netzfähig ist, sofern der Kontext nichts anderes angibt, d. h. sie kann mit anderen netzfähigen Vorrichtungen über das Netz, z. B. das Internet unter Verwendung von Internetprotokollen, kommunizieren. Allen Vorrichtungen wird durch das ABC-System ein eindeutiger Identitätscode zugewiesen, sie weisen URLs auf und unterscheiden sich von den Personen, welche die Vorrichtungen verwenden. Eine Vorrichtung betreibt möglicherweise viele Teleräume.
  • "Dynamikmanager" bezeichnet den Teil des Rahmens des ABC-Systems, der die Erzeugung der Deltas unterstützt und ihre Ausführung koordiniert. Der Dynamikmanager kann zum Beispiel als ein computerausführbares Programm implementiert sein, das auf dem Personalcomputer eines Nutzers oder einer anderen Form der netzfähigen Vorrichtung läuft.
  • "Endpunkt" bezeichnet eine eindeutige Paarung aus einer Vorrichtung und einer Person. Das ABC-System verwendet dieses Konzept als ein Verfahren zum eindeutigen Hervorheben einer Person unter mehreren Nutzern einer Vorrichtung oder von Vorrichtungen unter mehreren Computern, die von derselben Person genutzt werden.
  • "Maschine" bezeichnet das, was die "untere Hälfte" einer Aktivität genannt werden kann, welche das Management und die Modifikation von persistenten Speicher- und Datenstrukturen innerhalb des ABC-Systems realisiert. Maschinen sind als Komponenten paketiert, weisen selbst keine Nutzerschnittstellen auf, sondern hängen eher von ihren entsprechenden Werkzeugen für die Nutzerschnittstellen ab und sind im Wesentlichen übertragbar. Vorzugsweise gibt es Maschinen ausschließlich zur Bedienung ihrer zugehörigen Werkzeuge. Maschinen arbeiten vorzugsweise in universeller Synchronie.
  • "Rahmen" bezeichnet die "inneren Arbeitsabläufe" des ABC-Systems, und er enthält die meisten seiner Untersysteme, einschließlich des Dynamikmanagers, aber keine Benutzerschnittstelle. Der Rahmen ist ein computerausführbares Programm, das auf einem Personalcomputer eines Nutzers oder einer anderen Form der netzfähigen Vorrichtung laufen kann, und sitzt logisch zwischen den High-Level-Controllern und den Aktivitäten.
  • "Identität" ist im allgemeinen gleichbedeutend mit "Person", obwohl es sich im allgemeinen auf einen der Namen bezieht, die durch eine URL dargestellt werden, durch die eine Person von anderen erkannt wird. Dieses Konzept wird ins Spiel gebracht, weil das ABC-System die Vorstel lung umfasst, dass eine Person viele Identitäten oder Pseudonyme und zum Beispiel viele unterschiedliche URLs haben kann.
  • "Mitglied" bezeichnet einen Teilnehmer oder einen Abonnenten an einem Teleraum und ist im Allgemeinen gleichbedeutend mit dem Personenteil (im Gegensatz zum Vorrichtungsteil) eines Endpunkts, wenn auf die Teleraum-Mitgliedschaft Bezug genommen wird.
  • "Navigation" bezeichnet den Bewegungsvorgang zwischen den URLs und ist im ABC-System analog zur Navigation zwischen Webseiten und Websites durch einen Webbrowser.
  • "Person" bezeichnet einen Menschen oder einen Server, der als ein Stellvertreter des Menschen wirkt, und sie bezeichnet allgemein jemanden, der an Aktivitäten innerhalb eines Teleraumes teilnimmt. Jede Person hat eine oder mehrere Identitäten, von denen jede eindeutig durch eine URL gekennzeichnet ist.
  • "Relais" bezeichnet eine Vorrichtung, z. B. einen Server, der sicher und zuverlässig speichert und weiterleitet und in einigen Anwendungen eine Multicast-Auffächerung von Nachrichten vornehmen kann. Der Körper der übertragenen Nachricht ist dem Relais unbekannt und ist z. B. ein Delta. In einigen Ausführungsformen der Erfindung kann ein Relais Vorrichtungspräsenzinformationen bereitstellen und administrative Funktionen ausführen.
  • "Server" bezeichnet eine Vorrichtung, die normalerweise nicht zu einer direkten Wechselwirkung mit dem Menschen in der Lage ist, außer über einen Kommunikationskanal, und die nur als Hintergrundprogramme unter Dienstcontrollern laufen kann.
  • "Teleraum" bezeichnet einen virtuellen Ort, wo sich Personen versammeln, um an einer oder mehreren Aktivitäten teilzunehmen, und wo Personen Dinge gemeinsam nutzen. Die Teleräume und die Ergebnisse von Aktivitäten werden in Speichern auf den Personalcomputern der Nutzer oder anderen Formen netzfähiger Vorrichtungen dauerhaft gespeichert. Ein Teleraum wird im Allgemeinen in Synchronie zwischen einer Vorrichtung eines Nutzers und den Vorrichtungen anderer Personen gehalten. Ein Teleraum stellt die logische Einheit der "Mitgliedschaft" und des Zugangs zu den Aktivitäten dar. Ein Teleraum ist eine Instantiierung von einer oder mehreren Aktivitäten.
  • "Werkzeug" bezeichnet das, was die "obere Hälfte" einer Aktivität genannt werden kann, welche die Nutzerschnittstellen der Aktivität implementiert. Werkzeuge sind als Komponenten paketiert, leiten die Deltaerzeugung in Reaktion auf Nutzergesten ein und Wechselwirken mit entsprechenden Maschinen der einzelnen Aktivitäten, um spezifische Aufgaben auszuführen.
  • "URL" ist eine Abkürzung für Universal Resource Locator, was eine eindeutige strukturierte Adresse einer Ressource, wie z. B. eines Dokumentes, ist und in einigen Fällen ein Verfahren darstellt, durch das eine Ressource bearbeitet werden sollte. Hier werden URLs für nahezu alle dauerhaften Objekte, die für den Nutzer sichtbaren Objekte und die für externe Programme sichtbaren Objekte, verwendet.
  • "XML" ist, wie oben erwähnt wurde, eine Abkürzung für eXtended Markup Language, was ein standardmäßiges strukturiertes Datenformat abgeleitet von SGML ist, das für die Verwendung im Web vorgesehen ist. In Abhängigkeit vom Kontext bezeichnet es auch eine im ABC-System verwendete speicherinterne Objektstruktur, die im Einklang mit der Semantik des XML-Standards ist. Es werden hier viele XML-Konzepte, wie z. B. "Dokumente", "Elemente", "Markierungen", "Attribute", "Werte", "Inhalt", "Entitäten", "Verbindungen" und "Zeiger" verwendet. XML wird hier zum Beispiel für das Strukturieren der Daten in einem Dokument verwendet.
  • B. Herkömmliches Computersystem
  • 1 zeigt eine herkömmliche Systemarchitektur für ein Computersystembeispiel 100, mit dem die offenbarte Erfindung realisiert werden kann. Das Computersystembeispiel von 1 wird jedoch lediglich zu Erläuterungszwecken erörtert und sollte nicht als eine Einschränkung der Erfindung angesehen werden. Die Erfindung ist ferner nicht auf Vorrichtungen beschränkt, die herkömmlicherweise als Computersysteme angesehen werden, da sie auf irgendeinem der verschiedenen Typen von netzfähigen Vorrichtungen, die z. B. Videospielkonsolen, Haushaltsgeräte oder Kabelbeistellboxen einschließen, realisiert werden kann. Obwohl die nachfolgende Beschreibung auf Begriffe zurückgreifen kann, die üblicherweise bei der Beschreibung spezieller Computersysteme verwendet werden, gelten die beschriebenen Konzepte ebenso für andere Computersysteme, einschließlich der Systeme mit Architekturen, die sich von den in 1 dargestellten unterscheiden. Zum Beispiel brauchen die Kabelbeistellboxen keinen Massenspeicher zu enthalten, sondern enthalten Videotuner, die mit Digitalsignalprozessoren bestückt sind.
  • Das Computersystem 100 umfasst eine zentrale Verarbeitungseinheit (CPU) 105, die einen herkömmlichen Mikroprozessor, einen Speicher mit wahlfreiem Zugriff (RAM) 110 für die zeitweilige Speicherung von Informationen und einen Festwertspeicher (ROM) 115 für die permanente Speicherung von Informationen enthalten kann. Ein Speichercontroller 120 ist zum Steuern des System-RAM 110 vorgesehen. Ein Buscontroller 125 ist zum Steuern des Busses 130 vorgesehen, und ein Interruptcontroller 135 wird verwendet, um die verschiedenen Interruptsignale von den anderen Systemkomponenten zu empfangen und zu verarbeiten.
  • Der Massenspeicher kann durch eine Diskette 142, einen CD-ROM 147 oder eine Festplatte 152 gebildet werden. Daten und Software können mit dem Client-Computer 100 über Wechselme dien, wie z. B. eine Diskette 142 und CD-ROM 147, ausgetauscht werden. Die Diskette 142 kann in ein Diskettenlaufwerk 141 eingesetzt werden, das durch den Controller 140 an den Bus 130 angeschlossen ist. Ebenso kann die CD-ROM 147 in ein CD-ROM-Laufwerk 146 eingesetzt werden, das durch den Controller 145 an den Bus 130 angeschlossen ist. Schließlich ist die Festplatte 152 Teil eines Festplattenlaufwerks 151, das durch den Controller 150 an den Bus 130 angeschlossen ist.
  • Die Nutzereingabe in das Computersystem 100 kann durch eine Anzahl von Vorrichtungen bereitgestellt werden. Zum Beispiel können einen Tastatur 156 und eine Maus 157 über den Tastatur- und Mauscontroller 155 an den Bus 130 angeschlossen sein. Eine Audiowandler 196, der sowohl als Mikrofon als auch Lautsprecher arbeiten kann, ist über den Audiocontroller 197 an den Bus 130 angeschlossen. Für Fachleute mit durchschnittlichen Kenntnissen sollte offensichtlich sein, dass andere Eingabevorrichtungen, wie z. B. ein Stift und/oder ein Tablett und ein Mikrofon zur Spracheingabe, über den Bus 130 und einen geeigneten Controller an den Client-Computer 100 angeschlossen werden können. Der DMA-Controller 160 ist für daß Ausführen eines direkten Speicherzugriffs auf den System-RAM 110 vorgesehen. Durch einen Videocontroller 165, der ein Videoanzeigegerät 170 steuert, wird eine visuelle Anzeige erzeugt.
  • Das Computersystem 100 umfasst auch einen Netzadapter 190, der es ermöglicht, dass der Client-Computer 100 über einen Bus 191 mit einem Netz 195 zu verbinden ist. Das Netz 195, das ein lokales Netz (LAN), ein Fernnetz (WAN) oder das Internet sein kann, kann Mehrzweck-Kommunikationsleitungen verwenden, welche die mehreren Netzvorrichtungen miteinander verbinden.
  • Das Computersystem 100 wird im Allgemeinen durch eine Betriebssystemsoftware gesteuert und koordiniert. Neben anderen Computersystemsteuerfunktionen steuert das Betriebssystem die Zu ordnung von Systemressourcen und erfüllt Aufgaben, wie z. B. die Prozessterminierung, die Speicherverwaltung, das Vernetzen und E/A-Dienste.
  • C. Herkömmlicher Zugang zur Steuerung eines Datenmodells
  • 2 zeigt ein herkömmliches System 200 zum Steuern eines Datenmodells unter Verwendung einer Technik, die als "Modellansichtscontroller" bekannt ist. Im System 200 speichert das Datenmodellmodul 202 Daten, zum Beispiel eine Datenbank, in Übereinstimmung mit einem Datenmodell und hält sie vor. Ein Controllermodul 204, der auf ein lokal ausgelöstes Ereignis 206 (wie z. B. eine Nutzereingabe) oder ein von außen ausgelöstes Ereignis 208 (wie z. B. Benachrichtigungen, die von einem entfernt liegenden Computersystem erhalten wurden) anspricht, sendet einen Befehl "aktuellen Wert einstellen" an das Datenmodellmodul 202, um eine Veränderung in den gespeicherten Daten zu verursachen. Das Controllermodul 204 benachrichtigt eine Ausgabevorrichtung, wie z. B. das Anzeigegerät 206, über die Datenveränderung. Das Anzeigegerät 206 empfangt die veränderten Daten vom Datenmodellmodul 202 und aktualisiert die Anzeige der Daten, so dass die aktuellen Daten von einem Nutzer betrachtet werden können. Die vorerwähnte Technik ist strikt ereignisgesteuert und im Ablauf linear. Normalerweise werden die inneren oder äußeren Ereignisse, die das Controllermodul 204 veranlassen, eine Änderung der Daten anzuweisen, in einem FIFO(zuerst hinein, zuerst heraus)-Pufferspeicher im Controllermodul 204 gespeichert und dann in der Reihenfolge erledigt, in der die Ereignisbenachrichtigung das Controllermodul erreicht. Normalerweise werden im System 200 auch keine Vorkehrungen getroffen zu globalen Konsistenzproblemen, das heißt zur Gewährleistung, dass die Kopien der Modelldaten im System 200 konsistent zu den Daten in anderen, entfernt liegenden Systemen sind.
  • Der herkömmliche Zugang zur Steuerung eines Datenmodells, wie er im System 200 an einem Beispiel erläutert wurde, war geeignet in einer Zeit, in der die Computersysteme, ob Großrechner oder Personalcomputer, in relativer Isolierung gearbeitet haben. Mit dem Aufkommen des Internets verlangen die Computernutzer verbesserte Wege der Zusammenarbeit, und die Erfindung stellt das bereit, was als "modellvermittelte Steuerung" bezeichnet werden kann, in der ein Dynamikmanager Veränderungen am Datenmodell vermittelt, die durch die Datenänderungsmaschine bewirkt werden.
  • D. Internetparadigma für den Intercomputerbetrieb
  • 3 zeigt eine Internetumgebung 300, in der die vorliegende Erfindung vorteilhaft eingesetzt werden kann. Aus der Perspektive eines Nutzers kommunizieren in einer herkömmlichen Client-Server-Ansicht 302 individuelle Clients 306, 308 getrennt über das Internet 309 mit einem Server 310. Jeder Client 306, 308 kann über das Internet 309 eine Anforderung an den Server richten, und in Reaktion darauf kann der Server 310 auf die Anforderung antworten, indem er zum Beispiel Dokumente, die auf dem Server gespeichert sind, über das Internet 309 den Clients bereitstellt. Jeder Server 310 und Client 306, 308 kann als ein Personalcomputer realisiert sein, wie in 1 dargestellt ist (mit bestimmten UI-Komponenten, die im Fall des Servers optional sind), der zum Ausführen geeigneter Programme, wie z. B. eines Client-Browsers 311 und/oder einer anderen Kommunikationsschnittstelle, in der Lage ist, wie nachfolgend beschrieben wird. Aus einer Peer-zu-Peer-Sicht 312 der Internetnutzung bilden die Computersysteme der Nutzer die Peereinheiten 314A–D, und die Kommunikationen durch das Internet können ohne offensichtliche Zwischenglieder von einer Peereinheit zu einer anderen gerichtet werden. Jede Peereinheit 314A–D kann als ein Personalcomputer, wie z. B. der in 1 dargestellte, oder eine andere Form einer netzfähigen Vorrichtung realisiert sein. Die Erfindung kann vorteilhaft entweder in Clients 306, 308 oder Peereinheiten 314A–D realisiert werden, obwohl sich diese Beschreibung auf die Realisierung mit einem Peer-zu-Peer-Bild des Systems konzentrieren wird.
  • Wie nachfolgend ausführlicher erläutert wird, können derartige Peer-zu-Peer-Kommunikationen direkt oder über eine Relaisvorrichtung 316 erfolgen. Die Relaisvorrichtung 316 ist vorzugsweise vom Typ "Speichern und Weiterleiten", welcher die Nachrichten, die für eine zeitweilig vom Internet getrennte Peereinheit 314 bestimmt sind, speichern und die Nachrichten später nach dem Wiederanschliessen dieser Peereinheit weiterleiten kann. Die Relaisvorrichtung 316 kann auch verwendet werden, um von der Netzbandbreite besseren Gebrauch zu machen.
  • E. Architektur und Betrieb des ABC-Systems
  • 4 zeigt das ABC-System 400, wie es auf einer der Peereinheiten 314A–D, wie zum Beispiel der Peereinheit 314A, ausgeführt ist. Das ABC-System auf der Peereinheit 314A weist einen Rahmen 402, mindestens einen Teleraum 404 und eine Nutzerschnittstelle 406 auf. Der Rahmen 402 stellt vorzugsweise eine Plattform zur Bedienung einer Anzahl von Teleräumen 404 bereit. Der Rahmen 402 ist vorzugsweise eine modulare Konstruktion mit einer Programmiererschnittstelle, auf der die Aktivitäten laufen und durch welche sie mit den Rahmenkomponenten in Verbindung treten.
  • Der Rahmen 402 enthält einen Nutzerschnittstellenmanager 408, Identitätsmanager 410, Teleraummanager 412, Aktivitätsmanager 414, Speichermanager 416, Controllerdienstemanager 418, Dynamikmanager 420 und Kommunikationsmanager 422.
  • Der Nutzerschnittstellen(UI)-Manager 408 ist verantwortlich für das Verwalten der gemeinsam genutzten Dienste für eine Anzahl von Nutzerschnittstellencontrollern (nicht einzeln dargestellt). Der UI-Manager 408 besorgt die Anordnung der Aktivitäten innerhalb der Ausschnitte eines Anzeigefensters und stellt ansonsten ein gewünschtes "Look and Feel" für die Nutzerschnittstelle bereit. Der UI-Manager 408 leitet auch die Aktivitätsnavigation (zum Beispiel, Goto, Next, Previous usw.) und unterhält eine Navigationsvorgeschichte.
  • Der Identitätsmanager 410 ist verantwortlich für das Vorhalten von Identitäten eines Teleraummitglieds. Wie oben erwähnt wurde, ist die Identität der Name und die entsprechende URL, durch die jeder Nutzer von den anderen erkannt wird. Einzelne Nutzer können eine oder viele Identitäten haben. Der Identitätsmanager 410 unterhält ein Verzeichnis oder eine Tabelle der Identitäten, vorzugsweise in XML. Der Identitätsmanager 410 kann auch ein Verzeichnis oder eine Tabelle, vorzugsweise in XML, der Teleraummitglieder-URLs und ihrer zugehörigen Vorrichtungs-URLs unterhalten, oder es kann ein getrennter Mitgliedermanager verwendet werden.
  • Der Teleraummanager 412 ist für das Verwalten eines jeden Teleraums 404 verantwortlich, der an der Peereinheit 314A geöffnet werden kann. Jeder Teleraum 404 ist eine Instantiierung von einer oder mehreren Aktivitäten. Jeder Teleraum 404 weist einen zugehörigen Aktivitätsmanager 414 auf.
  • Der Aktivitätsmanager 414 ist verantwortlich für (a) das Hinzufügen neuer Aktivitäten zu einem Teleraum, (b) das Eröffnen existierender Aktivitäten in einem Teleraum und (c) das Aktualisieren von Teleraumaktivitäten aus neuen Aktivitätsvorlageversionen. Um eine neue Aktivität hinzuzufügen, wird der Aktivitätsmanager 414 mit der URL einer Aktivitätsvorlage versorgt, öffnet die Vorlage und extrahiert und verbreitet die Vorlageninformationen (wie z. B. die Komponenten-URLs) in den Teleraum. Die Vorlage legt die anfängliche Aktivitätskonfiguration für einen Teleraum fest. Ein Nutzer kann später nach Bedarf zusätzliche Aktivitäten zum Teleraum 404 hinufügen. Eine Aktivität ist nach dem Hinzufügen ein "Teil" des Teleraums und für alle anderen Teleraummitglieder einsehbar. Ein Teleraum weist eine Markierung auf, um seinen Aktivitätsmanager zu kennzeichnen sowie den Aktivitätsmanager und die Daten zu verbinden. Vorzugsweise weist jedes Dokument ein mit ihm verbundenes lokales Register mit XML-Markierungsnamen auf, die in dem Register vorgehalten werden, um das Zuordnen (Hinweiszeiger oder Assoziationen) zwischen dem Dokument und seinem zugehörigen Teleraum in einer erweiterbaren plattformunabhängigen Weise auszudrücken. Jedes Teleraummitglied weist einen Rahmen und eine Aktivitätsvorlage für den Teleraum auf, die auf seiner oder ihrer Peereinheit 314A–D verfügbar sind.
  • Jede Aktivität umfasst ein Werkzeug, wie z. B. das Werkzeug 424, und eine Maschine, wie z. B. die Maschine 426. Das Werkzeug 424 stellt die Nutzerschnittstellen(UI)-Fähigkeit für die Aktivität bereit, die über UI 406 mit einem Mitglied wechselwirkt. Die UI-Wechselwirkung kann UI-Ereignisse umfassen, die zum Beispiel über die Tastatur 156 (1) oder die Maus 157 ( 1) ausgelöst wurden. In Reaktion auf derartige UI-Ereignisse kann das Werkzeug 424 seine zugehörige Maschine 426 auffordern, Datenmodelländerungen zu bewirken, wobei es von der Maschine 426 asynchrone Datenänderungsbenachrichtigungen bezieht, um die UIs asynchron zu aktualisieren, wenn Datenänderungen erfolgen. Ein Werkzeug 424 implementiert auch Anwendungsprogrammschnittstellen (API) für die Wechselwirkung mit Hintergrunddiensten, die unter der Leitung des Controllermanagers 418 bereitgestellt werden. Die Maschine 426 ist verantwortlich für das Unterhalten und Ändern der Daten, die den Teleraum 404 unterstützen und/oder sich aus der Nutzerwechselwirkung ergeben, die durch das Werkzeug erreicht wird. Die Maschine 426 kann die beständigen Modelldaten modifizieren und asynchrone Datenänderungsbenachrichtigungen an das Werkzeug 424 ausgeben, beides unter der Leitung und Steuerung des Dynamikmanagers 420, wie nachfolgend erläutert wird. Der Speichermanager 416 steuert den Zugriff auf die gespeicherten Daten.
  • Zum Erzeugen einer Aktivitätsvorlage kann ein Softwareentwickler ein Werkzeug und eine Maschine für den Gebrauch innerhalb des Rahmens schreiben oder anpassen. Eine Aktivitätsvorlage ist eine beständige Darstellung der Werkzeug- und Maschinenkomponenten, die eine Aktivität umfassen. Eine Aktivitätsvorlage kann zum Beispiel als eine eingeschweißte Software vertrieben oder von einem entfernt liegenden Server zum Beispiel über das Internet auf die Peereinheit 314A heruntergeladen werden. Aktivitätskomponenten können als Webdokumente angesehen werden und werden dauerhaft über URLs dargestellt. Vorzugsweise weist die Aktivitätsvorlage selbst eine URL auf, welche ein Verfolgen der Aktivitätsgestaltsänderungen erlaubt. Die Aktivitätsvorlage kann eine einzelne Aktivitätsvorlage oder eine Aktivitätssammelvorlage sein. Eine einzelne Aktivitätsvorlage gehört zu nur einer Aktivität, wie z. B. einem "Chat". Eine Aktivitätssammelvorlage gehört zu einer Ansammlung von Aktivitäten, wie z. B. "Chat und Entwurf".
  • Für den Einsatz erhält das ABC-System 400 über den Identitätsmanager 410 die Identität eines Mitglieds, öffnet einen Teleraummanager, fordert den Teleraummanager auf, über eine URL einen Teleraum zu öffnen, fordert vom Teleraummanager einen Aktivitätsmanager an, und der Aktivitätsmanager eröffnet dann eine Aktivität, wobei gewöhnlich die URL der Aktivität verwendet wird. Dann ist das ABC-System 400 bereit, dass Mitglieder den Teleraum nutzen können, um die gemeinsamen, anvisierten Aufgaben, die von der jeweiligen Aktivität vorgelegt werden, auszuführen.
  • 5 zeigt ein Beispiel für einen Multi-Teleraumeinsatz eines ABC-Systems 500 auf Peereinheiten 314A–D. Es sollte verständlich sein, dass das ABC-System 500 ein verteiltes System ist. Obwohl eine Beschreibung der Komponenten nur bei einer Peereinheit 314A gegeben wird, weisen die Peereinheiten 314B–D an sich analoge Komponenten auf, und es nicht erforderlich, sie extra zu beschreiben.
  • Wie für die Peereinheit 314A gezeigt ist, enthält das ABC-System 500 eine Anzahl von veranschaulichenden Teleräumen, in denen die Peereinheit 314A als ein Mitglied einbezogen ist, ein schließlich eines Fahrzeugentwurfs-Teleraums 502, eines Chat-Teleraums 504 und eines Schachspiel-Teleraums 506. Wie ebenfalls dargestellt ist, weist die Peereinheit 314 eine Anzahl von Komponenten auf, die während des Betriebs der Teleräume 502, 504, 506 verwendet werden. Die Peereinheit 314A weist einen Speicher 510 auf, der ein Teleraumverzeichnis 508 führt, die jeden der Teleräume 502, 504, 506 registriert und beschreibt, in dem es Mitglied ist, und sie weist ein Mitgliederverzeichnis 512 auf, das jede Identität der Teleraummitglieder registriert und beschreibt, die an diesen Teleräumen teilhaben können. Eine UI 514 kann vom Nutzer eingeleitete Änderungen zu den Teleraum- und Mitgliederverzeichnissen 508, 512 empfangen.
  • Jeder Teleraum 502, 504, 506 instantiiert eine andere von den dargestellten Aktivitäten 522, 524, 526. (Alternativ könnten die dargestellten Aktivitäten 522, 524, 526 in einem einzigen Teleraum hinterlegt sein, wobei in diesem Falle alle Mitglieder des einzigen Teleraums auf jede der Aktivitäten Zugriff haben würden). Jede Aktivität 522, 524, 526 umfasst ein entsprechendes, für die Aktivität spezifisches Werkzeug 532, 534, 536 und wird gesteuert von einer entsprechenden Maschine 542, 544, 546, um Änderungen an einem zugehörigen Datenmodell 552, 554, 556 auszuführen, das im Speicher 510 enthalten ist und welches in jedem der Teleräume 502, 504, 506 Bestand hat. Zum Beispiel ist der Fahrzeugentwurfs-Teleraum 502 ein Beispiel für eine Aktivität 522, die ein Werkzeug 532 in der Form einer CAD(computerunterstützter Entwurf)-Software umfassen kann, und der Schachspiel-Teleraum 506 ist ein Beispiel für eine Aktivität 526, die ein Werkzeug 536 in der Form eines Software-Schachspiels umfassen kann.
  • Die Nutzer betreiben die Aktivitäten 522, 524, 526 der Teleräume 502, 504, 506 über die Nutzerschnittstelle 514, die an die Werkzeuge 532, 534, 536 ankoppelt, um die Werkzeuge mit den Nutzeranforderungen zu versorgen. In Reaktion auf die Anforderungen ändern die Maschinen 542, 544, 546 gesteuert durch den Dynamikmanager 501 den beständigen Zustand eines zugehörigen Datenmodells 552, 554, 556 im Speicher 510, um einen aktuellen Zustand widerzuspie geln. Zum Beispiel könnte der beständige Zustand der Daten für einen Schachspiel-Teleraum 506 ein Schachbrett und die Stellungen der Schachfiguren auf dem Brett umfassen, eine Nutzeranforderung kann einen Zug einer Schachfigur festlegen, der eine Veränderung in den Daten, d. h. ein Delta, erzeugt, und der aktuelle Zustand würde die Ausführung des Deltas sowie das Vollenden des Zuges widerspiegeln.
  • 6 stellt die Arbeit des ABC-Systems 500 mit Bezugnahme auf deren Komponenten dar, die in der Peereinheit 314A angeordnet und gemäß 5 beschrieben sind. Die Maschine 546 legt dem Werkzeug 536 mögliche Aktionen oder Optionen (z. B. die Züge der Schachfiguren) vor, die zur Förderung der jeweiligen anvisierten Aufgabe der Aktivität 526 verwirklicht werden können. Das Werkzeug 536 wechselwirkt über die Nutzerschnittstelle 514 mit einem Nutzer, der ein Mitglied eines Teleraums 506 ist (wie im Mitgliederverzeichnis 512 aufgezeichnet ist), wobei eine Ansicht der Aktivität (z. B. eine Ansicht des Schachbretts und möglicherweise eine Aufstellung der Züge) dargestellt wird. In Reaktion auf eine Nutzereingabe, die als eine Geste des Nutzers bezeichnet wird, (z. B. Ziehen des LÄUFERs von X nach Y), welche über die Nutzerschnittstelle 514 eingegeben wird, zeichnet das Werkzeug 536 eine Nutzerwahl im Speicher auf, indem es bewirkt, dass ein Delta erzeugt und im System gespeichert wird. Ein Delta ist eine Einheit der angeforderten Änderung, vorzugsweise in der Form eines Containerobjekts. Containerobjekte sind denjenigen gut bekannt, die mit objektorientierten Programmtechniken vertraut sind. Das Werkzeug 536 ist für die Bestimmung der Granularität der im Delta angeforderten Änderung verantwortlich. Zusätzlich zu den nutzerspezifischen Daten kann das Delta-Containerobjekt einen oder mehrere Befehle für das Ausführen der Änderung enthalten (umfassen), z. B. eine Kennzeichnung einer jeweiligen Schachfigur sowie der Ausgangs- und Endstellung dieser Schachfigur auf dem Brett, die einen Zug dieser Schachfigur ausmachen. Nach der Erzeugung ist das Delta frei von jeglichen Befehlen, und selbst bildet es lediglich eine Änderungsanforderung, bis es durch die Maschine 546 mit den geeigneten Befehlen aufgefüllt wird, um die Änderung herbeizuführen. Die Maschine 546 ist dafür verantwortlich, die Befehle, die zum Durchführen der Änderung erforderlich sind, im Delta auf eine maschinenspezifische Weise (die dem Werkzeug 536 nicht bekannt zu sein braucht) aufzuzeichnen.
  • Genauer gesagt veranlasst das Werkzeug 536, wie durch die Strecke "a" angezeigt ist, die Herstellung eines Deltas, indem es seine Erzeugung durch den Dynamikmanager 501 anfordert. Der Dynamikmanager 501 stellt das Delta her und liefert es über die Strecke a' an das Werkzeug 536 zurück und kann das hergestellte Delta in dem Falle aufzeichnen, in dem eine Fehlerbeseitigung erforderlich ist.
  • Wie an der Strecke "a" von 6 angezeigt ist, übergibt das Werkzeug 536 die Steuerung des Deltas über eine Werkzeugschnittstelle 602 an ein Werkzeugende 604 der Maschine 546, wodurch die Maschine aufgerufen wird. (In dieser Beschreibung wird ab und zu dargelegt, dass die Deltas weitergegeben werden oder dass die Steuerung der Deltas von einer Komponente zu einer anderen übergeht. Vorzugsweise sind die Deltas Objekte, die im Speicher verteilt sind, dessen Zeiger als XML-Elemente übergeben wird.) Die Werkzeugschnittstelle 602 der Maschine stellt einen Satz von Anwendungsprogrammierungsschnittstellen für das Erzeugen von Befehlen aus, welche die angeforderte Änderung, die in dem Delta codiert ist, bewirken können, oder – mit anderen Worten – für das Auffallen eines Deltas mit geeigneten, normalerweise maschinenspezifischen Befehlen in serieller Form, um die Absicht des Nutzers zu verwirklichen. Die Maschine 546 übergibt dann die Steuerung des Deltas, das nun mit den Befehlen aufgefüllt ist, zurück an das Werkzeug 536.
  • Wie an der Strecke "b" von 6 angezeigt ist, übergibt (d. h. überträgt) das Werkzeug 536 die Steuerung des aufgefüllten Deltas dem Dynamikmanager 501 zur Ausführung. Der Dynamikmanager 501 kann auch über die Leitung "b" von anderen Peereinheiten 314B–D eintreffende Deltas entgegennehmen. Für alle Mitglieder, die am Schachspiel-Teleraum teilnehmen, ist der Dynamikmanager 501 zusammen mit den Dynamikmanagern in den Peereinheiten 314B–D verantwortlich für das Aufrechterhalten der Konsistenz der ausgeführten Änderungen am Datenmodell 556 von dem einen Ende des ABC-Systems zum anderen.
  • Der Dynamikmanager 501 umfasst Warteschlangenstrukturen 612 und einen Dynamoprozess 614, vorzugsweise ein computerausführbares Programm, das die Hauptlogik des Dynamikmanagers enthält. Der Dynamikmanager 501 und sein Dynamoprozess 614 stehen in bidirektionaler Kommunikation mit dem Kommunikationsmanager 622. Der Dynamikmanager 501 reiht zu Ordnungszwecken die empfangenen Deltas in die Warteschlangenstrukturen 612 ein, dann unterstützt der Dynamoprozess 614 die Warteschlangenstruktur bei der Bearbeitung der eingereihten Deltas und beim Anweisen der Maschine 546, um diese in einer richtigen Reihenfolge auszuführen. Genauer gesagt sendet der Dynamoprozess 614 des Dynamikmanagers 501 ein Steuersignal in der Form einer "Deltabefehlsausführungs"-Nachricht durch die Schnittstelle 615 über die Strecke "c" von 6 an das Dynamikmanagerende 616 der Maschine 546. Die Deltabefehlsausführungsnachricht weist die Maschine 546 an, mit der Ausführung des Deltas, das vom Werkzeug 536 empfangen wurde, fortzufahren, indem die angeforderte Änderung am Datenmodell 556, das im Speicher 510 enthalten ist, vollzogen wird, und welches im Teleraum fortbesteht.
  • Der Dynamoprozess 614 des Dynamikmanagers 501 verbreitet auch alle lokal veranlassten Deltas auf die anderen Endpunkte über den Kommunikationsmanager 622, welcher sie über das Netz, z. B. 626, den Peereinheiten 314B–D übermittelt. An jeder Peereinheit 314B–D reiht der jeweilige Dynamikmanager die empfangenen Deltas in seine lokalen Warteschlangenstrukturen ein und übergibt sie dann in einer festgelegten Reihenfolge an seine jeweilige Maschine zur Ausführung.
  • Ein einzelner Dynamikmanager kann in Abhängigkeit von der Anwendung einen einzigen Teleraum oder mehrere Teleräume unterstützen und somit dafür verantwortlich sein, eine Anzahl von Maschinen anzuweisen, Deltas für die verschiedenen Teleräume auszuführen. In Systemen, die mehrere Teleräume aufweisen, wie in 5 dargestellt ist, bestimmt der Dynamikmanager 501, welche Maschine ein Delta ausführen sollte, indem er die Informationen der Deltas untersucht. Das Delta enthält Befehle, die für eine bestimmte Maschine gekennzeichnet und mit einer Maschinenkennung oder einem Code markiert sind, der in den Nutzdaten des Deltas mitgeführt wird. Wenn das eingereihte Delta durch den Dynamikmanager verarbeitet wird, dann ordnet der Dynamikmanager den Maschinencode dem betreffenden Delta zu und weist die Ausführung des Deltas durch die geeignete Maschine an.
  • Wie an der Strecke "d" von 6 angezeigt ist, sendet die Maschine 546 schließlich eine "Datenänderungsbenachrichtigungs"-Nachricht, um das Werkzeug 536 von der Ausführung des Deltas und von einem neuen aktuellen Zustand der Daten im Datenmodell 556 zu unterrichten. Die Datenänderungsbenachrichtigung kann wertmäßig oder durch Bezugnahme erfolgen. Das heißt, die Benachrichtigung kann die neuen Datenwerte selbst enthalten oder sie kann einen Zeiger auf die neuen Daten im Speicher enthalten. In Reaktion auf die Benachrichtigung bewirkt das Werkzeug 563, dass die Nutzerschnittstelle 514 die Änderung dem Nutzer zur Verfügung stellt, indem z. B. der Zug auf einem Schachbrett grafisch angezeigt wird. Wenn ein Nutzer die Anzeige 170 (1) betrachtet, dann wird der Nutzer in der Lage sein, die durch Ausführen des Deltas hervorgerufene Veränderung im Schachspiel anzuschauen, anderenfalls wird die Änderung an den Daten im Speicher 510 vorgenommen, ohne dass der Nutzer die Änderung zu der Zeit, in der sie erfolgt, "sieht".
  • Im wesentlichen zur gleichen Zeit, in der die Änderung an dem Datenmodell 556, das im Spei cher 556 der Peereinheit 314A gespeichert ist, durch die Maschine 546 erfolgt, führen vorzugsweise die anderen Peereinheiten 314B–D die analoge Änderung an ihren lokal gespeicherten Daten aus, um so die Zielstellung des Deltas in einer konsistenten Weise zu verwirklichen. In dem Fall, dass irgendeine Peereinheit 314A–D neu gestartet werden muss, werden die Deltas im Speicher zur Ausführung nach dem Neustart festgehalten.
  • Es können Umstände auftreten, in denen die eine oder andere der Peereinheiten 314A–D nicht an das Netz, z. B. das Internet, angeschlossen ist. Wenn es sein kann, dass die Peereinheit 314A nicht an das Netz angeschlossen ist, dann setzt der Kommunikationsmanager 622 einen Präsenzdetektor 430 ein, um zu ermitteln, ob die Peereinheit 314A angeschlossen ist, und wenn nicht, speichert er die abgehenden Deltas in einem Ausgabedeltaspeicher 628 bis zu dem Zeitpunkt, zu dem der Anschluss wieder hergestellt ist, und sendet dann die gespeicherten Deltas. Wenn eine oder mehrere Bestimmungsziel-Peereinheiten 314B–D vom Netz abgetrennt sind, dann kann der Kommunikationsmanager 622 der Peereinheit 314A fortfahren, das abgehende Delta an das Relais 316 (3) zu senden, ohne Rücksicht darauf, ob die Bestimmungsziel-Peereinheiten 314B–D abgetrennt sind. Das Relais 316 (3) wird solche abgehenden Deltas empfangen, sie erforderlichenfalls in einem Ausgabedeltaspeicher 318 (3) speichern und sie weiterleiten, wenn die Bestimmungsziel-Peereinheit 314B–D wieder angeschlossen ist. Im Betrieb kann der Kommunikationsmanager 622 alle abgehenden Deltas an die URL des Relais 316 senden, und das Relais kann eine systemeigene Nachschlagetabelle 320 verwenden, um die Endpunkt-URL der Bestimmungsziel-Peereinheit 314B–D festzustellen, die für die Weitergabe des Deltas zu verwenden ist. Die Eintragungen in die Nachschlagetabelle 320 werden eingegeben, wenn eine Peereinheit 314 es veranlasst, sie können von anderen Peereinheiten abgefragt werden, um Vorrichtungspräsenzinformationen zu sammeln, und sie werden gelöscht, wenn eine Peereinheit 314 aufhört oder unerreichbar wird. Der Relaisdienst kann in der Praxis durch einen Internetdienstanbieter (ISP) oder andere Internetorganisationen bereitgestellt werden.
  • Es ist ersichtlich, dass – so wie zwischen dem Werkzeug 536 und der Maschine 546 – die Nutzerschnittstellenaktivitäten direkt nur über das Werkzeug 536 und die Datenmodelländerungen direkt nur über die Maschine 546 bewirkt werden. In der Umgangssprache ist das Werkzeug 536 "im Besitz" der UI und die Maschine 546 "im Besitz" des Datenmodells. Das kann den gegenwärtigen typischen Anwendungen, wie sie in 2 dargestellt sind, gegenübergestellt werden. Zum Beispiel kombinieren die Tabellenkalkulationsprogramme heute normalerweise die Funktionen des Werkzeugs und der Maschine, statt sie voneinander zu trennen wie in der obigen Ausführungsform der Erfindung. Durch Trennen des Werkzeugs von der Maschine und somit der UI vom Datenmodell kann der Dynamikmanager zwischen den Deltas, die von den verschiedenen Peereinheiten stammen, eingreifen und vermitteln, um z. B. die Datenkonsistenz aufrechtzuerhalten. Das Werkzeug kann in Abhängigkeit von der Anwendung für eine verbesserte Flexibilität und Übertragbarkeit mit einer Vielzahl verschiedener Maschinen verwendet werden. Außerdem ermöglicht die Trennung des Werkzeuges von der Maschine, dass sich der Abarbeitungsvorgang der Deltas asynchron ausführen lässt. Das ist zweckmäßig, weil der Dynamikmanager 501 und die Maschine 546 Zeit benötigen, um ihren Verpflichtungen in einer Form nachzukommen, welche z. B. die Datenkonsistenz für alle Teleraummitglieder aufrechterhalten wird. Es ist auch zweckmäßig, weil die von den anderen Peereinheiten 314B–D eintreffenden Deltas die Zeitvorgaben bei der Ausführung der lokal veranlassten Deltas beeinflussen können.
  • 7 zeigt eine Ausführungsform eines Rahmens 700 zur Verwendung mit separat implementierten Aktivitäten (nicht dargestellt). Ein Rahmen kann z. B. als ein Computerprogrammprodukt verkauft oder lizenziert werden, das sich von den einzelnen Aktivitäten unterscheidet, die anwendungsspezifische Snap-Ins sein können, die über den Rahmen betriebsfähig sind. Allgemein gesagt nimmt der Rahmen die Kollaborationen bezüglich der Teleräume auf. Der dargestellte Rahmen 700 umfasst einen oder mehrere Dynamikmanager 702, einen Kommunikationsmanager 704 und eine Datenstrukturvorlage 706. Die Datenstrukturvorlage 706 kann Objektprimitive, vorzugsweise im XML-Format, zur Verwendung durch die Aktivitätsentwickler enthalten. Der Rahmen 700 kann zum Beispiel implementiert werden als computerlesbare Medien 706, auf denen ein computerausführbarer Code gespeichert ist, der den Dynamikmanager 702 und den Kommunikationsmanager 704 umfasst, und als computerlesbare Daten einschließlich der Objektprimitiven der Datenstrukturvorlage 700.
  • F. Kommunikationsmanager, Präsenzserver und Relais
  • 8 zeigt ein ABC-System 800, das für die Kommunikation zwischen einer Anzahl von Peereinheiten 802A–D über ein Netz, z. B. das Internet 803, ausgerüstet ist. Jede Peereinheit 802A–D kann die Komponenten umfassen, die oben mit Bezug auf die Peereinheit 314A beschrieben sind. (Die genaue Anzahl der in 8 dargestellten Peereinheiten wurde lediglich zum Zwecke der Veranschaulichung ausgewählt und hängt von der Konfiguration einer speziellen Implementierung ab und kann sich im Zeitablauf ändern.) Jede Peereinheit 802A–D enthält einen Dynamikmanager 804A–D, um das Verarbeiten der Deltas zu koordinieren, und einen Kommunikationsmanager 806A–D, um die Kommunikation zwischen den Peereinheiten 802A–D zu steuern. Die Verantwortlichkeiten der Kommunikationsmanager 806A–D umfassen das Senden und Empfangen von Nachrichten (einschließlich der Deltas) über das Netz, z. B. das Internet 803 unter Verwendung von Internetprotokollen, wie zum Beispiel TCP/IP. Jede Peereinheit 802A–D umfasst einen Speicher 808A–D zum Datenspeichern, um neben anderen Funktionen den Betrieb der jeweiligen Kommunikationsmanager 806A–D zu unterstützen.
  • Wie erwähnt wurde, ist jeder Kommunikationsmanager 806A–D für das Bewerkstelligen aller Kommunikationen zwischen seiner Peereinheit und den anderen Peereinheiten verantwortlich. Zum Beispiel bewerkstelligt der Kommunikationsmanager 806A die bidirektionalen Kommuni kationen zwischen der Peereinheit 802A und den Peereinheiten 802B–D. Die Kommunikationen können Nachrichten umfassen, die entweder von der Peereinheit 802A an eine oder mehrere der Peereinheiten 802B–D oder die von einer der Peereinheiten 802B–D an die Peereinheit 802A gesendet werden. Die Übertragungen können Unicast-Techniken (ein Bestimmungsziel, Punkt-zu-Punkt-Kommunikationen), Multicast-Techniken (mehrere Bestimmungsziele mit Punkt-zu-Punkt-Kommunikationen) oder Rundruftechniken (Übertragung an alle "mithörenden" Bestimmungsziele) einsetzen. Die Übertragungen können direkt und ohne Zwischenstationen erfolgen, vorausgesetzt dass die Bestimmungsziel-Peereinheit(en) 802B–D (im ersteren Fall) oder die Peereinheit 802A (im letzteren Fall) an das Netz, z. B. das Internet, angeschlossen ("online") und durch die Peereinheit 802–A erreichbar sind. Die Bestimmungsziele können zum Beispiel nicht erreichbar sein, wenn sie ein nicht kompatibles Kommunikationsprotokoll verwenden oder hinter einem Firewall liegen. Wie oben erwähnt wurde, kann ein Vorrichtungspräsenzserver 812 eingesetzt werden, um festzustellen, ob das angestrebte Bestimmungsziel online oder offline ist. Ist das Bestimmungsziel offline, dann können die Kommunikationen über ein Relais 814 erfolgen (wie oben erwähnt wurde), welches die Nachricht dann an sein Bestimmungsziel weiterleitet, wenn es zum Online-Betrieb zurückkehrt. Der Kommunikationsmanager 806A ist dafür verantwortlich zu bestimmen, ob die Bestimmungsziele anschließbar oder erreichbar sind, wie diese Begriffe hier verwendet werden.
  • Wenn die Peereinheit 802A eine Nachricht an die Peereinheit 802C zu senden versucht und der Präsenzserver 812 dem Kommunikationsmanager 806A mitgeteilt hat, dass die Peereinheit 802C online ist, dann kann somit der Kommunikationsmanager 806A die Nachricht über das Netz, z. B. über das Internet 803, direkt an die URL der Peereinheit 802C senden, wenn diese Peereinheit anschließbar ist. An der Peereinheit 802C wird die Nachricht durch den Kommunikationsmanager 806C empfangen, der die Nachricht dem Dynamikmanager 804C übergibt.
  • Wenn hingegen die Peereinheit 802A eine Nachricht an die Peereinheit 802C zu senden versucht und der Präsenzserver 812 dem Kommunikationsmanager 806A mitgeteilt hat, dass die Peereinheit 802C offline ist, dann sendet der Kommunikationsmanager 806A die Nachricht über das Netz, z. B. über das Internet 803, an die URL des Relais 814. Das Relais 814 kann als ein leistungsstarker Dateiserver implementiert sein, der die laufende Nachricht speichert, bis die Peereinheit 802C wieder online ist, und die Nachricht dann an die URL der Peereinheit 802C weiterleitet. An der Peereinheit 802C wird die Nachricht empfangen, wie oben erwähnt wurde, und durch den Kommunikationsmanager 806C dem Dynamikmanager 804C übergeben. Wenn sowohl die Bestimmungsziel-Peereinheit 802C als auch das Relais 814 offline sind, dann wird der Kommunikationsmanager 806A nach einer Frist (die durch einen Unterbrechungsmechanismus festgelegt wird) erneut versuchen, die Nachricht zu senden, und er wird bei einem anhängigen Wiederholungsversuch die Deltas z. B. im Speicher 808A festhalten, wenn die Peereinheit 802A neu startet oder heruntergefahren wird.
  • Folglich kann der Präsenzserver 812 innerhalb des ABC-Systems 800 dem Zweck dienen, zu beobachten, ob die Peereinheiten 802A–D online oder offline sind, und er kann jede Peereinheit vom Online/Offline-Status der anderen Peereinheiten unterrichten. Um diesen Zweck zu erfüllen kann der Vorrichtungspräsenzserver 812 zum Beispiel so konfiguriert werden, wie es für das Computersystem 100 von 1 dargestellt ist. Alternativ kann der Vorrichtungspräsenzserver mit dem Relaisserver kombiniert werden. In einer derartigen Implementierung werden durch den Relaisserver Vorrichtungspräsenz-Protokollfunktionen ausgeführt, wobei die Vorrichtungsstatusinformationen in der Nachschlagetabelle 320 anstelle eines separaten Präsenzverzeichnisses 818 verwendet werden.
  • Während des Betriebs kann jede der Peereinheiten 802A–D dafür verantwortlich sein, den Vorrichtungspräsenzserver 812 über ihren Offline/Online-Status in Kenntnis zu setzen, d. h. ob sie online ist oder im Begriff ist, offline zu gehen. Alternativ kann der Vorrichtungspräsenzserver 812 die Peereinheiten 802A–D von Zeit zu Zeit abfragen, um ihren Online/Online-Status abzurufen. Diese Informationen werden im Vorrichtungspräsenzserver 812 vorzugsweise in einem flüchtigen Speicher 816 in einem Präsenzverzeichnis 818 gespeichert. Der Vorrichtungspräsenzserver 812 hält das Präsenzverzeichnis 818 vorzugsweise in Datenbaumform vor, wobei z. B. XML verwendet wird. Das Präsenzverzeichnis 818 ist anfänglich leer und bleibt so, bis die Peereinheiten 802A–D dem Vorrichtungspräsenzserver 812 ihren Online/Offline-Status, z. B. Statusbenachrichtigungen, bereitstellen. Dann speichert das Präsenzverzeichnis 818 beim Empfang der Statusinformationen die URL der benachrichtigenden Peereinheit und ihren Online/Offline-Status.
  • Der Vorrichtungspräsenzserver 812 kann auch eine Vorrichtungsstatus-Vorbestelldienst für die Peereinheiten 802A–D bereitstellen. Der Vorrichtungspräsenzserver 812 kann jede vorbestellende Peereinheit 802A–D über den Online/Offline-Status aller anderen Peereinheiten 802A–D und über eine Veränderung in diesem Status unterrichten. Der Vorrichtungspräsenzserver 812 kann den vorbestellenden Peereinheiten 802A–D die Vorrichtungsstatus-Benachrichtigungen zusenden entweder (a) bei Anforderung von Vorrichtungsstatus-Änderungsbenachrichtigungen von der Peereinheit 802A–D, die das Senden einer Nachricht "wünscht", (b) bei Anschluss der Peereinheit an das Netz, z. B. das Internet 803, (c) von Zeit zu Zeit, z. B. bei einer Änderung im Vorrichtungsstatus einer beliebigen Peereinheit oder (d) bei einer Kombination aus dem vorhergehenden. Vorzugsweise erfolgen alle Kommunikationen entsprechend den Internetprotokollen. Diese Protokolle können unter anderem das enthalten, was oben erwähnt ist.
  • Ebenso kann jede Peereinheit 802A–D einen Nutzerstatusdienst vorbestellen, z. B. hinsichtlich eines jeden Teleraums, in welchem sein Nutzer ein Mitglied ist, und danach auf diese Weise laufend etwas über den Nutzerstatus aller anderen Teleraummitglieder erfahren, z. B. ob jedes Mit glied zur Zeit "eingeloggt" ist. Um diesen Dienst zu aktivieren, weist der Vorrichtungspräsenzserver 812 ein Teleraum-Mitgliederverzeichnis 822 auf, das in dem Speicher 816 vorgehalten wird, um für jeden Teleraum Mitgliederaufzeichnungen zu speichern, die durch den Präsenzserver unterstützt werden, und um Bereiche für das Speichern von Nutzerstatusinformationen zu haben. Alternativ können diese Informationen in jeder Peereinheit 802A–D statt im Vorrichtungspräsenzserver 812 vorgehalten werden, wodurch die Notwendigkeit für ein zentral gelegenes Mitgliederverzeichnis 822 zum Bereitstellen dieser Informationen entfällt.
  • Zur Veranschaulichung, wenn die Peereinheit 802A der Peereinheit 802B eine Nachricht, wie z. B. ein Delta, zu senden wünscht, dann greift die Peereinheit 802A auf den Präsenzserver 430 zu. Der Kommunikationsmanager 806A der Peereinheit 802A wird bereits über die URL der Peereinheit 802B verfügen. Die Peereinheit 802A wird diese URL der Peereinheit 802B verwenden, um vom Vorrichtungspräsenzserver 430 die Internetprotokoll(IP)-Adresse der Peereinheit 802B und ihren Anschlussstatus zu erhalten. Dann wird der Kommunikationsmanager 806A die Nachricht an die IP-Adresse der Peereinheit 802A senden. Es ist zu beachten, dass der Dynamikmanager 804A die Nachricht an den Kommunikationsmanager 806A übergeben wird, ohne Kenntnis davon zu haben, ob die Bestimmungsziel-Peereinheit 802B an das Netz angeschlossen ist.
  • 9 zeigt eine Ausführung bestimmter Komponenten der Peereinheit 802A, die an der Kommunikation über den Kommunikationsmanager 806A beteiligt sind. Der Speicher 830A speichert Daten zur Unterstützung der Arbeit des Kommunikationsmanagers 806A. (Die anderen Peereinheiten 802B–D weisen ähnliche Speicherstrukturen auf, um Daten im Auftrag ihrer jeweiligen Kommunikationsmanager 806B–D zu speichern.) Wie dargestellt ist, hält der Kommunikationsmanager 806A eine Ausgangsnachrichten-Warteschlangenstruktur 904 im Speicher 830A vor, die alle abgehenden Nachrichten einschließlich der Deltas vorzugsweise in XML-Form speichert.
  • Die Ausgangsnachrichten-Warteschlangenstruktur 904 kann als eine Worklist-Anordnung implementiert sein, die Nachrichten enthält (oder auf Nachrichten verweist, die anderweitig im Speicher 830A gespeichert sind), die vom Dynamikmanager 804A her durch den Kommunikationsmanagers 806A empfangen wurden, um an die anderen Peereinheiten 802B–D ausgeliefert zu werden. Als solche kann die Ausgangsnachrichten-Warteschlangenstruktur 904 den Ausgabedeltaspeicher 628 in 6 enthalten. Neben der Ausgangsnachrichten-Warteschlangenstruktur 904 umfasst der Speicher 830A eine Lieferscheinanordnung 906, die eine Verknüpfung von Nachrichtennutzdaten (z. B. als eine Anzahl von XML-Elementen formatiert, wobei jedes XML-Element ein Dokumentenfragment ist) mit Lieferendpunkten für die Ressourcenbehandlung bereitstellt. Der Speicher 830A umfasst ferner ein durch die URLs von möglichen Bestimmungsziel-Endpunkte indiziertes Anschlussverzeichnis 908, das netzfähige Vorrichtungen, wie z. B. die Peereinheiten 802A–D und das Relais 814 umfasst, um ihren jeweiligen Anschließbarkeitsstatus zu speichern.
  • Der Kommunikationsmanager 806A umfasst einen Empfänger 912 und einen Sender 914, die einen Empfangsstrang bzw. einen Sendestrang verarbeiten. Der Empfänger 912 empfängt die eingehenden Nachrichten einschließlich der eingehenden Deltas über die Verbindung 916 von den anderen Peereinheiten 802B–D oder dem Relais 814 und leitet sie über die Verbindung 918 zum Erledigen an den Dynamikmanager 804A weiter, wie hier an anderer Stelle beschrieben ist.
  • Der Sender 914 des Kommunikationsmanagers 806A empfängt vom Dynamikmanager 804A die abgehenden Nachrichten über die Verbindung 922. Der Sender 914 untersucht die abgehenden Nachrichten und extrahiert die Vorrichtungs-URLs. Dann verwendet der Sender 914 eine Abbildung „Vorrichtungs-URL auf IP-Adresse" 1001 im Ramp 1002A (10), um die extrahierten Vorrichtungs-URLs auf IP-Adressen abzubilden. Schließlich greift der Sender 914 auf das Anschlussverzeichnis 908 zu, um die Anschließbarkeit der Bestimmungszielvorrichtungen zu bestä tigen. Wie oben erwähnt wurde, geht der Kommunikationsmanager der Anschließbarkeit nach und bestimmt sie schließlich, während der Präsenzserver den Online/Offline-Status der Bestimmungszielvorrichtungen bereitstellt. Für jede Nachricht wählt der Sender 914, der auf die Präsenz- und Anschließbarkeits-Statusinformationen anspricht, einen Weg aus, auf dem die Nachricht zum benannten Bestimmungsziel weiterzuleiten ist. Ist die Bestimmungszielvorrichtung online und anschließbar, wie durch die Präsenz- und Anschließbarkeits-Informationen angezeigt wird, dann wird der Sender 914 die Nachricht über die Verbindung 924 an die URL der Bestimmungszielvorrichtung selbst richten. Ist sie nicht online und unerreichbar, wie durch die Präsenz- und Anschließbarkeits-Informationen angezeigt wird, dann wird der Sender 914 die Nachricht über die Verbindung 924 an das Relais 814 richten und die URL der Bestimmungszielvorrichtung in die Nachricht einfügen zur Verwendung durch das Relais bei der Weiterleitung der Nachricht. Wie an anderer Stelle beschrieben ist, weist das Relais 814 einen lokalen Speicher zum Festhalten der anhängigen Nachrichten auf, bis die Bestimmungszielvorrichtungen in den Online-Status zurückkehren und anschließbar sind. Ist hingegen die Peereinheit 802A selbst offline, dann behält der Sender 914 die abgehenden Nachrichten in der Ausgangsnachrichten-Warteschlange 904 bis zu dem Zeitpunkt, wenn die Peereinheit 802A zum Online-Betrieb zurückkehrt, und sendet dann die Nachrichten, wie oben beschrieben ist. Die Nachrichtenwarteschlange 904 wird über Zeiträume, in denen die Peereinheit 802A heruntergefahren oder neu gestartet wird, z. B. im XML-Format aufrechterhalten.
  • In einem Ausführungsbeispiel hält der Kommunikationsmanager 806A eine Kopie aller gesendeten Nachrichten, einschließlich aller Deltas, im Speicher 830A vor, bis der Kommunikationsmanager der Bestimmungsziel-Peereinheit 806B–D den erfolgreichen Empfang bestätigt. Wenn die Bestätigung in einem vorgegebenen Zeitraum nicht empfangen wurde, dann wird der Kommunikationsmanager 806A die Nachricht erneut senden. Bleibt eine Rückbestätigung aus, dann wird der Kommunikationsmanager 806A bis zu einer zuvor ausgewählten Gesamtzahl von Versuchen das Senden wiederholen. Die maximale Anzahl von Wiederholungen kann für das ABC-System oder für einen speziellen Teleraum festgelegt werden oder vom Nutzer einstellbar sein. Wenn die Maximalzahl von Wiederholungen keine Bestätigung zur Folge hat, dann kann die Nachricht an diese Bestimmungsziel-Peereinheit abgelegt werden, oder die Kommunikation zu dieser Bestimmungsziel-Peereinheit kann über andere Kanäle, z. B. durch das Relais, versucht werden. Alternativ wird es manchmal keine festgelegte Maximalzahl von Wiederholungen geben. Ist dies der Fall und ist das Relais nicht erreichbar, dann wird die Vorrichtung die Nachricht auf unbestimmte Zeit in der Warteschleife lassen, bis entweder die Peervorrichtung oder der Relaisserver verfügbar werden.
  • In einigen Ausführungsformen kann eine Quellen-Peereinheit darüber hinaus einen Zeitraum festlegen, der als "Lebenszeit" für jede Nachricht bezeichnet wird. Der Kommunikationsmanager für die Quellen-Peereinheit wird die Lebenszeit (TTL) im Speicher z. B. mit der Kopie der Nachricht speichern. Von der TTL ausgehend wird die Quellen-Peereinheit die Nachricht löschen, wenn sie nicht erfolgreich vor Ablauf der TTL gesendet worden ist. In dem Ausführungsbeispiel, in dem jede Bestimmungsziel-Peereinheit eine Bestätigungsnachricht zurück an die Quellen-Peeeinheit sendet, um den Empfang der Nachricht zu bestätigen, wird die Quellen-Peereinheit eine Nachricht löschen, wenn die Bestätigung nicht vor Ablauf der TTL empfangen worden ist. Wird zum Beispiel eine Nachricht "Kannst Du mich mittags zum Mittagessen treffen?" gesendet, dann kann diese Nachricht TTL-Daten aufweisen, die den sendenden Endpunkt dazu bringen, die Nachricht zu löschen, wenn die Bestimmungsziel-Peeereinheit keine Bestätigung sendet, die vor dem Mittag empfangen wird. Noch weitere Veränderungen an diesem Merkmal können dafür sorgen, dass eine Nachricht, die ein Delta enthält, gelöscht wird, wenn das Delta durch das Bestimmungsziel vor Ablauf der TTL nicht ausgeführt wird. Der TTL-Zeitraum kann vom Nutzer in verschiedenen Steuerungsebenen festgelegt werden, z. B. für alle Nachrichten in einem Teleraum oder für alle Nachrichten eines bestimmten Typs oder für jede Nachricht, z. B. auf Basis des Nachrichteninhalts oder des Bestimmungszielendpunkts.
  • In einem weiteren Ausführungsbeispiel kann der Kommunikationsmanager 806A verantwortlich sein für das Abbilden eines Bestimmungszielendpunktes, der für eine Nachricht festgelegt ist, auf einen oder mehrere andere Endpunkte, die zu verschiedenen Identitäten gehören, und für das automatische Weiterleiten von Kopien der Nachricht an diese anderen Endpunkte. Somit kann der Kommunikationsmanager 806A selbst dann, wenn eine Nachricht eine Bestimmungsziel-URL festlegt, programmiert sein, die Nachricht an andere URLs zu senden. Dazu greift der Kommunikationsmanager 806A auf eine Identitätsdatenstruktur, z. B. im XML-Format, zu, die im Speicher 808A gespeichert ist und durch den Identitätsmanager 408 (4) für die Peereinheit 802A vorgehalten wird. Von den Identitätsinformationen ausgehend, die aus der Identitätsdatenstruktur extrahiert werden, kann der Kommunikationsmanager 806A dann eine Nachricht, die ursprünglich an eine erste Bestimmungsziel-Peereinheit adressiert war, an eine oder mehrere andere Peereinheiten anstelle der oder einschließlich der ersten Peereinheit weiterleiten. Wenn zum Beispiel ein Nutzer eine Nachricht an eine Person im Teleraum unter dem Namen Jack zu senden wünscht, dann kann der Nutzer einen Bestimmungszielendpunkt von Jacks Heimcomputer bestimmen. Der Kommunikationsmanager 806A kann dann z. B. durch den Identitätsmanager die Identitätsdatenstruktur prüfen und feststellen, dass Jack auch einen Endpunkt auf der Arbeitsstelle hat. Dann kann der Kommunikationsmanager die Nachricht an den Arbeitscomputer statt an den Heimcomputer oder zusätzlich zum Heimcomputer weiterleiten. Das kann insbesondere von Nutzen sein, wenn der Kommunikationsmanager 806A feststellt, dass der Heimcomputer offline oder nicht erreichbar ist. Außerdem kann der Kommunikationsmanager 806A Redundanzen erkennen, wenn z. B. eine Nachricht sowohl an den Endpunkt von Jacks Wohnung als auch den seiner Arbeitsstelle gesendet werden soll, und dann auswählen, die Nachricht nur an den einen oder den anderen zu senden, um den redundanten oder nicht erforderlichen Verkehr zu unterbinden. Die Arbeit des Kommunikationsmanagers 806A bezüglich des Identitätsroutings kann, wie in diesem Abschnitt erörtert wird, nutzergesteuert, z. B. mit Bezug auf jede Nachricht, erfolgen, oder sie kann voreingestellt sein für spezielle Teleräume oder Nachrichtentypen oder Identitäten, die mit den Bestimmungszielendpunkten verknüpft sind. Die Identitätsdatenstruktur kann Anweisungen bezüglich des Endpunktes enthalten, an den die Nachrichten gesendet werden sollten, um z. B. bestimmte Personen zu erreichen, und diese Anweisungen können von Zeit zu Zeit durch die Teleraummitglieder aktualisiert werden.
  • Der Kommunikationsmanager 806A steht auch mit einem Ressourcen-Awareness-Manager (RAM) 930 innerhalb der Peereinheit 802A in Verbindung, der verantwortlich ist für die Verwaltung von Ressourceninformationen, die von den Ressourcenanbietern erhalten werden, die außerhalb der Peereinheit 802A liegen. Derartige Informationen sind nützlich oder erforderlich für eine Teilnahme der Peereinheit 802A an den Teleräumen, in denen sie ein Mitglied ist. 10 zeigt einen veranschaulichenden Betrieb eines RAM 930, der Informationen aus einer Anzahl von Quellen erhält, die als Ressourcen-Awareness-Manager-Provider oder RAMPs 1002A–C bezeichnet werden, wobei der Präsenzserver 812 als RAMP 1002A, ein Dateiserver als RAMP 1002B usw. eingeschlossen sind. Der RAM 930 kann den geeigneten RAMP bestimmen, von dem die Informationen zu erhalten sind, die einer Anfrage vom Kommunikationsmanager 806A her entsprechen. In Reaktion auf die Anfrage gibt der RAM 930 die angeforderten Informationen asynchron an den Kommunikationsmanager 806A zurück. Zum Beispiel kann der RAMP 1002A (der Präsenzserver) in Reaktion auf eine Anfrage vom Kommunikationsmanager 806A nach der IP-Adresse, die zu einer bestimmten URL gehört, die oben beschriebene Abbildung der Vorrichtungs-URL auf die IP-Adresse ausführen und die angeforderte IP-Adresse zurückgeben. Der Kommunikationsmanager 806A puffert die zurückgegebene IP-Adresse z. B. im Speicher 808A.
  • Die Arbeit der RAMPs 1002A–C kann am besten anhand der nachfolgenden Erörterung von Eigenschaftsgruppen erläutert werden. Eine Ressource, wie sie hier verwendet wird, kann eine Per son, ein Dokument oder eine Vorrichtung einschließen, wobei alle eindeutig durch eine URL gekennzeichnet sind. Für jede Eigenschaft speichert der RAM eine Eigenschaftsgruppe von beschreibenden Informationen. Die Eigenschaftsgruppe kann z. B. in der Form von Zeichenkettennamen vorliegen, d. h. einer Standardliste, die bezeichnend für den Ressourcentyp (d. h. Person, Dokument oder Vorrichtung) ist. Der RAM 930 kann jeden RAMP 1002A–C abfragen, um eine Liste der unterstützten Ressourceneigenschaftsnamen zu erhalten, und somit kann die Arbeit des RAM durch das dynamische Offenlegen der Eigenschaftsgruppe gekennzeichnet werden. In Reaktion auf eine Anforderung kann der RAM 930 Informationen, z. B. im XML-Format, vorzugsweise in einer hierarchischen Datenstrukturform zurückgeben. Die zurückgegebenen Informationen können von den verschiedenen Typen von Anforderungen abhängig sein und die Form annehmen von (a) einer "statischen Markierungs"-Reaktion, welche Informationen zurückgibt, wie sie speziell bezüglich einer spezifizierten URL, z. B. einer lokalen Vorrichtung, angefordert wurden, oder (b) einer "Anfrage"-Reaktion, die Informationen in Reaktion auf eine Anfrage zurückgibt. Die Anfragereaktion kann strukturell, wertbezogen oder "aktualisieren wie abgeändert" sein. Eine wertbezogene Anfragereaktion können zum Beispiel Informationen (i) sein, die von einem Beziehungsoperator abhängig sind (wie z. B. Daten, die einen bestimmten Zeitraum betreffen, oder Daten zu Arbeitern, die ein angegebenes Gehalt beziehen); oder die von einem Lagewert abhängig sind (d. h. die in einer festgelegten Reihenfolge zusammengestellt sind); oder die (c) von einer Anforderung „aktualisieren wie abgeändert" abhängig sind, wobei Informationen zurückgegeben werden, die verändert wurden seit einer letzten Anfrage aus der anfordernden Einheit (z. B. die Datei XXX wurde in die Datei YYYY umbenannt). Zur Veranschaulichung kann der RAM 930 aufgefordert werden, mit verschiedenen RAMPs 1002A–C zu kommunizieren, um Megadaten über benannte Ressourcen, z. B. eine spezifizierte Person, zu erhalten oder um Informationen zu erhalten, welche die Verfügbarkeit bestimmter Personen zur Teilnahme an einer Online-Diskussion angeben.
  • Mit erneuter Bezugnahme auf 8 sorgt das ABC-System 800 für die Kommunikation zwischen den Peereinheiten 802A–D über ein Peer-zu-Peer-Modell. Das ABC-System 800 ermöglicht eine derartige Kommunikation unabhängig vom Anschlussstatus der Bestimmungszielvorrichtungen, indem ein Relais, z. B. ein Relais 814, bereitgestellt wird. Das Relais 814 ist ein logischer Stellvertreter, der die Kommunikationen in den Fällen vermitteln kann, in denen eine direkte Peer-zu-Peer-Kommunikation nicht möglich ist. Das Relais 814 ist auch eine potentielle Zentrale für das Optimieren von bestimmten Kommunikationsformen innerhalb der Zusammenarbeitsumgebung. Das Relais 814 umfasst einen Speicher 832 für das Speichern von Nachrichten, wobei auf dem Wege befindliche Deltas eingeschlossen sind, einen Empfänger 834 für den Empfang von Nachrichten über das Internet 803 und einen Sender 836, um sie über das Internet 803 zu senden. Während des Einsatzes des Relais 814 können die Peereinheiten 802A–D als "Zusammenarbeits-Clients" bezeichnet werden.
  • 11 zeigt eine Implementierung des Relais 814 einschließlich der folgenden zusätzlichen Komponenten:
    • • Delta-Relaismodul 1102 zum Steuern der Delta-Relaisdienste für nicht angeschlossene Bestimmungsziel-Clients.
    • • Auffächerungsmodul 1104 zum Bereitstellen einer Multicast- oder einer Rundruf-Kommunikation, was als "Auffächern" bezeichnet wird, wobei die Nach richten gleichzeitig an mehr als eine Bestimmungszielvorrichtung gesendet werden können. Das kann besonders von Nutzen sein, wenn eine sendende Peereinheit 802A–D über eine verhältnismäßig langsame Kommunikationsverbindung 924 (9) an die Bestimmungsziel-Peereinheiten angeschlossen ist, so dass mehrfach ausgeführte Punkt-zu-Punkt(Unicast)-Übertragungen übermäßig viel Zeit benötigen würden.
    • • Firewall-Modul 1106 zum Bereitstellen eines Stellvertreters, um es autorisierten Peereinheiten 802A–D zu ermöglichen, Nachrichten durch Firewalls hindurch zu senden, z. B. für die Kommunikation über ein öffentliches Netz mit Vorrichtungen in einem geschützten privaten Netz. Das Firewall-Modul 1106 kann das bewerkstelligen, weil Firewalls im Allgemeinen nur abgehenden Verkehr und keinen eingehenden Verkehr erlauben.
    • • Routingkostenmodul 1108 zum Speichern von Routingkosteninformationen und zum Bereitstellen derartiger Informationen in Reaktion auf Routingkostenanfragen von den Peereinheiten 802A–D. Mit diesen Informationen können die Zusammenarbeits-Clients in Abhängigkeit von den Bestimmungen der Routen mit den geringsten Kosten, die von den Peereinheiten 802A–D ausgeführt wurden, auswählen, die Nachrichten direkt an die Bestimmungsziel-Peereinheiten oder über das Relais zu senden. Die Peereinheiten 802A–D können z. B. in den Kommunikationsmanagern eine lokale Kopie der Informationen speichern.
    • • Routenlatenzmodul 1110 zum Speichern von Latenz- und Durchsatzinformationen und zum Bereitstellen derartiger Informationen in Reaktion auf Latenzanfragen von den Peereinheiten 802A–D. Mit diesen Informationen können die Zusammenarbeits-Clients in Abhängigkeit von Routingbestimmungen mit Latenzvergleich, die von den Peereinheiten 802A–D ausgeführt wurden, auswählen, die Nachrichten direkt an die Bestimmungsziel-Peereinheiten oder über das Relais zu senden. Das kann besonders von Nutzen sein, wenn eine sendende Peereinheit 802A–D über eine verhältnismäßig langsame Kommunikationsverbindung 924 (9) an die Bestimmungsziel-Peereinheiten angeschlossen ist. Die Peereinheiten 802A–D können z. B. in den Kommunikationsmanagern eine lokale Kopie der Informationen speichern.
    • • Beglaubigungsmodul 1112 zum Bereitstellen einer Beglaubigung für Kommunikationsnachrichten, z. B. einer "Lock-On"-Form der Beglaubigung, aus Gründen der Einfachheit und Leistungsfähigkeit vorzugsweise ohne Verschlüsselung.
  • 12 zeigt ein Routing-Verfahren 1200, das in den einzelnen Kommunikationsmanagern der zusammenarbeitenden Clients zur Bestimmung eines optimalen Routing für jede abgehende Nachricht implementiert werden kann. Das Routing-Verfahren 1200 startet am Schritt 1202, in dem der Anschlussstatus des Bestimmungsziels geprüft wird. Der Kommunikationsmanager kann seine eigenen Anschließbarkeitsinformationen vorhalten, und er kann vom Präsenzserver 812 "Präsenz"-Informationen (d. h. den Online/Offline-Status) erhalten. Ist das Bestimmungsziel vom Netz, z. B. dem Internet, getrennt, dann wird im Schritt 1202 die Schlussfolgerung gezogen, dass die Übertragung über das Relais 814 zu erfolgen hat. Im Schritt 1204 wird geprüft, ob die Nachricht an mehrere Bestimmungsziele zu senden ist und ob die Übertragung am besten unter Verwendung der Auffächerungsdienste des Moduls 1104 des Relais 814 erfolgen kann. Zum Beispiel kann der Kommunikationsmanager die Nachricht in den Fällen über das Relais 814 leiten, in denen die Zahl der Bestimmungsziele entweder eine vorprogrammierte Zahl, eine vom Nutzer festgelegte Zahl oder eine Zahl übersteigt, die dynamisch berechnet wird auf Basis der verfügbaren Bandbreite, der Netzüberlastung und der Gesamtzahl der Peervorrichtungen, an welche die Nachricht gesendet wird. Im Schritt 1206 wird geprüft, ob das Bestimmungsziel fordert, dass die Übertragung einen Firewall in ein geschütztes Netz hinein durchläuft, für das eine Autorisierung erforderlich ist. Wenn ja, dann kann das Relais 814 gewählt werden, um die Übertragung in den Fällen auszuführen, in denen das Relais autorisiert ist, nicht aber die sendende Peereinheit. Informationen bezüglich der Anforderungen des Bestimmungszieles und der Autorisierung können über den RAM 930 und das Firewall-Modul 1106 des Relais 814 erhalten werden. Im Schritt 1208 werden auf Basis der Routingkosteninformationen, die durch den RAM und das Routing kostenmodul 1108 des Relais 814 bereitgestellt werden, die Vergleichskosten von einem direkten Senden der Nachricht zu einem Senden über das Relais bestimmt. Das Routing mit den geringsten Kosten kann z. B. automatisch für alle Kommunikationen erfolgen, oder es kann eine vom Operator ausgewählte Option sein. Wenn es so aktiviert ist und die Prüfung am Schritt 1210 zeigt, dass das Relais die Alternative mit den geringsten Kosten bietet, dann wird die Nachricht im Schritt 1210 durch das Relais 814 gesendet. Im Schritt 1212 erfolgt eine ähnliche Bestimmung hinsichtlich der Routinggeschwindigkeit auf Basis von Informationen, die vom RAM 930 und vom Routenlatenzmodul 1110 des Relais 814 erhalten werden. Das Routing mit der geringsten Latenz kann z. B. für alle Kommunikationen automatisch erfolgen, oder es kann eine vom Operator ausgewählte Option sein. Wenn es so aktiviert ist und die Prüfung am Schritt 1214 zeigt, dass das Relais die Alternative mit der geringsten Latenz bietet, dann wird die Nachricht im Schritt 1214 durch das Relais 814 gesendet. Wenn sie nicht über das Relais gesendet wird, dann wird im Schritt 1218 veranlasst, dass die Nachricht der Bestimmungsziel-Peereinheit direkt zugesendet wird. Es ist leicht zu verstehen, dass die Reihenfolge der Schritte 12021218 geeignet abgerändert und/oder die beschriebenen Prüfungen verfeinert werden können, um den Erfordernissen der jeweiligen Ausführungen zu entsprechen.
  • Das ABC-System kann insofern einen Mehrprozess- und Mehrstrangbetrieb führen, als jede Maschinen-Werkzeug-Kombination, die eine Aktivität ausbildet, sich auf einen eigenständigen Dynamikmanager beziehen kann, und es können mehrere Dynamikmanager vorgesehen sein, um mehrere gleichzeitige Betriebsaktivitäten unterzubringen. Obwohl eine eineindeutige Beziehung zwischen Teleräumen und Dynamikmanagern die geringste Latenz in die Abwicklung der Deltas einbringen kann, könnte die Strangverarmung zu einem Fehler- oder Störungszustand führen. Andererseits könnten einzelne Dynamikmanager, die viele Teleräume unterstützen, zu Stauproblemen führen. Die optimalen Zahlen einer jeden Komponente hängen von der Hardwareanwendung, der Zahl der teilnehmenden Peereinheiten und den Verkehrsbedingungen ab.
  • Das ABC-System kann viele Computersysteme (CS) umfassen, jedes mit einem oder mehreren Teleräumen(TS), wobei jedes eine oder mehrere Aktivitätskomponenten instantiiert und jede Aktivitätskomponente ein Werkzeug(T)-Maschinen(E)-Paar aufweist, dessen Arbeit durch einen Dynamikmanager (DM) koordiniert wird. Somit kann das ABC-System ein Anzahl von Teleräumen mit einem oder mehreren Dynamikmanagern aufweisen. Dementsprechend kann das ABC-System zum Beispiel wie folgt ausgebildet sein:

    ABC-System = CS1 = DM1 + A1, wobei A1 = T1 + E1 CS2 = DM2 + A2, wobei A2 = T2 + E2 ... ... CSn = DMn + An, wobei An = Tn + Ewobei alle Aktivitäten A1, A2 und An in einem oder mehreren Teleräumen hinterlegt sind und "n" eine positive ganze Zahl ist. Zur Veranschaulichung sind somit die folgenden Beziehungen Beispiele von verschiedenen Telerauminstantiierungen:
    TS ⊂ A1 oder
    TS ⊂ A1 + A2 oder
    TS ⊂ A1 + A2 ... Am
    oder
    TS ⊂ A1
    TS ⊂ A2
    . und
    TS ⊂ Am,
    wobei das Symbol "⊂" die „Zugehörigkeit zu einer Menge" bedeutet und "m" eine positive ganze Zahl ist. Dementsprechend kann jeder Teleraum eine oder einige Aktivitäten instantiieren und der Rahmen einen einzigen Teleraum aufweisen; alternativ kann jeder Teleraum eine oder einige Aktivitäten instantiieren und der Rahmen mehrere Teleräume aufweisen.
  • Eine Softwarerealisierung von Komponenten der oben beschriebenen Ausführungsform kann Computeranweisungen und Programme umfassen, die entweder auf einem stoffliches Medium, wie z. B. computerlesbaren Medien, z. B. auf der Diskette 142, dem CD-ROM 147, dem ROM 115 oder der Festplatte 152 von 1, gespeichert sind, oder die übertragbar sind über ein Modem oder eine andere Schnittstellenvorrichtung, wie z. B. den Kommunikationsadapter 190, der über ein Medium 191 an das Netz 195 angeschlossen ist. Das Medium 191 kann entweder ein stoffliches Medium sein, einschließlich der aber nicht beschränkt auf die optischen oder drahtgebundenen Kommunikationsleitungen, oder es kann mit drahtlosen Techniken realisiert sein, einschließlich der aber nicht beschränkt auf die Mikrowellen, das Infrarot und andere Übertragungstechniken. Es kann auch das Internet sein. Eine Reihe von Computeranweisungen stellt den gesamten oder einen Teil des Funktionsumfanges dar, der hier zuvor mit Bezugnahme auf die Erfindung beschrieben wurde. Fachleute werden anerkennen, dass derartige Computeranweisungen in einer Reihe von Programmiersprachen zur Verwendung mit vielen Computerarchitekturen oder Betriebssystemen geschrieben werden können. Ferner können derartige Anweisungen unter Verwendung einer beliebigen vorhandenen oder zukünftigen Speichertechnologie gespeichert werden, einschließlich der aber nicht beschränkt auf die Halbleiter-, magnetischen, optischen oder anderen Speichervorrichtungen, oder sie können unter Verwendung einer beliebigen vorhandenen oder zukünftigen Kommunikationstechnologie übermittelt werden, einschließlich der aber nicht beschränkt auf die optischen, Infrarot-, Mikrowellen- oder anderen Übertragungstechnologien. Es ist vorgesehen, dass ein derartiges Computerprogrammprodukt als ein austauschbares Medium mit der beigefügten gedruckten oder elektronischen Dokumentation, z. B. als eingeschweißte Software, vertrieben werden kann, in einem Computersystem im voraus, z. B. auf einem System-ROM oder einer Festplatte, geladen werden kann oder von einem Server oder elektronischen Informationsanzeiger über ein Netz, z. B. das Internet oder das World Wide Web, vertrieben werden kann.

Claims (23)

  1. Lokale netzfähige Vorrichtung (802A), die zum Betrieb in Zusammenarbeit und zur Kommunikation über ein Netz (803) mit wenigstens einer entfernten netzfähigen Vorrichtung (802B) eingerichtet ist, wobei die lokale netzfähige Vorrichtung Folgendes aufweist: A) einen Speicher (808A) zum Speichern einer lokalen Datenkopie gemäß einem Datenmodell; B) eine Datenänderungsmaschine (426), die mit dem Speicher gekoppelt ist und auf mehrere Datenänderungsanfragen anspricht, zur Speichersteuerung der lokalen Datenkopie in dem Speicher gemäß dem Datenmodell und zum Durchführen der Änderungen der lokalen Datenkopien, wobei die mehreren Datenänderungsaufforderungen eine lokal erzeugte Datenänderungsaufforderung, die an der lokalen netzfähigen Vorrichtung erzeugt wird, und eine entfernt erzeugte Datenänderungsaufforderung umfasst; C) einen Dynamikmanager (804A), der mit der Datenänderungsmaschine gekoppelt ist und auf die lokal erzeugten und entfernt erzeugten Datenänderungsaufforderungen zum Anweisen der Datenänderungsmaschine anspricht, um die mehreren Datenänderungsaufforderungen in einer geeigneten Abfolge auszuführen; gekennzeichnet durch D) einen Kommunikationsmanager (806A), der mit dem Dynamikmanager gekoppelt ist, zum Empfangen der lokal erzeugten Datenänderungsaufforderungen, wobei der Kommunikationsmanager auf einen Präsenzserver (812) anspricht, der feststellt, ob wenigstens eine entfernte netzfähige Vorrichtung mit dem Netz verbunden ist, und der Kommunikationsmanager zum Empfang der entfernt erzeugten Datenänderungsaufforderung und für Folgendes eingerichtet ist: i) Senden der lokal erzeugten Datenänderungsaufforderung über das Netz direkt zu der entfernten netzfähigen Vorrichtung (802B), falls diese mit dem Netz verbunden ist, und ii) Senden der lokal erzeugten Datenänderungsaufforderung über das Netz zu einem Relais-Server (814), falls die entfernte netzfähige Vorrichtung von dem Netz (803) getrennt ist.
  2. Lokale netzfähige Vorrichtung nach Anspruch 1, bei welcher der Kommunikationsmanager (806A) weiterhin das Relais (814) anweist, die lokale Datenänderungsaufforderung zu der entfernten netzfähigen Vorrichtung (802B) weiterzuleiten, wenn diese Vorrichtung wieder mit dem Netz (803) verbunden ist.
  3. Lokale netzfähige Vorrichtung nach Anspruch 1, bei welcher der Kommunikationsmanager (806A) weiterhin eine Verbindungszustandsmitteilung zu dem Präsenzserver (812) über das Netz (803) sendet, die anzeigt, ob die lokale netzfähige Vorrichtung mit dem Netz verbunden ist und daher in der Lage ist, die entfernt erzeugte Datenänderungsaufforderung zu empfangen.
  4. Lokale netzfähige Vorrichtung nach Anspruch 1, bei welcher der Kommunikationsmanager (806A) weiterhin eine entfernt erzeugte Datenänderungsaufforderung von der entfernten netzfähigen Vorrichtung (802B) empfängt und die empfangene Datenänderungsaufforderung an den Dynamikmanager (804A) weiterleitet, und bei welcher der Dynamikmanager die Datenänderungsmaschine (426) anweist, die empfangene entfernt erzeugte Datenänderungsaufforderung auszuführen.
  5. Lokale netzfähige Vorrichtung nach Anspruch 1 in Kombination mit dem Präsenzserver (812) und dem Relais-Server (814).
  6. Kombination nach Anspruch 5, wobei der Präsenzserver (812) eine Anzeige eines Online/Offline-Zustandes für die lokale und die entfernte netzfähige Vorrichtung (818) speichert.
  7. Kombination nach Anspruch 5, bei welcher der Relais-Server (814) einen Speicher und einen Weiterleitungs-Relais mit einem Relais-Speicher (832) umfasst, und das Relais die lokal erzeugte Datenänderungsaufforderung in den Relais-Speicher speichert und die lokal erzeugte Datenänderungsaufforderung an wenigstens eine entfernte netzfähige Vorrichtung weiterleitet, wenn die Vorrichtung mit dem Netz verbunden ist.
  8. Kombination nach Anspruch 5, bei welcher mehrere netzfähige Vorrichtungen (802B, 802C, 802D) vorgesehen sind und der Relais-Server (814), der auf den Kommunikationsmanager (806A) anspricht, in der Lage ist, die lokal erzeugte Datenänderungsaufforderung an die mehreren entfernten netzfähigen Vorrichtungen unter Verwendung von Multicasting weiterzuleiten.
  9. Kombination nach Anspruch 8, bei welcher der Kommunikationsmanager (806A) weiterhin die lokale Datenänderungsaufforderung senden kann in Reaktion auf eine Information geringster Latenz, die sich auf die Latenz und die Durchsatzrate des Netzes bezieht, durch direkte Kommunikation oder Zwischenkommunikation, wobei die direkte Kommunikation ein Senden lokalen Datenänderungsaufforderung direkt zu einer oder mehreren der entfernten netzfähigen Vorrichtungen umfasst und die Zwischenkommunikation ein Senden der lokalen Datenänderungsaufforderung zu einer oder mehreren der entfernten netzfähigen Vorrichtungen über das Relais (814) umfasst.
  10. Kombination nach Anspruch 9, bei welcher der Kommunikationsmanager weiterhin die lokale Datenänderungsaufforderung senden kann in Reaktion auf eine Information geringster Kosten, die sich auf die Leitungskosten (1208) bezieht, durch direkte Kommunikation oder Zwischenkommunikation, wobei die direkte Kommunikation ein Senden der lokalen Datenänderungsaufforderung direkt zu einer oder mehreren der entfernten netzfähigen Vorrichtungen umfasst und die Zwischenkommunikation ein Senden der lokalen Datenänderungsaufforderung zu einer oder mehreren der entfernten netzfähigen Vorrichtungen über das Relais umfasst (1216).
  11. Lokale netzfähige Vorrichtung (802A) nach Anspruch 1, die weiterhin ein computerlesbares Medium (142, 147, 152) umfasst und bei welcher der Kommunikationsmanager einen computerlesbaren Programmcode umfasst, der auf dem Medium gespeichert ist.
  12. Lokale netzfähige Vorrichtung (802A) nach Anspruch 1 in Kombination mit dem Relais (814), wobei das Relais einen Speicher (832) zum Speichern von Deltas, bis das Relais benachrichtigt wird, dass die entfernte netzfähige Vorrichtung (802B) mit dem Netzwerk verbunden ist, und einen Sender (836) zum Senden der Deltas zu der wieder verbundenen entfernten netzfähigen Vorrichtung (802B) umfasst.
  13. Lokale netzfähige Vorrichtung (802A) nach Anspruch 12, bei welcher der Kommunikationsmanager (806A) weiterhin eine Einrichtung zum Senden einer Mitteilung über den Netzverbindungszustand zu dem Präsenz-Server (812) umfasst, die anzeigt, ob die lokale netzfähige Vorrichtung mit dem Netz verbunden ist und dadurch in der Lage ist, Deltas von entfernten netzfähigen Vorrichtungen zu empfangen.
  14. Lokale netzfähige Vorrichtung (802A) nach Anspruch 1, die weiterhin ein computerlesbares Medium (142, 147, 152) umfasst, und bei welcher der Kommunikationsmanager und der Dynamikmanager jeweils einen computerlesbaren Programmcode umfassen, der auf dem Medium gespeichert ist.
  15. Verfahren zum Bereitstellen eines Kommunikationsdienstes für ein aktivitätsbasiertes Zusammenarbeitungssystem, bei welchem mehrere Datenänderungsaufforderungen, welche Deltas umfassen, die Datenänderungen enthalten, über ein Netz (803) zwischen netzfähigen Vorrichtungen (802A, 802B, 802C, 802D) kommuniziert werden, wobei das Verfahren folgende Schritte aufweist: A) Speichern lokaler Kopien von lokal erzeugten Deltas gemäß einem Datenmodell, B) Ändern lokaler Datenkopien in Speichern gemäß dem Datenmodell, wobei die Änderungen auf mehreren Datenänderungsaufforderungen beruhen, einschließlich lokal erzeugter Datenänderungsaufforderungen und entfernt erzeugter Datenänderungsaufforderungen, wobei die mehreren Datenänderungsaufforderungen in einer geeigneten Reihenfolge ausgeführt werden; C) Senden lokal erzeugter Deltas von einer lokalen netzfähigen Vorrichtung (802A) über ein Netz (803) zu wenigstens einer entfernten netzfähigen Vorrichtung (802B) und Empfangen der entfernt erzeugten Deltas von der wenigstens einen entfernten netzfähigen Vorrichtung; und D) dadurch gekennzeichnet, dass das Senden der lokal erzeugten Deltas Folgendes aufweist: i) in Reaktion auf eine Netzverbindungszustandsinformation von einem Präsenz-Server (812), die anzeigt, dass die entfernte netzfähige Vorrichtung mit dem Netz verbunden ist, Senden der lokalen Deltas direkt zu der entfernten netzfähigen Vorrichtung; und ii) in Reaktion auf eine Netzverbindungszustandsinformation von dem Präsenz-Server (812), die anzeigt, dass die entfernte netzfähige Vorrichtung von dem Netz getrennt ist, Senden der lokalen Deltas zu einem Relais-Server (814).
  16. Verfahren nach Anspruch 15, bei welchem die Netzverbindungszustandsinformation eine Information über einen Online/Offline-Zustand umfasst und das Verfahren weiterhin den Schritt zum Empfangen der Online/Offline-Zustandsinformation über das Netz von dem Präsenz-Server (812) umfasst.
  17. Verfahren nach Anspruch 16, das weiterhin den Schritt umfasst, dass der Präsenz-Server (816) die Online/Offline-Zustandsinformation erhält und über das Netz verteilt, wobei der Präsenz-Server die Online/Offline-Zustandsinformation für jede der netzfähigen Vorrichtungen durch eine Online/Offline-Nachricht von jeder der netzfähigen Vorrichtungen erlangt.
  18. Verfahren nach Anspruch 16, das weiterhin den Schritt umfasst, dass das Relais (814) Deltas speichert bis das Relais benachrichtigt wird, dass die entfernte netzfähige Vorrichtung (812) mit dem Netz (803) wieder verbunden wurde und das Relais (814) die Deltas zu der wieder verbundenen entfernten netzfähigen Vorrichtung (802B) sendet.
  19. Verfahren nach Anspruch 15, das weiterhin den Schritt zum Erhalten der Online/Offline-Zustandsinformation für die entfernte netzfähige Vorrichtung (802B) durch den Präsenz-Server (812) umfasst, wobei die Online/Offline-Zustandsinformation in der Netzverbindungszustandsinformation enthalten ist.
  20. Verfahren nach Anspruch 15, bei welchem der Sendeschritt die lokal erzeugten Deltas zu mehreren entfernten netzfähigen Vorrichtungen sendet, wobei der Sendeschritt einen Schritt zum Multicasting der lokal erzeugten Deltas zu den entfernt netzfähigen Vorrichtungen einschließt.
  21. Verfahren nach Anspruch 15, das weiterhin den Schritt zum Wiederholen des Sendeschritts umfasst, falls eine Bestätigungsnachricht von der entfernten netzfähigen Vor richtung innerhalb einer maximalen Anzahl von Wiederholungen nicht empfangen wird.
  22. Verfahren nach Anspruch 21, das weiterhin ein Zuordnen von Lebenszeitdaten zu jedem der Deltas umfasst und ein Verwerfen jedes der Deltas nachdem die Lebenszeitdaten abgelaufen sind.
  23. Verfahren nach Anspruch 15, bei welchem der Sendeschritt den Schritt zum Anweisen der Nachricht zu der entfernten netzfähigen Vorrichtung in Reaktion auf Identitätsinformationen, die in der lokalen netzfähigen Vorrichtung gespeichert sind, umfasst.
DE60038705T 1999-07-19 2000-06-28 Verfahren und vorrichtung für die aktivitäts-basierte zusammenarbeit eines rechnersystems, ausgestattet mit einem kommunikations-manager Expired - Lifetime DE60038705T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US357007 1989-05-25
US09/357,007 US6640241B1 (en) 1999-07-19 1999-07-19 Method and apparatus for activity-based collaboration by a computer system equipped with a communications manager
PCT/US2000/017785 WO2001006365A2 (en) 1999-07-19 2000-06-28 Method and apparatus for activity-based collaboration by a computer system equipped with a communications manager

Publications (2)

Publication Number Publication Date
DE60038705D1 DE60038705D1 (de) 2008-06-05
DE60038705T2 true DE60038705T2 (de) 2009-07-02

Family

ID=23403912

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60038705T Expired - Lifetime DE60038705T2 (de) 1999-07-19 2000-06-28 Verfahren und vorrichtung für die aktivitäts-basierte zusammenarbeit eines rechnersystems, ausgestattet mit einem kommunikations-manager

Country Status (9)

Country Link
US (1) US6640241B1 (de)
EP (1) EP1328882B1 (de)
JP (1) JP4564697B2 (de)
KR (1) KR100722916B1 (de)
AT (1) ATE393433T1 (de)
CA (1) CA2380148C (de)
DE (1) DE60038705T2 (de)
IL (2) IL147704A0 (de)
WO (1) WO2001006365A2 (de)

Families Citing this family (179)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1222549B1 (de) * 1999-09-28 2013-04-03 Microsoft Corporation Informations-fluss-verwaltung in echt-zeit
US7636752B2 (en) * 1999-09-28 2009-12-22 Parlano, Inc. System and method for managing information and collaborating
JP2001154964A (ja) * 1999-12-01 2001-06-08 Fujitsu Ltd データ資源を配付する方法
ATE396577T1 (de) 1999-12-02 2008-06-15 Western Digital Tech Inc System zum fernaufnehmen von fernsehprogrammen
US8688797B2 (en) * 1999-12-02 2014-04-01 Western Digital Technologies, Inc. Managed peer-to-peer applications, systems and methods for distributed data access and storage
US9191443B2 (en) * 1999-12-02 2015-11-17 Western Digital Technologies, Inc. Managed peer-to-peer applications, systems and methods for distributed data access and storage
US7120692B2 (en) 1999-12-02 2006-10-10 Senvid, Inc. Access and control system for network-enabled devices
US8793374B2 (en) 1999-12-02 2014-07-29 Western Digital Technologies, Inc. Managed peer-to-peer applications, systems and methods for distributed data access and storage
US7934251B2 (en) * 1999-12-02 2011-04-26 Western Digital Technologies, Inc. Managed peer-to-peer applications, systems and methods for distributed data access and storage
US7917628B2 (en) * 1999-12-02 2011-03-29 Western Digital Technologies, Inc. Managed peer-to-peer applications, systems and methods for distributed data access and storage
KR100317303B1 (ko) * 2000-01-10 2001-12-22 구자홍 방송 프로그램 녹화 및 재생시 a/v와 데이터간 동기화장치
JP3490369B2 (ja) * 2000-02-15 2004-01-26 インターナショナル・ビジネス・マシーンズ・コーポレーション コンテンツ情報の取得方法、コラボレーション・システム及びコラボレーション・サーバー
US7249157B2 (en) * 2000-02-16 2007-07-24 Bea Systems, Inc. Collaboration system for exchanging of data between electronic participants via collaboration space by using a URL to identify a combination of both collaboration space and business protocol
JP2001242915A (ja) * 2000-03-01 2001-09-07 Yaskawa Electric Corp プログラマブルコントローラのメッセージ通信方法
US7225243B1 (en) * 2000-03-14 2007-05-29 Adaptec, Inc. Device discovery methods and systems implementing the same
US6981019B1 (en) * 2000-05-02 2005-12-27 International Business Machines Corporation System and method for a computer based cooperative work system
US7546337B1 (en) * 2000-05-18 2009-06-09 Aol Llc, A Delaware Limited Liability Company Transferring files
US6941510B1 (en) * 2000-06-06 2005-09-06 Groove Networks, Inc. Method and apparatus for efficient management of XML documents
US7366779B1 (en) 2000-06-19 2008-04-29 Aol Llc, A Delaware Limited Liability Company Direct file transfer between subscribers of a communications system
BR0017285A (pt) * 2000-07-13 2003-06-24 Nokia Corp Sistema de comunicação, método a ser efetuado em um sistema de comunicação, e, elemento de rede para um sistema de comunicação
EP1189161A1 (de) * 2000-09-13 2002-03-20 iMediation, S.A. Verfahren und System zum Verwalten von auf ein Netzwerk basierten Partner-Beziehungen
US7562147B1 (en) * 2000-10-02 2009-07-14 Microsoft Corporation Bi-directional HTTP-based reliable messaging protocol and system utilizing same
GB2368411B (en) * 2000-10-25 2004-01-28 Proksim Software Inc Sharing data over a network
US7814198B2 (en) * 2007-10-26 2010-10-12 Microsoft Corporation Model-driven, repository-based application monitoring system
US6944866B1 (en) * 2000-11-16 2005-09-13 International Business Machines Corporation System and method for coordinating operator efforts using action diaries
US7594030B2 (en) * 2000-11-22 2009-09-22 Microsoft Corporation Locator and tracking service for peer to peer resources
GB0028474D0 (en) * 2000-11-22 2001-01-10 Raekanet Ltd Improved computer network architecture and associated method and system
US8255791B2 (en) 2000-11-29 2012-08-28 Dov Koren Collaborative, flexible, interactive real-time displays
US7222291B2 (en) * 2000-12-29 2007-05-22 International Business Machines Corporation Method and system for importing HTML forms
US20020143869A1 (en) * 2001-01-03 2002-10-03 Hal Cohen Method and apparatus for making random introductions electronically
US20020116336A1 (en) * 2001-02-05 2002-08-22 Athanassios Diacakis Method and device for displaying contact information in a presence and availability management system
US7647373B2 (en) * 2001-03-13 2010-01-12 Eplus Capital, Inc. System and process for network collaboration through embedded annotation and rendering instructions
FR2824211B1 (fr) * 2001-04-27 2003-06-27 Radio Electronique Aides Tech Systeme et procede de communication entre stations traitant des dossiers communs
US20020169893A1 (en) * 2001-05-09 2002-11-14 Li-Han Chen System and method for computer data synchronization
US7072946B2 (en) * 2001-05-31 2006-07-04 Juniper Networks, Inc. Network router management interface with API invoked via login stream
US7054901B2 (en) * 2001-05-31 2006-05-30 Juniper Networks, Inc. Network management interface with selective rendering of output
AU2002314902A1 (en) * 2001-06-02 2002-12-16 Polycom, Inc. System and method for point to point integration of personal computers with videoconferencing systems
US20020188682A1 (en) * 2001-06-08 2002-12-12 Manlsh Jaln Method and system for manufacturing supply chain collaboration
JP4446368B2 (ja) * 2001-09-14 2010-04-07 富士通株式会社 コラボレーション方法、システム、プログラム及び記録媒体
US7111206B1 (en) 2001-09-19 2006-09-19 Juniper Networks, Inc. Diagnosis of network fault conditions
US7441018B1 (en) 2001-09-19 2008-10-21 Juniper Networks, Inc. Identification of applied configuration information
US7313617B2 (en) 2001-09-28 2007-12-25 Dale Malik Methods and systems for a communications and information resource manager
US7007085B1 (en) * 2001-09-28 2006-02-28 Bellsouth Intellectual Property Corporation Message log for wireline, voice mail, email, fax, pager, instant messages and chat
US7472187B2 (en) 2001-09-28 2008-12-30 At&T Intellectual Property I, L.P. Communications and information resource manager
US20030097410A1 (en) * 2001-10-04 2003-05-22 Atkins R. Travis Methodology for enabling multi-party collaboration across a data network
WO2003032576A1 (en) * 2001-10-09 2003-04-17 Koninklijke Philips Electronics N.V. Service information multicasting method and system
EP1435167A1 (de) * 2001-10-10 2004-07-07 Hotsip AB Verfahren und system, wodurch ein benutzer einen präsenzdienst erhält
US8644475B1 (en) 2001-10-16 2014-02-04 Rockstar Consortium Us Lp Telephony usage derived presence information
US7546359B2 (en) * 2001-10-24 2009-06-09 Groove Networks, Inc. Method and apparatus for managing a peer-to-peer collaboration system
US7139809B2 (en) 2001-11-21 2006-11-21 Clearcube Technology, Inc. System and method for providing virtual network attached storage using excess distributed storage capacity
US20030110228A1 (en) * 2001-12-12 2003-06-12 Ziqiang Xu Method and apparatus for monitoring activity and presence to optimize collaborative issue resolution
US7027460B2 (en) * 2001-12-21 2006-04-11 Intel Corporation Method and system for customized television viewing using a peer-to-peer network
US7299286B2 (en) 2001-12-27 2007-11-20 Nortel Networks Limited Personal user agent
US20030149728A1 (en) * 2002-02-05 2003-08-07 Bandu Wewalaarachchi Remote application publication and communication system
AU2003214770A1 (en) * 2002-02-05 2003-09-02 Eutech Cybernetics Pte Ltd. Remote application publication and communication system
US7206388B2 (en) * 2002-03-18 2007-04-17 Openwave Systems Inc. System and method for providing voice-activated presence information
US7227937B1 (en) 2002-03-19 2007-06-05 Nortel Networks Limited Monitoring natural interaction for presence detection
AU2003217021A1 (en) * 2002-03-28 2003-10-13 British Telecommunications Public Limited Company Method and apparatus for network security
JP4315696B2 (ja) * 2002-03-29 2009-08-19 富士通株式会社 ホスト端末エミュレーションプログラム、中継用プログラムおよびホスト端末エミュレーション方法
AU2003239385A1 (en) 2002-05-10 2003-11-11 Richard R. Reisman Method and apparatus for browsing using multiple coordinated device
US7139798B2 (en) * 2002-05-17 2006-11-21 Groove Networks, Inc. Method and apparatus for connecting a secure peer-to-peer collaboration system to an external system
US7480697B2 (en) * 2002-05-28 2009-01-20 International Business Machines Corporation Method and apparatus using attached hardware subsystem to communicate between attached hosts
FI114773B (fi) * 2002-06-20 2004-12-15 Nokia Corp Menetelmä ja laite aktiviteettipohjaisen läsnäolotiedon välittämiseksi
US7421736B2 (en) * 2002-07-02 2008-09-02 Lucent Technologies Inc. Method and apparatus for enabling peer-to-peer virtual private network (P2P-VPN) services in VPN-enabled network
US7386546B1 (en) 2002-07-09 2008-06-10 Network Appliance, Inc. Metadirectory namespace and method for use of the same
US8060626B2 (en) 2008-09-22 2011-11-15 Sony Computer Entertainment America Llc. Method for host selection based on discovered NAT type
US8224985B2 (en) 2005-10-04 2012-07-17 Sony Computer Entertainment Inc. Peer-to-peer communication traversing symmetric network address translators
AU2003272404A1 (en) * 2002-09-16 2004-04-30 Clearcube Technology, Inc. Distributed computing infrastructure
US8392609B2 (en) 2002-09-17 2013-03-05 Apple Inc. Proximity detection for media proxies
US7225226B2 (en) 2002-09-27 2007-05-29 International Business Machines Corporation Chat messaging channel redirection
US7555108B2 (en) * 2002-10-01 2009-06-30 Nortel Networks Limited Presence information for telephony users
US20040066770A1 (en) * 2002-10-07 2004-04-08 Pabla Kuldip Singh Method for communicating with a resource-constrained device on an edge of a network
US7707310B2 (en) * 2002-11-20 2010-04-27 Cisco Technology, Inc. Mobile IP registration supporting port identification
US7640267B2 (en) * 2002-11-20 2009-12-29 Radar Networks, Inc. Methods and systems for managing entities in a computing device using semantic objects
US20040107242A1 (en) * 2002-12-02 2004-06-03 Microsoft Corporation Peer-to-peer content broadcast transfer mechanism
US9357256B2 (en) * 2002-12-11 2016-05-31 Broadcom Corporation Third party media channel access in a media exchange network
US7613773B2 (en) * 2002-12-31 2009-11-03 Rensselaer Polytechnic Institute Asynchronous network audio/visual collaboration system
US7711810B2 (en) 2003-01-03 2010-05-04 Nortel Networks Limited Distributed services based on presence technology
EP1609075A4 (de) 2003-02-10 2006-11-02 Raindance Comm Inc Verfahren und vorrichtungen zum automatischen hinzufügen einer media-komponente zu einer hergestellten multimedia-kollaborationssitzung
US20040237045A1 (en) * 2003-05-21 2004-11-25 Eintelligence, Inc. Method for asynchronous sharing of integrated spreadsheets using a network
US7603464B2 (en) * 2003-06-04 2009-10-13 Sony Computer Entertainment Inc. Method and system for identifying available resources in a peer-to-peer network
US7370089B2 (en) * 2003-07-11 2008-05-06 International Business Machines Corporation Autonomic learning method to load balance output transfers of two peer nodes
US7734690B2 (en) * 2003-09-05 2010-06-08 Microsoft Corporation Method and apparatus for providing attributes of a collaboration system in an operating system folder-based file system
US7792988B2 (en) * 2003-10-20 2010-09-07 Sony Computer Entertainment America, LLC Peer-to-peer data relay
US7392422B2 (en) * 2003-10-20 2008-06-24 Sony Computer Entertainment America Inc., Violations in a peer-to-peer relay network
US8495202B2 (en) * 2003-10-24 2013-07-23 Brother Kogyo Kabushiki Kaisha Imaging device information management system
US9118574B1 (en) 2003-11-26 2015-08-25 RPX Clearinghouse, LLC Presence reporting using wireless messaging
US7562143B2 (en) * 2004-01-13 2009-07-14 International Business Machines Corporation Managing escalating resource needs within a grid environment
US7406691B2 (en) 2004-01-13 2008-07-29 International Business Machines Corporation Minimizing complex decisions to allocate additional resources to a job submitted to a grid environment
US7552437B2 (en) * 2004-01-14 2009-06-23 International Business Machines Corporation Maintaining application operations within a suboptimal grid environment
KR101042745B1 (ko) * 2004-01-30 2011-06-20 삼성전자주식회사 클라이언트 단말장치와 서버 사이의 세션 재설정을 위한시스템 및 방법
EP1560137A1 (de) * 2004-01-30 2005-08-03 Sap Ag Technik für zuverlässige Bestätigung von Nachrichten
US20050198193A1 (en) * 2004-02-12 2005-09-08 Jaakko Halme System, method, and apparatus for creating metadata enhanced media files from broadcast media
US7197502B2 (en) * 2004-02-18 2007-03-27 Friendly Polynomials, Inc. Machine-implemented activity management system using asynchronously shared activity data objects and journal data items
SE527871C2 (sv) 2004-03-09 2006-06-27 Ericsson Telefon Ab L M Metod och system för hantering av webbtjänster
US8229454B1 (en) 2004-03-22 2012-07-24 Avaya Inc. Personal location information management
US7895020B2 (en) * 2004-04-01 2011-02-22 General Dynamics Advanced Information Systems, Inc. System and method for multi-perspective collaborative modeling
US7580867B2 (en) 2004-05-04 2009-08-25 Paul Nykamp Methods for interactively displaying product information and for collaborative product design
US8171387B2 (en) * 2004-05-13 2012-05-01 Boardwalk Collaboration, Inc. Method of and system for collaboration web-based publishing
US20050262075A1 (en) 2004-05-21 2005-11-24 Bea Systems, Inc. Systems and methods for collaboration shared state management
US20060010205A1 (en) * 2004-05-21 2006-01-12 Bea Systems, Inc. Systems and methods for collaboration impersonation
US20060010125A1 (en) * 2004-05-21 2006-01-12 Bea Systems, Inc. Systems and methods for collaborative shared workspaces
US7266547B2 (en) 2004-06-10 2007-09-04 International Business Machines Corporation Query meaning determination through a grid service
US7656870B2 (en) * 2004-06-29 2010-02-02 Damaka, Inc. System and method for peer-to-peer hybrid communications
EP2492808A1 (de) 2004-06-30 2012-08-29 Jumpstart Wireless Corporation System und Verfahren zur Erweiterung von Geschäftssystemen an eine mobile Arbeitskraft
US7730030B1 (en) 2004-08-15 2010-06-01 Yongyong Xu Resource based virtual communities
US7899863B2 (en) * 2004-08-18 2011-03-01 Siemens Enterprise Communications, Inc. Apparatus and method for enhanced synchronization using an IMS server
US7925698B2 (en) * 2004-08-18 2011-04-12 Siemens Enterprise Communications, Inc. Apparatus and method for a synchronized mobile communication client
US7600006B2 (en) * 2004-08-31 2009-10-06 Inter-Tel, Inc Peer-to-peer distribution of firmware
FR2875361B1 (fr) * 2004-09-16 2007-01-12 Christian Garnier Systeme de communication en temps reel
US7571224B2 (en) * 2004-10-29 2009-08-04 International Business Machines Corporation Method for using presence in a system management environment
US7558862B1 (en) * 2004-12-09 2009-07-07 LogMeln, Inc. Method and apparatus for remotely controlling a computer with peer-to-peer command and data transfer
IL165817A0 (en) * 2004-12-16 2006-01-15 Samsung Electronics U K Ltd Electronic music on hand portable and communication enabled devices
US7590623B2 (en) * 2005-01-06 2009-09-15 International Business Machines Corporation Automated management of software images for efficient resource node building within a grid environment
US7571120B2 (en) 2005-01-12 2009-08-04 International Business Machines Corporation Computer implemented method for estimating future grid job costs by classifying grid jobs and storing results of processing grid job microcosms
US7562035B2 (en) 2005-01-12 2009-07-14 International Business Machines Corporation Automating responses by grid providers to bid requests indicating criteria for a grid job
US8219635B2 (en) 2005-03-09 2012-07-10 Vudu, Inc. Continuous data feeding in a distributed environment
US8904463B2 (en) 2005-03-09 2014-12-02 Vudu, Inc. Live video broadcasting on distributed networks
US9176955B2 (en) * 2005-03-09 2015-11-03 Vvond, Inc. Method and apparatus for sharing media files among network nodes
US20080022343A1 (en) * 2006-07-24 2008-01-24 Vvond, Inc. Multiple audio streams
US20060265396A1 (en) * 2005-05-19 2006-11-23 Trimergent Personalizable information networks
US20060265394A1 (en) * 2005-05-19 2006-11-23 Trimergent Personalizable information networks
US20060265395A1 (en) * 2005-05-19 2006-11-23 Trimergent Personalizable information networks
US8099511B1 (en) * 2005-06-11 2012-01-17 Vudu, Inc. Instantaneous media-on-demand
US7707579B2 (en) 2005-07-14 2010-04-27 International Business Machines Corporation Method and system for application profiling for purposes of defining resource requirements
US8155623B2 (en) * 2005-07-29 2012-04-10 Nextel Communications Inc. System and method for obtaining information from a wireless modem
US20070239725A1 (en) * 2006-03-28 2007-10-11 Microsoft Corporation Active cache offline access and management of project files
US8296812B1 (en) 2006-09-01 2012-10-23 Vudu, Inc. Streaming video using erasure encoding
CA2702509A1 (en) * 2006-10-13 2008-04-17 Ets System for supporting collaborative work
US8051475B2 (en) * 2006-11-01 2011-11-01 The United States Of America As Represented By The Secretary Of The Air Force Collaboration gateway
US8024396B2 (en) * 2007-04-26 2011-09-20 Microsoft Corporation Distributed behavior controlled execution of modeled applications
US8160567B2 (en) 2007-05-08 2012-04-17 Verizon Patent And Licensing Inc. Inbound phone control
US7995478B2 (en) 2007-05-30 2011-08-09 Sony Computer Entertainment Inc. Network communication with path MTU size discovery
EP2160734A4 (de) * 2007-06-18 2010-08-25 Synergy Sports Technology Llc System und verfahren zum verteilten und parallelen videoeditieren, -etikettieren und indizieren
US8239505B2 (en) * 2007-06-29 2012-08-07 Microsoft Corporation Progressively implementing declarative models in distributed systems
US7970892B2 (en) 2007-06-29 2011-06-28 Microsoft Corporation Tuning and optimizing distributed systems with declarative models
US8230386B2 (en) * 2007-08-23 2012-07-24 Microsoft Corporation Monitoring distributed applications
US8225308B2 (en) 2007-10-26 2012-07-17 Microsoft Corporation Managing software lifecycle
US8181151B2 (en) * 2007-10-26 2012-05-15 Microsoft Corporation Modeling and managing heterogeneous applications
US8099720B2 (en) 2007-10-26 2012-01-17 Microsoft Corporation Translating declarative models
US7974939B2 (en) * 2007-10-26 2011-07-05 Microsoft Corporation Processing model-based commands for distributed applications
US7926070B2 (en) * 2007-10-26 2011-04-12 Microsoft Corporation Performing requested commands for model-based applications
US20090138556A1 (en) * 2007-11-27 2009-05-28 Corry Kevin M System and method for implementing quick response replies on a data processing system
US7908393B2 (en) 2007-12-04 2011-03-15 Sony Computer Entertainment Inc. Network bandwidth detection, distribution and traffic prioritization
US7856506B2 (en) 2008-03-05 2010-12-21 Sony Computer Entertainment Inc. Traversal of symmetric network address translator for multiple simultaneous connections
US8230348B2 (en) * 2008-04-28 2012-07-24 Roger Peters Collaboration software with real-time synchronization
US20100031333A1 (en) * 2008-07-22 2010-02-04 Mitchell Mark T Secure email
US9391825B1 (en) 2009-03-24 2016-07-12 Amazon Technologies, Inc. System and method for tracking service results
US10628847B2 (en) 2009-04-15 2020-04-21 Fiver Llc Search-enhanced semantic advertising
US20110078233A1 (en) * 2009-09-30 2011-03-31 International Business Machines Corporation Apparatus, system, and method for improved performance of real time applications in intermittent connection environments
US9432473B2 (en) * 2010-02-17 2016-08-30 Business Objects Software Ltd. Online presence management for web sites
US9734124B2 (en) * 2010-03-04 2017-08-15 International Business Machines Corporation Direct linked two way forms
US9682324B2 (en) 2010-05-12 2017-06-20 Activision Publishing, Inc. System and method for enabling players to participate in asynchronous, competitive challenges
WO2011149558A2 (en) 2010-05-28 2011-12-01 Abelow Daniel H Reality alternate
JP6302614B2 (ja) * 2011-02-25 2018-03-28 任天堂株式会社 通信システム、情報処理装置、プログラム及び情報処理方法
US9754585B2 (en) * 2012-04-03 2017-09-05 Microsoft Technology Licensing, Llc Crowdsourced, grounded language for intent modeling in conversational interfaces
US9161287B2 (en) * 2012-10-16 2015-10-13 Spectranetix, Inc. Technique for efficient message delivery in Ad Hoc, mesh, wireless computer networks
US9843617B2 (en) 2014-03-26 2017-12-12 Rockwell Automation Technologies, Inc. Cloud manifest configuration management system
US10095202B2 (en) * 2014-03-26 2018-10-09 Rockwell Automation Technologies, Inc. Multiple controllers configuration management interface for system connectivity
US9886012B2 (en) 2014-03-26 2018-02-06 Rockwell Automation Technologies, Inc. Component factory for human-machine interface migration to a cloud platform
US9971317B2 (en) 2014-03-26 2018-05-15 Rockwell Automation Technologies, Inc. Cloud-level industrial controller loop gain tuning based on industrial application type
US10208947B2 (en) 2014-03-26 2019-02-19 Rockwell Automation Technologies, Inc. Cloud-level analytics for boiler networks
US9825949B2 (en) 2014-03-26 2017-11-21 Rockwell Automation Technologies, Inc. Device authentication to facilitate secure cloud management of industrial data
US9866635B2 (en) 2014-03-26 2018-01-09 Rockwell Automation Technologies, Inc. Unified data ingestion adapter for migration of industrial data to a cloud platform
US9838476B2 (en) 2014-03-26 2017-12-05 Rockwell Automation Technologies, Inc. On-premise data collection and ingestion using industrial cloud agents
US9614963B2 (en) 2014-03-26 2017-04-04 Rockwell Automation Technologies, Inc. Cloud-based global alarm annunciation system for industrial systems
US9392057B2 (en) * 2014-04-11 2016-07-12 Qualcomm Incorporated Selectively exchanging data between P2P-capable client devices via a server
US10430577B2 (en) 2014-05-30 2019-10-01 Apple Inc. Method and apparatus for inter process privilige transfer
US9619012B2 (en) 2014-05-30 2017-04-11 Apple Inc. Power level control using power assertion requests
US9396089B2 (en) 2014-05-30 2016-07-19 Apple Inc. Activity tracing diagnostic systems and methods
FR3031258B1 (fr) * 2014-12-31 2017-01-27 Bull Sas Methode de communication entre un gestionnaire d'action distant et un boitier de communication
US9800659B2 (en) * 2015-02-02 2017-10-24 International Business Machines Corporation Enterprise peer-to-peer storage and method of managing peer network storage
US10471348B2 (en) 2015-07-24 2019-11-12 Activision Publishing, Inc. System and method for creating and sharing customized video game weapon configurations in multiplayer video games via one or more social networks
US10764255B2 (en) 2016-09-21 2020-09-01 Rockwell Automation Technologies, Inc. Secure command execution from a cloud monitoring system to a remote cloud agent
US11327473B2 (en) 2017-07-11 2022-05-10 Rockwell Automation Technologies, Inc. Dynamically reconfigurable data collection agent for fracking pump asset
US10482063B2 (en) 2017-08-14 2019-11-19 Rockwell Automation Technologies, Inc. Modular control manifest generator for cloud automation
US10416660B2 (en) 2017-08-31 2019-09-17 Rockwell Automation Technologies, Inc. Discrete manufacturing hybrid cloud solution architecture
US10554701B1 (en) 2018-04-09 2020-02-04 Amazon Technologies, Inc. Real-time call tracing in a service-oriented system
US11410109B2 (en) * 2018-11-01 2022-08-09 Precog, LLC Portable real-time experience communications device and monitoring system

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5220657A (en) * 1987-12-02 1993-06-15 Xerox Corporation Updating local copy of shared data in a collaborative system
JPH03253147A (ja) * 1990-03-02 1991-11-12 Nippon Telegr & Teleph Corp <Ntt> 複数経路の分散的設定方法
US5538255A (en) 1992-02-18 1996-07-23 Barker; Bruce J. Remote controlled multiplayer video game
JPH08509824A (ja) 1993-02-26 1996-10-15 タリジェント インコーポレイテッド 共同作業システム
JPH08335965A (ja) * 1995-06-09 1996-12-17 Hitachi Ltd 通信支援システムおよび通信支援方法、ならびに、情報蓄積装置および端末
GB2303946A (en) 1995-07-29 1997-03-05 Ibm Data conferencing system
JPH09163328A (ja) * 1995-12-13 1997-06-20 Ricoh Co Ltd テレライティングシステム
US5822525A (en) * 1996-05-22 1998-10-13 Microsoft Corporation Method and system for presentation conferencing
US5862346A (en) * 1996-06-28 1999-01-19 Metadigm Distributed group activity data network system and corresponding method
US5892949A (en) 1996-08-30 1999-04-06 Schlumberger Technologies, Inc. ATE test programming architecture
US5899810A (en) 1997-01-24 1999-05-04 Kaon Interactive Corporation Distributed game architecture to overcome system latency
US5940082A (en) 1997-02-14 1999-08-17 Brinegar; David System and method for distributed collaborative drawing
JPH10240651A (ja) 1997-02-28 1998-09-11 Hitachi Ltd 株式注文データの自動再送信方式
GB2324175B (en) * 1997-04-10 2002-07-31 Ibm Personal conferencing system
US5861883A (en) * 1997-05-13 1999-01-19 International Business Machines Corp. Method and system for portably enabling awareness, touring, and conferencing over the world-wide web using proxies and shared-state servers
US5966512A (en) * 1997-06-05 1999-10-12 International Business Machines Corporation Groupware save operation
US6233600B1 (en) * 1997-07-15 2001-05-15 Eroom Technology, Inc. Method and system for providing a networked collaborative work environment
US5987376A (en) * 1997-07-16 1999-11-16 Microsoft Corporation System and method for the distribution and synchronization of data and state information between clients in a distributed processing system
WO1999006925A1 (en) 1997-07-31 1999-02-11 Data Net Corporation Method and apparatus for implementing software connectivity for client/server applications
US6105055A (en) * 1998-03-13 2000-08-15 Siemens Corporate Research, Inc. Method and apparatus for asynchronous multimedia collaboration
US6342906B1 (en) * 1999-02-02 2002-01-29 International Business Machines Corporation Annotation layer for synchronous collaboration
US6353174B1 (en) * 1999-12-10 2002-03-05 Harmonix Music Systems, Inc. Method and apparatus for facilitating group musical interaction over a network

Also Published As

Publication number Publication date
EP1328882A2 (de) 2003-07-23
CA2380148A1 (en) 2001-01-25
EP1328882B1 (de) 2008-04-23
IL147704A (en) 2006-12-31
WO2001006365A8 (en) 2001-08-16
IL147704A0 (en) 2002-08-14
KR100722916B1 (ko) 2007-05-30
JP2003536123A (ja) 2003-12-02
WO2001006365A2 (en) 2001-01-25
DE60038705D1 (de) 2008-06-05
KR20020042805A (ko) 2002-06-07
CA2380148C (en) 2009-12-01
JP4564697B2 (ja) 2010-10-20
US6640241B1 (en) 2003-10-28
ATE393433T1 (de) 2008-05-15
WO2001006365A3 (en) 2003-05-15

Similar Documents

Publication Publication Date Title
DE60038705T2 (de) Verfahren und vorrichtung für die aktivitäts-basierte zusammenarbeit eines rechnersystems, ausgestattet mit einem kommunikations-manager
DE60003322T2 (de) Verfahren, vorrichtung und computerprogrammprodukt für die aktivitäts-basierte zusammenarbeit durch ein computersystem ausgestattet mit einem dynamik-manager
DE60218069T2 (de) Bereitstellung von gekoppelten diensten in einer verteilten rechnerumgebung
DE69730056T2 (de) Routen von duplikaten
DE69731965T2 (de) Zugriff auf rechnerbetriebsmittel von aussen durch eine firewall
DE602005002679T2 (de) WEB-Dienst-Anwendungsprotokoll und SOAP-Verarbeitungsmodell
DE10003907B4 (de) Verfahren, Vorrichtung und Datenverarbeitungsprogramm für die Anwendung beim Zugriff auf Hypertext-Dokumente
DE10064627B4 (de) Verfahren und System für die Verarbeitung von E-Mail-Nachrichten in einem Datenübertragungssystem
EP1456772B1 (de) Verfahren und apparat zur einstufung der priorität von datenänderungsanfragen und zur bewahrung der datenkonsistenz in einem dezentralen computersystem, das für tätigkeitsbasierte zusammenarbeit ausgerüstet ist
DE60008102T2 (de) Verfahren und vorrichtung zur mehrfachsendung
DE602004006798T2 (de) Nachrichtenübertragung über transiente Verbindungen in einer peer-to-peer Netzwerkumgebung
DE60130685T2 (de) System und verfahren zum steuern und organisieren von email
DE69720857T2 (de) Systeme und Verfahren zum Betrieb einer Netzwerk-Verwaltungsstation
DE60009309T2 (de) System und verfahren zum presentieren von kanalisierten daten
DE69838314T2 (de) Verfahren und Vorrichtung zum dynamischen Laden eines Transportmechanismus in einem Mehrpunktdatenübermittlungssystem
DE112010005499T5 (de) Steuern der Nachrichtenübermittlung beim Publish/Subscribe-Nachrichtenaustausch
DE10000998A1 (de) Anmerkungsschicht zur synchronen Zusammenarbeit
DE10131553A1 (de) Ereignis-basierte Benachrichtigung über ein Netzwerk
DE10205108A1 (de) System und Verfahren zum Zugreifen auf Softwarekomponenten in einer verteilten Netzwerkumgebung
EP1589416A2 (de) Verfahren und System zum Erzeugen eines Quellcodes für ein Computerprogramm
DE60132537T2 (de) System und Verfahren zur Verwaltung von Nachrichten
DE69636993T2 (de) Informationsverarbeitungssystem und Kommunikationsverfahren
DE69830226T2 (de) Netzwerkkommunikationsbenutzernachrichtenübertragungssystem
DE60029332T2 (de) Verfahren zum schieben von information zwischen einem wirtrechnersystem und einem mobilen datenkommunikationsgerät
DE112007001516T5 (de) Verfahren und System für eingebettete personalisierte Kommunikation

Legal Events

Date Code Title Description
8327 Change in the person/name/address of the patent owner

Owner name: MICROSOFT CORP., REDMOND, WASH., US

8364 No opposition during term of opposition