-
Diese
Erfindung bezieht sich allgemein auf einen dynamischen Aufbau einer
Zwischenverbindungsfähigkeit
unter verteilten Vorrichtungen und Diensten und bezieht sich insbesondere
darauf, eine Fähigkeit
bereitzustellen, auf vorrichtungs- oder dienst-spezifische, operationsmäßige Informationen
zuzugreifen und eine Fern-Automatisation
und Steuerung von eingeschlossenen Rechenvorrichtungen, unter Verwendung
eines datengesteuerten Fernprogrammier-Modells, wie beispielsweise
in einer pervasiven Rechenumgebung, durchzuführen.
-
Die
Kosten von Rechen- und Netzwerk-Technologien sind zu dem Punkt gefallen,
wo Rechen- und Netzwerk-Fähigkeiten
in das Design vieler elektronischer Vorrichtungen zu Hause, im Büro und an öffentlichen Stellen
eingebaut werden können.
Die Kombination von kostengünstigen
und zuverlässigen,
gemeinsam geteilten Netzwerk-Medien mit einer neuen Klasse von kleinen
Rechenvorrichtungen hat die Möglichkeit
für eine neue
Funktionalität
basierend hauptsächlich
auf der Verbindungsfähigkeit
unter diesen Vorrichtungen hervorgerufen. Diese Verbindungsfähigkeit
kann dazu verwendet werden, entfernt Vorrichtungen zu steuern, digitale Daten
in der Form von Audio, Video und Standbildern zwischen Vorrichtungen
zu bewegen, Informationen gemeinsam unter Vorrichtungen und mit
dem nicht eingeschränkten
World Wide Web des Internets (nachfolgend „Web") zu teilen und strukturierte und sichere,
digitale Daten auszutauschen, um Dinge, ähnlich elektronischem Kommerz,
zu unterstützen.
Die Verbindungsfähigkeit
ermöglicht
auch viele neue Anwendungen für
Rechenvorrichtungen, wie beispielsweise auf einer Proximity basierende
Nutzungs-Szenarien, bei denen Vorrichtungen basierend zumindest
teilweise auf geografischen oder anderen Absichten von Proximitys
zusammenwirken. Ein häufiges
Merkmal dieser Szenarien einer Verbindungsfähigkeit ist dasjenige, einen
entfernten Zugriff und eine Steuerung von verbundenen Vorrichtungen
und Diensten von einer anderen Vorrichtung mit Benutzer-Schnittstellen-Fähigkeiten
zu schaffen (z. B. eine universelle Fernsteuereinheit, ein in der
Hand gehaltener Computer oder Digital Assistant, Zellen-Telefone,
und dergleichen). Diese Entwicklungen sind zu derselben Zeit aufgetreten,
da mehr Leute mit dem Internet verbunden werden, und da Verbindungs-Lösungen im Preis
fallen und sich in der Geschwindigkeiten erhöhen. Diese Trends führen zu
einer Welt einer allgegenwärtigen
und überall
vorhandenen, vernetzten Rechenumgebung, wo alle Typen von Vorrichtungen
in der Lage sind, mühelos
und nahtlos sich miteinander zu verbinden und zusammenzuwirken.
-
In
einer neuen Vorrichtungs-Verbindungsfähigkeits-Architektur, bekannt
als Universal Plug and Play, werden Vorrichtungen und Dienste durch
Austauschen von Nachrichten des gut definierten XML-Formats ausgetauscht.
Auf dem programmatischen Niveau ist es allerdings nützlich und
produktiv, in einem objekt-orientierten System zu arbeiten.
-
Frühere Verbindungsfähigkeits-Modelle
sind nicht ausreichend, um zwischen Objekt-Schnittstellen und den
Daten-Nachrichten, ausgetauscht mit der gesteuerten Vorrichtung über ein
Netzwerk, zu überbrücken. Einige
frühere
Verbindungsfähigkeits-Modelle
erfordern eine Steuervorrichtung, um den Programm-Code (wie beispielsweise
einen Vorrichtungs-Treiber, einen Jini Code, usw.) zum Zusammenarbeiten
mit der gesteuerten Vorrichtung oder dem Dienst von einer vernetzten
Quelle herunterzuladen. Ein solches Erfordernis eines Herunterladens
eines Codes ist nicht für
das Web und andere, allgegenwärtige
Rechen-Szenarien geeignet. Andere Verbindungsfähigkeits-Modelle erfordern
die Verwendung eines durch den Kunden geschriebenen Objekts für spezifische
Klassen von Diensten. Diese Maßnahme
führt zu
Einsatz-Schwierigkeiten (z. B. Benutzer-Setup und -Konfiguration)
und ist auch nicht für
eine allgegenwärtige
Berechnung geeignet.
-
Die
US-A-5491800 beschreibt eine Client Server Facility (CSF) Schnittstelle
und eine vernetzte Service-Einrichtung-(Network Service Facility – NSF)-Schnittstelle
zum Ausführen
einer Kommunikation zwischen Anwendungs-Programmen, die in Client-
und Server-Knoten eines Netzwerks mit verteilten Diensten vorhanden
sind. Die CSF-Schnittstelle umfasst Fern-Prozedur-Ruf-(Remote Procedure
Call – RCP)-Objekte zum Aufrufen
von und zum Antworten auf Dienstanforderungen an den Knoten, und
Anwendungs-Programmier-Schnittstellen-(Application Programming In terface – API)-Objekte
zum Transportieren solcher Anforderungen zwischen den Knoten. Allerdings
liefern die API-Objekte nur Kommunikations-Transporte innerhalb
eines Knotens. Dementsprechend arbeiten die API- und RPC-Objekte
mit dynamisch konfigurierbaren Protokoll-Stacks innerhalb der NSF-Schnittstellen
zusammen, um den Transport-Mechanismus, benötigt durch ein Anwendungs-Programm
an dem Client-Knoten, zu vervollständigen, wenn auf Dienste an
einem entfernten Server-Knoten
zugegriffen wird.
-
„The HAVI
Specification: Specification of the Home Audio/Video Interoperability
(HAVi) Architectur", HAVI
Specification XP-002116332, 19. November 1998, Seiten 1–384, gibt
einen Satz von Diensten an, die eine Arbeitsfähigkeit miteinander und die
Entwicklung von verteilten Anwendungen auf Heim-Netzwerken erleichtert.
Für eine
dynamische Konfiguration einer Zwischenverbindungs-Fähigkeit
unter verteilten Vorrichtungen und Diensten werden Steuereinheit-Vorrichtungen
in der HAVi-Architektur
vorgeschlagen, die, über
einen Knoten, ein Herunterladen eines „Device Control Module" DCM für eine gesteuerte
Vorrichtung erhalten.
-
Die
WO-A-9935856 (angeführt
unter Artikel 54 (3) und (4) EPÜ)
bezieht sich auf ein Verfahren und ein System zum Erreichen einer
nahtlosen Arbeits-Fähigkeit
miteinander und einer Integration zwischen einer Mehrzahl von Vorrichtungen
in einem Netzwerk, das ein gemeinsames Protokoll verwendet, wobei
mindestens eine der Vorrichtungen eine Legacy- bzw. Alt-Vorrichtung
ist, die mit dem Netzwerk unter Verwendung eines Proprietary Protokolls
kommuniziert.
-
Es
ist die Aufgabe der vorliegenden Erfindung, eine verbesserte Vorrichtung,
ein Verfahren und ein durch Computer lesbares Medium zu schaffen,
um eine dynamische Konfiguration einer Zwischenverbindungs-Fähigkeit
unter verteilten Vorrichtungen ohne ein Erfordernis eines Herunterladens
spezifischer Programm-Code oder eines Erfordernisses von durch den
Kunden geschriebener Objekte für
spezifische Klassen von Diensten zu schaffen.
-
Die
Aufgabe wird durch den Gegenstand der unabhängigen Ansprüche gelöst.
-
Bevorzugte
Ausführungsformen
der vorliegenden Erfindung sind durch die abhängigen Ansprüche definiert.
-
Gemäß einer
Technologie, die hier beschrieben ist, ist ein allgemeiner, programmatischer
Schnittstellen-zu-Netzwerk-Benachrichtigungs-Adapter (bezeichnet als
ein „Rehydrator") ein Modul, das
eine geeignete Objekt-Integrations-Schnittstelle oder eine Anwendungs-Programmier-Schnittstelle
zu Anwendungen auf einer Steuervorrichtung auferlegt und Netzwerk-Daten-Nachrichten
sendet, um Dienste oder einen Frage-Status einer gesteuerten Vorrichtung
aufzurufen. Der Adapter listet Anwendungs-Rufe zu der Schnittstelle
in die Netzwerk-Daten-Nachrichten hinein entsprechend von Service-
bzw. Dienst-Protokollen der gesteuerten Vorrichtung auf. Der beschriebene
Adapter ist vorzugsweise allgemein für alle Vorrichtungen und Dienste
mit dem Verbindungsfähigkeits-Modell
kompatibel, und wendet sich selbst auf spezifische solche der Vorrichtungen
basierend auf einer Schnittstelle und einer Nachrichten-Format/Protokoll-Beschreibung
an. Mit anderen Worten arbeitet dieser Adapter als ein universelles
Modul, über
das durch Netzwerk-Daten-Nachrichten geleitete Dienste auf anderen,
vernetzten Rechenvorrichtungen entfernte, programmatische Anwendungs-Programmier-Schnittstellen
sein können,
umfassend Objekt-Integrations-Schnittstellen
entsprechend einem Objekt-Modell, wie beispielsweise COM, CORBA,
JAVA, und dergleichen, von Microsoft.
-
Genauer
gesagt schafft dieser allgemeine Adapter die Schnittstelle, die
für irgendeinen
spezifischen Dienst einer gesteuerten Vorrichtung geeignet ist,
basierend auf einer Daten-Beschreibung der Schnittstelle, und wandelt
die Anwendungs-Aufrufe
zu Netzwerk-Daten-Nachrichten basierend auf einer Daten-Beschreibung
eines Protokolls und eines Formats für Netzwerk-Daten-Nachrichten
um, um mit dem spezifischen Dienst zusammenzuarbeiten. Wenn einmal
die Schnittstellen/Nachrichten-Beschreibung erhalten ist, können Anwendungen
auf der Steuervorrichtung programmatisch mit dem Adapter zusammenwirken,
und der Adapter kann geeignete Nachrichten-Änderungen mit dem Dienst der
gesteuerten Vorrichtungen handhaben. Mit dem beschriebenen Adapter
ist kein Herunterladen eines Codes erforderlich, sondern es wird
nur eine Schnittstellen/Benachrichtigungs-Beschreibung benötigt. Die
Beschreibung kann von der gesteuerten Vorrichtung, einem Netzwerk-Server-Computer,
oder durch Vorladen oder cachemäßiges Speichern
auf der Steuervorrichtung erhalten werden. Die Technologie ermöglicht,
dass Steuervorrichtungs-Anwendungen
unter Verwendung eines Objekt-orientierten Programmierens geschrieben
werden können,
während
ein Herunterladen eines Codes vermieden wird.
-
Zusätzliche
Merkmale und Vorteile werden aus der nachfolgenden und detaillierten
Beschreibung der dargestellten Ausführungsform ersichtlich werden,
die unter Bezugnahme auf die beigefügten Zeichnungen vorgenommen
wird.
-
Kurze Beschreibung der
Zeichnungen
-
1 und 2 zeigen
Blockdiagramme einer Vorrichtungs-Architektur per Universal Plug
and Play, unter Verwendung von Benutzer-Steuer-Punkten, gesteuerten
Vorrichtungen und Brücken
für eine
Verbindungsfähigkeit
zwischen Vorrichtungen.
-
3 zeigt
ein Blockdiagramm eines Vorrichtungs-Modells per Universal Plug
and Play.
-
4 zeigt
ein Blockdiagramm, das Beispiel-Vorrichtungen darstellt, die mit
dem Vorrichtungs-Modell der 3 übereinstimmen.
-
5 zeigt
ein Blockdiagramm, das eine Vorrichtungs-Zustands-Synchronisation unter
Verwendung einer Zustands-Tabelle und eines Ereignisauftretens darstellt.
-
6 zeigt
ein Blockdiagramm, das ein Vorrichtungs-Adressieren darstellt.
-
7 zeigt
ein Blockdiagramm eines programmatischen Schnittstellen-zu-Netzwerk-Benachrichtigungs-Adapters
oder eines Rehydrators in dem Vorrichtungs-Steuer-Modell der 3.
-
8 zeigt
ein allgemeines Daten-Flussdiagramm des Rehydrators der 7 in
dem Vorrichtungs-Steuer-Modell der 3.
-
9 zeigt
ein Blockdiagramm eines Ausführungs-Designs
des Rehydrators der 7.
-
10 und 11 zeigen
Blockdiagramme, die eine interne Software-Architektur des Benutzer-Steuer-Punkts
und einer gesteuerten Vorrichtung in dem Vorrichtungs-Steuer-Modell
der 3 darstellen.
-
12 zeigt ein Blockdiagramm, das eine interne Software-Architektur
einer kombinierten Brücke
und eines Benutzer-Steuer-Punkts in dem Vorrichtungs-Steuer-Modell der 3 darstellt.
-
13 zeigt ein Daten-Flussdiagramm, das eine typische
Browsing-Protokoll-Sequenz
in dem Vorrichtungs-Steuer-Modell der 3 darstellt.
-
14 zeigt eine Auflistung, die ein Layout eines
Beschreibungs-Dokuments in dem Vorrichtungs-Steuer-Modell der 3 darstellt.
-
15 zeigt eine Auflistung einer beispielhaften
Icon-Liste eines Beschreibungs-Dokuments in dem Vorrichtungs-Steuer-Modell
der 3.
-
16 zeigt eine Auflistung einer beispielhaften
Dienst-Steuer-Protokoll-Deklaration
in einem Beschreibungs-Dokument in dem Vorrichtungs-Steuer-Modell
der 3.
-
17, 18 und 19 zeigen
eine Auflistung eines beispielhaften Kontrakts in dem Vorrichtungs-Steuer-Modell
der 3.
-
20 und 21 zeigen
eine Auflistung eines XML-Schemas für eine Service-Steuer-Protokoll-Deklarations-Sprache,
verwendet in dem Vorrichtungs-Steuer-Modell der 3.
-
22 zeigt ein Blockdiagramm eines Ereignis-Modells,
verwendet in dem Vorrichtungs-Steuer-Modell der 3.
-
23 zeigt ein Daten-Flussdiagramm, das eine Subskription,
einen Hinweis, und eine Entsubskription in dem Ereignis-Modell der 22 darstellt.
-
24 zeigt ein Blockdiagramm eines Computer-Systems,
das in dem Vorrichtungs-Steuer-Modell der 3 verwendet
werden kann.
-
25 zeigt ein Blockdiagramm einer Vorrichtung,
die eine eingebettete Berechnungs- und Vernetzungs-Fähigkeit
per Universal-Plug-and-Play-(UPNP)-Standards besitzt, die in Kombination
mit dem Computer-System der 24 in
dem Vorrichtungs-Steuer-Modell der 3 verwendet
werden können.
-
26 zeigt ein Blockdiagramm einer Software-Architektur
pro UPNP-Standards
in der eingebetteten Berechnungs-Vorrichtung der 25.
-
27 zeigt ein Daten-Flussdiagramm eines Vorgangs
für eine
Automatik-Netzwerk-Einführung der eingebetteten
Rechenvorrichtung der 25 in einer ad hoc Computer-Netzwerk-Umgebung
per UPNP-Protokoll.
-
28 zeigt ein Daten-Flussdiagramm eines Vorgangs
für eine
Automatik-Netzwerk-Einführung der eingebetteten
Rechenvorrichtung der 25 in eine konfigurierte Computer-Netzwerk-Umgebung
per UPNP-Protokoll.
-
29 zeigt ein Blockdiagramm einer Software-Architektur
einer Client-Vorrichtung
per UPNP-Standard, die eine eingebettete Rechen- und Vernetzungs- Fähigkeit besitzt, die in dem
Vorrichtungs-Steuer-Modell der 3 verwendet
werden kann.
-
30 zeigt ein Blockdiagramm einer beispielhaften
Home- oder Office-Rechenumgebung,
die überall
vorhanden ist, die eine Vielzahl von Computern entsprechend 24 und eingebettete Rechenvorrichtungen entsprechend 25, über
UPNP-Standards miteinander verbunden, besitzt, die in dem Vorrichtungs-Steuer-Modell der 3 verwendet
werden können.
-
31 bis 43 zeigen
Programm-Auflistungen von Schnittstellen, verwendet in dem Ausführungs-Design
des Rehydrators der 9.
-
44–46 zeigen
eine XML-Format-Auflistung, die einen beispielhaften Kontrakt für ein Zusammenwirken
mit einem Stock-Quote-Service darstellt.
-
47–50 zeigen
eine XML-Format-Auflistung, die ein XML-Schema zum Definieren von
Kontrakten darstellt.
-
DETAILLIERTE BESCHREIBUNG
-
Die
nachfolgende, detaillierte Beschreibung ist auf einen allgemeinen,
programmatischen Schnittstellen-zu-Netzwerk-Nachrichten-Adapter
(auch bekannt als ein „Rehydrator") in einem Vorrichtungs-Steuer-Modell
gerichtet. In einer beschriebenen Ausführung wird der Rehydrator in
einer Vorrichtungs-Architektur 100 (1), einem
Verbindungs-Modell und einem Vorrichtungs-Steuer-Protokoll, vorgeschlagen
durch die Microsoft Corporation, bezeichnet als Universal Plug and
Play („UPnP"), verwendet. Obwohl
der allgemeine, programmatische Schnittstellen-zu-Netzwerk-(interface-to-network)-Benachrichtigungs-Adapter
im Zusammenhang eines Vorrichtungs-Steuer-Modells, und spezifisch
im Zusammenhang mit UPnP, beschrieben ist, ist er allgemeiner in
anderen, verteilten, vernetzten Umgebungen anwendbar, um eine objekt-orientierte
oder ähnliche
Anwendungs-Programmier-Schnittstelle
zu Anwendungen, die entfernt miteinander zusammenarbeiten, unter
Verwendung von Netzwerk-Daten-Nachrichten, zu schaffen.
-
Universal Plug and Play
-
Universal
Plug and Play (UPnP) ist eine offene Netzwerk-Architektur, die dazu
ausgelegt ist, eine einfache ad hoc Kommunikation unter verteilten
Vorrichtungen und Diensten von vielen Anbietern zu ermöglichen. UPnP
setzt eine Internet- Technologie
ein und kann als eine Erweiterung des Web-Modells von Mobil-Web-Browsern, die mit
fixierten Web-Servern in der Welt einer Peer-to-Peer-Verbindungsfähigkeit
unter mobilen und fixierten Vorrichtungen sprechen, angesehen werden.
UPnP bezieht die Null-Konfigurations-Meinung (Mantra) von Plug and
Play (PnP) ein, ist allerdings keine einfache Erweiterung des PnP-Host-Peripher-Modells.
-
Die
Kosten, die Größe und der
Batterie-Verbrauch einer Rechen-Technologie – einschließlich einer Verarbeitung, einer
Speicherung und einer Anzeige – fahren
fort, zu fallen. Dieser Trend wird durch die Entwicklung von selbstständigen,
einzelnen Rechenvorrichtungen oder solchen mit begrenzter Funktion,
wie beispielsweise Digital-Kameras, Audio-Playback-Vorrichtungen,
Smart-Mobil-Telefonen und in der Hand haltbaren Computern, ermöglicht.
Gleichzeitig hiermit ermöglicht
die ökonomische
Speicherung die Übertragung
von Digital-Audio, -Video und Standbildern hochflexibler Modelle
zum Verwalten von Entertainment-Inhalten.
-
Während viele
dieser Vorrichtungen für
eine nützliche,
selbstständige
Operation geeignet sind, kann eine nahtlose Verbindungsfähigkeit
mit dem PC den Wert für
den Kunden von sowohl selbstständigen
Vorrichtungen als auch dem PC erhöhen. Gute Beispiele für diese
Synergie sind eine digitale Bilderfassung kombiniert mit einer PC-Bildbearbeitung,
-Speicherung und -Übertragung
per Email/Veröffentlichung über das
Web und eine Informations-Synchronisation zwischen einem PC und
einem in der Hand haltbaren Computer oder einem Smart-Mobil-Telefon.
-
Da
viele dieser Vorrichtungen, und der PC selbst, mobil sind, muss
eine geeignete Kommunikations-Architektur ein hochdynamisches Verbindungsfähigkeits-Modell ermöglichen
und muss einen Peer-to-Peer Betrieb unter wahlweisen Kombinationen
von Vorrichtungen ermöglichen.
-
Das
Internet hat ein weit verbreitetes Bewusstsein über den Wert einer einfachen,
universellen Kommunikation hervorgerufen, die von der hinterlegenden Übertragungs-Technologie
unabhängig
ist und die von der Technologie irgendeines einzelnen Anbieters
unabhängig
ist.
-
UPnP
macht es möglich,
die Übertragung
von großen
Datenmengen (bulk data) (z. B. Dateien) oder A/V-Daten-Folgen von
irgendeiner Vorrichtung auf dem Netzwerk zu irgendeiner Vorrichtung
auf dem Netzwerk, unter der Steuerung irgendeiner Vorrichtung auf
dem Netzwerk, zu initiieren und zu steuern. UPnP ermöglicht die
Hinzufügung
und das Entfernen von Vorrichtungen ad hoc auf dem Netzwerk, und
sie ermöglicht, dass
mehrere Steuervorrichtungen synchron zueinander verbleiben.
-
UPnP
verwendet erneut existierende Protokolle und Technologien, immer
wenn dies möglich
ist. Der Übergang
zu dieser stark verbundenen (und verbindbaren) Welt wird nicht über Nacht
auftreten. UPnP baut sich auf existierenden Internet-Protokollen auf,
nimmt allerdings Vorrichtungen auf, die nicht das vollständige UPnP-Protokoll laufen
lassen können.
UPnP sieht eine Architektur vor, die Alt-Vorrichtungen ermöglicht, mit UPnP-Vorrichtungen
zu kommunizieren.
-
Ein
IP-Internet-Arbeiten ist als eine UPnP-Basis-Richtlinie aufgrund
der erwiesenen Fähigkeit
ausgewählt
worden, unterschiedliche, physikalische Medien zu überspannen,
um eine reale Welt einer Zusammenarbeit von mehreren Anbietern zu
ermöglichen
und um eine Synergie mit dem Internet und Home- und Office-Intranets
zu erreichen. Eine Internet-Synergie ermöglicht Anwendungen, wie beispielsweise
eine IP-Telefonie, Spielen mit mehreren Spielern, eine Fernsteuerung
einer Heim-Automatisierung
und -Sicherheit, einen auf dem Internet basierenden, elektronischen
Handel, zusätzlich
zu einem einfachen Email und einem Web-Browsing. Der Umfang von
UPnP umfasst eine Fernsteuerung von Vorrichtungen und eine Übertragung von
großen
Datenmengen. Allerdings spezifiziert es nicht A/V-Streaming-Formate
oder -Protokolle.
-
Eine
Medien-Unabhängigkeit
von UPnP ermöglicht
eine große
Flexibilität
in der Verpackung von Produkten. UPnP ermöglicht einem A/V-System, dass
es über
eine A/C-Power-Kommunikations-Technologie gesteuert wird, während die Übertragung
von A/V-Datenfolgen unter den Komponenten analog oder digital ist. Eine
der Steuereinheiten dieses Systems könnte auf einem Fernsehgerät vorhanden
sein, während
eine andere auf einem PC vorhanden ist, und eine noch andere über Funk
oder Infrarot verbunden ist.
-
Im
Gegensatz zu Plug and Play ist Universal Plug and Play on Top einer
Netzwerk-Verbindung aufgebaut und ermöglicht eine Peer-to-Peer-Verbindungsfähigkeit
ad hoc. Eine Netzwerk-Verbindung beschreibt, in diesem Zusammenhang,
eine Art einer Verbindungsfähigkeit,
die irgendeiner vernetzten Vorrichtung ermöglicht, eine Kommunikation
mit einer anderen, vernetzten Vorrichtung einzuleiten, oh ne eine
frühere
Beziehung eingerichtet zu haben, oder eine bestehende Beziehung
zwischen den Vorrichtungen aufrechtzuerhalten. Eine Vernetzung ermöglicht auch
mehreren Vorrichtungen, eine oder mehrere Verbindungen) mit einer
einzelnen Vorrichtung einzurichten, und ermöglicht einer Vorrichtung, dass
sie in der Lage ist, sowohl Verbindungen zu anderen Vorrichtungen
einzuleiten oder solche Verbindungen von anderen Vorrichtungen anzunehmen.
Das PnP, oder Host/Peripher, Modell ist immer dann geeignet, wenn
eine natürliche,
dauerhafte Beziehung zwischen zwei Vorrichtungen vorhanden ist (z.
B. ein Tastenfeld, eine Mouse, und eine Anzeige halten eine dauerhafte
Beziehung zu einem Host-Computer aufrecht). Gerade obwohl eine Vernetzung
keine dauerhaften Beziehungen auf niedrigem Niveau überträgt, schafft
sie die benötigten
Verankerungen (Adressen) für
Anwendungen, um auszuwählen,
Assoziationen als eine Annehmlichkeit für den Kunden beizubehalten
(z. B. wird an die gemeinsam verwendeten, vernetzten Drucker erinnert).
-
Um
eine Peer-to-Peer-Zusammenarbeit unter Vorrichtungen von mehreren
Anwendern zu erreichen, vereinbaren Anwender eine gemeinsame Technologie
und Standards bis zu dem höchsten
Niveau der erwünschten,
funktionalen Zusammenarbeit.
-
UPnP
verbindet formale Protokoll-Kontrakte, um eine Peer-to-Peer-Operation
dazwischen zu ermöglichen.
Protokoll-Kontrakte ermöglichen
eine Operation miteinander von mehreren Verkäufern in einer realen Welt.
-
UPnP
ermöglicht
Vorrichtungen, eine Benutzer-Schnittstelle durch Verknüpfen einer
Browser-Technologie freizulegen. Eine derzeitige Browser-Technologie
hält nicht
eine Separation einer Präsentation
von Daten, oder, in dem Fall von Vorrichtungen, einer Steuerung
aufrecht. Es ist möglich,
eine Seite von HTML zu durchsuchen, um Datenwerte zu extrahieren,
allerdings ist dies nicht einfach oder robust. UPnP verbindet die Separation
einer Präsentation
und von Daten, freigegeben durch die Benutzung von XML, und es erweitert
diese Technologie auf die Vorrichtungs-Steuer-Domäne.
-
UPnP
sieht eine durch eine Vorrichtung gesteuerte Auto-Konfigurations-Fähigkeit vor, die die Erfahrung
bewahrt, die Kunden auf dem Web haben. Heutzutage ist es möglich, das
Web ohne Herunterladen von Programmen über den Browser selbst hinaus
zu navigieren. Da UPnP dem Browser ermöglicht, auf Steuervorrich tungen
erweitert zu werden, und da UPnP-Vorrichtungen mit expliziten Protokollen
gesteuert werden, muss der Browser irgendwie fernen, wie mit UPnP-Vorrichtungen
zu kommunizieren ist. Dieser Lernprozess wird vollständig von
der Vorrichtung selbst geleitet und wird vollständig durch Herunterladen eines
XML-Dokuments durchgeführt,
das die Fähigkeiten
der Vorrichtung beschreibt. Die architekturmäßige Komponente, die eine durch
die Vorrichtung geleitete Auto-Konfiguration ermöglicht, wird als der Rehydrator
bezeichnet. Die Aufgabe des Rehydrators ist diejenige, zwischen
APIs und Protokollen umzuwandeln.
-
Da
der Auto-Konfigurations-Prozess selbst nur durch die Änderung
von formatierten Daten geleitet wird, ist dabei eine sehr geringe
Gelegenheit für
einen arglistigen Angriff von einem feindlichen Teil eines Codes
aus vorhanden.
-
Es
sind einige Szenarien vorhanden, bei denen das Web-UI-Modell nicht
für eine
umfangreiche Kunden-Erfahrung ausreichend ist. Es wäre nicht
passend, ein Web für
jeden Lichtschalter in einem Haus zu haben. Um eine umfangreiche
Benutzer-Schnittstelle zu unterstützen und um eine Zusammenfassung
von Vorrichtungen in eine einzelne UI zu ermöglichen, ermöglicht UPnP
eine Anwendungs-Steuerung zusätzlich
zu einer Browser-Steuerung von Vorrichtungen. Dies wird einfach
dadurch erreicht, dass Anwendungen ermöglicht wird, dieselben Rehydrator-APIs
aufzurufen, wie dies auch der Browser vornimmt. Anwendungen können auch
direkt die groben UPnP-Steuer-Protokolle erzeugen und verbrauchen,
vorausgesetzt, dass sie nicht an einer durch die Vorrichtung geleiteten
Auto-Konfiguration, freigegeben durch den Rehydrator, interessiert
sind.
-
UPnP
nimmt an, dass dort mehr als eine Vorrichtung mit UI vorhanden sein
wird, die wünscht,
andere Vorrichtungen in irgendeinem gegebenen Netzwerk zu steuern,
und es schafft einen einfachen Mechanismus, der diesen Steuer-Punkten
ermöglicht,
synchron zu verbleiben. Dieser Mechanismus kann einfach Vorrichtungs-Front-Panels und
drahtlose Fernsteuerungen unterstützen, die nicht UPnP-Protokolle
laufen lassen. Das UPnP-Steuer-Modell ist der dritte Teil einer
Steuerung; irgendeine Vorrichtung kann umfangreiche Daten (z. B.
Files bzw. Dateien) oder A/V-Datenfolgen
von irgendeiner Vorrichtung auf dem Netzwerk zu irgendeiner Vorrichtung
auf dem Netzwerk, unter der Steuerung irgendeiner Vorrichtung auf
dem Netzwerk, übertragen.
-
Terminologie
-
Die
detaillierte Beschreibung, die folgt, verwendet die Terminologie,
die nachfolgend definiert ist.
-
Modul.
Eine Komponente einer Vorrichtung, eines Software-Programms oder
eines Systems, das eine bestimmte „Funktionalität" umsetzt, die als
eine Software, eine Hardware, eine Firmware, eine elektronische Schaltung,
usw., verkörpert
sein kann.
-
Benutzer-Steuer-Punkt
(User Control Point). Der Satz von Modulen, der eine Kommunikation
mit einer UPnP-Steuervorrichtung ermöglicht. Benutzer-Steuer-Punkte initiieren
eine Entdeckung und Kommunikation mit gesteuerten Vorrichtungen
und empfangen Ereignisse von gesteuerten Vorrichtungen. Benutzer-Steuer-Punkte
werden typischerweise auf Vorrichtungen umgesetzt, die eine Benutzer-Schnittstelle
haben. Diese Benutzer-Schnittstelle wird dazu verwendet, mit gesteuerten
Vorrichtungen über
das Netzwerk zusammenzuarbeiten. Die Module umfassen minimal einen
Discovery-Client, einen Description-Client und einen Rehydrator.
Benutzer-Steuer-Punkte
können
auch eine visuelle Navigation, einen Event-Subscription-Client, eine Event-Sink,
einen Web-Browser und eine Anwendungs-Ausführungs-Umgebung umfassen. Benutzer-Steuer-Punkte
können
einen Wert zu dem Netzwerk durch Zusammenfassung der Steuerung von
mehreren gesteuerten Vorrichtungen (die universelle Fernsteuerung)
hinzufügen
oder sie können
eine Funktion so einfach wie Initiieren der Übertragung von Daten zu einer
gesteuerten Vorrichtung oder von dieser umsetzen. Beispiele von
Vorrichtungen, die Benutzer-Steuer-Punkte sein könnten, sind der Personal-Computer
(PC), das digitale Fernsehen (DTV), eine Set-Top-Box (STB), in der Hand haltbare
Computer und Smart-Mobil-Telefone, und dergleichen. Nichts hindert
eine einzelne Vorrichtung daran, die Funktionalität eines
Benutzer-Steuer-Punkts und von einer oder mehreren gesteuerten Vorrichtungen)
zu derselben Zeit umzusetzen.
-
Controlled
Device. Der Satz von Modulen, der eine Kommunikation mit einem Benutzer-Steuer-Punkt ermöglicht.
Gesteuerte Vorrichtungen sprechen auf Discovery-Anforderungen an,
nehmen ankommende Kommunikationen von Benutzer-Steuer-Punkten (User Control
Points) an und können
Ereignisse zu Benutzer-Steuer-Punkten
schicken. Vorrichtungen, die eine Funktionalität einer gesteuerten Vorrich tung
unterstützen,
können
auch lokale Benutzer-Schnittstellen, wie beispielsweise Front-Panel-Displays
oder drahtlose Fernsteuerungen, unterstützen. Die Module umfassen minimal
einen Discovery-Server, einen Description-Server und einen Control-Server.
Gesteuerte Vorrichtungen können
einen Presentation-(Web)-Server, einen Event-Subscription-Server
und eine Event-Source umfassen. Beispiele von Vorrichtungen, die
gesteuerte Vorrichtungen sein könnten,
sind ein VCR, ein DVD-Abspielgerät oder eine
-Aufzeichnungs-Vorrichtung, eine Heiz/Ventilations/Klimatisierungs-Ausrüstung (HVAC),
eine Beleuchtungs-Steuereinheit, eine Audio/Video/Bildabspiel-Vorrichtung,
ein in der Hand gehaltener Computer, ein Smart-Mobil-Telefon und der PC, und dergleichen.
Nichts hindert eine einzelne Vorrichtung daran, die Funktionalität eines
Benutzer-Steuer-Punkts oder von einer oder mehreren gesteuerter
Vorrichtungen) gleichzeitig umzusetzen.
-
Brücke (Bridge).
Ein Satz von Modulen, der Bridged- and Legacy-Vorrichtungen ermöglicht, mit nativen UPnP-Vorrichtungen
zusammen zu arbeiten. Die Brücke
selbst gibt eine Zusammenstellung von UPnP gesteuerten Vorrichtungen
zu Benutzer-Steuer-Punkten frei. Die Brücke listet zwischen nativen
UPnP-Vorrichtungs-Steuer-Protokollen
und den hinterlegenden Protokollen, freigegeben durch die Bridged
and Legacy Devices, auf. Optional könnte eine solche Vorrichtung
UPnP gesteuerte Vorrichtungen zu Legacy Vorrichtungen in der Art
und Weise freigeben, die durch die Legacy-Vorrichtungen erforderlich
sind. Nichts hindert eine einzelne Vorrichtung daran, die Funktionalität eines
Benutzer-Steuer-Punkts, einer oder mehrerer gesteuerter Vorrichtungen
und einer Brücke
gleichzeitig umzusetzen.
-
Service-Provider.
Ein Modul, verwendet durch eine UPnP-Brücke, die zwischen UPnP-Protokolen
und den Protokollen, verwendet durch Bridged- and Legacy-Vorrichtungen,
translatiert. Keine Service-Provider sind für eine Kommunikation unter
nativen UPnP-Vorrichtungen erforderlich.
-
Überbrückte Vorrichtung
(Bridged Device). Eine Vorrichtung, die in einem UPnP auf dem nativen
Protokoll-Niveau partizipieren kann, entweder da die Vorrichtung
keine ausreichenden Ressourcen besitzt oder da die hinterlegenden
Medien nicht geeignet sind, um TCP und HTTP laufen zu lassen. Beispiele
von Vorrichtungen, die überbrückte Vorrichtungen
sein könnten,
sind eine über
die Energieversorgungs-Leitung gesteuerte A/V-Ausrüstung, Lichtschalter,
Thermostate, Armbanduh ren und kostengünstige Spielzeuge. Überbrückte Vorrichtungen
sind UPnP-beschwert
und sind zu anderen UPnP-Vorrichtungen über eine UPnP-Brücke freigegeben.
-
Legacy-Vorrichtung
(Legacy Device). Irgendeine Nicht-UPnP-Compliant-Vorrichtung, die zu anderen UPnP-Vorrichtungen über eine
UPnP-Brücke
freigelegt werden muss.
-
Vorrichtungs-Modell
(Device Model). Das UPnP-Modell von gesteuerten Vorrichtungen. Das
Vorrichtungs-Modell umfasst das Adressier-Schema, das Beschreibungs-Dokument,
eine Hierarchie von Vorrichtungen und Diensten und die funktionale
Beschreibung von Modulen.
-
Vorrichtungs-Steuer-Protokoll
(Device Control Protocol – DCP).
Ein vollständiger
Satz von UPnP-Protokollen und Schemata, verwendet dazu, um mit einer
UPnP gesteuerten Vorrichtung zusammenzuarbeiten.
-
Vorrichtungs-Definition
(Device Definition). Die formale Definition eines Vorrichtungs-Typs.
Eine Vorrichtungs-Definition umfasst einen Vorrichtungs-Typ-Identifizierer, die
festgelegten Elemente in dem Beschreibungs-Dokument, den erforderlichen
Satz von Dienst-Definitionen in der Root-Vorrichtung, und die Hierarchie von
erforderlichen Vorrichtungen und Dienst-Definitionen.
-
Dienst-Definition
(Service Definition). Die formale Definition eines Dienst-Typs.
Eine Dienst-Definition umfasst einen Dienst-Typ-Identifizierer,
eine Definition der Dienst-Zustands-Tabelle (Service State Table – SST),
eine Definition des Dienst-Befehl-Satzes,
das Dienst-Steuer-Protokoll (Service Control Protocol – SCP) und
die Dienst-Steuer-Protokoll-Deklaration (Service Control-Protocol
Declaration – SCPD).
-
Vorrichtung
(Device). In dem Zusammenhang des Vorrichtungs-Modells ein Container
für Dienste. Eine
Vorrichtung gibt allgemein modellmäßig einen physikalischen Gegenstand,
wie beispielsweise ein VCR, an, kann allerdings auch eine logische
Einrichtung darstellen. Ein PC, der die traditionellen Funktionen
eines VCR emuliert, würde
ein Beispiel einer logischen Vorrichtung sein. Vorrichtungen können andere
Vorrichtungen enthalten. Ein Beispiel würde ein TV/VCR sein, der zu
einer einzelnen, physikalischen Einheit zusammengefasst ist. UPnP
ermöglicht
die Assoziation einer Benutzer-Schnittstelle (Anzeige-Icon und Root-Web-Seite) zu
jeder Vorrichtung, umfassend eine Root-Vorrichtung.
-
Root-Vorrichtung
(Root Device). Die oberste Vorrichtung in einer Hierarchie von verschachtelten
Vorrichtungen. Eine Vorrichtung ohne verschachtelte Vorrichtungen
ist immer eine Root-Vorrichtung.
-
Vorrichtungs-Typ
(Device Type). Ein relativ hohes Niveau einer Klassifizierung von
Vorrichtungen mit einer gemeinsamen Funktionalität. Vorrichtungs-Typ ist dazu
vorgesehen, zu ermöglichen,
dass Vorrichtungen einfach sind und automatisch für eine Präsentation
gruppiert sind. Ein Beispiel eines Vorrichtungs-Typs ist „VCR". Vorrichtungs-Typen
sind formal in Termen eines erforderlichen Satzes von Dienst-Definitionen einer
minimalen Version, die eine konforme Vorrichtung unterstützen muss,
definiert. UPnP unterstützt
Suchen nach allen Vorrichtungen eines spezifizierten Vorrichtungs-Typs.
-
Vorrichtungs-Typ-Identifizierer
(Device Typ Identifier). Ein eindeutiger Identifizierer, der eine
Vorrichtungs-Definition identifiziert. Dieser Identifizierer hängt an dem
Format eines Uniform Resource Identifier (URI). Siehe T. Berners-Lee,
R. Fielding, L. Masinter, „Uniform
Resource Identifiers (URI): Generic Syntax", das bei IETF RFC 2396 (August 1998)
gefunden werden kann.
-
Device-Friendly-Name.
Eine durch eine Person lesbare Folge bzw. ein String, der durch
Anbieter zum Zeitpunkt einer Herstellung einer Vorrichtung initialisiert
wird. Jede Vorrichtung, umfassend Root-Vorrichtungen, besitzt einen
Device-Friendly-Name.
Ein typischer Device-Friendly-Name wird Hersteller- und Modell-Informationen
enthalten und wird dazu verwendet, eine präzisere Identifikation einer
UPnP-Vorrichtung
von dem Satz entdeckter Vorrichtungen zu ermöglichen. Wenn der eindeutige
Vorrichtungs-Name (Unique Device Name – UDN) einmal identifiziert
ist, kann er dazu verwendet werden, eindeutig dieselbe Vorrichtung
in der Zukunft zu identifizieren. UPnP ermöglicht, dass Device-Friendly-Names
durch Benutzer-Steuer-Punkte
geändert
werden. Der Device-Friendly-Name sollte nicht als Vorrichtungs-Identifizierer verwendet
werden.
-
Eindeutiger
Vorrichtungs-Name (Unique Device Name – UDN). Der grundsätzliche
Identifizierer einer Vorrichtung. Jede Vorrichtung, umfassend Root-Vorrichtungen, besitzt
exakt einen UDN. Der UDN ist global eindeutig und dauerhaft, sogar über große Leistungs-Zyklen
und Änderungen
des physikalischen Orts. Der UDN ist der einzige UPnP-Vorrichtungs-Identifizierer,
in Bezug auf den garantiert ist, sogar über große Leistungs-Zyklen und Änderungen
des physikalischen Orts. Der UDN ist der einzige UPnP-Vorrichtungs-Identifizierer,
in Bezug auf den garantiert ist, dass er sich niemals ändert. UPnP
ermöglicht
Suchen nach Vorrichtungen durch UDN.
-
Beschreibungs-Dokument
(Description Document). Eine strukturierte Einheit aus Daten, die
durch einen Benutzer-Steuer-Punkt oder eine UPnP-Brücke verwendet
wird, um die Fähigkeiten
einer gesteuerten Vorrichtung zu erlernen. Beschreibungs-Dokumente
werden von dem Beschreibungs-Server auf einer UPnP gesteuerten Vorrichtung
aufgesucht. Dabei ist ein Beschreibungs-Dokument für jede Root-Vorrichtung vorhanden,
die die Root-Vorrichtung und alle Nicht-Root-Vorrichtungen beschreibt.
Beschreibungs-Dokumente hängen
an einer XML-Grammatik. Um eine Lokalisierung zu unterstützen, können mehrere
Beschreibungs-Dokumente existieren. Ein Benutzer-Steuer-Punkt erfordert
das bevorzugte, lokalisierte Beschreibungs-Dokument durch Verwendung des Standard-HTTP-"accept-language"-Header.
-
Dienst
(Service). Die fundamentale, durch UPnP steuerbare Einheit (allerdings
nicht das feinste Niveau einer Steuerung). Ein Beispiel eines Dienstes
ist "Clock". Dienste sind mit
einem obligatorisch gemeinsamen Basis-Satz einer Funktionalität definiert.
Anbieter können
den Basis-Satz mit eigenen Erweiterungen erweitern, vorausgesetzt,
dass die Basis-Funktionalität
ausgeführt
wird. Dienst-Definitionen
sind Versionen und spätere
Versionen sind dahingehend eingeschränkt, dass sie Untersätze von
früheren
Versionen sein müssen.
UPnP ermöglicht
Suchen nach allen Vorrichtungen, die einen spezifizierten Dienst
einer minimalen Version enthalten. Diese Suche würde alle Clocks (Takte bzw.
Uhren) finden, ungeachtet deren Verpackung. Eine Suche nach einem
Vorrichtungs-Typ "Clock" würde dazu
verwendet werden, nur selbstständige
Clocks (Takte bzw. Uhren) zu finden.
-
Dienst-Typ
(Service Type). Eine Klassifikation von Diensten durch deren Funktion.
-
Dienst-Typ-Identifizierer
Service Type Identifier) Ein eindeutiger Identifizierer, der eine
Service-Definition identifiziert. Dieser Identifizierer hängt sich
an das Format eines Uniform Resource-Identifier (URI) an. Siehe
T. Berners-Lee, R. Fielding, L. Masinter, Uniform Resource Identifiers
(URI): Generic Syntax, IETF RFC 2396 (August 1998).
-
Dienst-Zustand-Tabelle
(Service State Table – SST).
Eine logische Tabelle, die aus Reihen von [Variable, Typ, legale
Werte, Voreinstellungs-Wert, momentaner Wert] besteht, die den momentanen
elektrischen, mechanischen und/oder logischen Zustand eines Dienstes
darstellt. SST-Fälle
sind an der gesteuerten Vorrichtung selbst gespeichert und sind
die ultimative Autorität
des Zustands des Dienstes. Die gesamte lokale Benutzer-Schnittstelle,
wie beispielsweise Front-Panels oder drahtlose Fernsteuer-Einrichtungen,
sind erforderlich, um die SST auf UPnP-Compliant-Vorrichtungen zu aktualisieren.
-
SST-Definition
-
Dienst-Befehl-Satz
(Service Command Set). Ein Satz von Befehlen, der an einem Dienst
aufgehoben werden kann. Befehle führen allgemein zu Änderungen
in dem Feld des momentanen Werts einer oder mehrerer Reihe(n) einer
SST. Befehle werden logisch in dem Format Befehl (Variable = neuer
Wert, Variable = neuer Wert, ...) dargestellt. Dienste müssen den
vollständigen
Satz von Änderungen
zu einer SST akzeptieren oder zurückweisen. Dabei ist ein obligatorischer
Standard-Frage-Befehl
(Query Command) vorhanden, der dazu verwendet wird, den momentanen
Wert irgendeiner Reihe einer SST aufzusuchen.
-
Dienst-Befehl-Satz-Definition
-
Dienst-Steuer-Protokoll
(Service Control-Protocol – SCP).
Das Protokoll, verwendet dazu, Befehle gegen einen Dienst aufzurufen
und Ergebnisse zurückzuführen. Dabei
ist exakt ein SCP pro Dienst-Definition vorhanden. SCPs hängen sich
an die Grammatik eines SCP XML Schemas an. SCPs können durch
ein automatisiertes Tool erzeugt werden, das eine SST-Definition
und eine Befehl-Satz-Definition als Eingabe annimmt.
-
Dienst-Steuer-Protokoll-Deklaration
(Service Control-Protocol Declaration – SCPD). Eine formale Darstellung
des Schemas eines Dienstes. Die SCPD erklärt die Reihen eines SST eines
Dienstes und den zugeordneten Befehl-Satz. SCPDs werden von steuernden
Vorrichtungen in deren Beschreibungs-Dokumenten heruntergeladen
und ermöglichen
Benutzer-Steuer-Punkten oder Brücken,
Befehle über
den Dienst aufzurufen, ohne eine frühere oder dauerhafte Kenntnis
der Fähigkeiten
(oder des Schemas) des Dienstes. Dabei ist exakt eine SCPD pro Dienst-Definition
vorhanden. SCPDs hängen
sich an eine XML-Grammatik an. SCPDs können durch ein automatisiertes
Tool erzeugt werden, das eine SST-Definition und eine Befehl-Satz-Definition als Eingabe
annimmt.
-
Ereignis
(Event). Eine freiwillige Nachricht, erzeugt durch eine gesteuerte
Vorrichtung und zugeführt zu
einem oder zu mehreren Benutzer-Steuer-Punkten. Ereignisse werden
dazu verwendet, eine konsistente Ansicht des Zustands des Dienstes über alle
interessierten Benutzer-Steuer-Punkte beizubehalten. UPnP verbindet
die GENA-Ereignis-Architektur (siehe "Generic Event Notification"), um Ereignis-Nachrichten zu transportieren.
Affe Ereignisse werden unter Verwendung von TCP/IP für eine Zuverlässigkeit
geliefert.
-
Generik-Ereignis-Hinweis
(Generic Event Notification – GENA)
Ein Ereignis-Transport-Protokoll. GENA
verbindet TCP/HTTP als einen Transport. GENA ist als ein Internet
Draft zu dem IETF herausgegeben worden. Siehe J. Cohen, S. Aggarwal,
Y. Goland, General Event Notification Architektur Base: Client to
Arbiter, IETF Internet Draft, "draft-cohen.gena-client-00.txt".
-
Einfaches
Dienst-Entdeckungs-Protokoll (Simple Service Discovery Protocol – SSDP).
Ein einfaches Netzwerk-Vorrichtungs-Entdeckungs-Protokoll. UPnP
verwendet SSDP, um Benutzer-Steuer-Punkten zu ermöglichen,
gesteuerte Vorrichtungen und Dienste zu finden. SSDP arbeitet in
einem auf einer Voreinstellung, einem vollständig automatisierten Multicast-UDP/IP,
basierenden Mode zusätzlich
zu einem auf einem Server basierenden Mode, der TCP/IP für Registrierungen
und Fragen verwendet. Die Übergänge zwischen
dem Voreinstellungs-Dynamik-Mode und dem auf dem Server basierenden
Mode sind automatisch und transparent. SSDP ermöglicht jeder gesteuerten Vorrichtung,
die Lebensdauer zu steuern, für
die die Description URL in allen Benutzer-Steuer-Punkten cachemäßig gespeichert
werden. Dies ermöglicht
einer gesteuerten Vorrichtung, für
Benutzer-Steuer-Punkte für
eine relativ lange Zeit sichtbar zu verbleiben (über Power-Zyklen), zusätzlich dazu,
einer gesteuerten Vorrichtung zu ermöglichen, sehr schnell zu erscheinen
und zu verschwinden, alles unter der Steuerung der gesteuerten Vorrichtung.
SSDP und dazu in Bezug stehende Multicast und Unicast-UDP-HTTP-Nachrichten-Spezifikationen
sind als Internet Drafts zu den IETF herausgegeben worden. Siehe
Y. Goland, Multicast and Unicast UDP HTTP Messages. IETF Internet
Draft, "draft-goland-http-udp-00.txt" und Y. Goland, T.
Cai, P. Leach., Y. Gu, S. Albright, Simple Service Discovery Protocol/1.0,
IETF Internet Draft, "draft-cai-ssdp-v1-02.txt".
-
Client.
In dem Zusammenhang mit UPnP bezieht sich Client auf ein Modul,
das eine TCP/HTTP-Verbindung zu einem Peer-HTTP-Server initiiert.
-
Server.
In dem Zusammenhang von UPnP bezieht sich Server auf einen HTTP-Server.
Dies ist ein Modul, das ankommende TCP/HTTP-Verbindungen akzeptiert
und entweder eine Web-Seite zurückführt oder
Payload-Daten zu einem anderen Modul zuführt. Client und Server beschreiben
nur die Beschreibung einer Initiierung von TCP/HTTP-Verbindungen.
Dabei ist keine Beziehung zwischen Konzepten mit niedrigem Niveau von
Client und Server und Konzepten mit hohem Niveau von Benutzer-Steuer-Punkten
und kontrollierten Vorrichtungen vorhanden. Logisch entdecken Benutzer-Steuer-Punkte
immer eine Kommunikation mit gesteuerten Vorrichtungen und initiieren
sie, allerdings erfordert diese Berechnung eine Client- und Server-Funktionalität auf beiden
Seiten.
-
Hostname.
Ein Host-Name ist ein Domäne-Namen-System
(Domain Name System – DNS)
oder ein NetBIOS-Name-Dienst (NBNS), das bzw. der, wenn es bzw.
er zu einer IP-Adresse aufgelöst
ist, eine Netzwerk-Schnittstelle darstellt, die dazu verwendet werden
kann, eine Verbindungsfähigkeit
auf einem TCP/IP-Niveau zu Benutzer-Steuer-Punkten, zu gesteuerten
Vorrichtungen oder zu Brücken
einzurichten. Hostnames können
dazu verwendet werden, ein dauerhaftes Niveau-Netzwerk-Adressieren auf einem
Netzwerk zu schaffen, wo IP-Adressen dynamisch zugeordnet werden
und von einer nicht bekannten Lebensdauer sind oder mit einem existierenden,
verwalteten Netzwerk integriert werden. UPnP liefert einen Algorithmus,
um einen Hostnamen einer Vorrichtung von deren UDN zum Herstellungs-Zeitpunkt
zu erzeugen.
-
Uniform-Ressource-Lokator
(Uniform Resource-Locator – URL)
Ein Format zum Ausdrücken
von Web-Adressen. URLs enthalten minimal eine Identifikation der
Protokoll-Familie, für
die der URL für
einen Hostname, und einen Pfad, gültig ist. UPnP verwendet URLs
als Adressen, immer wenn das Modul, das eine ankommende Verbindung
annimmt, ein HTTP-Server ist.
-
Beschreibungs-URL
(Description URL) Der URL, zurückgeführt von
einer gesteuerten Vorrichtung oder einer Brücke auf irgendeine UPnP-SSDP-Frage
hin. Die ser URL weist immer auf einen Beschreibungs-Server an der
gesteuerten Vorrichtung hin. Ein HTTP GET kann auf diesen URL ausgegeben
werden, um das Beschreibungs-Dokument aufzusuchen. Dieser URL ist
als eine Adresse für
die Lebensdauer des Hostname, eingebettet in den URL, gültig.
-
Entdeckungs-Server
(Discovery Server). Das Modul, das in einer gesteuerten Vorrichtung
oder Brücke läuft, die
auf SSDP-Fragen antwortet. Dieser Server ist einzigartig dahingehend,
dass er UDP/HTTP, im Gegensatz zu nur TCP/HTTP, unterstützen muss.
-
Entdeckungs-Client
(Discovery Client). Das Modul, das in einem Benutzer-Steuer-Punkt läuft, der
SSDP-Fragen initiiert.
-
Beschreibungs-Server
(Description Server). Das Modul, das in einer gesteuerten Vorrichtung
oder Brücke
läuft,
die auf HTTP GETs antwortet und Beschreibungs-Dokumente zurückführt. Dieser
Dienst besteht aus einem TCP/HTTP-Server, der ein Beschreibungs-Dokument
von einem dauerhaften Speicher (ähnlich
eines Dateisystems) aufsuchen und zurückführen kann.
-
Visuelle
Navigation (Visual Navigation). Eine Benutzer-Steuer-Punkt-Funktionalität, die die
Icons von entdeckten Vorrichtungen anzeigt und die Übertragung
einer Steuerung zu einem Browser oder einer Anwendung freigibt,
um mit der gesteuerten Vorrichtung zusammenzuwirken. In Windows
könnte
Visual Navigation als ein Folder von Icons ausgeführt werden.
-
Präsentations-URL
(Presentation URL). Ein URL, der durch einen Benutzer-Steuer-Punkt verwendet werden
kann, um zu dem Präsentations-Server
einer gesteuerten Vorrichtung zu navigieren. Dieser URL wird in
dem Beschreibungs-Dokument
zurückgeführt und
ist als eine Adresse für
die Lebensdauer des Hostname, eingebettet in dem URL, gültig. Alle
Vorrichtungen, umfassend Nicht-Root-Vorrichtungen, können einen zugeordneten Präsentations-URL
haben.
-
Präsentations-Server
(Presentation Server). Ein Web-Server. Das Modul, das in einer gesteuerten Vorrichtung
läuft,
die auf HTTP GETs oder Präsentations-URLs
anspricht und eine Benutzer-Schnittstelle unter Verwendung von Web-Technologien
(JavaScript, Jscript®, ECMAScript, VBScript,
ActiveX®,
Java Applet, usw.) zurückführt.
-
Browser.
Der Präsentations-Client.
Ein Web-Browser, erweitert mit einem Rehydrator.
-
Steuer-URL
(Control URL). Ein URL, der durch einen Benutzer-Steuer-Punkt verwendet
werden kann, um zu dem Steuer-Server einer gesteuerten Vorrichtung
oder Brücke
zu navigieren. Dieser URL wird in dem Beschreibungs-Dokument zurückgeführt und
ist als eine Adresse für
die Lebensdauer des Hostname, eingebettet in den URL, gültig. Alle
Dienste besitzen einen zugeordneten Steuer-URL.
-
Steuer-Server
(Control Server). Das Modul, das in einer gesteuerten Vorrichtung
oder Brücke
läuft,
die auf Befehle, aufgerufen an einem Dienst durch einen Benutzer-Steuer-Punkt,
anspricht. Befehle werden durch das SCP, spezifiziert in der Dienst-Definition,
codiert. Dieser Dienst besteht aus einem TCP/HTTP-Server, der eine
Steuerung zu der nativen Steuer-Logik eines Dienstes führt, die
SST aktualisiert und ein Ereignis erzeugt, falls sich die Statistik ändert.
-
Rehydrator.
Ein UPnP, der Steuer-Client. Ein Benutzer-Steuer-Punkt-Modul, das
zwischen nativen Betriebssystem-APIs und SCPs und Ereignissen translatiert.
Der Rehydrator lädt
SCPDs von gesteuerten Vorrichtungen und Brücken hoch und erzeugt geeignete
SCPs auf die Anwendung von API-Anforderungen hin, um Befehle aufzurufen.
-
Ereignis-Subskriptions-URL
(Event Subscription URL). Ein URL, der durch einen Benutzer-Steuer-Punkt
verwendet werden kann, um zu dem Ereignis-Subskriptions-Server einer gesteuerten
Vorrichtung oder Brücke
zu navigieren. Dieser URL wird in das Beschreibungs-Dokument zurückgeführt und
ist als eine Adresse für
die Lebensdauer des Hostname, eingebettet in den URL, gültig. Alle
Dienste besitzen einen zugeordneten Ereignis-Subskriptions-URL.
-
Ereignis-Subskriptions-Server
(Event Subscription Server) Das Modul, das in einer gesteuerten
Vorrichtung oder Brücke
arbeitet, die auf GENA SUBSCRIBE Anforderungen von Benutzer-Steuer-Punkten
anspricht. Ein SUBSCRIBE informiert die gesteuerte Vorrichtung oder
Brücke über den
Wunsch des Benutzer-Steuer-Punkts, weitere Ereignisse zu empfangen.
Dieser Dienst besteht aus einem TCP/HTTP-Server, der die Ereignis-Sink-URL des
Benutzer-Steuer-Punkts zu der Liste von Bestimmungen, die NOTIFY'd sind, immer wenn
sich die SST, zugeordnet zu dem Dienst, ändert, hinzufügt.
-
Ereignis-Subskriptions-Client
(Event Subscription Client). Das Modul, das in einem Benutzer-Steuer-Punkt
läuft,
das GENA SUBSCRIBE Nachrichten zu dem Ereignis-Subskriptions-Server
schickt.
-
Ereignis-Sink-URL
(Event Sink URL). Ein URL, zugeführt
durch einen Benutzer-Steuer-Punkt, der als eine Adresse verwendet
wird, um Ereignis-NOTIFYs zu senden. Dieser URL ist als eine Adresse
für die
Lebensdauer des Hostname, eingebettet in den URL, gültig. Dabei
ist keine explizite Beziehung zwischen Ereignis-Sink-URLs und Subskriptions-Identifizierern
vorhanden.
-
Subskriptions-Identifizierer
(Subscription Identifier-SID). Ein Header in der GENA NOTIFY Nachricht, die
die Quelle eines Ereignisses identifiziert. In UPnP kann der SID
als ein Alias für
den Fall der Ereignis-Quelle angesehen werden.
-
Ereignis-Sink
(Event Sink). Das Modul, das in einem Benutzer-Steuer-Punkt läuft, der
ankommende GENA-Ereignis-NOTIFYs akzeptiert. Dieser Dienst besteht
aus einem TCP/HTTP-Server, der die Ereignis-Informationen zu interessierten
Anwendungen, die an dem Benutzer-Steuer-Punkt laufen, führt.
-
Ereignis-Quelle
(Event Source). Das Modul, das in einer gesteuerten Vorrichtung
oder Brücke
läuft, die
GENA NOTIFYs zu den Ereignis-Sink-Servern von SUBSCRIBES-Benutzer-Steuer-Punkten
schickt.
-
Domäne-Name-System
(Domain Name System – DNS).
Ein verteiltes System von Servern, die die IP-Adresse von anderen
Computern auf einem Netzwerk, basierend auf deren hierarchischen
Namen, lokalisiert.
-
NetBIOS-Namen-Server
(NBNS). Ein Server, der die IP-Adressen anderer Computer auf einem
Netzwerk basierend auf deren Flat-NetBIOS-Computer-Namen lokalisiert.
-
Multicast-DNS
(MDNS). Ein Peer-to-Peer-Translations-Schema, das kein Einsetzen
von DNS-Servern erfordert.
-
UPnP-Technologien-Übersicht
-
Eine Übersicht
von Technologien, verwendet in UPnP, folgt.
-
Vorrichtungs-Entdeckung:
einfaches Vorrichtungs-Entdeckungs-Protokoll
-
Simple Service Discovery
Protocol – SSDP
-
TCP/IP
liefert die Fähigkeit,
eine Verbindung mit einer spezifizierten Anwendung, die auf einer
spezifischen Vorrichtung läuft,
zu initiieren, vorausgesetzt, dass sowohl die Netzwerk-Adresse der
Vorrichtung (IP-Adresse) als auch die Anwendungs-Adresse (Port)
bekannt sind. Allgemein sind Anwendungs-Adressen (Ports) standardisiert
und weitgehend bekannt, allerdings verbleibt das Problem eines Lernens
der IP-Adresse einer Vorrichtung.
-
Ein
einfaches Dienst-Entdeckungs-Protokoll (SSDP) ist ein Protokoll,
das Vorrichtungen ermöglicht, die
Existenz von potenziellen Peer-Vorrichtungen und den erforderlichen
Informationen (eine IP-Adresse), benötigt, um TCP/IP-Verbindungen
damit einzurichten, zu lernen. Das erfolgreiche Ergebnis einer SSDP-Suche ist
ein Uniform-Resource-Lokator (URL). Der Hostname, eingebettet in
den URL, kann zu einer IP-Adresse aufgelöst werden, die dazu verwendet
werden kann, eine Verbindung mit der entdeckten Vorrichtung vorzunehmen.
Die Auflösung
Name-zu-Adresse liegt außerhalb
der Funktionalität
des SSDP.
-
SSDP
spezifiziert einen Betriebs-Mode, der auf einer vollständig automatischen,
besten Multicast-Voreinstellungs-UDP basiert, zusätzlich zu
einem Server-Mode,
der TCP für
eine Registrierung und Frage verwendet. Ein Vorwärtsfallen zu dem Server-Mode
und ein Rückwärtsfallen
zu dem dynamischen Voreinstellungs-Mode können automatisch und transparent
auftreten, wenn ein Server zu einem Netzwerk hinzugefügt oder
von diesem entfernt wird. Der Server-Mode kann dazu verwendet werden,
einen Netzwerk-Verkehr zu verringern, Suchen basierend auf einer
Lokalisierung oder einer Policy auszuführen und sich mit einem Entdeckungs-System zu integrieren.
-
SSDP
erfordert, dass alle Vorrichtungen eine maximale Lebensdauer spezifizieren,
für die
die SSDP-Niveau-Kenntnis der Vorrichtung cachemäßig in anderen Netzwerk-Vorrichtungen
gespeichert verbleibt. Falls eine Vorrichtung nicht den Cache anderer
Netzwerk-Vorrichtungen erneuert, bevor dieses Intervall abläuft, wird
die Vorrichtung von dem Netzwerk verschwinden. Dieses Intervall
kann so ausgewählt
werden, um größer als
ein typischer Power-Down-Zyklus zu sein, um eine Vorrichtungs-Sichtbarkeit
so zu ermöglichen, dass
sie für
eine relativ lange Zeit besteht, oder ein kleineres Intervall kann
ausgewählt
werden, um eine dynamischere Sichtbarkeits-Kontrolle zu ermöglichen.
In allen Fällen
werden Vorrichtungen, die abrupt von dem Netzwerk entfernt werden,
schließlich
von allen vernetzten Vorrichtungen verschwinden.
-
Auf
eine SSDP-Suche hin führen
UPnP-Vorrichtungen einen Beschreibungs-URL in die SSDP-Stelle und optional
die Alternativ-Stellen-(AL)-SSDP-Header zurück. Ein beispielhafter Stellen-Header
ist wie folgt:
Location: http://device.local/description/path/description.xml
-
In
diesem Beispiel ist device.local der Hostname der gesteuerten Vorrichtung,
und das Element "description/path/description.xml" von URL sind der
Pfad und der Name des Beschreibungs-Dokuments auf der Vorrichtung.
-
Ereignis: Genetik-Ereignis-Hinweis
(GENA)
-
Ein
Eventing (Auftreten eines Ereignisses), in dem Zusammenhang mit
UPnP, ist die Fähigkeit
einer Vorrichtung, eine Verbindung zu irgendeinem Zeitpunkt mit
einer oder mehreren Vorrichtungen) zu initiieren, die einen Wunsch
ausgedrückt
haben, Ereignisse von der Quellen-Vorrichtung zu empfangen. Ereignisse
werden dazu verwendet, eine Synchronisation unter mehreren Vorrichtungen,
organisiert in einer viele-zu-eine Beziehung zu ermöglichen.
UPnP-Ereignisse werden hauptsächlich
für asynchrone
Hinweise von Zustands-Änderungen
verwendet.
-
TCP/IP
liefert die grundsätzliche
Unterstützung
für die
Verbindungen, die Ereignis-Informationen tragen. Generic-Event-Notification
(GENA) fügt
Konventionen zum Einrichten von Beziehungen zwischen interessierten
Vorrichtungen und einem Adressier-Schema, um die eindeutige Zuführung von
Ereignissen zu ermöglichen,
hinzu. GENA verbindet ein HTTP-Adressieren und eine Einkapselung.
-
Benutzer-Steuer-Punkte,
gesteuerte Vorrichtungen und Brücken
-
In
den 1 und 2 nun ist ein UPnP eine auf
einem Anwendungs-Niveau verteilte Netzwerk-Architektur, wo logische
Knoten auf dem Netzwerk Benutzer-Steuer-Punkte 104–105,
gesteuerte Vorrichtungen 106–107 und Brücken 120 sind.
Diese Klassifikationen beziehen sich auf eine Funktionalität, im Gegensatz
zu physikalischen Einheiten. Die Funktionalität von UPnP-Benutzer-Steuer-Punkten 104–105,
gesteuerten Vorrichtungen 106–107 und Brücken 120 kann
in physikalische Einheiten gepackt werden (z. B. Vorrichtungen 102–103 in
mehreren Funktionen), und zwar in irgendeiner Kombination.
-
Die
primäre
Bestimmung zwischen einem Benutzer-Steuer-Punkt 104–105 und
einer gesteuerten Vorrichtung 106–107 ist diejenige,
dass der Benutzer-Steuer-Punkt
immer der Initiator für
die Kommunikation ist. Nach der Anfangs- Kommunikation können die Benutzer-Steuer-Punkte
Ereignisse von gesteuerten Vorrichtungen empfangen.
-
Gesteuerte
Vorrichtungen 106–107 sind
zum Speichern des Zustands von Diensten verantwortlich. Benutzer-Steuer-Punkte
sind dazu erforderlich, zu dem Zustand auf gesteuerten Vorrichtungen
zu synchronisieren und einen Zustand direkt unter diesem selbst
gemeinsam zu teilen.
-
Benutzer-Steuer-Punkte
besitzen typischerweise eine Benutzer-Schnittstelle, die dazu verwendet wird,
auf eine oder auf mehrere gesteuerte Vorrichtungen) auf dem Netzwerk
zuzugreifen. Gesteuerte Vorrichtungen besitzen nur lokale Benutzer-Schnittstellen.
-
Brücken 120 (2)
legen Vorrichtungen frei, die nicht native UPnP-Protokolle als native UPnP-gesteuerte
Vorrichtungen freilegen. Die Brücke
selbst sieht nach anderen UPnP-Benutzer-Steuer-Punkten ähnlich einem
Satz von gesteuerten Vorrichtungen.
-
Die
nachfolgende Tabelle listet die Module in den Benutzer-Steuer-Punkten 104–105 und
gesteuerten Vorrichtungen 106–107, zusammen mit
deren Funktionen, auf.
-
-
-
Vorrichtungs-Modell
-
Das
UPnP-Varrichtungs-Modell 200, dargestellt in 3,
ist das Modell einer UPnP-gesteuerten Vorrichtung oder Brücke, die
native, gesteuerte Vorrichtungen emuliert. Das Vorrichtungs-Modul
umfasst ein Adressier-Schema, ein Ereignis-Schema, ein Beschreibungs-Dokument-Schema,
Vorrichtungs- und Dienst-Schemata
und -Hierarchie, und die funktionale Beschreibung von Modulen. Das
UPnP-Vorrichtungs-Modell erstreckt sich über eine einfache API oder
einen Befehl und Steuer-Protokoll-Definitionen hinaus, um mehreren
Benutzer-Steuer-Punkten zu ermöglichen,
eine übereinstimmende
Ansicht von gesteuerten Vorrichtungen zu haben. Dies erfordert,
dass der Zustand von laufenden Diensten formal modelliert wird und
dass alle Zustands-Änderungen
für Benutzer-Steuer-Punkte
sichtbar sind. Zentral für
die verteilte UPnP-Architektur ist die Regel, dass gesteuerte Vorrichtungen
die ultimative Autorität
für den
Zustand von Diensten, die darauf laufen, sind.
-
Dienst
-
Die
fundamentale, steuerbare Einheit in UPnP ist ein Dienst 210–217.
Jeder laufende Fall eines Dienstes umfasst:
- • Eine Dienst-Zustands-Tabelle
(Service State Table – SST) 230,
die den momentanen Zustand des Dienstes darstellt.
Die SST 230 kann
dazu verwendet werden, den Betriebs-Modus einer Vorrichtung darzustellen
oder als eine Informations-Quelle oder eine Senke (Sink) für strukturierte
Daten oder einfache Dateien zu wirken. Die SST einer VCR 254 (4)
könnte
den momentanen Transport-Modus, die Tuner-Kanal-Auswahl, Eingabe-
und Ausgabe-Schalter-Auswahlen, ein Audio- und Video-Decodier-Format und ein momentanes Zeitgeber-Programm
darstellen. Die SST einer Uhr (Takt) 251 (4)
würde ähnlich die
momentane Zeit darstellen. Die SST einer ein Bild gestaltenden Vorrichtung
könnte
einen Video-Frame-Puffer ausführen, der
grobe Pixel-Informationen oder formatierte JPG-Dateien akzeptieren
kann. Die SST einer Audio- oder Video-Abspielvorrichtung könnte einen Übertragungs-Puffer oder eine
Warteschlange von Material, das abgespielt werden soll, ausführen. Die
SST von PDA könnte
eine Zusammenstellung von formatierten Daten ausführen, die
sich geändert
haben und mit einer anderen Vorrichtung synchronisiert werden müssen, zusätzlich zu
einem Übertragungs-Puffer
zum Aufnehmen von ankommenden, formatierten Daten.
Die logische
Struktur einer SST, veröffentlicht
in der Dienst-Definition (Service-Definition), allerdings das tatsächliche
Speicher-Format eines Falls einer SST, ist vollständig die
Vorrichtung. Die einzige Wechselwirkung mit einer SST erfolgt über ein
Formal-Anwendungs-Niveau-Netzwerk-Protokoll.
- • Ein
Steuer-Server 232, der ankommende Befehle annimmt, ausgedrückt in dem
Dienst-Steuer-Protokoll (SCP) des Dienstes. Der Steuer-Server führt den
Befehl zu der den nativen Befehl verarbeitenden Logik des Dienstes
weiter und wartet auf einen Befehl-Abschluss. Wenn der Befehl erfolgreich
abgeschlossen ist, wird die SST aktualisiert, ein Ereignis wird
erzeugt und eine erfolgreiche Antwort wird zu dem Benutzer-Steuer-Punkt
zurückgeführt. In
dem Fall eines illegalen Befehls oder eines nicht erfolgreichen
Befehls, werden keine Änderungen
in Bezug auf die SST vorgenommen und eine Fehler-Antwort wird zurückgeführt. Die
Befehl- und Antwort-Sequenz
wird zu einer TCP/HTTP-Anforderung-Antwort geladen.
- • Ein
Ereignis-Subskriptions-Server und eine Ereignis-Quelle 234.
Der Ereignis-Subskriptions-Server
nimmt ankommende GENA-SUBSCRIBE Nachrichten von Benutzer-Steuer-Punkten
an und fügt
sie zu einer Liste von Benutzer-Steuer-Punkten hinzu, die an SST-Änderungs-Ereignisse
von dem Dienst interessiert sind. Die Ereignis-Quelle initiiert
eine TCP/HTTP-Verbindung zu jedem interessierten Benutzer-Steuer-Punkt und
schickt eine GENA NOTIFY zu jedem Zeitpunkt, zu dem sich die DST
des Dienstes ändert.
Das NOTIFY Payload umfasst die geänderten Inhalte der DST.
- • Ein
Steuer-URL, der den Steuer-Server identifiziert.
- • Ein
Ereignis-URL, der den Ereignis-Subskriptions-Server identifiziert.
-
Die
formale Definition eines Dienstes (Dienst-Definition) umfasst:
- • Die
Definition von SST. SST-Layouts sind logisch in Termen von Reihen
von [Variable, Typ, legale Werte, Voreinstellungs-Wert] spezifiziert.
Der tatsächliche
Fall einer SST würde
auch ein Feld momentaner Wert in jeder Reihe umfassen.
- • Die
Definition des Dienst-Befehl-Satzes kann gegenüber der SST des Dienstes aufgerufen
werden. Befehle sind logisch in Termen von Befehl (Variable = Neuer
Wert, Variable = Neuer Wert, ...) spezifiziert. Falls ein Befehl
zu mehr als einer einzelnen Variablen-Änderung führt, sind die Aktualisierungen
autonom und der Befehl wird fehlschlagen, falls er illegal ist,
um die spezifizierte Änderung
bei irgendeiner Variablen vorzunehmen.
- • Die
Definition einer strukturierten Einheit von Daten bezeichnete eine
Dienst-Steuer-Protokoll-Deklaration (SCPD).
SCPD wird dazu verwendet, das Layout (Schema) der SST und des Befehl-Satzes
des Dienstes zu einem Benutzer-Steuer-Punkt
oder einer Brücke
anzuzeigen. Die SCPD ermöglicht
dem Benutzer-Steuer-Punkt, Befehle (Über den Rehydrator) an der
gesteuerten Vorrichtung ohne eine vorherige oder dauerhafte Kenntnis über die
Fähigkeiten
der Vorrichtung aufzurufen. Die SCPD wird von der steuernden Vorrichtung
als Teil des Beschreibungs-Dokuments heruntergeladen. Ein automatisiertes
Tool, das die SST-Definition
und die Befehl-Satz-Definition als Eingaben annimmt, kann die SCPD
für einen
Dienst erzeugen.
- • Die
Definition eines Netzwerk-Protokolls, verwendet dazu, Befehle gegenüber der
SST, zugeordnet zu einem Dienst, aufzurufen und Ergebnisse zurückzuführen. Ein
automatisiertes Tool, das die SST-Definition und die Befehl-Satz-Definition
als Eingaben annimmt, kann die SCPD für einen Dienst erzeugen. Das
SCP kann auch von einem SCPD erzeugt werden. Der Auftrag des Rehydrators
ist derjenige, SCPDs in SCPs umzuwandeln. Der Grund für eine formale
SCP-Spezifikation ist derjenige, die Ausführung des Steuer-Servers selbst
zu ermöglichen
und eine einfache Peer-to-Peer-Vorrichtungs-Zusammenarbeit, unter
Verwendung nur veröffentlichter
Protokolle, zu ermöglichen.
Ein
Identifizierer, bezeichnet als der Dienst-Typ-Identifizierer, der
eine eindeutige Dienst-Definition definiert. Dienst-Definitionen
sind in einer gesteuerten Art und Weise als Versionen aufgebaut.
Jede spätere
Version eines Dienstes muss ein geeigneter Untersatz der vorherigen
Version sein.
-
Vorrichtung
-
Gemäß dem Vorrichtungs-Modell 200,
das in 3 dargestellt ist, ist eine
UPnP-Vorrichtung 202–205 (z.
B. Vorrichtungen 102–103 mit
Mehrfach-Funktionen der 1 und überbrückte Vorrichtungen 122–123 der 2)
ein logischer Container von einem oder mehreren Diensten) 210–217.
Allgemein stellt eine Vorrichtung eine physikalische Einheit, wie
beispielsweise einen VCR, dar. Typische Dienste in dem Beispiel
der VCR-Vorrichtung könnten
sein "TRANSPORT", "TUNER", "TIMER" und "CLOCK". Während Vorrichtungen
oftmals physikalische Einheiten sind, könnte ein PC, der die traditionellen
Funktionen eines VCR emuliert, auch in derselben Art und Weise wie
ein selbstständiger
VCR aufgebaut werden. Vorrichtungen können andere Vorrichtungen enthalten.
Ein Beispiel würde
ein TV-VCR 250 (4) sein,
verpackt in einer einzelnen, physikalischen Einheit. Eine Vorrichtung
(z. B. Vorrichtungen 202–203) kann auch ein
logischer Container von anderen Vorrichtungen sein. Die oberste
Vorrichtung in einer Hierarchie von verschachtelten Vorrichtungen 203–205 wird als
die Root-Vorrichtung 202 bezeichnet. Eine Vorrichtung ohne
verschachtelte Vorrichtungen ist immer eine Root-Vorrichtung.
-
Das
UPnP-Vorrichtungs-Modell wurde so ausgelegt, um allgemein und flexibel
zu sein. Es sollte möglich
sein, einen gesamten Nuclear Power Plant als einen einzelnen Dienst
(Service) oder als eine tief verschachtelte Hierarchie von Vorrichtungen
und Diensten aufzubauen. Allgemein ist ein Dienst 210–217 ein
kohäsiver
Satz von Funktionen, der eine flexible Verpackung in einer Vielzahl
von Vorrichtungen ermöglicht. Dienste
können
unabhängig
von Vorrichtungen als Version aufgebaut werden.
-
Alle
Vorrichtungen, umfassend Root-Vorrichtungen, gehören zu einem oder mehreren
Vorrichtungs-Typ(en). Vorrichtungs-Typen sind dazu vorgesehen, Fälle von
Vorrichtungen freizugeben, die einfach und automatisch für eine Präsentation
gruppiert werden. Ein Beispiel eines Vorrichtungs-Typs ist "VCR" 254 (4).
Vorrichtungs-Typen sind formal in Termen eines minimalen Satzes
von als Version aufgebauten Diensten definiert, die ein Dienst eines
Vorrichtungs-Typs unterstützen
müssen.
Vorrichtungs-Typen sind nicht formal als Version aufgebaut. Ein
Vorrichtungs-Typ ist eine Gruppierung mit relativ hohem Niveau.
Eine Vorrichtung eines Vorrichtungs-Typs stellt nur sicher, dass
ein minimaler Satz von Diensten einer minimalen Versison vorhanden
ist. Dabei können
andere Dienste, Dienste einer höheren
Version und Dienste mit Anbieter-Erweiterungen, vorhanden auf einer
solchen Vorrichtung, sein.
-
UPnP
ermöglicht
Suchen auf einem SSDP-Niveau für
einen eindeutigen Fall einer Vorrichtung (durch UDN), und zwar alle
Vorrichtungen des Typs Vorrichtungs-Typ und alle Vorrichtungen, die mindestens
einen Dienst-Typ einer minimalen Version enthalten. Das Ergebnis
einer SSDP-Suche ist immer ein URL, der auf das Beschreibungs-Dokument,
enthalten in der Root-Vorrichtung, hinweist. In dem Fall, dass eine
passende Vorrichtung nicht die Root-Vorrichtung ist, besitzt das
Beschreibungs-Dokument einen Baum von verschachtelten Vorrichtungen,
die durchquert werden können,
um die passende Vorrichtung zu finden.
-
Jede
Vorrichtung umfasst:
- • einen oder mehrere Vorrichtungs-Typ(en).
- • einen
oder mehrere Dienste).
- • optional
eine oder mehrere Vorrichtung(en).
- • optional
einen Präsentations-(Web)-Server 220–223,
der dazu verwendet werden kann, eine Vorrichtungs-Benutzer-Schnittstelle
freizulegen. Jeder Präsentations-Server
besitzt einen zugeordneten Präsentations-URL.
- • einen
global eindeutigen Identifizierer, der als der Unic-Device-Name
(UDN) bezeichnet wird. Der UDN ist der fundamentale Identifizierer
für einen
Fall einer Vorrichtung. Jede Vorrichtung, umfassend Root-Vorrichtungen, besitzt
exakt einen UDN.
-
Jede
Root-Vorrichtung 202 umfasst auch das Beschreibungs-Dokument 226 und
den Beschreibungs-Server 228 für alle Vorrichtungen unter
sich und sich selbst umfassend.
-
Die
formale Definition einer Vorrichtung (Vorrichtungs-Definition 226)
umfasst:
- • Die
festgelegten Elemente des Beschreibungs-Dokuments, die die Vorrichtung
beschreiben.
- • Die
erforderliche Hierarchie von Vorrichtungen und Dienst-Definitionen.
-
Dabei
können
viele Vorrichtungs-Definitionen vorhanden sein, die zu einem einzelnen
Vorrichtungs-Typ gehören.
-
Vorrichtungs-Typen
-
Die
formale Definition eines Vorrichtungs-Typs umfasst:
- • Eine
Vorrichtungs-Typ-Identifizierer.
- • Die
erforderliche Hierarchie von Vorrichtungen und Dienst-Definitionen
von minimalen Versionen.
-
Dienst-Zustands-Tabelle
-
Eine
Dienst-Zustands-Tabelle (Service State Table – SST) besteht logisch aus
Reihen von:
Variable, Typ, legale Werte, Voreinsfellungs-Wert,
momentaner Wert
-
Obwohl
Eintritte der Dienst-Zustands-Tabelle in UPnP aus diesen fünf Elementen
bestehen, kann die Zustands-Tabelle alternativ weniger oder zusätzliche
Elemente enthalten. Allgemein wird jeder Eintritt minimal aus einem
Variable-Namen oder Identifizierer, und seinem momentanen Wert,
bestehen.
-
Die
nachfolgende Tabelle listet verschiedene Typen, verfügbar in
UPnP, auf.
-
-
-
Der
ByteBlock ist im Wesentlichen ein Daten-Puffer. In einer Benutzung
kann eine Variable dieses Typs verwendet werden, um eine Übertragung
einer Datei von der gesteuerten Vorrichtung zu dem Benutzer-Steuer-Punkt
zu bewirken. Die Datei, die übertragen
werden soll, wird in der Dienst-Zustands-Tabelle als der momentane
Wert dieser Variablen gehalten. Bei einer Änderung in der Datei wird die
Datei zu irgendeinem teilnehmenden Benutzer-Steuer-Punkt in einem
Ereignis-Hinweis übertragen.
-
Der
Grund zum Darstellen von Diensten auf diese Art und Weise ist derjenige,
sicherzustellen, dass der Zustand eines Dienstes einfach in einer üblichen
Art und Weise zu mehreren Benutzer-Steuer-Punkten verfügbar ist.
-
Eine
SST kann dazu verwendet werden, einen momentanen Operations-Modus einer Vorrichtung
darzustellen, als eine Informations-Quelle oder -Senke (Sink) zu
wirken und/oder einfach eine Ablage für Befehle zu sein. Die SST
eines VCR-Dienstes könnte
den momentanen Transport-Modus, eine Tuner-Kanal-Auswahl, Eingabe- und Ausgabe-Schalter-Auswahlen,
Audio- und Video-Decodier-Format
und ein momentanes Zeitgeber-Programm darstellen. Alternativ könnte der
VCR 254 als ein Transport-Dienst 260, ein Tuner-Dienst,
ein I/O-Schalter-Dienst, ein A/V-Decodier-Konfigurations-Dienst
und ein programmierbarer Zeitgeber-Dienst 261 dargestellt
werden.
-
Die
SST für
eine Uhr 251 würde ähnlich die
momentane Zeit darstellen. Zusätzlich
könnte
eine Alarm-Uhr Dienst-Variable umfassen, um die Uhr bzw. den Takt
zu konfigurieren.
-
Die
SST einer ein Bild gestaltenden Vorrichtung könnte einen Video-Frame-Puffer ausführen, der
grobe Pixel-Informationen oder formatierte JPG-Dateien annimmt.
Die SST einer Audio- oder Video-Abspiel-Vorrichtung könnte einen Übertragungs-Puffer
oder eine Warteschlange von Material, das abgespielt werden soll, ausführen. Die
SST von PDA könnte
eine Zusammenstellung von formatierten Daten ausführen, die
sich geändert
haben und mit einer anderen Vorrichtung synchronisiert werden müssen, zusätzlich zu
einem Übertragungs-Puffer
zum Annehmen von ankommenden, formatierten Daten.
-
Benutzer-Steuer-Punkt-Synchronisation
-
Gemäß eines
Vorrichtungs-Zustands und eines Ereignis-Modells, dargestellt in 5,
erfordern UPnP-Regeln, dass jede Änderung zu einer SST ein entsprechendes
Ereignis erzeugt, um die Änderung
zu allen interessierten Benutzer-Steuer-Punkten anzuzeigen.
-
Vorrichtungs-Adressieren
-
Wie
nun 6 zeigt, ist ein UPnP an der Oberseite eines HTTP
aufgebaut und verbindet ein natives Adressen-Format des Web, Uniform-Ressource-Lokatoren
(URLs) URLs enthalten minimal eine Identifikation einer Anwendungs-Protokoll-Familie ("HTTP"), dass der URL für einen
Hostname und einen Pfad gültig
ist. In dem Zusammenhang von UPnP kann der Pfad-Teil eines URL entweder
einen Datei-System-Pfad oder einfach einen Identifizierer des Lokal-System-Moduls
und den Kontext, der ankommende Nachrichten verarbeiten kann, darstellen.
-
Während UPnP-Module
als HTTP-Server beschrieben sind, ist dabei kein Erfordernis vorhanden,
dass Ausführungen
auf tatsächlichen
Web-Servern basieren müssen.
In den meisten Fällen
ist der Auftrag des HTTP-Servers einfach, um die ankommende Verbindung
anzunehmen, an dem lokalen Bestimmungs-Teil der Adresse (dem Pfad)
nachzusehen, und das Payload zu einem anderen Modul weiterzuführen. UPnP
ermöglicht,
allerdings erfordert nicht, dass alle HTTP-Server auf einer gemeinsamen
Software-Ausführung
oder einem Laufzeit-Fall basieren. Gesteuerte Vorrichtungen und
Brücken
können
eine TCP-Port-Spezifikation als ein Teil eines URL umfassen, um
den Voreinstellungs-Wert von 80 zu überlaufen.
-
Das
erfolgreiche Ergebnis einer UPnP-SSDP-Pegel-Suche ist immer ein
oder mehrere Beschreibungs-URLs. Diese URLs können dazu verwendet werden,
zu dem Beschreibungs-Dokument einer gesteuerten Vorrichtung oder
einer Brücke
zu navigieren. Ein Benutzer-Steuer-Punkt lädt das Beschreibungs-Dokument
hoch und extrahiert die URLs der Server, die auf der gesteuerten
Vorrichtung oder der Brücke
laufen.
-
Alle
URLs, zurückgeführt in das
Beschreibungs-Dokument, besitzen eine Lebensdauer gleich zu der Lebensdauer
des Hostname, der darin eingebettet ist. Benutzer-Steuer-Punkte
können
diese URLs als Adressen speichern, ohne zuerst durch eine Such-Sequenz
zu laufen. Wenn sie einmal in einem Beschreibungs-Dokument angezeigt
worden sind, können
die gesteuerte Vorrichtung und die Brücken nicht wahlweise Server-URLs ändern.
-
Immer
wenn sich ein Hostname ändert,
werden alle URLs, die zu allen Vorrichtungen, adressiert durch diesen
Hostnamen, zugeordnet sind, für
ungültig
erklärt.
Der UDN ist der einzige UPnP-Identifizierer, der dahingehend garantiert
ist, dass er sich niemals ändert.
Irgendwelche vorhandenen Assoziationen, die durch Anwendungen beibehalten
werden, sollten mindestens den UDN speichern, um eindeutig die Ziel-Vorrichtung
zu identifizieren.
-
Die
Lebensdauer eines Beschreibungs-URL wird durch die gesteuerte Vorrichtung
oder die Brücke, die
ihn anzeigt, bestimmt. Falls eine gesteuerte Vorrichtung oder eine
Brücke
zulässt,
dass eine SSDP-Anzeige eines Beschreibungs-URL abläuft, wird
der URL für
ungültig
erklärt.
-
Benutzer-Steuer-Punkte
verwenden den Ereignis-Subskriptions-URL, zurückgeführt durch die gesteuerte Vorrichtung
oder Brücke,
um den Ereignis-Subskriptions-Server
zu verbinden. Dieser Server ist die Organisation, die alle Benutzer-Steuer-Punkte
erinnert, die daran interessiert sind, Ereignisse auf einem Dienst
zu empfangen. Der Ereignis-Subskriptions-Server benötigt eine
Adresse, um die Ereignisse zurückzuschicken. Diese
Adresse wird als der Ereignis-Sink-URL bezeichnet, und wird zu der
gesteuerten Vorrichtung oder der Brücke in der GENA SUBSCRIBE Nachricht
zugeführt.
Die Lebensdauer einer Ereignis-Subskription, und des Ereignis-Sink-URL,
wird durch den Zeitablauf über
die SUBSCRIBE Nachricht bestimmt. Weitere Details einer UPnP-Adressierung
sind in der nachfolgenden Tabelle aufgelistet.
-
-
Vorrichtungs-Discovery
und Identifikation
-
UPnP
ermöglicht
SSDP-Suchen nach einem eindeutigen Root oder einer Nicht-Root-Vorrichtung durch
UDN, Vorrichtungen eines spezifizierten Vorrichtungs-Typs und Vorrichtungen,
die einen Dienst eines spezifizierten Dienst-Typs enthalten.
-
UPnP-SSDP-Pegel-Suchen
und -Ergebnis
-
SSDP
spezifiziert einen Dienst-Typ (ST), einen Hinweis-Typ (NT) und eindeutige
Dienst-Namen-(USN)-Header-Felder für Fragen und für Anzeigen.
UPnP verwendet den ST oder den NT-Header, um eine der UPnP definierten
Identifizierer zu tragen. Ein eindeutiger USN ist für jede eindeutige
SSDP-Anzeige erforderlich.
-
Mehrere
Fälle desselben
Namen-Dienst-Typs innerhalb einer gesteuerten Vorrichtung 106–107 oder einer
Brücke 120 werden
nicht unabhängig
angezeigt.
-
UPnP-Such-Identifizierer
werden während
des Entdeckungs-Vorgangs verwendet. Das Ergebnis einer erfolgreichen
Entdeckung ist eine oder sind mehrere Beschreibungs-URLs. Das Format
für Such-Identifizierer ist:
-
-
-
SSDP
spezifiziert, dass SSDP-Anzeigen für alle SSDP-suchbaren Werte
vorgenommen werden müssen.
SSDP-Anzeigen mit "alle" als der Hinweis-Header-Wert
müssen
die Root-Vorrichtungs-UDN als den USN-Header-Wert tragen. SSDP-Anzeigen für einen
Vorrichtungs-Typ müssen
den UDN der Root-Vorrichtung, verknüpft mit dem Vorrichtungs-Typ
URI, als den USN-Header-Wert, tragen. SSDP-Anzeigen für einen Dienst-Typ werden den
UND der Root-Vorrichtung, verknüpft
mit dem Dienst-Typ-URI-Wert, als den USN-Header-Wert, tragen. SSDP-Anzeigen
von UDNs werden den UDN-Wert als den USN-Header wiederholen.
-
-
UPnP-Brücken 120 (2)
zeigen überbrückte Vorrichtungen 122–123 und
zugeordnete Dienste, unter Verwendung von SSDP, an. Die Identifizierer,
die den überbrückten Vorrichtungen
zugeordnet sind, sind eindeutig für die Vorrichtung, und sie
duplizieren keine Identifizierer für gesteuerte Vorrichtungen
und Dienste, die direkt an der Brücke selbst verfügbar sind.
Dies bedeutet, dass eine Brücke,
die auch eine gesteuerte Vorrichtung ist, überbrückte Vorrichtungen und lokale,
gesteuerte Vorrichtungen unabhängig
anzeigen muss, mit geeigneten, eindeutigen Identifizierern, Beschreibungs-Dokumenten
und zugeordneten URLs.
-
Beschreibung
-
Das
UPnP-Beschreibungs-Dokument 226 (3) liefert
die Informationen, die dazu notwendig sind, eine UPnP gesteuerte
Vorrichtung 106–107 oder
eine Brücke 120,
von einem Benutzer-Steuer-Punkt 104–105 aus, zu identifizieren,
zu beschreiben, zu verbinden und zu steuern.
-
Das
Beschreibungs-Dokument ist ein XML-Dokument. UPnP definiert die
Verwendung von HTTP und XML für
das Beschreibungs-Dokument und verdrahtete Protokolle. UPnP hängt sich
an die Schema-Deklarations-Regeln von XML-Data und Y. Goland, „Flexible
XML Processing Profile",
an.
-
Die
XML-Elemente des oberen Niveaus werden in drei Kategorien aufgeteilt:
pro Vorrichtung, pro Dienst und gemeinsam geteilt.
-
Rehydrator
-
Wie
nun die 7 zeigt, geben alle (UPnP)
gesteuerte Vorrichtungen 106–107 (1)
oder Brücken 120 (2)
einen oder mehrere Dienst(e) 210–217 (3)
frei, die entfernt gesteuert werden können. Eine Steuerung von solchen
Diensten umfasst einen Nachrichten-Austausch zwischen einem Benutzer-Steuer-Punkt 104 und
der Vorrichtung 106. Dieser Nachrichten-Austausch tritt
entsprechend einem spezifischen Dienst-Steuer-Protokoll (SCP) 402 auf,
das den Inhalt und die Folge der Nachrichten, die ausgetauscht sind, spezifiziert.
-
Benutzer-Steuer-Punkte 104 sind
nicht dahingehend erforderlich, dass sie irgendeine frühere Kenntnis der
SCPs 402, erforderlich dazu, den Dienst an den verschiedenen
Vorrichtungen zu steuern, haben. Deshalb muss eine gesteuerte Vorrichtung
oder Brücke
in der Lage sein, zu einem Benutzer-Steuer-Punkt die Protokolle,
die erforderlich dazu, seine Dienste zu steuern, zu beschreiben,
so dass der Benutzer-Steuer-Punkt in der Lage sein wird, diese Protokolle
dynamisch umzusetzen. Dies erfordert eine Standard-Art eines Erklärens von
Dienst-Steuer-Protokollen in einer übereinstimmenden und eindeutigen
Weise. UPnP führt
eine Technik zum Erklären
von Dienst-Steuer-Protokollen unter Verwendung einer Reihe von XML-Dokumenten ein.
-
Ein
Rehydrator 410 ist ein Modul, das eine geeignete API zu
Anwendungen freigibt und entweder Befehle an einem Dienst aufruft
oder den Zustand dieses Dienstes abfragt, oder Ereignisse empfängt oder
auf diese antwortet. Die primäre
Aufgabe des Rehydrators ist diejenige, zwischen API-Anrufen und
der Dienst-Steuer-Protokoll-Sequenz,
die den Befehl aufruft, aufzulisten.
-
Als
Teil der Dienst-Definition 406 sind eine Dienst-Zustands-Tabelle 230 und
ein Befehl-Satz 408 definiert. Diese Dinge können in
einer deterministischen Art und Weise, definiert durch UPnP, kombiniert
werden, um eine Dienst-Steuer-Protokoll-Definition (SCPD) 406 zu erzeugen,
die eine Dienst-Steuer-Deklaration 404 und ein Dienst-Steuer-Protokoll 402 umfasst.
Die SCPD 406 ist eine Darstellung des Schemas eines Dienstes. Es
ist möglich,
die SST, den Befehl-Satz und das SCP von der SCPD zu rekonstruieren.
-
Die
SCPD ist direkt in das Beschreibungs-Dokument 226 einer
gesteuerten Vorrichtung eingebettet. Wenn das Beschreibungs-Dokument
in den Benutzer-Steuer-Punkt 104 hochgeladen
wird, kann der Rehydrator 410 die SCPD davon extrahieren.
An diesem Punkt besitzt der Rehydrator genug Informationen, um dienstspezifische
SCPs 402 auszugeben.
-
Allgemeine Operation des
Rehydrators
-
Wie
allgemeiner unter Bezugnahme auf 8 erläutert wird,
arbeitet der Rehydrator 410 als ein universeller Adapter,
um eine programmatische Schnittstelle zu irgendeinem dienstspezifischen
Protokoll einer entfernten Rechenvorrichtung zu schaffen. Der Rehydrator 410 erhält einfach
eine Daten-Beschreibung oder eine Deklaration der Verfahren, der
Eigenschaften und der Ereignisse des entfernten Dienstes, ebenso
wie eine Definition des Protokolls der Netzwerk-Daten-Nachrichten, über die
der Rehydrator die Verfahren, die Abfragungen oder die Sätze der
Eigenschaften aufruft und Ereignis-Hinweise empfängt. In UPnP nimmt diese Daten-Beschreibung die
Form des Beschreibungs-Dokuments 226 an, das einen Kontrakt 412 enthält. Der Kontrakt
definiert Netzwerk-Daten-Pakete 413 (z. B. XML-Daten),
Anforderungs/Antwort-Muster und ein Protokoll (z. B. GENA, HTTP,
SSDP), über
die die Pakete ausgetauscht werden. Diese Informationen sind für den Rehydrator
ausreichend, um die geeigneten Netzwerk-Daten-Pakete auszutauschen,
um mit dem Dienst der gesteuerten Vorrichtung zusammenzuarbeiten,
einschließlich
eines Aufrufens von Befehlen, Frage- und Einstellungs-Eigenschaften,
und Empfangen von und Antworten auf Ereignisse, ohne irgendeinen
ausführbaren Code
zu der Vorrichtung des Benutzer-Steuer-Punkts 104 herunterzuladen
und ohne Installations- oder Konfigurations-Erfahrung.
-
Das
Beschreibungs-Dokument 226 umfasst auch eine Deklaration
der Verfahren, der Eigenschaften und der Ereignisse für den Dienst.
Basierend auf dieser Deklaration erzeugt der Rehydrator eine entsprechende
Programmier-Schnittstelle zur Verwendung durch Anwendungen an dem
Benutzer-Steuer-Punkt. Die Programmier-Schnittstelle ist eine Anwendungs-Programmier-Schnittstelle,
die in der Form einer Integrations-Schnittstelle eines Objekt-orientierten
Programmier-Modells, wie beispielsweise Microsoft COM, COBRA, Java
Klassen, Skriptbildungs-Maschinen-Namen-Erweiterungen, vorliegen kann.
In dem Beispiel, das in 8 dargestellt ist, gibt der
Rehydrator 410 eine COM-Objekt-Integrations-Schnittstelle
(„ICoock" Schnittstelle 414) frei,
mit Verfahren getTime() und setTime(), für eine gesteuerte Vorrichtung,
die einen „Clock" Dienst mit GetTime
und SetTime Befehlen besitzt. Der Rehydrator 410 wandelt
Aufrufe nach einem Anwendungs-Programm 416 zu der ICoock
Schnittstelle 414 in die Netzwerk-Daten-Nachrichten, spezifiziert
in dem Kontrakt, um, um die entsprechenden Befehle des Clock-Dienstes
aufzurufen. Der Rehydrator 410 erzeugt in ähnlicher
Weise geeignete, weitere Programm-Schnittstellen für andere
Dienste (z. B. für
Dienste 210–217 der 3),
und zwar basierend auf dem Beschreibungs-Dokument deren jeweiliger,
gesteuerter Vorrichtungen.
-
Dementsprechend
arbeitet der Rehydrator als ein universelles Proxy-Objekt mit einer
durch Daten gesteuerten Konversion von programmatischen Schnittstellen
zu Netzwerk-Daten-Nachrichten. Weiterhin erzeugt der Rehydrator
die programmatische Schnittstelle an dem Benutzer-Steuer-Punkt basierend
nur auf einer XML-Daten-Beschreibung.
Dieser Vorgang ermöglicht
dem Rehydrator, Übergangs-Schnittstellen „just-in-time" zu entfernten Vorrichtungs-Diensten
ohne die Komplexität
von Code-Herunterladungen und einer Installation oder Konfiguration
zu erzeugen. Unter einer späteren
Freigabe der Schnittstelle durch die Anwendung zerstört der Rehydrator
die Schnittstelle, ohne das Erfordernis, dauerhafte Konfigurations-Daten
in einer Ausrichtungs- oder Konfigurations-Datei des Betriebssystems
oder der Objekt-Ausführungs-Laufzeit
zu deinstallieren oder zu entfernen.
-
Rehydrator-Ausführung
-
Zusammenfassung.
Wie 9 zeigt, ist eine bevorzugte Ausführung 440 des
Rehydrators 410 wie eine interne Komponente von Microsoft
Windows, die Dienst-Steuer-Anforderungen
von der UPnP-API zu Vorrichtungen weiterführt. Anwendungen, die es wünschen,
einen Dienst auf einer UPnP-Vorrichtung zu steuern, erhalten ein
Dienst-Objekt über
die UPnP-API und verwenden die Verfahren dieses Objekts, um die
Zustands-Variablen des Dienstes abzufragen und seine Aktionen aufzurufen.
Diese Verfahren verwenden die Privat-Rehydrator-API, um die Dienst-Steuer-Anforderungen in
Netzwerk-Nachrichten umzusetzen, die zu der UPnP-Vorrichtung laufen.
In diesem Sinne führt
der Rehydrator eine Auflistung zwischen API-Aufrufen und Netzwerk-Protokollen
durch.
-
Basis-Funktionalität. Die bevorzugte
Umsetzung des Rehydrators ist in der Lage, einen Dienst-Steuer-Ruf
zu der UPnP-API in geeignete Netzwerk-Nachrichten, definiert durch
das Dienst-Steuer-Protokoll, umzusetzen.
-
Asynchron-Ereignis-Hinweis.
Die bevorzugte Umsetzung des Rehydrators ist in der Lage, UPnP-API-Clients über irgendwelche
asynchronen Ereignisse, erzeugt durch die Vorrichtungen, die sie
kontrollieren, hinzuweisen. Ein Ereignis-Hinweis wird mittels der
Ereignis-Schnittstellen, definiert nachfolgend, vorgenommen.
-
Fehler-Bericht.
Aus einer Vielzahl von Gründen
können
Zustands-Variablen-Fragen
und Aktions-Aufrufe fehlschlagen. Die bevorzugte Ausführung des
Rehydrators ist in der Lage, eine Art und Weise zu schaffen, um
die Folge oder den Fehler-Status
solcher Operationen zu Parteien, die ihn initiieren, zu kommunizieren.
-
Rehydrator-Ausführungs-Design.
Wie in 9 dargestellt ist, wird die
bevorzugte Ausführung
des Rehydrators auf zwei Arten und Weisen verwendet. Zuerst verwendet
der Vorrichtungs-Finder 450 ihn, um Dienst-Objekte 460 zu
erzeugen. Dann verwenden diese Dienst-Objekte ihn, um Dienst-Steuer-Operationen (abfragende
Zustands-Variable und aufrufende Aktionen) auszuführen.
-
Erzeugen
von Dienst-Objekten. Wenn der Vorrichtungs-Finder 450 ein
Vorrichtungs-Objekt erzeugt, ruft er den Rehydrator 410 auf,
um Dienst-Objekte 460 für
jeden der Dienst-Fälle
auf dieser Vorrichtung zu erzeugen. Jeder Dienst-Fall unterstützt ein
bestimmtes Dienst-Steuer-Protokoll und der Rehydrator benötigt eine Beschreibung
dieses Protokolls, um ein geeignet hydriertes Dienst-Objekt zu erzeugen.
-
Das
Dienst-Steuer-Protokoll wird in zwei separaten XML Dokumenten deklariert:
das DCDP und der Kontrakt. Der Rehydrator benötigt die Informationen in beiden
Dokumenten. Diese zwei Dokumente werden zu dem Rehydrator als IXMLDOMDocument
Schnittstelle-Hinweiszeiger in dem RehydratorCreateServiceObject()
API-Ruf geführt.
-
-
Diese
API führt
einen Hinweiszeiger zu einer IUPnPService Schnittstelle auf einem
neu erzeugten Dienst-Objekt zurück.
Zusätzlich
zu der Erzeugung des Dienst- Objekts
stellt der Rehydrator seine interne Daten-Strukturen so ein, dass
er geeignet Anforderungen, um den Dienst zu steuern, handhaben kann.
Genauer gesagt erzeugt er eine Liste der Eigenschaften und Aktionen,
die durch den Dienst unterstützt
werden. Da alle Dienst-Fälle
von demselben Dienst-Typ dieselben Eigenschaften und dieselben Aktionen
exportieren, werden diese Informationen nur einmal für jeden
Dienst-Typ gehalten und werden durch den Dienst-Typ-Identifizierer indexiert.
-
Der
Rehydrator speichert die Informationen, die für einen bestimmten Dienst-Vorgang spezifisch
sind, als private Daten innerhalb des Dienst-Objekts selbst. Dies
umfasst den Steuer-URL und die Informationen über den Steuer-Server 232 (wie
beispielsweise der HTTP Verbs sie unterstützt). Der Dienst-Typ-Identifizierer ist
die Verknüpfung
zwischen dem Dienst-Objekt, das einen Fall eines Dienst-Typs darstellt,
und den internen Daten-Strukturen des Rehydrators, der Informationen
enthält,
die für
alle Fälle
dieses Dienst-Typs gemeinsam sind. Der Dienst-Typ-Identifizierer
ist als ein Privat-Daten-Element in dem Dienst-Objekt gespeichert.
-
Abfragende
Dienst-Eigenschaften. Anwendungen können die Werte der Dienst-Eigenschaften
abfragen, durch Aufrufen des IUPnPService::GetProperty() Verfahrens
an einem Dienst-Objekt. Intern nimmt dieses Verfahren einen Ruf
nach der RehydratorQueryStateVarable() Funktion vor.
-
-
Die
ersten zwei Parameter zu dieser Funktion führen die spezifischen Informationen
für den Dienst-Vorgang
zu: das HTTP Verb, um URL zu verwenden und zu steuern, zu dem die
Netzwerk-Nachrichten zielmäßig gerichtet
werden. Der dritte Parameter ist der Dienst-Typ-Identifizierer,
der dazu verwendet werden wird, die Dienst-Steuer-Protokoll-Informationen
in den internen Daten-Strukturen des Rehydrators zu lokalisieren.
Der vierte Parameter ist der Name der Variablen, die abgefragt werden
wird (der Rehydrator wird diesem gegenüber den Variablen seiner in ternen
Zustands-Liste durch den Dienst für gültig erklären), und der abschließende Parameter
ist die Adresse einer VARIANT Struktur in der der Rehydrator den
Wert der Variablen platzieren wird.
-
Diese
Funktion wird eine HTTP-Anforderung zu dem Steuer-Server auf der
Vorrichtung erzeugen. Das Grundgerüst dieser Anforderung wird
ein XML-Fragment sein, das eine XOAP-codierte Anforderung für den Wert
der Variablen enthält.
Das Nachfolgende ist ein Beispiel einer solchen Anforderung (der
exakte Header und das Payload-Format dieser Nachricht ist in dem
Dienst-Kontrakt definiert):
-
-
Der
Steuer-Server wird auf diese Nachricht mit einem anderen XML-Fragment
antworten: die XOAP-codierte Verfahrens-Antwort. Das Nachfolgende
ist ein Beispiel einer solchen Antwort:
-
-
-
Der
Rehydrator wird den Rückführ-Wert
von diesem XML-Fragment extrahieren, ihn in der VARIANT Struktur
platzieren, deren Adresse als der letzte Parameter zu RehydratorGetServiceProperty()
geführt
wurde, und geht dann zurück.
-
Aufrufen
von Dienst-Aktionen Der Vorgang eines Aufrufens einer Dienst-Aktion ist sehr ähnlich zu
einem Abfragen einer Zustands-Variablen. Eine Anwendung ruft IUPnPService::InvokeAction()
auf einem Dienst-Objekt, unter Weiterführen in dem Namen einer Aktion,
auf, um aufzurufen, und eines Felds von Argumenten für die Aktion.
Intern ruft IUPnPService::InvokeAction() RehydratorInvokeServiceAction()
auf, erklärt so,
wie dies nachfolgend dargestellt ist.
-
-
Die
für den
Dienst-Fall spezifischen Informationen werden, wie dies der Fall
beim Abfragen von Zustands-Variablen der Fall war, in die ersten
zwei Parameter geführt,
gefolgt durch den Dienst-Typ-Identifizierer in dem dritten. Der
Aktions-Name und ein Feld von Argumenten werden als die nächsten zwei
Parameter weitergeführt,
und der End-Parameter ist die Adresse einer Variablen, in der der
Status der Operation zu speichern ist.
-
RehydratorInvokeServiceAction()
wird eine HTTP-Anforderung zu dem Steuer-Server, identifiziert durch den zweiten
Parameter, schicken. Wie zuvor wird die Grundstruktur dieser Nachricht
ein XML-Fragment sein, das einen XOAP-codierten Verfahrens-Aufruf
enthält.
Eine beispielhafte HTTP-Anforderung, um eine Aktion aufzurufen,
ist nachfolgend dargestellt.
-
-
-
Das
Codieren der Grund-Struktur dieser Nachricht wird wiederum in dem
Dienst-Kontrakt spezifiziert. Der Rehydrator wird auf die HTTP-Antwort
auf diese Anforderung warten, die manchmal ähnlich dem Beispiel nachfolgend
sein würde.
-
-
Nach
Empfangen einer Antwort, wie diese, wird der Rehydrator den Rückführ-Wert extrahieren,
ihn in dem Aus-Parameter, der hindurchgeführt wurde, platzieren, und
dann zurückkehren.
-
Die 31 bis 43 zeigen
Programm-Auflistungen, die verschiedene Schnittstellen, verwendet
in der bevorzugten Ausführung
des Rehydrators, definieren, einschließlich von IUPNPDevice Interface,
eine IUPNPPropertyBag Interface, eine IUPNPService Interface, eine
IUPNPDevices Interface und eine IUPNPServices Interface.
-
Beschreibungs-Dokument
-
Wie 13 zeigt, können
Benutzer-Steuer-Punkte 104 ein Beschreibungs-Dokument 226 durch
Ausgeben eines HTTP GET auf einem Beschreibungs-URL aufsuchen. Dieser
URL wird in dem Stellen-Header entweder einer SSDP-Anzeige oder
einer SSDP-Frage-Antwort zurückgeführt.
-
Das
HTTP GET muss einen Annahme-Sprach-Header umfassen, der verwendet
wird, um die bevorzugte Sprache für die Antwort anzufordern.
Falls die angeforderte Sprache nicht unterstützt wird, kann ein Beschreibungs-Dokument
in der Voreinstellungs-Sprache, unterstützt durch die gesteuerte Vorrichtung
oder die Brücke,
zurückgeführt werden.
-
Ein
HTTP GET wird dazu verwendet, Unterelemente eines Beschreibungs-Dokuments aufzusuchen, die
als URLs ausgedrückt
werden.
-
URL-Handling
-
URLs,
eingebettet in Beschreibungs-Dokumente 226, nehmen eine
von 3 Formen an: ein vollständig qualifizierter
URL oder ein relativer URL.
-
Vollständig qualifizierte
URLs nehmen die Form an:
http://devicename/pathname
-
Der
devicename Teil des URL ist ein Hostname oder eine IP-Adresse und
der pathname ist ein Dateisystem-Pfad oder ein Äquivalent. Ein vollständig qualifizierter
URL wird „so
wie er ist" verwendet,
um eine HTTP-Verbindung zu einer Vorrichtung einzurichten.
-
Ein
relativer URL enthält
nicht das „:" Zeichen und ist
von der Form:
pathname
/pathname
-
Relative
URLs sind eine kompakte Darstellung der Stelle einer Ressource relativ
zu einem absoluten Basis-URL. Alle relativen URLs in einem Beschreibungs-Dokument sind an
den Wert des Beschreibungs-Dokumenten-Elements <URLbase> angehängt,
um vollständig
qualifizierte URLs zu bilden.
-
Binäre Daten
-
Einige
Elemente eines Beschreibungs-Dokuments sind binär. XML unterstützt nicht
direkt das Einbetten von binären
Daten. Um binäre
Daten direkt in einem Beschreibungs-Dokument einzuschließen, muss
man die Daten zu einem Text unter Verwendung des Codier-Schemas
Base 64 konvertieren. Dies führt zu einer Erhöhung der
Größe der Daten
um 25% im Durchschnitt. Ein Großteil
dieses Overheads kann dann beseitigt werden, wenn die binären Daten
unter Referenz, anstelle durch einen Wert, weitergeführt werden.
Um auf binäre Daten
Bezug zu nehmen, ist ein URL zu den Daten in dem Beschreibungs-Dokument
vorgesehen. Die binären Daten
können
aufgesucht werden, indem ein HTTP GET mit diesem URL genommen wird.
-
Als
ein Beispiel wird das Element <image> in dem folgenden Beschreibungs-Dokument betrachtet:
-
-
Das
icon würde
mit einem HTTP GET des folgenden Formats aufgesucht werden:
-
-
Die
HTTP-Antwort würde ähnlich aussehen
wie:
-
-
Beschreibungs-Dokument-Layout
-
Das
Basis-Layout des Beschreibungs-Dokuments 226 ist in 14 dargestellt.
-
Die
folgende Tabelle listet Beschreibungs-Dokument-Elemente auf, die
Unterelemente zu dem Root-Element sind.
-
-
-
-
-
15 stellt eine beispielhafte Icon-Liste in einem
Beschreibungs-Dokument (Description Document) 226 dar.
-
Dienst-Steuer-Protokoll
und SCP-Deklaration
-
Als
ein Teil der Dienst-Definition 406, dargestellt in 7,
sind eine Dienst-Bestands-Tabelle
(Service State Table) 230 und ein Befehl-Satz (Command
Set) 408 definiert. Der SCPD 406 ist eine Darstellung
des Schemas eines Dienstes. Es ist möglich, die SST 230,
den Befehl-Satz 408 und SCP 402 von der SCPD zu rekonstruieren.
-
Die
Deklaration eines solchen Protokolls muss die Liste von Variablen,
die abgefragt werden können, den
Satz von Befehlen, der aufgerufen werden kann, ebenso wie das Verdrahtungs-Protokoll
(den Inhalt und die Sequenz von Netzwerk-Nachrichten), erforderlich, um diese
Operationen auszuführen,
spezifizieren. SCPD wird in zwei XML-Dokumenten spezifiziert. Das
erste oder Dienst-Steuer-Definitions-Dokument 404, geschrieben in
einer Sprache, bezeichnet als Dienst-Steuer-Protokoll-Deklarations-Sprache (Service
Control Protocol Declaration Language – SCPDL), erklärt die Liste
von Zustands-Variablen und -Befehlen, die dem Dienst-Typ zugeordnet
sind, um durch das Protokoll gesteuert zu werden. Das zweite oder
Dienst-Steuer-Protokoll-Dokument 402 ist in einer Kontrakt-Definitions-Sprache
(Contract Definition Language – CDL)
geschrieben und erklärt
das Verdrahtungs-Protokoll,
das dazu verwendet werden wird, die Werte der Zustands-Variablen
abzufragen und die Aktionen, die dem Dienst zugeordnet sind, aufzurufen.
-
Erklärung der Dienst-Zustands-Tabelle
und des Befehl-Satzes
-
Ein
SCPDL-Dokument 404 wird dazu verwendet, die Liste von Zustands-Variablen, die ein
SCP abfragen kann, und den Satz von Befehlen, den er aufrufen kann,
zu spezifizieren. SCPDL ist ein XML-Schema, ein Satz von Regeln
zum Schreiben von XML-Dokumenten (Service Control Protocol Declarations).
-
16 stellt ein beispielhaftes SCPDL-Dokument dar.
Dieses XML-Dokument
besteht aus einem Root <SCPD> Element, das zwei
Unterelemente, <serviceStateTable> und <actionList>, enthält. Weiterhin
ist das <serviceStateTable> Element ein <StateVariable> Element für jede Zustands-Variable,
die dem Dienst zugeordnet ist. Der Dienst in diesem Beispiel ist
ein TV-Tuner, der nur eine Zustands-Variable, currentChannel, besitzt.
Die Elemente innerhalb des Elements <StateVariable> spezifizieren den Namen, den Daten-Typ
und zugelassene Werte für
die Zustands-Variable. Hätte
der Dienst mehr Zustands-Variablen, würden sie durch zusätzliche
Elemente <StateVariable> innerhalb des Elements <deviceStateTable> dargestellt werden.
-
Das
Element <actionList> enthält ein Element <action> für jede Aktion, die dem Dienst
zugeordnet ist. Die Elemente innerhalb eines Elements <action> spezifizieren den
Namen der Aktion und irgendwelcher Argumente, die die Aktion annehmen
kann. In diesem Fall unterstützt
der Dienst zwei Aktionen, die keine Argumente annehmen, ChannelUp
und ChannelDownChannel, und eine andere, SetChannel, die eine neue
Kanal-Zahl als ein Argument annimmt. Das Element <argument> und die Elemente,
die innerhalb davon eingebettet sind, definieren das Argument. Das
Element <relatedStateVariable> innerhalb von <argument> spezifiziert den Namen
einer der Zustands-Variablen, zu denen das Argument in Bezug gesetzt
ist. In dem UPnP-Vorrichtungs-Modell müssen alle Argumente zu Aktionen
direkt derselben Zustands-Variablen entsprechen.
-
Deklarieren
des Kontrakts
-
Der
Kontrakt ist eine Spezifikation des Verdrahtungs-Protokolls, das
dazu verwendet werden wird, Zustands-Variablen abzufragen, Befehle
aufzurufen und Hinweise oder Ereignisse zu befördern. Dieser Kontrakt spezifiziert
den Typ eines Protokolls, das verwendet ist, den Netzwerk-Endpunkt,
zu dem Nachrichten geschickt werden, die Inhalte dieser Nachrichten,
die Inhalte der erwarteten Antworten und die Inhalte von Ereignissen.
Kontrakte sind in der Kontrakt-Definitions-Sprache (Contract Definition
Language – CDL)
geschrieben.
-
Alle
UPnP-SCPs werden im Wesentlichen denselben Kontrakt verwenden. Ein
spezifischer Kontrakt gilt für
einen einzelnen Dienst-Fall (da er den Netzwerk-Endpunkt spezifiziert, zu dem Nachrichten
geschickt werden, und Netzwerk-Endpunkte
sind spezifisch für
Dienst-Fälle).
Allerdings sollten, anders als die Netzwerk-Endpunkt-Definition,
alle Kontrakte für
alle Dienst-Fälle
dieselben sein.
-
Die 17 bis 19 stellen
einen beispielhaften Kontrakt dar. Dieser Kontrakt definiert zwei
Verfahren: queryStateVariable und invokeAction. Diese Verfahren
werden durch Austauschen von XML-Nachrichten mit einem Steuer-Server
auf einer UPnP gesteuerten Vorrichtung oder Brücke aufgerufen. Der Kontrakt
definiert vollständig
den Header und ein Payload jeder Nachricht. Durch Weiterführen der
geeigneten Argumente zu diesen Verfahren können irgendwelche Zustands-Variablen, deklariert
in der SCPDL-Deklaration, abgefragt werden und irgendwelche der
Aktionen können
aufgerufen werden.
-
Die 20 und 21 stellen
ein XML-Schema für
die SCPDL dar.
-
Basis-UPnP-Ereignis-Architektur
-
Wie 22 zeigt, erfordert die UPnP-Architektur 200 (3),
dass Clients der UPnP-API freigegeben werden, um Hinweise zuverlässig von
UPnP-Diensten 210–217 zu
empfangen, wenn sich deren Zustände ändern. Da
Zustands-Änderungen
relativ üblich
sind, ist das Ereignis-Untersystem effektiv und eine Funktion ist ein
Haupt-Punkt in diesem Design. 22 und
die folgende Diskussion beschreiben die Basis-UPnP-Ereignis-Architektur 600,
die sowohl die gesteuerte Vorrichtung (CD) 106 als auch
die Steffen des Benutzer-Steuer-Punkts (UCP) 104 des Ereignis-Dienstes
umfasst. Sie umfasst auch die unterstützenden APIs für sowohl eine
Dienst-Interaktion mit niedrigem Niveau als auch eine auf COM basierende
Wrapper auf hohem Niveau dieser APIs. Der letztere ermöglicht Automations-Steuerungen ähnlich Visual
Basic und Jscript 602, um Ereignis-Hinweise aufzunehmen.
-
Was ist ein Ereignis?
-
Property-
bzw. Eigenschafts-Änderungs-Ereignisse
sind als irgendeine Änderung
in dem Wert einer Reihe der Vorrichtungs-Zustands-Tabelle (Device
State Table – DST) 230 (3)
für einen
Dienst 210–217 definiert.
Diese Änderung
wird als ein Property-Änderungs-Hinweis
reflektiert. Zum Beispiel kann, falls eine „VCR" Vorrichtung einen „VCR-Transport" Dienst besitzt,
eine Reihe in dieser DST dieses Dienstes TapeState sein und der
Wert könnte
TapePresent sein. Falls das Band ausgestoßen wird, würde der neue Wert TapeAbsent
sein. Diese Zustands-Änderung
würde als
ein Hinweis, geschickt zu alten Teilnehmern, reflektiert werden.
-
Was ist ein Hinweis?
-
Ein
UPnP-Ereignis-Hinweis ist eine XML-Nachricht, geschickt über HTTP/TCP,
zu jedem und allen Teilnehmern an einen bestimmten UPnP-Dienst.
Der Inhalt der XML ist nachfolgend definiert. Die wichtigen Inhalte
dieser Nachricht sind der eindeutige Identifizierer für die Teilnahme
bzw. Subskription, der Eigenschafts- bzw. Property-Name, ein neuer Wert
und der Property-Typ.
-
Hinweis-Verarbeitung
-
In
UPnP ist der Hörer
von Hinweisen der SSDP-Dienst selbst. SSDP hört bereits auf eine andere
Multicast-Adresse für „alive" und „beybey" Nachrichten, geschickt
durch UPnP-Vorrichtungen. Derselbe Hörer wird auf einen TCP-Port
auf Hinweise, die geschickt sind, hören. Alle Subskriptionen, geschickt
von dem UCP, enthalten denselben Callback-URL, und so werden alle
Hinweise zu diesem URL gerichtet werden. Wenn ein Hinweis ankommt,
wird der SSDP-Dienst den NT-Header der Nachricht prüfen und
bestimmen, ob dies ein Ereignis-Hinweis ist. Falls dies so ist,
wird die Nachricht weiter analysiert, um zu bestimmen, ob sie weiter
zu den Subscribern (Teilnehmern) (die existieren müssen) zu
führen
ist. GENA definiert das Format der HTTP-Nachricht, welche Header
verwendet werden können,
und für
was sie verwendet werden können.
-
GENA
-
GENA
ist das Protokoll einer Kommunikation, das, in einer bevorzugten
Ausführungsform,
UPnP-Vorrichtungen verwendet, um Ereignis-Hinweise zu senden. Deshalb
werden UPnP-Vorrichtungen, die wünschen, UCPs über Zustands-Änderungen zu informieren, empfohlen,
GENA zu verwenden. Hinweis-Subscriber bzw. Teilnehmer werden niemals
aufgefordert werden, mit einer UPnP-Vorrichtung direkt in Wechselwirkung
zu treten, und so wird von ihnen nicht gefordert, GENA zu verwenden.
Die Ereignis-API wird diese Komplexität einkapseln. Andere, geeignete
Ereignis-Transport-Protokolle können
verwendet werden, wie beispielsweise Veröffentfichungs/Subskriptions-Systeme.
-
Empfangen
von Hinweisen
-
Anwendungen,
geschrieben in C (C Application 604), werden in der Lage
sein, das SSDP C API 610 zu verwenden, um Rückrufe zu
empfangen, wenn Hinweise durch den SSDP-Dienst verarbeitet werden.
Dies ist analog zu SSDP-Clients, die sich für Hinweise registrieren, dass
Dienste verfügbar
geworden sind. Wenn ein UCP für
einen Hinweis registriert, führt
er einen Parameter des URL des Dienstes, an dem er interessiert ist,
in Empfangs-Hinweise hindurch. Dieser URL wird aus dem Beschreibungs-Dokument
für diesen
Dienst erhalten. (Wenn ein Dienst auf einer UPnP-Vorrichtung registriert ist, verwendet
er diesen URL, um auf Subskriptions-Anforderungen zu hören.)
-
Wenn
eine Hinweis-Nachricht durch den SSDP-Dienst-Hörer empfangen ist, wird der
SID-Header gegen die Liste von Teilnehmern, die er beibehält, geprüft. Wenn
ein Teilnehmer gefunden ist, wird die Callback-Funktion für diesen
Teilnehmer aufgerufen, wobei einer der Parameter die Inhalte der
Hinweis-Nachricht ist. Der Hinweis-Client, der die Callback-Funktion
ausführt,
kann diese Nachricht in irgendeiner geeigneten Art und Weise verarbeiten.
-
Hinweis in
dem UPnP-API
-
Der
UPnP-API 410 ist ein Verbraucher der Basis-C-Schnittstelle,
bereitgestellt durch die Komponente des SSDP-C-AP 1610.
Um nahtlos zu integrieren, wird die Registrierung von Hinweisen
durch das Dienst-Objekt 612 innerhalb des UPnP-Objekt-Modells gehandhabt.
Dienst-Objekte werden sich für
Hinweise, wenn sie erzeugt sind, registrieren. Dies stellt sicher,
dass die DST durch den UPnP-API beibehalten wird und aktualisiert
gehalten wird. Sie werden die Rückruf-Funktion,
erforderlich durch die Registrierungs-Funktion, ausführen. Falls
diese Rückruf-Funktion
aufgerufen ist, wird sie diesen Hinweis weiter zu UCPs führen. Die
UCPs können
in C, C++, VB oder einem Skript-Code geschrieben sein, so dass der
Mechanismus zum Weiterführen von
Hinweisen unterschiedlich sein kann.
-
Skript-Support
-
Ein
Merkmal des dargestellten Ereignis-Systems ist dasjenige, dass es
Skript-Sprachen,
wie beispielsweise VBScript und JavaScript 602, unterstützt. Für VBScript
wird dies durch Vorsehen einer Property (Eigenschaft) an dem Dienst-Objekt
vorgenommen, das, wenn es eingestellt ist, den IDispatch-Hinweiszeiger
für eine VBScript-Funktion oder ein
Unterprogramm enthält,
das der Ereignis-Handler sein wird. Wenn der Hinweis-Rückruf des
Dienst-Objekts aufgerufen ist, prüft er, um zu sehen, ob dieser
IDispatch-Hinweiszeiger eingestellt wurde, und falls dies der Fall
ist, ruft er IDispatch::Invoke auf DISPID 0 dieser Schnittstelle
auf, um das VBScript-Unterprogramm
aufzurufen. Ein äquivalenter
Mechanismus ist für
Jscript ausgeführt.
-
Ereignis-Untersystem-Technologie
-
UCP – Benutzer-Steuer-Punkt
(User Control Point). Ein Teil einer Software, die nach Vorrichtungen sucht
und sie steuert.
-
CD – gesteuerte
Vorrichtung (Control Device). Eine Hardware- oder Software-Vorrichtung, die
ihre Verfügbarkeit über SSDP
anzeigt und eine Steuerung durch UCPs ermöglicht.
-
Subscriber
(Teilnehmer) – ein
UCP, der wünscht, über Ereignis-Änderungen
informiert zu werden.
-
Notifying
Resource (hinweisende Ressource) (oder einfach „Ressource") – für die Zwecke
dieses Dokuments wird dies immer ein Dienst sein, enthalten innerhalb
einer UPnP-CD 106.
-
Event
Source (Ereignis-Quelle) – ein
Dienst, der Ereignisse liefert. UPnP-Dienste sind Ereignis-Quellen. Alle
hinweisenden Ressourcen sind Ereignis-Quellen, und vice versa.
-
Event
(Ereignis) – Nachricht,
erzeugt dann, wenn eine Änderung
in den Zustand einer Ressource auftritt.
-
Property
(Eigenschaft)) – ein
einzelner Eintritt in der Zustands-Tabelle des Dienstes, deren Default
Value (Voreinstellungs-Wert) sich ändern kann. Eigenschaften und
Ereignisse besitzen immer eine Korrespondenz eins zu eins.
-
Teilnehmen
an Ressourcen
-
Integrieren
mit der UPnP-API
-
Der
UPnP-API 410 gibt verschiedene Schnittstellen frei, mit
denen ein Verbraucher Vorrichtungen, Steuer-Dienste finden und aufzählen kann,
und Eigenschaften über
Vorrichtungen und Dienste erhält.
Um die Integration von Ereignissen in dieses Modell zu ermöglichen,
fügt man
eine neue Property zu der IUPnPService Schnittstelle, bezeichnet
als EventHandler, hinzu. Wenn diese Eigenschaft eingestellt ist,
teilt sie dem Dienst-Objekt 612 mit, dass deren Client
daran interessiert ist, Hinweise für diesen Dienst zu empfangen.
Die SSDP-API-RegisterNotification() API wird aufgerufen, wenn das
Dienst-Objekt erzeugt ist, so dass es eine lokale Kopie des DST
für diesen
Dienst beibehalten kann. Das Dienst-Objekt kennt den URL des Dienstes
und kann deshalb diesen als einen Parameter zu RegisterNotification()
liefern. RegisterNotification() wird auch als eine Rückruf-Funktion
vorgesehen, die ein statisches Element der Dienst-Objekt-Klasse
ist. Diese Funktion wird für
jeden Hinweis, geschickt durch diesen bestimmten UPnP-Dienst, aufgerufen.
-
Der Hinweis-Rückruf
-
Das
Dienst-Objekt 612 umfasst eine Statik-Element-Funktion,
bezeichnet als EventNotifyCallback(), die für jeden Hinweis, geschickt
durch den UPnP-Dienst, aufgerufen wird. Der Rückruf wird die gesamten HTTP-Nachrichten-Inhalte
in einer Struktur hindurchführen,
die ein Parameter zu der Funktion ist. Der Prototyp sieht ähnlich aus
wie:
-
-
Der
ssdpType Parameter sollte immer SSDP_PROPCHANGE sein. Der pssdpMsg
Parameter enthält die
relevanten Informationen über
das Ereignis. Der Schlüsselteil
von Informationen ist der Grundteil der XML-Nachricht. Der Grundteil
bzw. Rumpf enthält
Informationen darüber,
welche Eigenschaft geändert
worden ist, was der neue Wert ist und welcher Typ er ist, unter
anderen Informationen. Der pContext Parameter wird immer dieser
Hinweiszeiger zu dem Dienst-Objekt sein. Dies ermöglicht dem
Code, ein Verfahren aufzurufen, um das Ereignis zu dem UCP zu „feuern". Der Rückruf wird
den XML-Rumpf unter Verwendung der XML DOM Dienste analysieren.
Eigenschafts-Änderungen
werden iteriert und der lokale DST wird aktualisiert, um diese Änderungen
zu reflektieren. Nachdem diese Verarbeitung vorgenommen ist, kann
ein Ereignis-Hinweis für jede
Eigenschaft abgegeben werden, die geändert wurde, und zwar zu dem
Eigner der Subskription, falls eine existiert. In Abhängigkeit
davon, in welcher Umgebung der Eigner eingeschrieben ist (C++ oder
Skript, usw....), kann ein unterschiedlicher Mechanismus zum Absenden
des Ereignisses eingesetzt werden.
-
Ein
spezieller Fall für
diesen Vorgang ist der erste Hinweis, der empfangen ist, nachdem
eine Subskription eingerichtet ist. Dieser Hinweis enthält den gesamten
Satz von Eigenschaften und deren Werte und wird dazu verwendet,
lokal die DST zu synchronisieren. Ereignisse werden nicht zu Clients
des UPnP API in diesem Fall geschickt werden.
-
Abschicken von Hinweisen
-
Wenn
die EventNotifyCallback() Funktion aufgerufen ist, wird die lokale
Kopie der DST für
den Dienst aktualisiert. Hiernach muss ein Ereignis abgegeben werden, falls
ein Teilnehmer existiert. Ein Teilnehmer bzw. Subscriber existiert,
falls das put_EventHandler() Verfahren aufgerufen wurde, entweder
von dem VBScript, dem C++ Code, oder einer anderen Quelle. Um immer
diese Komplexität
weg zu abstrahieren, wird eine neue Schnittstelle, bezeichnet als
IUPnPEvents, benötigt.
-
Diese
Schnittstelle besitzt momentan ein Verfahren, bezeichnet als NotifyEvent(),
das verschiedene Parameter (TBS) heranzieht. Wenn die put_EventHandler()
Funktion aufgerufen ist, ist deren Argument ein IUnknown. Dieser
Hinweiszeiger ist QueryInterface'd()
für IDispatch
zuerst, und falls er fortschreitet, dann wird IDispatch::Invoke()
mit DISPID mit dem Wert 0 aufgerufen, um das Voreinstellungs-Verfahren
aufzurufen. Dies ermöglicht,
dass VBScript 602 aufgerufen wird. Falls dies allerdings
fehlschlägt,
ist dies „Queried" für IUPnPEvents,
und falls dies fortschreitet, wird das NotifyEvent() Verfahren mit
denselben Parametern wie für
Invoke() aufgerufen. Dies handhabt C++UCPs effektiv.
-
Subskribieren mit C++
-
Um
einen UPnP-Dienst von C++ zu subskribieren, realisiert ein UCP ein
UPnP-Dienst-Objekt, gibt QueryInterface() dazu für IUPnPEvents aus, und ruft
die IUPnPEvents::SetEventCallback() Funktion auf. Diese Funktion
nimmt 2 Parameter, einen Rückruf-Funktion-Hinweiszeiger
und einen Kontext-Hinweiszeiger, auf.
-
Subskribieren mit VBScript
-
Um
Ereignisse eines UPnP-Dienstes zu subskribieren, ist alles, was
durch ein Skript 602 vorgenommen werden muss, dasjenige,
eine Funktion oder ein Unterprogramm als eine Handler-Funktion zu
erzeugen und den Hinweiszeiger dieser Funktion auf die Eigenschaft
EventHandler des Dienst-Objekts einzustellen. Nun wird, zu jedem
Zeitpunkt, zu dem ein Ereignis hervorgerufen wird, diese VBScript
Funktion oder das Unterprogramm aufgerufen werden. In VBScript wird
dies wie folgt geschrieben:
-
-
-
In
diesem Beispiel zählt
das Skript alle Vorrichtungen auf, die nach irgendeiner Vorrichtung
suchen, die die „Clock" Schnittstelle unterstützt. Wenn
sie eine Vorrichtung findet, die diese Schnittstelle unterstützt, zählt sie
die Dienste der Vorrichtung auf, die nach der einen suchen, die
die „clock.v1" Schnittstelle besitzt. Wenn
sie diesen Dienst findet, stellt sie diese EventHandler Eigenschaft
des Dienstes auf das VBScript Unterprogramm, bezeichnet als „clock_PropertyChanged", ein. Dieser Name
ist wahlweise.
-
Schicken und Empfangen
von Hinweisen
-
GENA-Client API
-
GENA-Client
sind tatsächlich
UPnP Dienste. Ein GENA-Client erzeugt eine neue Ereignis-Quelle, wenn
sie initialisiert wird. Der GENA-Client-API 620 führt dies
durch. Er liefert auch eine Art und Weise für GENA-Clients, deren Hinweis-Nachrichten zu senden.
Es ist auch wichtig, anzumerken, dass der HTTP-Server, der an der
UPnP-Vorrichtung vorhanden ist, auch ein Client dieser API ist.
Der GENA-Client-API
besteht aus den folgenden Funktionen:
-
Register UPnPEventSource()
-
Der
RegisterUPnPEventSource() API gibt einem GENA-Client die Fähigkeit,
sich selbst als eine Ereignis-Quelle zu registrieren. Der Prototyp
ist wie folgt:
-
-
Parameter:
szRequestUri [in] ein wahlweises Request-Uri, dass SUBSCRIBE-Anforderungen dorthin geschickt
werden. Wenn eine SUBSCRIBE-Anforderung an der gegebenen URI ankommt,
ist sie bekannt, und der Subscriber wird zu der Liste von Hinweis-Empfängern hinzugefügt. Es ist
anzumerken, dass dieser URI zu dem URI passen sollte, der in der
Beschreibung für
diesen Dienst vorgesehen ist. CProps [in] die Zahl von Eigenschaften,
die diese Ereignis-Quelle liefert. RgProps [in] Array of UPNP_Property
Strukturen, die Informationen über
jede Eigenschaft enthalten. Die Property-Informationen werden aus
der DST für
die Ereignis-Quelle abgeleitet.
-
Rückführ-Wert:
die Funktion führt
ein TRUE, falls erfolgreich, zurück.
Falls die gegebene URL bereits als eine Ereignis-Quelle registriert
worden ist, ist der Rückführ-Wert
FALSE und GetLastError() führt ERROR_ALREADY_EXISTS
zurück.
-
Anmerkungen:
der Anfangs-Zustand der Ereignis-Quelle muss zu der API so gegeben
werden, dass er effektiv den Aktualisierungs-Zustand der Ereignis-Quelle
beibehalten kann.
-
DeRegisterUpnpEventSource()
-
Die
DeRegisterUpnpEventSource() API gibt einem GENA-Client die Fähigkeit,
sich selbst als eine Ereignis-Quelle aus dem Register herauszunehmen.
Der Prototyp ist wie folgt:
-
-
Parameter:
szRequestUri [in] ein wahlweises Request-Uri, dass SUBSCRIBE Anforderungen
zu senden sind. Wenn eine SUBSCRIBE Anforderung an dem gegebenen
URI ankommt, ist sie bekannt, und der SUBSCRIBER wird zu der Liste
von Hinweis-Empfängern
hinzugefügt.
Es ist anzumerken, dass dieser URI zu dem URI, vorgesehen in der
Beschreibung für
diesen Dienst, passen sollte.
-
-
Wo
szName der Name der Property ist, ist szValue der momentane Wert
von Property, und szType ist der Typ von Property (Zeichenfolge,
ganzzahlige Zahl, usw. ...).
-
SubmitUPnpPropertyEvent()
-
Der
SubmitUPnpPropertyEvent() API ermöglicht dem GENA-Client, ein
UPnP-Property-Änderungs-Ereignis
zuzuführen,
um es zu Subscribern als einen Hinweis zu schicken. Der Prototyp
ist wie folgt:
-
-
Parameter: „szRequestUri
[in]" identifiziert
die Ereignis-Quelle, zu der dieses Ereignis gehört. Dies ist derselbe Request-Uri,
weitergeführt
zu RequestUPnPEventSource().
-
„DwFlags
[in]" ist nicht
verwendet. „CProps
[in]" ist die Zahl
von Ereignissen, die zugeführt
werden soll. „RgProps
[in]" ist ein Feld
von UPNP_PROPERTY Strukturen, die Informationen über jedes Ereignis enthalten.
-
Rückführ-Wert:
falls die Funktion fehlschlägt,
ist der Rückführ-Wert
FALSE. Die erhaltenen, erweiterten Fehler-Informationen rufen die
GetLastError() Funktion auf.
-
Anmerkungen:
wenn eine Reihe von Eigenschaften für einen Ereignis-Hinweis geliefert
wird, wird die lokale Version des Property-Zustands für die gegebene
Ereignis-Quelle mit der Liste von Properties, die hineingeführt ist,
aktualisiert.
-
SubmitUpnpPropertyEvent()
ruft SubmitEvent() auf, nachdem sie einen XML Körper erzeugt hat.
-
SubmitEvent()
-
Die
SubmitEvent() API ermöglicht
dem GENA-Client, dass ein nicht strukturiertes Ereignis zu Subscribern
als ein Hinweis geschickt wird. Der Prototyp ist wie folgt:
-
-
Parameter:
szRequestUri [in] identifiziert die Ereignis-Quelle, zu der dieses
Ereignis gehört.
Dies ist derselbe Request-Uri, weitergeführt zu RegisterUpnpEventSource().
DwFlags [in] unbenutzt. SzHeaders [in] eine mit Null beendete Text-Folge,
die die Headers für
jedes Ereignis enthalten, jedes separiert durch CRLF. SzEvent-Body [in] ist eine
mit Null beendete Text-Folge, die den Körper der Ereignis-Nachricht
enthält.
-
Rückführ-Wert:
falls die Funktion fehlschlägt,
ist der Rückführ-Wert
FALSE. Die erhaltenen, erweiterten Fehler-Funktionen rufen die GetLastError()
Funktion auf. Anmerkungen: falls keine Subscriber existieren, bewirkt
die Funktion nichts.
-
Falls
einer oder mehrere Subscriber existiert (existieren), wird eine
Nachricht zu jedem Subscriber geschickt. SubmitEvent() wird immer
zu allen Subscribern geschickt.
-
Mittels UPnP gesteuerte
Vorrichtungs-Architektur
-
In
UPnP muss jeder UPnP-Dienst 210–211, der Property-Änderungs-Ereignis-Hinweise unterstützt, ein
GENA-Client sein. Deshalb muss, wenn der Dienst initialisiert wird,
er sich selbst als eine GENA-Ereignis-Quelle registrieren. Er wird
dies mit der RegisterUpnpEventSource() API tun. Dies führt einen
Handle zurück,
der in darauf folgenden APIs verwendet werden kann.
-
RegisterUpnpEventSource()
nimmt einen URL und ein Feld von Eigenschaften als Parameter. Innerhalb
des API wird ein Eintritt in ein Feld von Strukturen initialisiert
und der Index wird als der Handle zurückgeführt. Die Struktur enthält die Quellen-URL
als eines der Mitglieder. Ein zweites Mitglied bzw. Element der Struktur,
ein Feld von Bestimmungs-URLs, wird nicht initialisiert belassen.
Dies wird in jeder Zeit erfüllt,
wenn ein Subscriber für
diese Ereignis-Quelle hinzugefügt
wird. Ein anderes Element der Struktur ist die Liste von Eigenschaften,
die diese Ereignis-Quelle liefert. Dies ist effektiv eine cachemäßig gespeicherte
Kopie der DST für
die Ereignis-Quelle.
Wenn Ereignisse zugeführt
werden, werden die lokalen Eigenschaften aktualisiert.
-
Wenn
SubmitUpnpPropertyEvent() aufgerufen ist, ersetzt jede Property,
die zugeführt
ist, die entsprechende Property, die bereits durch den API gehalten
wird. Falls keine Subscriber existieren, wird die Anforderung, ein
Ereignis zuzuführen,
ignoriert. Falls einer oder mehrere Subscriber existiert (existieren),
werden deren Rückruf-URLs
in der Liste von Subscribern nach einer gegebenen Ereignis-Quelle durchgesehen
und eine NOTIFY Nachricht wird konstruiert und zu jeder URL, eine
zu einem Zeitpunkt, in der Reihenfolge einer Subskription, geschickt.
Falls ein Ereignis zugeführt
wird und keine Antwort empfangen wird (oder ein CD-seitiger Fehler
auftritt), fährt
die CD fort, zu versuchen, zu der UPC zu schicken. Falls die Subskription-Ablaufzeit
abläuft,
dann wird die Subscription entfernt. Falls der UCP erneut verfügbar wird,
wird er erneut subskribieren, da er bemerken wird, dass die Folge-Zahlen nicht fortlaufend
sind.
-
Wenn
ein HTTP-Server 626 eine SUBSCRIBE-Nachricht empfängt, führt er sie
weiter zu einer Funktion, die die Nachricht für die notwendigen Informationen
analysiert. Die Anforderung URI identifiziert den Dienst, der hinzu
subskribiert werden soll. Der Callback-URL wird von dem „Callback" Header erhalten.
Da der Callback-Header mehrerer URLs enthalten kann, nimmt er die
erste „HTTP://" URL, die er findet,
auf. Er fügt dann
den Subscriber zu der Liste von Subscribern für diese Ereignis-Quelle hinzu.
Ein eindeutiger Subskriptions-Identifizierer wird konstruiert, der
zurück
zu dem Subscriber in der HTTP-Antwort auf die SUBSCRIBE-Anforderung
hin geschickt werden wird.
-
Falls
keine Ereignis-Quelle zu der Request-URI von der Subskriptions- Nachricht passt,
sollte der HTTP-Server „404
Not Found" zurückführen.
-
Wenn
eine Subskription hinzugefügt
wird, wird die Lokal-Kopie der DST als eine NOTIFY Nachricht geschickt.
Diese spezielle NOTIFY Nachricht enthält eine Sequenz-Zahl 0, die
die UCP informiert, dass dies ein Anfangs-Zustands-Populations-Ereignis
ist, und nicht ein Hinweis, wo sich jedes Ereignis geändert hat.
-
Wenn
eine CD eine UNSUBSCRIBE Nachricht empfängt, prüft sie den „SID" Header, um den Subskriptions-Identifizierer
zu erhalten. Sie sieht nach der Subscriber-ID in der Liste der Subscriber
für diese
Ereignis-Quelle und entfernt den Bestimmungs-URL-Eintritt, der dazu
zugeordnet ist.
-
GENA Server
API
-
GENA
Server 630 sind allgemein so, dass sie zu UPnP UCPs gehen.
Ein GENA Server ist irgendetwas, der NOTIFY Nachrichten empfängt und
verarbeitet, um Hinweise von Ressourcen zu handhaben, und schickt
SUBSCRIBE und UNSUBSCRIBE Nachrichten, um Hinweise von Ressourcen
zu empfangen. Diese APIs verbinden die bereits existierenden SSDP
APIs. Das Nachfolgende sind die Änderungen
zu den APIs:
-
RegisterNotification()
-
Das
RegisterNotification() ermöglicht
einer UPnP UCP, einen Hinweis anzufordern, wenn ein Ereignis für einen
gegebenen UPnP-Dienst auftritt. Der Prototyp ist wie folgt:
-
-
Parameter:
NT [in] eine Aufzählung,
die den Typ eines Hinweises, der angefordert ist, bestimmt. Die Werte
sind: SSDP_ALIVE – ein
Dienst, der verfügbar
geworden ist, und SSDP_PROPCHANGE – eine Property hat sich an
dem Dienst geändert.
SzResourceType[in] eine mit Null beendete Folge, die den Ressource-Typ, der
erwünscht
ist, spezifiziert. Für
SSDP_ALIVE ist dies der Dienst-Typ, für SSDP_PROPCHANGE ist dies
unbenutzt. SzEventUri [in] eine mit Null bestimmte Folge, die den
URL spezifiziert, dass eine Subskriptions-Anforderung dazu geschickt
werden sollte. FnCallback [in] ein Hinweiszeiger zu einer Funktion,
die zu jedem Zeitpunkt aufgerufen werden wird, zu dem ein Hinweis
empfangen ist. Der Funktion-Hinweiszeiger
ist in der SSDP spec. PContext [in] definiert. Dieser Parameter
ist als ein Parameter umfasst, wenn die durch den Client zugeführte Callback-Funktion
aufgerufen wird.
-
Rückführ-Wert:
falls die Funktion fortschreitet, ist der Rückführ-Wert ein Handle, verwendet
in einem darauf folgenden Anruf zu der DeregisterEventNotification()
Funktion. Falls die Funktion fehlschlägt, ist der Rückführ-Wert
der INVALID_HANDLE_VALUE Fehler-Code. Um erweiterte Fehler-Informationen
zu erhalten rufe GetLastError auf.
-
-
-
UPnP-UCP Architektur
-
Wenn
ein UPnP-UCP wünscht,
an Hinweisen für
einen bestimmten UPnP-Dienst
teilzunehmen, ruft er die RegisterNotification() API auf. Er führt zu dieser
API einen Hinweis-Typ, der den Typ eines Hinweises, der angefordert
werden soll, identifiziert, einen URL, zu dem eine Subskription
geschickt werden sollte, und eine Rückruf-Funktion und einen Kontext
zur Verwendung, wenn der Hinweis empfangen wird, zu.
-
RegisterNotification()
wird eine SUBSCRIBE Nachricht, unter Verwendung der Daten, die dort
hineingeführt
sind, zusammensetzen, und diese zu dem URL, spezifiziert durch den
Anrufer, schicken. Der Callback-Header der SUBSCRIBE Nachricht wird
unterwegs (on the fly) zusammengesetzt werden, als ein wahlweiser
URL für
Hinweise, die zu dieser Subskription geschickt werden sollen. Dieser
Callback-URL wird wahrscheinlich eine Konstante sein, da der Server-API
immer wissen wird, wie Anforderungen, geschickt zu dieser URL, zu
handhaben sind. Sie wird dann die SUBSCRIBE Nachricht senden und
auf eine Antwort warten.
-
RegisterNotification()
in der SSDP API schickt momentan nicht HTTP-Anforderungen, sondern sie kann modifiziert
werden, um dies vorzunehmen. Sie muss auch auf eine Antwort warten,
die sie auch modifizieren wird, um dies so vorzunehmen.
-
Wenn
die Antwort empfangen wird, enthält
der Subskription-ID-Header eine SID, die zu der Callback-Funktion,
spezifiziert durch den Anrufer, zugeordnet ist.
-
Unmittelbar
nachdem die Antwort empfangen ist, sollte der UCP eine Anfangs-NOTIFY-Nachricht
erwarten, die den vollständigen
Satz von Eigenschaften, beibehalten durch die CD, enthält. Dies
wird die lokale, cachemäßig gespeicherte
DST auf der UCP-Seite. Von diesem Punkt an werden alle Modifikationen
zu der Tabelle über
NOTIFY Nachrichten vorgenommen. Diese Anfangs-NOTIFY-Nachricht wird
die Sequenz-Zahl 0 haben, die anzeigt, dass sie die Anfangs-Property
ist, die eingestellt ist, und nicht eine Aktualisierung. Die UPC kann
diese Informationen auf irgendeine Art und Weise, die sie sieht,
um anzupassen, verwenden. Dies stellt sicher, dass die Zustands-Tabelle
der UCP immer synchron zu der einen auf der CD ist.
-
Wenn
eine Nachricht durch den HTTP-Server auf der UPnP-UCP empfangen
ist, wird sie zu einer Funktion geführt, die den Verfahren-Namen
und die Anforderungs-URI bestimmt. Falls dies eine NOTIFY-Nachricht
ist, werden die Header analysiert und in eine Struktur gepackt.
Diese Callback-Funktion, die zu RegisterNotification() spezifiziert
wurde, wird mit dieser Struktur als einer der Parameter aufgerufen.
UCPs, die die Callback-Funktion ausführen, können die Header und das Grundgerüst der NOTIFY-Nachricht
finden und eine zusätzliche
Verarbeitung basierend auf dem Hinweis-Typ vornehmen.
-
Dies
erfordert, dass der SSDP-HTTP-Server an einem TCP-Sockel zusätzlich zu
dem UDP-Multicast-Port, auf den er bereits gehört hat, hört. Allerdings wird, wenn einmal
eine NOTIFY-Nachricht empfangen ist, sie in derselben Art und Weise
ungeachtet davon verarbeitet, von welcher Verbindung sie ursprünglich stammte.
-
Handhabungs-Fehler
-
Das
Nachfolgende sind Subskription/Hinweis-Fehler, die auftreten können, und
deren Lösungen:
-
Abgelaufene
Subskriptionen
-
Um
gegen Subskriptionen zu schützen,
die an der gesteuerten Vorrichtung, allerdings nicht länger auf der
UCP, existieren, bildet man das Timeout-Merkmal von GENA-Subskrtptionen.
Das Szenarium ist dieses: eine UCP schreibt sich an einer CD ein,
wobei dann die UCP erneut bootet. Dabei wird die CD noch versuchen, Hinweise
zu dieser UCP zu schicken. Falls die UCP niemals zurückkommt,
würde die
Subskription abgelaufen sein, da die UCP niemals der CD mitteilte,
dass sie wegging. So umfasst, um dies zu korrigieren, jede Subskriptions-Anforderung
einen wahlweisen Timeout-Wert, der der CD anzeigt, dass die UCP
alle n Sekunden, angezeigt in dem Timeout-Header der Subskriptions-Anforderung,
erneut subskribieren wird. Falls der Zeitablauf an der CD abläuft, wird
die Subskription entfernt. Von der UCP wird gefordert, sich erneut
zu subskribieren, bevor die Timeout-Periode abgelaufen ist. Falls
sie es versäumt,
dies vorzunehmen, wird die Subskription durch die CD beendet.
-
Eine
bestimmte Zeit, bevor der Zeitablauf an der UCP abläuft, sollte
eine Wiedereinschreibungs-Nachricht geschickt werden. Die Wiedereinschreibungs-Nachricht
ist ähnlich
zu der Subskriptions- bzw. Teilnahme-Nachricht, allerdings enthält sie keine
NT oder einen Callback-Header. Falls die UCP nicht in der Lage ist, innerhalb
der Timeout-Periode erneut zu subskribieren, wird die Subskription
durch die CD beendet werden. Falls die UCP eine erneute Subskription
sendet, nachdem die CD die Subskription beendet hat, wird die CD „412 Precondition
Failed" zurückführen.
-
Erneutes Booten
einer gesteuerten Vorrichtung
-
Falls
eine gesteuerte Vorrichtung rebootet, würden Informationen über alle
deren Subscriber verloren gehen. Um dies zu verhindern, werden die
Subscriber-Informationen über Reboot-Vorgänge der
Vorrichtung bestehen bleiben. Da das Subskriptions-Info ein Timeout-Element
enthält,
wird die absolute Ablaufzeit verwendet werden, wenn die Subskriptions-Informationen
bestehen bleiben. Auf diese Art und Weise kann, wenn die Vorrichtung
wieder zurückkommt,
sie das Timeout für
jeden Subscriber prüfen,
und falls die Zeit vergangen ist, wird die Subskription entfernt
werden.
-
Netzwerk-Fehler, Ereignis-Hinweise
sendend
-
Falls
eine gesteuerte Vorrichtung einen Fehler, einen Ereignis-Hinweis
sendend, zu einem Subscriber empfängt, wird sie NICHT aufhören, Hinweise
zu schicken. Sie wird fortfahren, Hinweise zu schicken und Fehler
zu empfangen, bis die Subskription abläuft. Das Problem für die UCP
ist dasjenige, dass sie eine Zahl von Ereignis-Hinweisen vermisst
haben wird, und so wird ihre Zustands-Tabelle nicht in Synchronisation
sein. Um dies zu korrigieren, wird jede Ereignis-Hinweis-Nachricht
einer Folge-Zahl von 32-Bit enthalten, die mit 0 beginnt und sich
für jede
Nachricht, geschickt zu einem Subscriber, erhöht. Falls ein Subscriber einen
Hinweis mit einer Folge-Zahl empfängt, die nicht exakt eins mehr
als der vorherige Hinweis ist, wird sie wissen, dass sie Ereignisse
verloren hat, und wird alle zukünftige
Hinweise ignorieren, bis sie einen solchen mit einer Sequenz-Zahl
0 erneut empfängt.
Ereignisse mit einer Sequenz-Zahl 0 zeigen an, dass das Ereignis
ein Ereignis in einem „Anfangs-Zustand" ist.
-
Wenn
sie realisiert hat, dass sie einen oder mehrere Ereignisse) verloren
hat, wird die UCP eine UNSCRIBE Nachricht, gefolgt durch eine SUBSCRIBE
Nachricht, schicken. Dies ist nicht dasselbe wie eine erneute Subskription,
da erneute Subskriptionen nicht bewirken, dass die CD die Sequenz
bei 0 startet. In diesem Fall wird das aktive Nicht-Subskribieren/Subskribieren
bewirken, dass die CD erneut die Sequenz bei 0 startet und die gesamte
Zustands-Tabelle mit der ersten Hinweis-Nachricht schickt.
-
Die SUBSCRIBE Nachricht
-
Wenn
eine UPnP-UCP wünscht,
an Ereignis-Hinweisen für
einen UPnP-Dienst 210–211 teilzunehmen,
wird sie eine SUBSCRIBE Nachricht mit dem folgenden Format bilden:
-
-
Die
Antwort ist wie folgt:
-
-
Dieses
Beispiel einer GENA SUBSCRIBE Anforderung und Antwort demonstriert
eine Subskription zu Ereignis-Hinweisen für „service1". Der Host ist „vcr.local". Alle Hinweise für diesen Dienst werden zu dem
Callback-URL http://danielwe/upnp:923 geschickt werden. Daraufhin
stattet der „Subskriptions-ID" Header den Subscriber
mit einem Identifizierer aus, um diesen zu verwenden, wenn er wünscht, zu
dieser Ressource nicht zu subskribieren. Der „Timeout" Header zeigt an, dass der Subscriber
eine Wieder-Subskriptions-Anforderung schicken wird, bevor 10 Minuten
abgelaufen sind. Falls die Vorrichtung nicht diese Anforderung innerhalb
dieser Zeitperiode empfängt,
wird sie die Subskription entfernen.
-
Die Re-SUBSCRIBE Nachricht
-
Wenn
eine UPnP-UCP wünscht,
sich für
Ereignis-Hinweise für
einen UPnP-Dienst
wieder zu subskribieren, wird sie eine SUBSCRIBE Nachricht mit dem
folgenden Format bilden:
-
-
Es
ist anzumerken, dass die NT- und Callback-Header nicht vorhanden
sind, allerdings existiert der SID-Header. Dies teilt der CD 106 mit,
welche Subskription erneuert wird, und startet erneut den Zeitablauf (Timeout).
Wenn die CD diese Nachrichtempfängt,
wird sie die Subskriptionen auf einer Disk aufrechterhalten (oder
einem anderen, dauerhaften Datenspeicher-Medium), den absoluten
Zeitablauf basierend auf der momentanen Zeit aktualisieren und einen
neuen Zeitablauf zu der UCP (falls sie unterschiedlich war) schicken.
-
Die NOTIFY Nachricht
-
Wenn
es eine Ressource wünscht,
einen Ereignis-Hinweis zu schicken, wird sie eine NOTIFY Nachricht
mit dem folgenden Format bilden:
-
-
Die
Antwort ist wie folgt:
-
-
Dieses
Beispiel einer GENA NOTIFY Anforderung und Antwort demonstriert,
dass ein „upnp:propertychanged" Ereignis zu http://danielwe/upnp:923
geschickt werden soll. Der USN-Header identifiziert „vcr.service1" als die Ereignis-Quelle.
Die XML enthält
den Property-Namen, Wert und Typ. Der „Seq" Header zeigt die Sequenz-Zahl des Hinweises
an. Die Sequenz-Zahl 0 zeigt die Anfangs-Zustands-Aktualisierung für den Subscriber
an.
-
Property-Änderungs-Ereignis-XML-Schema
-
Ein
UPnP-Property-Änderungs-Ereignis
wird in der folgenden Form vorliegen:
-
-
Hierbei
ist eine Property bzw. Eigenschaft, benannt mit „foo", von dem Typ „string" und besitzt einen Wert von „goodbye", und ein Property,
benannt mit „bar", besitzt einen Typ
von „integer" und besitzt einen
Wert von 27. Die XML wird eine Liste von mehreren Properties enthalten,
die geändert
worden sind, zusammen mit einer Zählung, um es einfach zu machen,
sie zu bestimmen.
-
Die UNSUBSCRIBE Nachricht
-
Wenn
eine UPnP-UCP wünscht,
nicht an Ereignis-Hinweisen für
einen UPnP-Dienst
teilzunehmen, wird sie eine UNSUBSCRIBE Nachricht des folgenden
Formats bilden:
-
-
Die
Antwort würde
wie folgt sein:
-
-
Dieses
Beispiel einer GENA UNSUBSCRIBE-Anforderung und Antwort demonstriert,
dass der UCP nicht länger
daran interessiert ist, Ereignis-Hinweise von http://vcr.local/service1:200
zu empfangen.
-
Step By Step: UCP zu CD & Back
-
Dieser
Abschnitt wird eine Maßnahme
Schritt für
Schritt für
das vornehmen, was an beiden Seiten (UCP & CD) eines Ereignis-Hinweises auftritt.
Die Beschreibung beginnt bei der Initialisierung einer UPnP-Vorrichtung. 23 stellt den Subskriptions-Hinweis- und Ansubskribtion-Vorgang
dar.
- 1. Eine UPnP-Vorrichtung, bezeichnet als „vcr", initialisiert.
- a. Sie stellt sich selbst so ein, um ein HTTP-Server zu sein,
indem das Folgende vorgenommen wird:
- i. Sie verbindet sich mit einem TCP-Anschluss-Sockel unter Verwendung
dessen IP-Adresse und einer wahlweisen Port-Zahl. Auf dieses Adressen/Port-Paar
wird durch alle ankommenden URL-Anforderungen Bezug genommen werden.
- ii. Sie listet die ankommenden Verbindungs-Anforderungen an
diesem Sockel auf und stellt sich selbst so ein, um irgendwelche
ankommenden Verbindungen zu akzeptieren.
- b. Sie stellt sich selbst so ein, dass sie ein HTTP-Client ist,
indem das Folgende vorgenommen wird:
- i. Ruft InternetOpen() auf, um einen Handle zu der Internet-Sitzung
zu erhalten.
- c. Für
jeden Dienst, den sie aufdeckt, nimmt sie das Folgende vor:
- i. Sie ruft die SSDP API RegisterUpnpEventSource() auf, um den
SSDP-Server wissen zu lassen, dass er Subskriptionen akzeptieren
wird und Ereignis-Hinweise schicken wird. An diesem Punkt besitzt
sie keine Subscriber. Es ist anzumerken, dass dies aufgerufen wird,
bevor der Dienst sich selbst angezeigt hat, so dass er bereit sein
kann, Subskriptionen unmittelbar anzunehmen. RegisterUpnpEventSource()
schickt keinen Netzwerk-Verkehr weiter über die Leitung. Es ist nur
eine lokale Initialisierung.
RegisterUpnpEventSource() nimmt
das Folgende vor:
- 1. Füge
eine Struktur zu der Liste von Ereignis-Quellen hinzu, das folgende
enthaltend:
- a. Ein URL, zu dem Subscriber Subskriptions-Anforderungen schicken werden
- b. Eine Liste von Bestimmungs-URLs. Eine Hinweis-Nachricht wird zu
jedem Bestimmungs-URL geschickt werden.
- c. Die Zustands-Tabelle für
die Ereignis-Quelle. Diese Struktur enthält den Property-Namen, -Wert
und -Typ für
jede Property, unterstützt
durch den Dienst.
- ii. Sie ruft den SSDP API RegisterService() auf, um die Welt
wissen zu lassen, dass sie verfügbar
geworden ist. RegisterService() wird eine SSDP „alive" Nachricht auf dem Multicast-Kanal abschicken,
die durch irgendeine Vorrichtung, die den SSDP-Dienst laufen lässt, gehört werden
wird.
- d. Sie beginnt damit, Ereignisse unmittelbar zu senden, auch
ohne Subscriber. Jede Ereignis-Versendung aktualisiert die Lokal-Zustands-Tabelle. Diese Submission
muss automatisch in Bezug auf ein Hinzufügen von Subscribern vorliegen,
so dass zwischen der Zeit, zu der das SubmitEvent() API aufgerufen
wird, und der Zeit, zu der die Lokal-Zustands-Tabelle aktualisiert wird,
keine Subskription hinzugefügt
oder entfernt werden kann.
- 2. Zwischenzeitlich initialisiert eine UPnP-UCP.
- a. Sie initialisiert ihren HTTP-Server, passiv an einem TCP-Port
hörend.
- b. Falls die UCP gestartet wird, bevor die UPnP-Vorrichtung
initialisierte, wünscht
sie nicht irgendwelche Dienste, die verfügbar werden, zu sehen. Wenn
die Vorrichtung schließlich
startet, wird die UCP darauf hingewiesen werden.
- c. Wenn einmal die UPnP-Dienste angezeigt worden sind, wird
die UCP in der Lage sein, auf einen oder mehrere davon zuzugreifen.
- d. Die UCP steuert die UPnP-API so an, um ein UPnP-Dienst-Objekt
zu initiieren.
- e. Das UpnP-Dienst-Objekt nimmt das Folgende vor, wenn es instantiiert
wird:
- i. Sie erhält
den Ereignis-Beschreibungs-URL von der Beschreibung für diesen
Dienst.
- ii. Sie ruft den SSDP-API-RegisterNotification() auf, SSDP_PROPCHANGE
als den Ereignis-Typ, die Ereignis-Subskriptions-URL, einen Callback-Funktions-Hinweiszeiger
(der eine Statik-Element-Funktion der Klasse ist) und einen Kontext-Hinweiszeiger der
(„dieser" Hinweiszeiger der
Klasse ist) spezifizierend.
RegisterNotification() nimmt das
Folgende vor:
- 1. Er nimmt einen LRPC-Ruf zu dem SSDP-Dienst vor. Der Rest
tritt auf der Seite des Dienstes auf.
- 2. Falls dies das erste Mai ist, zu der er SSDP_PROPCHANGE Hinweise
aufruft, wird Register-Notification()
InternetOpen() aufrufen, um einen Handle zu einer Internet-Session
zu erhalten. Dieser Handle wird gemeinsam unter allen lokalen UPnP-UCPs
geteilt.
- 3. Er ruft InternetConnect(), den Server-Namen weiterführend, gegeben
in dem URL, den er hindurchgeführt
hat, auf.
- 4. Er ruft HTTPOpenRequest() auf, in den Rest des URL hindurchführend, die
hindurchgeführt
wurde.
- 5. Die Handle, zurückgeführt durch
diese Funktionen, werden mit der Struktur, die die Subskription
aufrechterhält,
gesichert.
- 6. Er setzt eine SUBSCRIBE Nachricht zusammen, unter Verwendung
der Daten, die hineingeführt
sind, durch Aufrufen von HttpAddRequestHeaders(). Er fügt die „NT", „Callback" und „Timeout" Header hinzu. Der
Callback- Header
der SUBSCRIBE Nachricht wird unterwegs (on the fly) zusammengesetzt,
als ein wahlweiser URL für
Hinweise, die für
diese Subskription geschickt werden sollen. Der Server-Name ist
die lokale IP-Adresse, und der Port ist derselbe, auf den man durch
Schritt 2a vorstehend Bezug nahm.
- 7. Er ruft HttpSendRequest() auf, um die Anforderung zu der
CD zu schicken. Dies ist eine synchrone Funktion, die zurückkehren
wird, wenn die Anforderung durch die CD beantwortet worden ist.
- 8. Sie ruft HttpQueryInfo(..., HTTP_QUERY_CUSTOM, ...) auf,
um den „Subskriptions-ID" Header zu erhalten.
Die sich ergebende SID wird mit der Subskriptions-Struktur gespeichert
werden.
- 9. Er ruft HttpQueryInfo(..., HTTP_QUERY_CUSTOM, ...) auf, um
den „Timeout" Header zu erhalten.
Der sich ergebende Timeout-Wert wird mit der Subskriptions-Struktur
gespeichert werden.
- 10. Ein Zeitgeber wird für
eine Resubskription basierend auf dem Timeout-Wert, zurückgeführt in der
Antwort, gestartet. Wenn der Zeitgeber abläuft, wird die erneute Subskription
geschickt werden.
- 11. Die SID der Callback-Funktions-Hinweiszeiger und Timeout-Werte
werden in einer Struktur gespeichert, die die Liste von lokalen
Subskriptionen aufrechterhält.
- 3. Zurück
an der UPnP-CD wird die Subskriptions-Anforderung durch den HTTP-Server empfangen.
Das Nachfolgende tritt auf:
- a. Die Anforderung wird in URI, NT, Callback und Timeout-Feldern
analysiert.
- b. Das NT-Feld muss „Upnp:event" anpassen. Falls
es das tut, antwortet die CD mit „412 Precondition Failed".
- c. Der URI identifiziert die Ereignis-Quelle. Der URI wird in
einen URL umgewandelt und zu der Liste von Ereignis-Quellen, registriert
an der CD, angepasst. Falls keine Anpassung gefunden wird, antwortet
die CD mit „404
Not Found".
- d. Falls eine Anpassung gefunden wird, tritt das Folgende auf:
- i. Der Callback-URL wird zu einer Liste von Subscriber-URLs
hinzugefügt.
- ii. Der Timeout-Wert wird verarbeitet und eine absolute Zeit
wird mit den Event-Quellen-Daten gespeichert. Falls diese Zeit abläuft und
eine Wieder-Subskriptions-Nachricht nicht empfangen worden ist,
wird die Subskription entfernt.
- iii. Eine neue SID wird erzeugt und mit dem Subscriber in der
Ereignis-Quelle gespeichert.
- iv. Eine Sequenz-Zahl wird auf 0 initialisiert.
- v. Eine Subskriptions-Antwort wird zusammengestellt, einschließlich eines
Echos des Timeout-Headers und der SID, die gerade erzeugt ist.
- vi. Die Antwort wird gesendet.
- vii. Falls die Antwort erfolgreich gesendet ist, wird die Liste
von Ereignis-Quellen zu einer Platte bzw. Disk für Wiederherstellungs-Zwecke bestehen gelassen.
- viii. Ein Zeitgeber wird gestartet unter Verwendung desselben
Timeout-Werts wie der Header, der echomäßig zu der UCP hin gegeben
ist. Wenn dieser Zeitgeber abläuft,
wird die Subskription entfernt. Falls die CD eine Anforderung für eine erneute
Subskription empfängt,
wird dieser Zeitgeber zurückgesetzt
werden. In einer idealen Welt wird der Zeitgeber niemals ablaufen.
- ix. Ein Anfangs-Ereignis-Hinweis wird gesendet, um die Zustands-Tabelle von UCP's zu initialisieren.
Das Folgende beschreibt den Vorgang:
- 1. InternetOpen() wird aufgerufen, falls ein existierender Internet-Session-Handle
nicht existiert.
- 2. InternetConnect() wird aufgerufen, den Server-Namen, spezifiziert
in dem Callback-URL für
diese Subskription, hindurchführend.
- 3. HTTPOpenRequest() wird aufgerufen, in den Rest der Callback-URL
hindurchführend.
- 4. Eine NOTIFY Nachricht wird zusammengestellt, unter Verwendung
der Daten, die hineingeführt
sind, durch Aufrufen von HttpAddRequestHeaders(). Sie fügt die „NT", „NTS", „SID", „Seq", „Content-Length" und „Content-Type" Headers hinzu.
- a. Der NT-Header wird immer „upnp:event" sein. Der NTS-Header
wird immer „upnp:propertychanged" sein.
- b. Der SID-Header enthält
den SID, gespeichert in der Ereignis-Quellen-Struktur.
- c. Der Seq-Header wird immer 0 sein.
- d. Der Inhalt-Längen-Header
wird die Zahl von Bytes in dem XML-Körper sein.
- e. Der Content-Type-Header wird immer „text/XML" sein.
- f. Der Grundbestandteil bzw. Körper der Nachricht ist aus
der Liste von Properties bzw. Eigenschaften, gespeichert innerhalb
der Ereignis-Quellen-Struktur,
zusammengesetzt:
- i. Schreibe das <propertyset> Öffnungs-Zeichen.
- ii. Schreibe das <propcount>n</propcount> Zeichen. Hierbei ist n die Zahl von gesamten
Properties.
- iii. Für
jede Property:
- 1. Schreibe das <property> Öffnungs-Zeichen.
- 2. Schreibe das <prop> Öffnungs-Zeichen, wobei prop
der Name der Property ist.
- 3. Schreibe das <type>type>/type> Zeichen, wobei type
der als Stringfolge gebildete Typ-Name des Property-Typs ist.
- 4. Schreibe den Property-Wert.
- 5. Schreibe das <prop> Schließungs-Zeichen.
- 6. Schreibe das <property> Schließungs-Zeichen.
- iv. Schreibe das </propertyset> Schließungs-Zeichen.
- 5. Er ruft HttpSendRequestEx(), dann InternetWriteFile(), dann
HttpEndRequest(), um die Anforderung zu der CD zu schicken, auf.
- 6. Die Antwort wird ignoriert, mit der Ausnahme für Debugging-
bzw. Fehler-Beseitigungs-Zwecke.
- 4. Die UPnP-CD ist nun bereit, einen Ereignis-Hinweis zu senden.
Sie nimmt dies durch Aufrufen der SubmitUPnPPropertyEvent() API
vor. Das Nachfolgende tritt innerhalb der API auf:
- a. Ein Ereignis-Quellen-Handle wird zu einer Ereignis-Quellen-Struktur
umgewandelt.
- b. Die Eigenschaften, die als eine Folge des Ereignisses geändert worden
sind, werden in die Funktion hineingeführt und in der lokalen Liste
von Eigenschaften, gespeichert mit der Ereignis-Quelle aktualisiert.
- c. Für
jeden Subscriber tritt das Folgende auf:
- i. InternetConnect() wird aufgerufen, den Server-Namen, spezifiziert
in dem Callback-URL für
diese Subskription, hindurchführend.
- ii. HttpOpenRequest() wird aufgerufen, in den Rest des aufgerufenen
URL hineinführend.
- iii. Eine NOTIFY Nachricht wird zusammengestellt, unter Verwendung
der Daten, hineingeführt
durch Aufrufen von HttpAddRe questHeaders(). Sie fügt die „NT", „NTS", „SID", „Seq", „Content-Length" und „ContentType" Headers hinzu.
- 1. Der NT-Header wird immer „upnp:event" sein. Der NTS-Header
wird immer „ UPnP:propertychange" sein.
- 2. Der SID-Header enthält
den SID, gespeichert in der Ereignis-Quellen-Struktur.
- 3. Die Sequenz-Zahl für
die Ereignis-Quelle wird erhöht
und der Seq-Header wird mit diesem Wert erzeugt.
- 4. Der Content-Length-Header wird die Zahl von Bytes in dem
XML-Körper
sein.
- 5. Der Content-Type-Header wird immer „text/XML" sein.
- 6. Der Körper
der Nachricht ist aus der Liste von Eigenschaften, gespeichert innerhalb
der Ereignis-Quellen-Struktur,
zusammengesetzt:
- a. Schreiben des <propertyset> Öffnungs-Zeichens.
- b. Schreiben des <propcount>n</propcount> Zeichens. Hierbei ist n die Zahl von
gesamten Eigenschaften.
- c. Für
jede Property, die zugeführt
worden ist:
- i. Schreibe das <property> Öffnungs-Zeichen.
- ii. Schreibe das <prop> Öffnungs-Zeichen, wobei prop
der Name der Property ist.
- iii. Schreibe das <type>type>/type> Zeichen, wobei type
der als String-Folge gebildete Typ-Namen des Property-Typs ist.
- iv. Schreibe den Property-Wert.
- v. Schreibe das </prop> Schließungs-Zeichen.
- vi. Schreibe das </property> Schließungs-Zeichen.
- d. Schreibe das </propertyset> Schließungs-Zeichen.
- iv. SubmitEvent() wird aufgerufen, den Ereignis-Quellen-Handle
hindurchführend,
den Handle zu den Headern, erzeugt durch 4c(i) bis 4c(ii) vorstehend,
und der Körper,
erzeugt in Schritt 4c(iii)6. SubmitEvent() nimmt das Folgende vor:
- 1. Er ruft HttpSendRequestEx(), dann InternetWriteFile() an
dem Körper,
dann HttpEndRequest(), um die Anforderung zu der CD zu schicken,
auf.
- 2. Die Antwort wird ignoriert, mit der Ausnahme für Debugging-
bzw. Fehler-Beseitigungs-Zwecke.
- 5. Die UPnP-UCP empfängt
die Hinweis-Nachricht. Die Nachricht wird wie folgt verarbeitet:
- a. Der HTTP-Server empfängt
eine NOTIFY Nachricht mit einem Request-URI und verschiedenen anderen Headern.
- b. Die NOTIFY Nachricht wird analysiert, auf den „NT" Header zuerst sehend.
Falls dieser Header „upnp:Event" enthält, dann
wird die Nachricht weiter für
Ereignis-Hinweise wie folgt verarbeitet:
- i. Die Nachricht wird nach dem NTS-Header analysiert. Falls
dieser „upnp:propertychanged" enthält, dann wird
die Nachricht weiter wie folgt analysiert:
- 1. Die Nachricht wird nach dem SID-Header analysiert. Die SID
zeigt zu dem UPnP-Steuer-Punkt, für welche Subskription diese
Nachricht gilt.
- 2. Die Nachricht wird nach dem „Seq" Header analysiert. Falls dieser Header
einen Wert von 0 enthält,
weiß die
UCP, dass dieser eine Anfangs-Zustands-Bestückungs-Anforderung ist. Falls die lokale Sequenz-Zahl exakt
eins geringer als der Seq-Header ist, wird die lokale Sequenz- Zahl aktualisiert
(erhöht),
und die Nachricht wird weiter verarbeitet.
- 3. Der Request-URI kann ignoriert werden, da der HTTP-Server weiß, dass
alle NOTIFY Nachrichten mit einem NT-Header von „upnp:Event" zu demselben Request-URI
geschickt sind.
- 4. Falls der Seq-Header eine Zahl enthält, die nicht exakt eins mehr
als die lokale Sequenz-Zahl ist, weiß der UCP, dass er ein Ereignis
bzw. Event verfehlt hat. In diesem Zustand muss die Teilnahme beendet
werden und erneut zu der Ereignis-Quelle subskribiert werden, um
seinen Zustand wieder zu synchronisieren.
- 5. Die SID wird gegen die Liste von Subskriptionen, aufrechterhalten
an dem UCP, angepasst. Wenn die SID angepasst ist, wird deren zugeordnete
Callback-Funktion aufgehoben.
- 6. Die Callback-Funktion hat eine SSDP_Message Struktur hindurchgeführt, die
alle relevanten Header und den Körper
der XML-Nachricht, die empfangen ist, enthält.
- 7. Die Callback-Funktion wird durch den UPnP-API, als ein statisches
Element des Dienst-Objekts, ausgeführt. Wenn diese Funktion aufgerufen
ist, tritt das Folgende auf:
- a. Der Körper
der Nachricht wird unter Verwendung der XML-DOM Dienste analysiert.
- b. Da Eigenschaften aufgezählt
sind, werden deren Werte in der Lokal-Zustands-Tabelle für den Dienst
gespeichert.
- c. Ein Ereignis wird zu allen Clients auf einem hohen Niveau
des UPnP-API unmittelbar abgeschickt. Dieses Ereignis enthält die Liste
von Properties bzw. Eigensachaften, die sich geändert haben, und deren neue Werte.
- 6. Der Resubskriptions-Zeitgeber für eine der Subskriptionen der
UCPs läuft
ab. Das Folgende tritt auf:
- a. Eine Resubskriptions-Nachricht wird zusammengestellt. Diese
Nachricht ist sehr ähnlich
zu einer Subskriptions-Nachricht, mit der Ausnahme, dass sie nicht
einen NT- oder Callback-Header umfasst, sondern sie besitzt einen
SID-Header.
- b. Die Anforderung wird zu der CD geschickt.
- c. Die Antwort enthält
den neuen Timeout-Wert.
- d. Der Zeitgeber wird mit diesem Timeout bzw. Zeitablauf zurückgesetzt.
-
UCP-Zustand-Synchronisations-Modelle
-
Durch CD initiiertes NeedsSync
Verfahren
-
Dieses
Verfahren beginnt damit, dass die CD ihren Anfangs-Zustand zu dem
Subscriber sendet, zum ersten Mal, für das ein Ereignis durch den
Dienst zugeführt
wird. UCPs werden an dem Dienst zum ersten Mal teilnehmen, dann
Hinweise von Ereignissen, wie sie auftreten, empfangen. Das erste
Ereignis wird der Anfangs-Zustand
des Dienstes sein. Die UCP-Zustands-Tabelle wird immer synchron
zu diesem Verfahren sein.
-
Wenn
die CD einen Hinweis zu einem Subscriber sendet und einen Fehler
empfängt.
In diesem Fall markiert sie den Subscriber als „NeedsSync" und das nächste Mal, zu dem ein Ereignis
zugeführt
wird, werden alle Ereignisse zu dem Subscriber geschickt. Das Problem
hierbei ist dasjenige, dass der API verfolgen muss, welche Subscriber
eine Synchronisation benötigen
und welche nicht. Der Client dieses API (der UPnP-Dienst) würde benötigen, dass
separate Nachrichten zu jedem Subscriber geschickt werden, und muss
wissen, welche alle Ereignisse benötigten und welche nur diejenigen
wünschten,
die sich änderten.
-
Durch UCP-initiierte
Synchronisation
-
Dieses
Verfahren gibt an, dass die UCP an Ereignis-Hinweisen teilnehmen
sollte, dann eine Funktion aufruft, die den Zustand von dem Dienst
erhielt. Das bedeutet, dass irgendwelche Ereignisse, die in der
Zwischenzeit empfangen wurden, benötigt werden würden, um
gegen den ankommenden Satz von Ereignissen angepasst zu werden,
und um ersetzt zu werden, falls sie älter waren. Dieses Verfahren
führt zu
Synchronisations-Ereignissen dort, wo die UCP Ereignisse empfangen
kann, die neuer sind, allerdings wenn sie nach dem Zustand fragt,
sie eine ältere
Ansicht der Tabelle erhält.
Dies erfordert die Verwendung von Sequenz-Zahlen, um zu bestimmen,
welche Informationen neuer sind. Falls die Ansicht der Tabelle,
die durch die Nachfrage empfangen ist, zu alt ist, muss sie ausgesondert
werden. Alternativ wurden die Properties, die nicht durch den Ereignis-Hinweis
empfangen wurden, nicht überschrieben,
sondern alle anderen Properties würden überschrieben sein. Die Verwendung
von Sequenz-Zahlen macht dies komplizierter.
-
Durch CD initiierte
Synchronisation
-
Dieses
bevorzugte Verfahren nimmt eine einfachere Maßnahme vor. Zu irgendeinem
Zeitpunkt, zu dem die UCP an einem Dienst teilnimmt, wird der Dienst
unmittelbar danach die gesamten Inhalte der Zustands-Tabelle mit
dem ersten Hinweis senden. Dies beugt vor, dass die UCP eine Anfrage
nach der Zustands-Tabelle vornimmt. Darauf folgende Ereignisse aktualisieren
die lokale Zustands-Tabelle an der UCP. Falls die Verbindung verloren
ist, wird die UCP ihre Subskription verlieren. Falls die UCP realisiert,
dass sie nicht ein Ereignis nach Ablauf einer bestimmten Zeitdauer
empfangen hat, wird sie resubskribieren. An diesem Punkt wird die
CD wieder die gesamte Zustands-Tabelle erneut geschickt haben, und
es wird sichergestellt, dass die UCP aktualisiert ist.
-
Beispielhafte
Computer-Hardware
-
24 und die nachfolgende Diskussion sind dazu vorgesehen,
eine kurze, allgemeine Beschreibung eines geeigneten Computers anzugeben,
der in dem vorstehend beschriebenen UPnP-Vorrichtungs-Steuer-Modell
verwendet werden kann. Dieser herkömmliche Computer 820 (wie
beispielsweise Personal-Computer, Laptops, Palmtops oder in der
Hand haltbare PCs, Set-Tops, Server, Mainframes, oder andersartige
Computer) umfasst eine Verarbeitungs-Einheit 821, einen
Systemspeicher 822 und einen System-Bus 823, der
verschiedene System-Komponenten, einschließlich des Systemspeichers,
mit der Verarbeitungs-Einheit 821 verbindet. Die Verarbeitungs-Einheit
kann irgendeiner von verschiedenen, kommerziell erhältlichen
Prozessoren sein, einschließlich
Intel x86, Pentium und kompatibler Mikroprozessoren von Intel, und
anderen, einschließlich
Cyrix, AMG und Nexgen; Alpha von Digital; MIPS von MIPS Technology,
NEC, IDT, Siemens, und anderen; und der Power PC von IBM und Motorola.
Dual-Mikroprozessoren und andere Multi-Prozessor-Architekturen können auch als die Verarbeitungs-Einheit 821 verwendet
werden.
-
Der
System-Bus kann irgendeiner von verschiedenen Typen einer Bus-Struktur sein, einschließlich eines
Speicherbusses oder einer Speicher-Steuereinheit, eines peripheren
Busses und eines lokalen Busses, unter Verwendung irgendeiner Vielzahl
von herkömmlichen
Bus-Architekturen, wie beispielsweise PCI, VESA, AGP, Microchannel,
ISA und EISA, um ein paar zu nennen. Der Systemspeicher umfasst
einen Read Only Memory (ROM) 824 und einen Random Access
Memory (RAM) 825. Ein Basis-Eingabe/Ausgabe-System (BIOS), das
die Basis-Routines besitzt, die dabei helfen, Informationen zwischen
Elementen innerhalb des Computers 820 zu übertragen,
wie beispielsweise während
des Hochfahrens, ist in dem ROM 824 gespeichert.
-
Der
Computer 820 umfasst weiterhin ein Festplatten-Laufwerk 827,
ein Magnetplatten-Laufwerk 828, z. B. um von einer entnehmbaren
Platte 829 zu lesen oder darauf zu schreiben, und ein Laufwerk 830 für eine optische
Platte, z. B. zum Lesen einer CD-ROM Platte 831 oder zum
Lesen von anderen, optischen Medien oder zum Schreiben darauf. Das
Festplatten-Laufwerk 827, das Magnetplatten-Laufwerk 828 und
das Laufwerk 830 für
die optische Platte sind mit dem System-Bus 823 durch eine
Festplatten-Laufwerk-Schnittstelle 832, eine Magnetplatten-Laufwerk-Schnittstelle 833 und
eine Optik-Laufwerk-Schnittstelle 834, jeweils, verbunden.
Die Laufwerke, und deren zugeordnete, mittels Computer lesbare Medien,
bilden eine nicht flüchtige Speicherung
von Daten, Daten-Strukturen, durch einen Computer ausführbare Instruktionen,
usw., für
den Computer 820. Obwohl sich die Beschreibung der mittels
Computer lesbaren Medien vorstehend auf ein Festplatten-Laufwerk, eine entnehmbare
Magnetplatte und eine CD bezieht, sollte durch Fachleute auf dem
betreffenden Fachgebiet ersichtlich werden, dass andere Typen von
Medien, die durch einen Computer lesbar sind, wie beispielsweise
magnetische Kassetten, Flash-Memory-Cards, Digital-Video-Disks,
Bernoulli-Kassetten, und dergleichen, in der beispielhaften Betriebsumgebung
auch verwendet werden können.
-
Eine
Anzahl von Programm-Modulen kann in den Laufwerken und dem RAM 825,
einschließlich
einem Betriebssystem 835, einem oder mehreren Anwendungs- Programmen 836,
anderen Programm-Modulen 837 und Programm-Daten 838,
gespeichert sein.
-
Ein
Benutzer kann Befehle und Informationen in den Computer 820 über eine
Tastatur 840 und eine Hinweis-Vorrichtung, wie beispielsweise
eine Mouse 842, eingeben. Andere Eingabe-Vorrichtungen
(nicht dargestellt) können
ein Mikrofon, einen Joystick, ein Game-Pad, eine Satellitenschüssel, einen
Scanner, oder dergleichen, umfassen. Diese und andere Eingabe-Vorrichtungen
sind oftmals mit der Verarbeitungs-Einheit 821 über eine
Seriell-Port-Schnittstelle 846 verbunden, die mit dem System-Bus
verbunden ist, können
allerdings durch andere Schnittstellen verbunden sein, wie beispielsweise
einem Parallel-Port, einem Game-Port oder einem Universal-Serial-Bus
(USB). Ein Monitor 847 oder ein anderer Typ einer Anzeige-Vorrichtung ist auch mit
dem System-Bus 823 über
eine Schnittstelle, wie beispielsweise einen Video-Adapter 848,
verbunden. Zusätzlich
zu dem Monitor umfassen Computer typischerweise andere, periphere
Ausgabe-Vorrichtungen (nicht dargestellt), wie beispielsweise Lautsprecher
und Drucker.
-
Der
Computer 820 arbeitet in einer vernetzten Umgebung unter
Verwendung von logischen Verbindungen zu einem oder mehreren entfernten
Computer(n), wie beispielsweise einem entfernten Computer 849.
Der entfernte Computer 849 kann ein Server, ein Router,
eine Peer-Vorrichtung oder ein anderer, gemeinsamer Netzwerk-Knoten
sein, und umfasst typischerweise viele oder alle der Elemente, die
in Bezug auf den Computer 820 beschrieben sind, obwohl
nur eine Speichervorrichtung 850 in 24 dargestellt
worden ist. Die logischen Verbindungen, gezeigt in 24, umfassen ein Local Area Netzwerk (LAN) 851 und
ein Wide Area Netzwerk (WAN) 852. Solche vernetzten Umgebungen
sind in Büros,
in weltweiten Computer-Netzwerken,
in Intranets und dem Internet üblich.
-
Der
Computer 820 ist, wenn er in einer LAN-Netzwerkumgebung
verwendet wird, mit dem lokalen Netzwerk 851 über eine
Netzwerk-Schnittstelle oder einen Adapter 853 verbunden.
Der Computer 820 umfasst, wenn er in einer WAN-Netzwerk-Umgebung verwendet
ist, typischerweise ein Modem 854 oder eine andere Einrichtung
zum Einrichten von Kommunikationen (z. B. über das LAN 851 und
einen Gateway- oder Proxy-Server 855) über das Wide Area Network 852,
wie beispielsweise das Internet. Das Modem 854, das intern oder
extern vorhanden sein kann, ist mit System-Bus 823 über die
Seriell-Port-Schnittstelle 846 verbunden. In einer vernetzten
Umgebung können
Programm-Module, gezeigt relativ zu dem Computer 820, oder
Bereiche davon, in der entfernten Speichervorrichtung gespeichert
sein. Es wird ersichtlich werden, dass die Netzwerk-Verbindungen,
die dargestellt sind, beispielhaft sind, und andere Mittel zum Einrichten
einer Kommunikations-Verbindung zwischen den Computern können verwendet
werden.
-
Entsprechend
der Praxis von Fachleuten auf dem Gebiet der Computer-Programmierung wird
die vorliegende Erfindung nachfolgend in Bezug auf Wirkungen und
symbolische Darstellungen von Operationen, die durch den Computer 820 durchgeführt werden,
beschrieben, ohne dass dies in anderer Weise angezeigt ist. Solche
Vorgänge
und Operationen werden manchmal dahingehend angegeben, dass sie
mittels Computer ausgeführt
werden. Es wird ersichtlich werden, dass die Vorgänge und
die symbolisch dargestellten Operationen die Manipulation durch
die Verarbeitungs-Einheit 821 von elektrischen Signalen
umfassen, die Daten-Bits darstellen, was eine sich ergebende Transformation
oder Reduktion der Darstellung des elektrischen Signals bewirken
wird und die Beibehaltung von Daten-Bits an Speicherstellen in dem
Speichersystem (einschließlich des
Systemspeichers 822, dem Festplatten-Laufwerk 827,
den Floppy-Disks 829 und dem CD-ROM 831), um dadurch
die Operation des Computersystems zu rekonfigurieren oder in anderer
Weise zu ändern,
ebenso wie eine andere Verarbeitung von Signalen. Die Speicherstellen,
wo Daten-Bits beibehalten werden, sind physikalische Stellen, die
bestimmte elektrische, magnetische oder optische Eigenschaften,
entsprechend zu den Daten-Bits, haben.
-
Beispielhafte, einbezogene
Rechenvorrichtung
-
Die 25 und 26 sind
dazu vorgesehen, eine kurze, allgemeine Beschreibung einer geeigneten, einbezogenen
Rechenvorrichtung 900 anzugeben, die in der dargestellten
Ausführung
der Erfindung verwendet werden kann. Die einbezogene Rechenvorrichtung 900 kann
irgendeine einer Vielfalt von Vorrichtungen sein, die Elektroniken
einsetzen, um Operations-Funktionen (Operations-Schaltung 906)
zu steuern, und in denen Rechen- und Netzwerk-Fähigkeiten einbezogen sind.
Zum Beispiel können
Vorrichtungen, in denen Rechen- und Netzwerk-Funktionen eingebettet
sind, Kommunikations-Vorrichtungen (z. B. Telefone, Zellen-Telefone,
Audio- und Video-Konferenzsysteme,
Zwei-Wege-Funkgeräte,
usw.), eine Büroausrüstung (Drucker, Fax-Maschinen,
Kopierer, Diktiergeräte,
usw.), eine Audio-Video-Ausrüstung (Audio-Video-Aufzeichnungsgeräte und Abspielgeräte, einschließlich Fernsehgeräte, Funkempfänger, Kompakt-Disk
(CD), Digital-Video-Disks (DVD), Camcorder, usw.), Entertainment-Vorrichtungen
(Set-Top-Boxen, Spiel-Konsolen, usw.), Umgebungs-Steuergeräte (Thermostate,
Heiz/Ventilations/Klimatisierungs-Geräte,
Lichtschalter usw.), Sicherheitssysteme, Haushaltsgeräte (Kaffeemaschinen,
Geschirrspülmaschinen,
Waschmaschinen/Trockner), Kraftfahrzeuge, Geräte von öffentlichen Einrichtungen (Zeichen,
Verkehrssignale, usw.), eine Herstellgerätschaft, und viele andere,
umfassen.
-
Wie 25 zeigt, umfasst die Vorrichtung 900 eine
Verarbeitungs-Einheit 902 und einen Speicher 904,
um eine eingebettete Rechenfähigkeit
zu erreichen. Die Verarbeitungs-Einheit 902 besitzt Hardware-Schnittstellen
zu der Operations-Schaltung 906,
die Vorrichtungs-Funktionen betätigt.
Die Verarbeitungs-Einheit 902 kann ein Mikroprozessor oder
eine Mikrosteuereinheit sein, wie sie beispielsweise von Intel, Motorrola,
IBM, und anderen, erhältlich
ist. Der Speicher 904 setzt vorzugsweise einen RAM und
einen ROM ein, um die Software und Daten für einen Grund-Arbeitscode ebenso
wie für
Benutzer-Anwendungen zu halten.
-
Die
Vorrichtung 900 umfasst auch einen Netzwerk-Adapter 908 zum
Verbinden mit einem Netzwerk-Medium 910, das mit dem Computer-Netzwerk
verbunden ist, in dem die autorisierende Namen-Registrierung (beschrieben
nachfolgend) entsprechend der (Erfindung ausgeführt wird. Ein Netzwerk-Adapter 908 kann
eine Netzwerk-Schnittstellen-Karte (oder ein Chip-Satz, integriert
auf einer einzelnen Leiterplatte mit der Verarbeitungs-Einheit 902)
sein, geeignet für
das bestimmte Netzwerk-Medium 910. Das Netzwerk-Medium kann
von irgendeinem verschiedener verdrahteter oder drahtloser Netzwerk-Medien,
einschließlich
dem Ethernet, IEEE 1394 (eine a.k.a. Firewire), einer Funkfrequenz
(einschließlich
Satellit, Zelle, Pager, kommerzielles Signal-Sideband, usw.), einem
Energieversorgungs-Leitungsträger
(PLC), einer Telefonleitung, eines Fernsehkabels, unter anderen,
sein.
-
Wie
nun (26 zeigt, besitzt die eingebettete
Computer-Vorrichtung 100 (25)
eine Software-Architektur 120, die mit dem vorstehend beschriebenen
UPNP-Vorrichtungs-Steuermodell übereinstimmt.
UPNP liefert einen Mechanismus für
die eingebettete Rechenvorrichtung, um in dem Internet zu arbeiten,
ebenso wie in Netzwerken, die keinen Administrator und keine Verbindung
mit dem Internet haben, und demzufolge keinen Zugang zu Konfigurations-Diensten, ähnlich dem
Dynamic Host Configuration Protocol (DHCP). DHCP ist ein Mechanismus,
um Vorrichtungen mit Konfigurations-Informationen zu versehen, die
benötigt
werden, um auf das Internet zuzugreifen. Der Mechanismus funktioniert über die
Verwendung einer Multicast-Anforderung von Konfigurations-Informationen,
auf die allgemein mit einer IP-Adresse und einer DNS-Server-Stelle
geantwortet wird. Zusätzliche
Informationen können
nur in der Antwort zurückgeführt werden.
-
In
nicht-konfigurierten (ad-hoc) Netzwerken verwendet UPnP das AutoIP
Protokoll. AutoIP ist eine Erweiterung zu DHCP, die Vorrichtungen
ermöglicht,
IP-Adressen beim
Nichtvorhandensein eines DHCP-Servers oder einer ähnlichen
IP-Konfigurations-Autorität zu beanspruchen.
IP-Adressen werden von einem umgekehrten Bereich beansprucht, der
nicht zugelassen ist, um auf dem offenen Internet übertragen
zu werden; demzufolge sind sie nur gut für ein lokales Netzwerk. Die
eingebettete Rechenvorrichtung 100 beansprucht eine Adresse
durch zufälliges
Erzeugen einer Adresse in dem umgekehrten Bereich und dann Vornehmen
einer ARP-Anforderung,
um zu sehen, ob irgendein anderer auch bereits diese Adresse beansprucht
hat. AutoIP-Systeme werden kontinuierlich das Vorhandensein eines
DHCP-Servers prüfen, so
dass dann, falls einer jemals online kommen sollte, alle AutoIP-Vorrichtungen versuchen
werden, deren IP-Adressen zu einem, geliefert durch den DHCP-Server,
umzuschalten. Dies ermöglicht
einem Netzwerk, in einer Isolation zu arbeiten, verbunden mit dem
Internet, mit einer DHCP-Unterstützung,
um dann zu einer Isolation zurückgeführt zu werden.
Dieser Typ eines Szenariums wird in Häusern üblich sein, die einen Anwähl-Zugang
verwenden werden.
-
Das
UPNP-Protokoll verwendet auch Multicast-DNS zum Adressieren der
eingebetteten Rechenvorrichtung 900. Das Internet Domain
Name System (DNS) ist ein Auflistungssystem, das durch eine Person
lesbare Domäne-Namen, ähnlich microsoft.com,
in deren äquivalente
IP-Adresse translatiert. Die meisten zusammenarbeitenden Intranets
führen
eine moderne Version derselben Technologie aus, um dieselben Dienste
bereitzustellen. In kleinen Netzwerken, wie beispielsweise zu Hause
oder in einem kleinen Geschäft,
können DNS-Server
nicht existieren, ähnlich
Multi cast-DNS, die DNS-Anforderungen „Multicast" sind. Dies ermöglicht einer Maschine, Anforderungen
für deren
eigenen Namen zu sehen und darauf zu antworten. Ähnlich AutoIP wird nur Multicast
DNS verwendet, wenn ein DNS-Server nicht verfügbar ist. (Für mehr Informationen
siehe B. Woodcock, Zocolo, und B. Manning, Multicast Discovery of
DNS Services, IETF Internet Draft, „draft-manning-multicast-dns-01.txt".)
-
UPNP
führt einen
Peer-Discovery-Mechanismus aus, der das Simple-Service-Discovery-Protocol (SSDP)
zum Aufdecken von Vorrichtungen auf IP-Netzwerken verwendet. SSDP
basiert auf Profilen. Ein einzelner Identifizierer spezifiziert
ein Profil, das einen Kontrakt zwischen dem Client und dem Dienst
spezifiziert (z. B. operationsmäßige Funktion,
bereitgestellt für
die eingebettete Rechenvorrichtung). Durch Identifizieren von sich
selbst mit dem Profil zeigt der Dienst eine Einwilligung mit dem
zugeordneten Kontrakt bzw. Vertrag an.
-
Die
Verwendung eines einzelnen Identifizierers macht es möglich, ein
extrem einfaches Aufdeckungs-System auszuführen. Clients schicken ein
User Datagram Protocol (UDP) Multicast Paket, den Identifizierer
des erwünschten
Dienstes enthaltend, auf einem bestimmten Standard-Kanal ab. Dienste,
die auf den Standard-Kanal hören,
lesen die Anforderung, sehen, ob sie den Dienst bereitstellen, und
antworten, falls dies der Fall ist.
-
UPNP
stellt auch einen Directories Mechanismus bereit, um eine Aufdeckung
zu ermöglichen,
um zu skalieren – zu
dem gesamten Internet, falls benötigt.
Wenn vorhanden, wird ein Directory alle ankommenden Dienst-Anforderungen
lesen und wird auf sie selbst antworten. Dies erfordert, dass sich
alle Dienste (z. B. die eingebettete Rechenvorrichtung 900)
mit dem Directory registrieren, so dass das Directory in der Lage
ist, geeignet in deren Namen zu antworten. Das Directory ist auch
für eine
Kommunikation mit anderen Directories bzw. Datei-Verzeichnissen
verantwortlich, um zu bestimmen, ob der Dienst innerhalb des lokalen
Netzwerks, des WAN's
und potenziell des Internets verfügbar ist.
-
Um
das Discovery-Protokoll zu vereinfachen, werden Directories als
Proxies behandelt. Ein Proxy ist ein Dienst, der Anforderungen akzeptiert
und die Verantwortung dafür übernimmt,
die geeignete Antwort zu finden. Wenn ein Client online kommt, wird
er ein Discovery für
das Proxy durchführen.
Falls das Proxy vorhanden ist, wird der Client alle zukünftigen
Discovery-Anforderungen zu dem Proxy schicken. Falls das Proxy nicht
vorhanden ist, dann wird der Client alle Discovery-Anforderungen zu
dem reservierten Discovery-Multicast-Kanal senden. Ungeachtet des
Vorhandenseins eines Proxy werden das Anforderungs-Format des Clients
und Prozeduren immer dieselben sein. Der einzige Unterschied wird
die Adresse sein, zu der der Client seine Anforderungen schickt.
Für Dienste
ist die Differenz zwischen einem als Proxy und eines nicht als Proxy aufgebauten
Netzwerks deren Erfordernis, auf Discovery-Anforderungen zu antworten.
Auf einem Proxy-Netzwerk müssen
Dienste nichts unternehmen, wenn sie einmal mit dem Proxy registriert
sind. An einem Nicht-Proxy-Netzwerk werden sie Discovery-Anforderungen
direkt beantworten.
-
SSDP
verwendet das auf dem UDP und Transmission Control Protocol (TCP)
basierende Hypertext Transport Protocol (HTTP), um ein Service-
bzw. Dienst-Discovery
bereitzustellen. SSDP verwendet einen Uniform Resource Identifier
(URI), um den Dienst zu repräsentieren,
und das OPTIONS Verfahren, um ein Discovery zu schaffen. SSDP wird
auch eine Unterstützung
für Proxies
bereitstellen. Diese Proxies, die real nur Fronts bzw. Zeichensätze für Directories
sind, richten Discovery-Anforderungen
zu sich selbst zurück.
Es ist die Aufgabe des Proxy, Anzeige-Anforderungen zusammenzustellen, um
zu bestimmen, welche Dienste verfügbar sind, ebenso wie mit anderen
Proxies zu kommunizieren, um eine Entdeckung bzw. ein Discovery
eines skalierbaren Dienstes zu schaffen.
-
Der
Discovery-Prozess führt
nur die Basis-Informationen zurück,
die benötigt
werden, um die eingebettete Rechenvorrichtung zu verbinden. Wenn
einmal ein Dienst seine Peers entdeckt hat, muss der Dienst oftmals
mehr Informationen herausfinden, um am besten damit zu arbeiten.
Der Beschreibungs-Prozess führt ein
Schema zurück,
das beschreibende Daten über
den Dienst liefert.
-
Ein
Schema ist eine strukturierte Daten-Definition, die einen Satz von
strukturierten Werten definiert, der beschreibende Informationen über einen
Dienst liefert. UPNP verwendet Extensible Markup Language (XML)
für ein
Schema, da ein selbst beschreibendes, strukturiertes Daten-Format
der XML das Niveau für
eine Ausdrucks-Fähigkeit
und Verlängerbarkeit,
benötigt
durch ein universelles Schema und Daten-Fonnat, liefert.
-
Dementsprechend
unterstützt
UPNP eine automatische Netzwerk-Einführung, was bedeutet, dass die Vorrichtungen
und deren in Bezug stehende Dienste die Fä higkeit haben, sich selbst
zu beschreiben und eine automatische Konfiguration zu ermöglichen.
Wenn eine Vorrichtung in ein Computer-Netzwerk eingesteckt ist, konfiguriert
die Vorrichtung automatisch sich selbst und erhält eine TCP/IP-Adresse. Die
Vorrichtung zeigt dann deren Vorhandensein zu anderen Vorrichtungen
an, die bereits auf dem Netzwerk vorhanden sind, unter Verwendung
eines einfachen Discovery-Protokolls, basierend auf dem Internet
HTTP Protokoll, und ist unmittelbar bereit, ihre Dienste gemeinsam
mit irgendeiner Vorrichtung, die sie anfordert, zu teilen.
-
Mit
UPNP wird von Vorrichtungs-Entwicklern nicht gefordert, spezifische
Vorrichtungs-Treiber zu entwickeln, um unter UPNP zu arbeiten. Die
Aufgabe eines Präparierens
einer Vorrichtung für
einen Betrieb in dieser Netzwerk-Umgebung ist demzufolge sehr einfach.
Weiterhin ermöglicht
eine dynamische Erfassung ein Betriebssystem, um unmittelbar unter
Verwendung von hinzugefügten
Vorrichtungen oder ein Anhalten, unter Verwendung von entfernten
Vorrichtungen ohne ein erneutes Booten, zu beginnen.
-
UPNP-Vorrichtungen
unterstützen
eine automatische Entdeckung (Discovery), Identifikation und Konfiguration,
um eine Nicht-Arbeitsfähigkeit
in der Umgebung zu Hause zu erreichen, müssen allerdings korrekt in
einem verwalteten, zusammenarbeitenden Netzwerk arbeiten. Vorrichtungen
können
als Netzwerk aufgebaut werden, anstelle davon, dass sie direkt mit
einem PC verbunden werden, und Vorrichtungen sind alles autonome
Mitglieder auf dem Netzwerk, in der Lage, miteinander zu sprechen,
und Informationen auszutauschen. UPNP liefert eine vereinheitlichte
Art und Weise, um Directory-Dienste mit einer automatischen Konfiguration
durchzuführen.
Die Fähigkeit
für einen
einfachen Discovery-Mechanismus, verwendet in einer Heim-Umgebung, liefert
die Fähigkeit
für irgendeine
Vorrichtung, ein Knoten auf dem globalen Internet zu werden. Zusätzlich können Directory-Dienste
verknüpft
werden, wenn sie in der zusammenarbeitenden Umgebung verfügbar werden.
-
UPNP
schafft einen gemeinsamen Satz von Schnittstellen zum Zugreifen
auf Vorrichtungen und Dienste, was die betriebsmäßige Vereinheitlichung von
diversen Medien-Typen ermöglicht.
Kommunikations-Protokolle für
Universal Plug an Play basieren auf Industrie-Standards, insbesondere
Schlüssel-Internet-Standards,
wie beispielsweise TCP/IP, HTML, XML, HTTP, DNS, LDAP, und anderen.
Individuelle Ausführungen
für bestimmte
Netzwerke und Busse werden auf eingerichteten Protokollen aufgebaut.
-
Wie
in 26 dargestellt ist, umfasst die Software-Architektur 920 der
eingebetteten Rechenvorrichtung 900 (25) die folgenden Software-Code-Module, die UPNP
ausführen:
Vorrichtungs-Funktionen 922, einfaches Discovery 924,
Hypertext Transport Protocol (HTTP) 925, Transmission Control
Protocol/Internet Protocol (TCP/IP) Stapel 926, Autonet 928,
Dynamic Host Configuration Protocol (DHCP) 930 und physikalische
Medien 910 (auch in 25 dargestellt).
Die Vorrichtungs-Funktionen 922 sind ein Software-Code-Modul,
um die Funktionalität
der Vorrichtung auszuführen.
Zum Beispiel kann dort, wo die eingebettete Rechenvorrichtung ein
VCR ist, der Vorrichtungs-Funktions-Code ein Code zum Ausführen von
Start-, Stopp-, Pause-, Record- und andere Funktionen ausführen, die
der VCR durchführen
kann.
-
Das
einfache Discovery 924 ist ein Software-Code-Modul (ungefähr 4 Kbytes),
das einen einfachen Discovery-Vorgang (beschrieben nachfolgend)
für eine
automatische Netzwerk-Einführung
unter dem UPNP-Protokoll ausführt.
-
Der
einfache Discovery-Vorgang schafft zusätzlich eine Extensible Markup
Language (XML) Format Vorrichtungs-Beschreibung, die zu Clients
heruntergeladen wird, die auf die Vorrichtung zugreifen, um eine
Aktivierung der Vorrichtungs-Funktionalität von dem
Client zu ermöglichen.
XML ist eine textmäßige, auf
einem Tag basierende Auszeichnungs-Sprache. Sie wurde ursprünglich dahingehend
ausgelegt, dass sie die „webby"-Vereinfachung von
SGML (Standard Generalizied Markup Language) ist, und ist deshalb
dazu vorgesehen, dazu verwendet zu werden, „Vokabularien" von Tags zu erzeugen,
die dazu verwendet werden können, eine
semantische Auszeichnung für
Dokumente anzuwenden, wie beispielsweise wer der Autor war, was
einen Absatz bildet (semantisch nicht von einem Anzeige-Betrachtungs-Punkt),
wann der Autor zum letzten Mal Frühstück hatte, usw.. (Für mehr Informationen
siehe A. Laymann, E. Jung, E. Maler, H. Thompson, J. Paoli, J. Tigue,
N. H. Mikula, S. De Rose, „XML-Data", W3C Note, „NOTE-XML-data-0105"). In dem Zusammenhang von
UPNP wird XML dazu verwendet, die Beschreibung von Diensten und
Fähigkeiten
der einbezogenen Rechenvorrichtungen zu erzielen. Die einbezogene
Rechenvorrichtung macht deren Merkmale für Clients sichtbar, indem ihre
XML-Vorrichtungs-Beschreibung bereitgestellt wird, die der Client
verwenden kann, um Vorrichtungs-Funktionen 922 zu aktivieren.
Zum Beispiel kann, falls die Vorrichtung eine Kamera ist, der Browser des
Client direkt die Kamera anweisen, herein/heraus zu zoomen oder
einen Kontrast einzustellen, unter Verwendung des Mechanismus von
XML.
-
Die
XML-Vorrichtungs-Beschreibung kann Links (über einen gleichförmigen Ressource-Lokator
oder eine URL-Adresse) zu einem begleitenden Blatt im XSL-Format liefern. Blätter im
XSL-Stil werden dazu verwendet, die Daten in unterschiedlichen Arten
und Weisen zu präsentieren,
d. h. die Style-Blätter
werden bei unterschiedlichen Ansichten derselben Daten angewandt.
Zum Beispiel kann, falls die Vorrichtung ein Datei-System enthält, ein
Style-Blatt die Datei-Abschnitte darstellen; ein anderes stellt
die Datei-Größen in einer bestimmten
Art eines Diagramms dar; und ein noch anderes Style-Blatt könnte Miniaturbilder
dieser Bild-Dateien erstellen.
-
Das
HTTP 925 ist ein Software-Code-Modul (ungefähr 20 Kbytes),
das das Standard-HTTP-Protokoll ausführt, was ein offener Standard-Mechanismus
für eine
auf einer Client/Server-Nachricht basierenden Kommunikation ist.
HTTP dient zu einer Proxy-Bildung, einer Inhalt-Übergabe und einer Sicherheit.
[Für mehr
Informationen siehe R. Fielding, J. Gettys, J. Mogul, H. Frystyk,
T. Berners-Lee, Hypertext Transfer Protocol – HTTP/1.1, IETF/RFC 2068 (Januar
1997).] Der TCP/IP-Stapel 926 führt
die Standard-TCP/IP-Netzwerk-Protokolle für eine Kommunikation auf dem
Computer-Netzwerk aus. Das Internet-Protokoll (IP) ist ein Gründungs-Protokoll
des Internets. Es definiert, wie eine einzelne Nachricht von einer
Quelle über
Null oder mehr Router zu deren Endbestimmung zu schicken ist. Sie
deckt Dinge ab, wie beispielsweise Nachricht-Länge, Nachricht-Fragmentierung,
Adressierung und Dinge, die ein Routing betreffen. Das Transmission
Control Protocol (TCP) ist ein auf IP basierendes Protokoll, das
eine Unterstützung
für die
zuverlässige,
geordnete Lieferung von Nachrichten über IP bildet. Zusätzlich sind
ein User Datagram Protocol (UDP) und Internet Group Management Protocol
(IGMP) Multicast-Sende/Hör-Fähigkeit
in der Umsetzung enthalten.
-
Das
Autonet 928 ist ein Software-Code-Modul, das auch für eine automatische
Netzwerk-Einführung über AutoIP
in dem UPNP-Protokoll verwendet wird. Autonet verwendet einen vordefinierten
Satz von IP-Adressen, und, wenn eine Vorrichtung mit dem Netzwerk
verbunden ist, pingt sie eine Adresse in diesem Adressen-Raum. Falls
sie keine Antworten erhält,
nimmt die Vorrichtung an, dass die Adresse verfügbar ist und weist sie sich
selbst zu. Um diese Funktionalität
noch nützlicher
zu machen, wird sie mit Multicast-DNS kombiniert, wo die Vorrichtung
selbst ihren eigenen Namen hält.
Demzufolge ist es sogar nicht notwendig, zu bestimmen, welche IP-Adresse der Vorrichtung
zu sich selbst zugeordnet ist, da deren Name immer anstelle davon
verwendet werden kann. Ein IP-Multicast ist ein Mechanismus, um
eine einzelne Nachricht zu mehreren Empfängern zu schicken. Ein IP-Multicasting
ist besonders nützlich
für Discovery-Operationen,
wo man nicht exakt weiß,
wer die Informationen besitzt, die man sucht. In solchen Fällen kann
man eine Anforderung zu einer reservierten IP-Multicast-Adresse
schicken. Irgendwelche Dienste, die die angeforderten Informationen
liefern können,
werden auch zu der Multicast-Anforderung subskribieren bzw. teilnehmen
und demzufolge in der Lage sein, die Informations-Anforderung zu hören und
geeignet zu antworten. Multicast-DNS ist ein Vorschlag für das IETF
basierend auf Regeln zum Vornehmen normaler DNS-Anforderungen unter
Verwendung von Multicast-UDP. (Für
mehr Informationen siehe B. Woodcock, B. Manning, Multicast Discovery
of DNS Services, IETF Internet Draft, „draft-manning-multicast-dns-01.txt".)
-
Das
DHCP 930 ist ein Software-Code-Modul, das das Dynamic Host
Configuration Protocol (DHCP) umsetzt, was ein Mechanismus ist,
um Vorrichtungen mit Konfigurations-Informationen auszustatten,
die benötigt
werden, um auf das Internet zuzugreifen. Der Mechanismus funktioniert über die
Verwendung einer Multicast-Anforderung
für Konfigurations-Informationen,
auf die allgemein mit einer IP-Adresse und einer DNS-Server-Stelle
geantwortet wird. Zusätzliche
Informationen können
nur in der Antwort zurückgeführt werden.
-
Die 27 und 28 stellen
Vorgänge 934, 940 pro
UPNP-Protokoll für
eine automatische Netzwerk-Einführung
der eingebetteten Rechenvorrichtung 900 (25) in eine ad hoc (wo die Vorrichtung keine konfigurierte
IP-Adresse besitzt) und eine konfigurierte Computer-Netzwerk-Umgebung,
jeweils, dar. Der automatische Netzwerk-Einführungs-Vorgang richtet eine
geeignete Konfiguration (z. B. mit einer IP-Adresse) der eingebetteten
Rechenvorrichtung unter Verbindung mit einem Server-Computer auf
einem Computer-Netzwerk ein, um so in der Lage zu sein, auf die Vorrichtung
von einem Client aus zuzugreifen. Die Prozesse 934, 940 umfassen
fünf Phasen:
Anzeige, Entdeckung, Antwort auf die Entdeckung, bzw. das Discovery, Autonet
und Vorrichtungs-Beschreibung.
-
In
der Announce- bzw. Anzeige-Phase schickt die eingebettete Rechenvorrichtung 900 ein
kleines Multicast-Paket ab, so dass andere Vorrichtungen dieses
auf dem Netzwerk finden können.
Das Multicast-Nachrichten-Paket sagt im Wesentlichen „ich bin
hier, ich bin (zum Beispiel) eine Kamera, und du kannst mich an
dieser IP-Adresse oder dem URL erreichen".
-
In
der Discovery-Phase hört
die eingebettete Rechenvorrichtung 900 auf ein Discovery-Paket,
das von einem einfachen Discovery-Client kommt, d. h. die Vorrichtung
zeigt sich selbst an, wobei sie dann auf ein Discovery hört. Das
Discovery-Paket
wird auch durch Multicast verschickt. In Antwort auf ein Discovery
hört die eingebettete
Rechenvorrichtung 900 auf die Multicast-Adresse und analysiert
dann die Informationen von einer einzelnen Simple Discovery Anforderung,
um zu entscheiden, ob die Anforderung für diese Art einer Vorrichtung
ist. Falls dies der Fall ist, dann schickt die Vorrichtung 100 ein
Antwort-Datenpaket zurück,
das die folgenden Informationen enthält: die IP-Adresse oder den
URL, wo sie erreicht werden kann; Identifikation deren eigenen Vorrichtungs-Typs;
und die Discovery-Paket-ID, so dass der anfordernde Client weiß, welche
Anforderung beantwortet werden soll.
-
An
der Autonet-Phase verwendet das Autonet-Modul 928 der eingebetteten
Rechenvorrichtung 900 einen vordefinierten Satz von IP-Adressen
und, wenn die Vorrichtung mit dem Netzwerk verbunden ist, pingt sie
eine Adresse in diesem Adressen-Raum. Falls keine Antwort empfangen
wird, nimmt die Vorrichtung 900 an, dass die Adresse verfügbar ist
und sie ordnet sie sich selbst zu. Alternativ kann die Vorrichtung 900 Autonet mit
Multicast DNS kombinieren und kann selbst ihren eigenen Namen halten.
In diesem Fall ist es nicht notwendig, zu bestimmen, welche IP-Adresse die Vorrichtung
sich selbst zuordnete, da deren Name immer anstelle davon verwendet
wird.
-
Sowohl
die Announce- als auch Discovery-Pakete enthalten auch ein Link
oder eine URL zu einer XML-Datei, die durch die eingebettete Rechenvorrichtung
an der Vorrichtungs-Beschreibungs-Phase verwendet wird, um sich
selbst zu beschreiben (d. h. deren Funktionalität). Diese XML-Daten enthalten
alle Fakten über
die Vor richtung. XML kann auch URLs haben, die zu Blättern mit
geeignetem Stil (XLS Dateien) hinweisen, die für eine optimale Präsentation
verwendet werden. Die XSL-Style-Blätter werden
dazu verwendet, die Daten in unterschiedlichen Arten und Weisen
zu präsentieren,
d. h. die Style-Blätter
werden dazu angewandt, unterschiedliche Ansichten der Daten zu präsentieren.
Zum Beispiel kann, wenn die Vorrichtung ein Datei-System enthält, ein
Style-Blatt die Datei-Auswahlen darstellen; ein anderes stellt die
Datei-Größen in einer
bestimmten Art eines Diagramms dar; ein noch anderes Style-Blatt
könnte
Miniatur-Ansichten dieser Bild-Dateien erstellen.
-
Beispielhafter
Client
-
Wie
nun 29 zeigt, besitzt ein Client,
der auf die eingebettete Rechenvorrichtung 900 über das Computer-Netzwerk
zugreift und verwendet, eine beispielhafte Client-Software-Architektur 950,
die Software-Code-Module für
Anwendungen 952, ein einfaches Discovery 954,
XML 955, LDAP 956, TCP/IP-Stapel 958 und
eine Netzwerk-Schnittstellen-Karte (NIC) 960, die eine
physikalische Verbindung mit dem Computer-Netzwerk schafft, umfasst.
Die Applikationen 952 sind ein Software-Code-Modul, das Benutzer-Schnittstellen-Merkmale
zum Lokalisieren erwünschter
Vorrichtungen (z. B. einer eingebetteten Rechenvorrichtung 900) und
Diensten auf dem Computer-Netzwerk schafft, und auch Benutzer-Schnittstellen-Merkmale,
um mit der lokalisierten Vorrichtung oder dem Dienst zusammenzuarbeiten.
Die Applikationen 952 können
einen Internet-Browser, wie beispielsweise den Microsoft Internet
Explorer, umfassen, der die XML-Vorrichtungs-Beschreibung entsprechend
einem zugeordneten XSL-Style-Blatt für eine Interaktion mit der
eingebetteten Rechenvorrichtung und einer Aktivierung deren betriebsmäßiger Funktionalität präsentiert.
-
Das
einfache Discovery 954 ist ein Modul, das die vorstehend
beschriebene, einfache Discovery pro UPNP-Protokoll ausführt. Das
XML 955 ist ein Modul, das die XML-Vorrichtungs-Beschreibung
und die XSL-Style-Blätter
für eine
Präsentation
in der Benutzer-Schnittstelle der Anwendung verarbeitet. LDAP 956 führt das
Standard-LDAP-Directory-Protokoll
für eine
Namen-Durchsicht aus. TCP/IP-Stapel 958 führt das TCP/IP-Protokoll
für Kommunikationen über das
Computer-Netzwerk aus.
-
Erläuternde, überall vorhandene Rechenumgebung
-
30 stellt eine überall vorhandene Rechenumgebung 1000 dar,
wie sie beispielsweise in einem Haus, in einem Büro oder an einem öffentlichen
Ort instal liert sein kann, die eine große Anzahl von einbezogenen
Rechenvorrichtungen umfasst, wie die dargestellte Vorrichtung 900 (25). Die überall
vorhandene Rechenumgebung 1000 umfasst Personal-Computer 1002, 1004 (z.
B. von dem Typ, der in 24 dargestellt ist),
verbunden über
ein Local Area Network (LAN) 1006. Der PC 1002 ist über einen
universellen, seriellen Bus 1016 mit einem Telefon-Modem 1010,
einer XDSL-Schnittstelle 1011 oder einem Kabel-Modem 1012 verbunden,
die wiederum eine Verbindung mit dem Computer-Netzwerk, z. B. dem
Internet, schaffen.
-
Verschiedene,
eingebundene Rechenvorrichtungen verbinden sich auch mit dem Computer-Netzwerk über verschiedene
Netzwerk-Verbindungen mit den PCs 1002, 1004.
Diese umfassen eine Audio-Vorrichtung 1014 (z. B. Lautsprecher,
Radio-Tuner, Mikrofon)
und einen Drucker 1015, die den PC 1004 über eine
USB 1017 verbinden. Auch verbinden sich eine digitale Kamera 1020,
ein in der Hand haltbarer PC (H/PC) 1021 und eine andere,
persönliche
Rechenvorrichtung 1022 über
einen Infrarot-Port (IRDA) 1024, der auch den PC 1004 über die
USB 1017 verbindet. Auch sind Lichtschalter 1030 und
entsprechende Haushaltsgeräte über ein auf
einer A/C-Energieversorgungs-Leitung
basierendem Netzwerk 1032 mit dem PC 1002 verbunden.
Weiterhin verbindet eine Kette von IEEE 1394 Kabeln 1048 ein
Digital-TV 1040, einen DVD-Player 1041, einen
Digital-Video-Camcorder (DV/DVC) 1042, eine Audio-Vorrichtung 1043 (z.
B. CD-Player/Rekorder, Radioempfänger,
Verstärker,
und ähnliche
Audio-System-Komponenten) und eine Spiel-Konsole 1044.
Vorrichtungen, wie beispielsweise ein tragbares Telefon 1050 und
eine Fernsteuerung 1051, haben eine Funkfrequenz-Netzwerk-Verbindung
mit dem PC 1004.
-
Mit
deren verschiedenen, miteinander netzwerkmäßigen Verbindungen, sind die
eingebetteten Rechenvorrichtungen „sichtbar", und, zugänglich von einer Client-Vorrichtung 950 (30), auch mit dem Computer-Netzwerk verbunden.
-
Kontrakt-Definitions-Sprache
-
Übersicht
-
Kontrakte
bzw. Verträge
beschreiben das öffentliche
Verhalten von UPnP-Vorrichtungen,
und alternativ von anderen Daten-Einheiten (Entities) auf dem Web
(erreichbar meistens über
HTTP) oder einem anderen Computer-Netzwerk, das auf Nachrichten
reagiert und diese abgibt. Der Kontrakt ist in einer Contract Definition Language
(CDL) geschrieben. Die Nachrichten für den größten Teil sind strukturierte
Dokumente, z. B. in XML. Die Nachrichten können auch HTML Seiten sein,
Streaming-Medien, Bilder oder andere Daten-Typen, geeignet für das WebObject.
-
Der
Kontrakt wird die folgenden Attribute eines WebObject beschreiben:
- • Endpunkt
(gut definierter Name)
- • Protokoll
- • Benachrichtigungs-Muster
- • Zuführungs-Charakteristika
- • Payloads
-
Alle
diese Attribute müssen
nicht in dem Kontrakt vorhanden sein, da einige davon (der Endpunkt,
zum Beispiel) nicht zu dem Zeitpunkt der Entwicklung verfügbar sein
können.
-
Protokoll-Beschreibung
-
Auf
WebObject kann unter Verwendung von mehreren Protokollen zugegriffen
werden: HTTP, GENA, SMTP, FDP, MSMQ, ... Dieser Abschnitt diskutiert,
wie die Protokoll-Bindungen insbesondere mit einem WebObject zu
beschreiben sind. Die Dokumenten-Vorlagen (Templates) zum Beschreiben
des Protokolls verwenden das Format:
-
-
Das „protocol" Element kann ein „id" Attribut haben.
Dies ist dann nützlich,
wenn mehrere Benachrichtigungs-Muster dieselbe Protokoll-Definition
verwenden werden. Dies wird in weiterem Detail nachfolgend angegeben.
-
Zum
Zweck der Vereinfachung werden hier nur auf HTTP basierende Protokolle
abgedeckt. Eine Erweiterung dieses Modells, um andere Protokolle
abzudecken, ergibt sich unmittelbar.
-
-
Diese
Beschreibung zeigt an, dass das folgende gültige URLs sind:
http://search.yahoo.com/bin/search?pattern=Rio+player&limit=50&xml=yes
http://search.yahoo.com/bin/search?xml=yes&pattern=Rio+player
-
Der
Grund für
ein Nichtzuordnen der Frage-Variablen zu dem GET Verb kommt daher,
dass es gültig ist,
eine POST Nachricht zu einem URL, der Frage-Variablen enthält, zu schicken.
-
Das „value" Attribut für das „QUERY" Element impliziert,
dass der Wert statisch ist – er
muss als ein Teil des URL behandelt werden. Ein Deklarieren auf
diese Art und Weise ermöglicht,
dass der geeignete Aufbau der Frage-Folge durch den Anrufer gehandhabt
werden kann.
-
-
-
Das „default" Attribut gibt an,
dass der Wert des Parameters geändert
werden kann.
-
-
Das
M-POST und die eingeschlossenen MAN Elemente erklären den
vorgeschriebenen Erweiterungs-Mechanismus, der verwendet werden
muss. Der optionale Erweiterungs-Mechanismus kann auch auf diese
Art und Weise gehandhabt werden.
-
Das „Header" Element ermöglicht die
Deklaration von HTTP Headers, die verwendet werden müssen.
-
GENA
-
Payload Beschreibung
-
Nachfolgend
ist ein Beispiel einer XML Payload-Beschreibung angegeben.
-
-
-
Unter
Verwendung dieser Erklärung,
sind das Nachfolgende gültige
XML-Fragmente:
-
-
Benachrichtigungs-Muster
-
Die
Benachrichtigungs-Muster-Deklaration arbeitet als eine Verankerung
für ein
Abfragen zusammen des Protokolls, der Zuführ-Charakteristika und der
Payload-Informationen.
Die Benachrichtigungs-Muster-Deklarationen können diese Typen umfassen:
- • Anforderung/Antwort
- • Nachfrage/Antwort
- • In
einer Richtung
-
Anforderung/Antwort
(RR). Das RR-Muster wird benannt. Die zwei Beispiele nachfolgend
sind äquivalente
Mechanismen, um das Protokoll zu deklarieren, das für das RR-Benachrichtigungs-Muster
verwendet werden soll. Dieser Verknüpfungs-Mechanismus ist dann nützlich,
wenn mehrere RR-Paare dieselben Protokoll-Daten verwenden. Dies
ist der Fall für
UPnP. Auch kann ein Dienst mehrere Protokolle zum Erreichen desselben „Verfahren"-Aufrufs einsetzen.
Das „ist" („is") Attribut akzeptiert
eine Liste von ID-Refs – voraussetzend, dass
irgendeines der Protokolle gleich für ein Zugreifen auf die Funktionalität geeignet
ist.
-
-
-
Die
Payloads für
eine Anforderung, eine Antwort und einen Fehler werden in dem Fall
von XML Daten durch die Namen der Elemente, auf die durch das „is" Attribut Bezug genommen
ist, identifiziert. Die Schema-Informationen werden dahin angenommen,
dass sie in demselben Dokument vorhanden sind. Das Nachfolgende
sind Beispiele, die die zwei Schemata verwenden:
-
-
Die
DCL beschreibt hier die Element-Deklarationen in dem „Schema" Block, im Gegensatz
dazu, sie mit den Benachrichtigungs-Muster-Definitionen zu „streuen". Die Gründe hierfür sind:
- • Wiederverwendung
von Element-Deklarationen ist einfach.
- • Man
kann einen Fragment-Validierungs-Support so verwenden, wie er ist.
- • Beibehalten
von Schemata an einer Stelle ist konsistent mit der Verwendung von
In-Line-Schemata in SQLI2 und ADO.
-
In
dem Fall, dass die Anforderung oder Antwort nicht XML Dokumente,
sondern HTML Dokumente, sind, oder binäre Dateien, wird die nachfolgende
Syntax verwendet werden. Das enthaltende Element definiert die Art
der Daten. Die Verwendung von MIME liegt nicht in dem HTTP spezifischen
Sinne vor, sondern in dem Sinne „Art des Payload". Das Vorhandensein
der „is" Attribute zeigt
an, dass der MIME Typ „text/xml." ist.
-
-
Zuführungs-Charakteristika
-
Der
Kontrakt kann die Zuführungs-Charakteristika
(manchmal auch bezeichnet als Qualität eines Dienstes), erforderlich
oder unterstützt
durch den Server, spezifizieren. Beispiele sind:
- • Geordnete,
beste Bemühung
(ordered, best-effort)
- • Garantierte
Zuführung
- • Fire-and-forget
- • Exakt
einmal
- • Mindestens
einmal
- • Transaktional
-
Beispiel
-
Die 44–46 zeigen
einen beispielhaften Kontrakt (Vertrag) zum Zusammenarbeiten mit
einem Stock-Quote-Service.
-
Die 47–50 zeigen
ein XML-Schema zum Definieren von Kontrakten. Indem die Prinzipien
der Erfindung unter Bezugnahme auf eine dargestellte Ausführungsform
beschrieben und dargestellt worden sind, wird erkannt werden, dass
die dargestellte Ausführungsform
in dem Aufbau und im Detail modifiziert werden kann, ohne solche
Prinzipien zu verlassen. Es sollte verständlich werden, dass die Programme,
Prozesse oder Verfahren, die hier beschrieben sind, nicht zu einem
bestimmten Typ einer Computer-Vorrichtung in Bezug gesetzt sind
oder darauf beschränkt
sind, ohne dass dies in anderer Weise angegeben ist. Verschiedene
Typen von spezialisierten Computer-Vorrichtungen oder solchen für allgemeine
Zwecke können
in Verbindung mit den Lehren, die hier beschrieben sind, verwendet
werden, oder dazu, Operationen entsprechend dazu auszuführen. Elemente
der dargestellten Ausführungsform,
dargestellt in einer Software, können
in einer Hardware, und vice versa, ausgeführt werden.
-
Im
Hinblick auf die vielen, möglichen
Ausführungsformen,
bei denen die Prinzipien der Erfindung angewandt werden können, sollte
erkannt werden, dass die detaillierten Ausführungsformen nur erläuternd sind, und
sollten nicht als den Schutzumfang der Erfindung einschränkend angesehen
werden. Im Gegensatz dazu werden als Erfindung alle Ausführungsformen
beansprucht, wie sie innerhalb des Schutzumfangs der nachfolgenden
Ansprüche,
und Äquivalenten
dazu, fallen.