-
HINTERGRUND
-
In derzeitigen Netzwerken wie zum Beispiel Unternehmensnetzwerken, die sowohl über das World Wide Web (WWW) als auch über lokale Netzwerke (LAN) kommunizieren können, ist es üblich, eine zentrale Datenbank und/oder einen oder mehrere zentrale Server zu haben. Verschiedene standortferne Benutzergeräte oder Remote-Clients können auf den zentralen Server zugreifen, um den Endbenutzern Zugriff auf die Daten und Dienste zu ermöglichen, die auf diesem oder über diesen Server zur Verfügung stehen.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Für ein umfassenderes Verständnis der Beispiele in der vorliegenden Offenbarung werden nachstehend die folgenden Beschreibungen für die begleitenden Zeichnungen angegeben, wobei:
-
1 eine schematische Darstellung eines Systems nach einem Beispiel ist;
-
2 ein Blockdiagramm einer Vorrichtung nach einem Beispiel ist;
-
3 ein Ablaufdiagramm eines Beispielprozesses nach einem Beispiel ist; und
-
4 ein Screenshot nach einem Beispiel ist.
-
DETAILLIERTE BESCHREIBUNG
-
In verschiedenen hier offengelegten Beispielen wird eine Anfrage von einem Remote-Client für den Start einer Anwendung auf einem Hostserver zu einer Shell-Anwendung auf dem Hostserver weitergeleitet. Die Shell-Anwendung veranlasst, dass die angeforderte Anwendung auf dem Remote-Client gestartet wird. Darüber hinaus kann die Shell-Anwendung mit der angeforderten Anwendung auf dem Hostserver verbundene Konfigurationsdaten nutzen, damit diese beim Start und Betrieb der Anwendung auf dem Remote-Client verwendet werden.
-
Mit Bezug auf 1 ist ein Beispielsystem 100 nach einem Beispiel schematisch dargestellt. Das System 100 kann verschiedenen Komponenten umfassen, zum Beispiel Server und Terminals, die in der Lage sein können, eine Remoteverbindung herzustellen, wie zum Beispiel Remote Desktop Protokoll (remote desktop protocol, RDP). Das Beispielsystem 100 kann in einem Netzwerk wie zum Beispiel einem Unternehmensnetzwerk (z. B. ein virtuelles privates Netzwerk (virtual private network, VPN)) für ein Unternehmen mit Niederlassungen an mehreren geografischen Standorten umgesetzt werden. In dem dargestellten Beispielsystem 100 kann ein Client 110 mit einem Hostserver 120 über ein Netzwerk 102 kommunizieren.
-
In verschiedenen Beispielen kann das System 100 ein oder mehrere Remote-Terminals wie zum Beispiel den Client 110 umfassen, von denen aus Endbenutzer über den Hostserver 120 auf Daten und Ressourcen zugreifen können. In anderen Beispielen kann eine beliebige Anzahl von Clients über das gleiche oder über verschiedene Netzwerke oder durch eine direkte Verbindung zum Hostserver 120 mit dem Hostserver 120 kommunizieren.
-
In einem Beispiel kann der Client 110 ein Terminal sein, durch das ein Benutzer eine Remote-Desktop-Verbindung zum Hostserver 120 aufbauen kann. Darüber hinaus kann der Client 110 über den Hostserver 120 eine Verbindung mit anderen Einheiten aufbauen, zum Beispiel anderen Servern, anderen Clients, Datenbanken oder ähnlichem. In dem in 1 dargestellten Beispiel kann der Client 110 über ein Netzwerk 102 mit dem Hostserver 120 kommunizieren. In einigen Beispielen kann der Client 110 sich an dem gleichen geografischen Standort befinden wie der Hostserver 120 und kann über ein lokales Netzwerk (local area network, LAN), wie zum Beispiel ein lokales Breitband-Netzwerk (Wideband Local Area Network, WLAN), mit dem Hostserver 120 kommunizieren. In anderen Beispielen befindet sich der Client 110 an einem von dem Hostserver 120 entfernten Ort und kann über ein Weitverkehrsnetz (wide area network, WAN) mit dem Hostserver 120 kommunizieren, bei dem es sich um ein öffentliches Netzwerk wie das Internet handeln kann. Wie hier verwendet, können sich die Begriffe „Client” oder „Remote-Client” auf jedes Terminal beziehen, das von dem Hostserver 120 getrennt ist und über eine Verbindung mit dem Hostserver 120 kommuniziert, wobei die Verbindung entweder eine direkte Verbindung oder eine Verbindung über ein Netzwerk ist.
-
Der in 1 dargestellte Remote-Client 110 umfasst eine Remote-Desktop-Anwendung 112, die zum Beispiel auf einem Prozessor des Remote-Clients 110 ausgeführt wird. In verschiedenen Beispielen ermöglicht es die Remote-Desktop-Anwendung 112 dem Remote-Client 110, mit dem Hostserver 120 zu kommunizieren und auf verschiedene Anwendungen und/oder Daten auf dem oder über den Hostserver 120 zuzugreifen. Zusätzlich kann der Remote-Client 110 mit verschiedenen Anwendungen versehen werden, wie zum Beispiel der in 1 dargestellten lokalen Anwendung 114, zur Ausführung des Remote-Clients 110 durch einen Prozessor. Bei der lokalen Anwendung 114 kann es sich um einen Browser (z. B. Netscape, Internet Explorer, Mozilla usw.), ein Textverarbeitungsprogramm (z. B. Microsoft Word), eine Tabellenkalkulationsanwendung (z. B. Excel) oder eine andere ähnliche Anwendung handeln.
-
Der Hostserver 120 kann mit verschiedenen anderen Komponenten verbunden werden, beispielsweise einer Datenbank zur Speicherung von Daten und/oder Anwendungen, die von verschiedenen Endbenutzern aufgerufen werden können. Die Datenbank kann serverseitige Ressourcen enthalten, beispielsweise verschiedene Anwendungssoftware-Programme, die zum Beispiel auf einem entfernten Terminal-Computer im Netzwerk geöffnet werden können. Zusätzlich kann Anwendungssoftware für das Remote-Desktop-Protokoll (RDP), die vom Hostserver 120 für die Verbindung zu Endbenutzergeräten genutzt werden kann (z. B. Remote-Clients wie Client 110), in der Datenbank gespeichert und auf dem Hostserver 120 betrieben werden.
-
In dem Beispiel in 1 umfasst der Hostserver 120 eine eigene Instanz einer Remote-Desktop-Anwendung 122. Die Remote-Desktop-Anwendung 122 auf dem Hostserver 120 kann es Remote-Clients wie dem Client 110 ermöglichen, auf verschiedene Daten und/oder Anwendungen auf dem oder über den Hostserver 120 zuzugreifen. Zum Beispiel kann der Remote-Client 110 auf verschiedene Anwendungen zugreifen, die auf dem Hostserver 120 gehostet werden, sowie auf Daten, die auf der mit dem Hostserver 120 verbundenen Datenbank zur Verfügung stehen.
-
In verschiedenen Beispielen kann der Hostserver 120 auch mit einer Reihe von Anwendungen zur Ausführung durch einen Prozessor des Hostservers 120 versehen sein. Wie oben mit Bezug auf den Client 110 angemerkt, können die auf dem Hostserver 120 bereitgestellten Anwendungen zum Beispiel einen Browser (z. B. Netscape, Internet Explorer, Mozilla usw.), ein Textverarbeitungsprogramm (z. B. Microsoft Word), eine Tabellenkalkulationsanwendung (z. B. Excel) oder eine andere ähnliche Anwendung umfassen. Wie in dem Beispiel in 1 dargestellt, kann der Hostserver 120 auch mit gespeicherten Konfigurationsdaten 124 bezüglich der verschiedenen Anwendungen versehen sein oder Zugriff darauf haben. Die Konfigurationsdaten 124 können sich auf die Konfiguration der Anwendung beziehen, wenn die Anwendung auf dem Server gestartet wird. Zum Beispiel können die Konfigurationsdaten 124 Standardeinstellungen für Papiergröße, Schriftart, Benutzeridentifikation und Ähnliches für eine Textverarbeitungsanwendung umfassen. In einem anderen Beispiel können die Konfigurationsdaten 124 Lesezeichen (oder Favoriten) sowie eine oder mehrere Homepages für die Browseranwendung umfassen.
-
In 2 ist ein Blockdiagramm einer Vorrichtung 200 nach einem Beispiel dargestellt. Die Beispielvorrichtung 200 kann ein Computersystem sein, das als Hostserver 120 nach 1 genutzt werden kann. Eine ähnliche Vorrichtung kann verwendet werden, um einen Beispiel-Client 110 nach 1 zu illustrieren.
-
Die Vorrichtung 200 umfasst einen oder mehrere Ausgänge 204 wie zum Beispiel eine Anzeige für eine grafische Benutzerschnittstelle (graphical user interface, GUI), ein oder mehrere Eingabegeräte 214 wie zum Beispiel eine Tastatur und/oder eine Maus, eine oder mehrere Zentraleinheiten (central processing units, CPUs) 206, eine oder mehrere Kommunikationsschnittstellen 210 wie zum Beispiel eine drahtlose Schnittstelle oder eine Ethernet- oder andere kabelgebundene Schnittstelle, und ein oder mehrere Speichergeräte 208 wie zum Beispiel ein computerlesbares Medium.
-
Das Speichergerät 208 kann ein oder mehrere Speichermedien, wie zum Beispiel einen Schreib-Lesespeicher (random access memory, RAM), einen Lesespeicher (read only memory, ROM), einen löschbaren und programmierbaren ROM-Speicher (erasable programmable ROM, EPROM), einen elektrischen EPROM, einen Flash-Speicher oder andere nicht-flüchtige oder flüchtige Speichermedien umfassen. Das Speichergerät 208 kann Code speichern, einschließlich Anweisungen für die Ausführung durch einen Prozessor (z. B. CPU 206). Zum Beispiel kann das Speichergerät 208 ein Betriebssystem (BS) für die Vorrichtung 200 und ein oder mehrere Anwendungssoftware-Programme speichern, beispielsweise ein Remote-Desktop-Protokoll für den Server oder Client. Die verschiedenen Komponenten können zum Beispiel über einen Systembus 202 miteinander verbunden werden.
-
Die verschiedenen Komponenten der Beispielvorrichtung 200 nach 2 sind nicht auf die dargestellten beschränkt und können eine beliebige Anzahl an zusätzlichen Elementen umfassen, die für die Funktionen dieser bestimmten Vorrichtung 200 spezifisch sind. Zum Beispiel kann die Vorrichtung 200 auch einen digitalen Signalprozessor (DSP), zusätzliche Speicherelemente und Schnittstellen, einen optischen Signalprozessor, einen oder mehrere Adapter für die Übermittlung von Informationen zwischen dem Bus und einem Eingabegerät, einem Ausgabegerät oder einer Schnittstelle umfassen. Die Anwendungsprogramme können außerdem verschiedene Softwareprogramme umfassen, die durch einen oder mehrere der Prozessoren lesbar sind.
-
In verschiedenen Beispielen kann die CPU 206 der Vorrichtung 200 (z. B. der Hostserver) eine Shell-Anwendung 220 ausführen. Wie unten mit Bezug auf 3 detaillierter beschrieben, kann die Shell-Anwendung 220 so konfiguriert werden, dass sie den Start einer Anwendung auf dem Remote-Client veranlasst (z. B. dem Client 110 nach 1). Wenn zum Beispiel über eine Remote-Desktop-Anwendung eine Anfrage von dem Remote-Client für den Start einer Anwendung auf dem Server eingeht, kann die Shell-Anwendung 220 diese Anfrage an den Remote-Client umleiten. So kann eine Kopie der angeforderten Anwendung auf dem Remote-Client gestartet werden, um die Anfrage zu erfüllen. Darüber hinaus kann die Shell-Anwendung 220 so konfiguriert werden, dass sie den Remote-Client dazu veranlasst, die Anwendungskonfigurationsdaten 230 (z. B. ähnlich der Konfigurationsdaten der Hostanwendung 124 nach 1) beim Start der Anwendung auf dem Remote-Client zu verwenden.
-
In 3 illustriert ein Ablaufdiagramm einen Beispielprozess 300 nach einem Beispiel. Der Beispielprozess 300 kann zum Beispiel von dem Hostserver 120 nach 1 ausgeführt werden. In dem Beispielprozess 300 nach 3 wird eine Verbindung zwischen einem Remote-Client und einem Hostserver aufgebaut (Block 302). Wie oben dargelegt, kann die Verbindung durch eine Reihe von Anordnungen hergestellt werden, einschließlich verschiedener Netzwerke wie zum Beispiel dem Internet. Die Herstellung dieser Verbindung kann zusammen mit der Ausführung eines Remote-Desktop-Programms erfolgen, wie zum Beispiel dem Remote-Desktop-Protokoll (RDP), beispielsweise mithilfe der in 1 dargestellten Remote-Desktop-Anwendungen 112, 122, oder davon gefolgt werden.
-
In verschiedenen Beispielen kann während der Remote-Desktop-Verbindung der Hostserver eine Anfrage von dem Remote-Client für den Start einer Anwendung empfangen (Block 304). Diese Anfrage kann in verschiedenen Formen empfangen werden. In einem Beispiel kann in dem Remote-Desktop-Fenster des Remote-Clients ein Link zu einer Website angewählt werden. Das Anwählen des Links kann zu einer Anfrage für das Starten einer Browseranwendung führen. In einem anderen Beispiel kann die Anfrage in Form eines Versuchs zum Öffnen eines Dokuments in einem Textverarbeitungsprogramm oder einer anderen Anwendung vorliegen.
-
Bei konventionellen Anordnungen kann die Anwendung auf dem Server gestartet werden, sodass es einem Benutzer des Remote-Clients möglich ist, die auf dem Hostserver laufende Anwendung über den Remote-Desktop zu nutzen. Diese Anordnung kann jedoch zu wesentlichen Ineffizienzen führen. Zum Beispiel können im Falle einer Browseranwendung Webseiten von einem Webhost an den Server gesendet, auf dem Server umgesetzt, durch die Remote-Desktop-Anwendung auf dem Server verschlüsselt, an den Remote-Client gesendet und dann von der Remote-Desktop-Anwendung auf dem Remote-Client entschlüsselt werden.
-
Verschiedene Beispiele der vorliegenden Offenbarung beseitigen solche Ineffizienzen. Im Beispielprozess 300 nach 3 zum Beispiel kann nach Eingang der Anforderung zum Start der Anwendung eine Shell-Anwendung auf dem Hostserver gestartet werden (Block 306). In einigen Beispielen kann die Shell-Anwendung gestartet werden, wenn die Verbindung anfänglich aufgebaut wird, beispielsweise in Block 302. In anderen Beispielen kann die Shell-Anwendung immer auf dem Server laufen (z. B. im Hintergrund).
-
In verschiedenen Beispielen ist die Shell-Anwendung so konfiguriert, dass sie die Anfrage des Remote-Clients für den Start einer Anwendung verarbeitet. Anstatt die Anwendung auf dem Server zu starten, kann die Shell-Anwendung jedoch veranlassen, dass die Anwendung nahtlos auf dem Remote-Client startet.
-
In dieser Hinsicht kann die Shell-Anwendung einen virtuellen Kanal zwischen dem Hostserver und dem Remote-Client öffnen (Block 308). In verschiedenen Beispielen kann der virtuelle Kanal mithilfe der gleichen Kommunikationspfade geöffnet werden, die auch für die Remote-Desktop-Verbindung genutzt werden. In einigen Beispielen wird der virtuelle Kanal durch eine VPN-Verbindung (virtuelles privates Netzwerk) zwischen dem Remote-Client und dem Hostserver geöffnet.
-
Die Shell-Anwendung kann veranlassen, dass die zu der angeforderten Anwendung gehörenden Konfigurationsdaten vom Hostserver an den Remote-Client gesendet werden (Block 310). In verschiedenen Beispielen werden die Konfigurationsdaten durch den virtuellen Kanal an den Remote-Client gesendet. Wie oben dargelegt, können die Konfigurationsdaten den Einstellungen entsprechen, die mit der Anwendung verbunden sind, wenn sie auf dem Hostserver läuft. In verschiedenen Beispielen können die Konfigurationsdaten zum Beispiel Standardeinstellungen für Papiergröße, Schriftart, Benutzeridentifikation, Lesezeichen (oder Favoriten), eine oder mehrere Homepages oder eine Reihe von anderen Einstellungen umfassen. In einigen Beispielen werden die Konfigurationsdaten zur Speicherung beispielsweise in einem temporären speicher an den Remote-Client übermittelt. In anderen Beispielen werden die Konfigurationsdaten auf dem Hostserver gepflegt, aber die Konfigurationsdaten werden von der Shell-Anwendung und/oder dem Remote-Client für den Betrieb der angeforderten Anwendung verwendet, wie nachstehend beschrieben.
-
In verschiedenen Beispielen wird die Anwendung dann auf dem Remote-Client gestartet (Block 312). Beim Start der Anwendung auf dem Remote-Client kann die Shell-Anwendung auf dem Hostserver bestimmte Aspekte der Anwendung durch beispielsweise den virtuellen Kanal verwalten oder steuern. Wie oben angemerkt, können die Konfigurationsdaten dazu verwendet werden, die Anwendung auf dem Remote-Client zu konfigurieren. Im Falle einer Browseranwendung zum Beispiel kann die Homepage, die beim Start der Browseranwendung angezeigt wird, durch die Konfigurationsdaten festgelegt werden.
-
Wie oben angemerkt, werden die Konfigurationsdaten in einigen Beispielen in einem temporären Speicher des Remote-Clients gespeichert und während des Starts und Betriebs der angeforderten Anwendung abgerufen. In anderen Beispielen werden die Konfigurationsdaten auf dem Hostserver gepflegt. In diesen Fällen kann die Shell-Anwendung die Konfigurationsdaten überwachen und sie bei Bedarf dem Remote-Client zur Verfügung stellen, um den reibungslosen Start und Betrieb der angeforderten Anwendung zu erleichtern.
-
In einigen Beispielen kann es wünschenswert sein, gegenüber dem Benutzer des Remote-Clients den Anschein aufrecht zu erhalten, dass die angeforderte Anwendung innerhalb der Remote-Desktop-Anwendung läuft. In dieser Hinsicht kann die Shell-Anwendung den Betrieb einer konventionellen Remote-Desktop-Anwendung imitieren. Zum Beispiel kann die angeforderte Browseranwendung in dem Remote-Desktop-Fenster angezeigt werden, obwohl die Anwendung selbst eventuell außerhalb der Remote-Desktop-Umgebung läuft. In verschiedenen Beispielen können die Anzeige von Fenstern in der Remote-Desktop-Anwendung und die lokale Anwendung auf dem Remote-Client durch die Shell-Anwendung koordiniert werden. In dieser Hinsicht kann die Shell-Anwendung das Anzeigeprotokoll der Remote-Desktop-Anwendung steuern und kann entsprechend nahtlos die lokale Anwendung über das Remote-Desktop-Fenster anzeigen oder umgekehrt. Aus Benutzerperspektive können daher das Fenster der Remote-Desktop-Anwendung und das lokale Anwendungsfenster als ein einziges Fenster erscheinen.
-
In dieser Hinsicht wird auf 4 verwiesen, die einen Screenshot eines Client-Geräts nach einem Beispiel zeigt. In dem Beispiel nach 4 kann eine Anzeige 400 einem Benutzer des Client-Geräts einen lokalen Desktop 402 bereitstellen. Der lokale Desktop 402 kann Symbole (nicht abgebildet) umfassen, die verschiedenen Anwendungen entsprechen. Der lokale Desktop 402 kann dem Benutzer außerdem ein oder mehrere Fenster bereitstellen, wobei jedes Fenster einer Anwendung entspricht, die auf dem Client-Gerät laufen kann.
-
In dem Beispiel in 1 umfasst der lokale Desktop 402 ein Fenster 404, das einer Remote-Desktop-Anwendung entspricht. In verschiedenen Beispielen erscheint das Remote-Desktop-Fenster 404 ähnlich wie der lokale Desktop 402 und kann verschiedene Symbole enthalten. Das Remote-Desktop-Fenster 404 kann außerdem Unterfenster umfassen, die Anwendungen entsprechen, die auf einem Hostserver laufen und auf die über die Remote-Desktop-Anwendung zugegriffen wird. In dem Beispiel in 4 ist ein Unterfenster 406, das einer Anwendung entspricht (z. B. Textverarbeitung), in einem Remote-Desktop-Fenster 404 abgebildet. In dieser Hinsicht entspricht das Unterfenster 406 einer Anwendung, die auf dem Hostserver läuft und auf die über die Remote-Desktop-Anwendung zugegriffen wird.
-
Nach verschiedenen Beispielen, wie oben dargelegt, können die Anzeige von Fenstern in der Remote-Desktop-Anwendung und die lokale Anwendung auf dem Remote-Client durch die Shell-Anwendung koordiniert werden. In dem Beispiel in 4 ist ein Fenster 408 dargestellt, das einer Anwendung entspricht, die auf dem Client-Gerät läuft. Die Anwendung, die dem Fenster 408 entspricht, kann nach Weiterleitung durch die oben beschriebene Shell-Anwendung auf dem Client-Gerät laufen. Daher kann die Shell-Anwendung das Anzeigeprotokoll des Remote-Desktop-Fensters 404 und des Fensters 408 steuern. Indem es dem Benutzer eine nahtlose Anzeige zur Verfügung stellt, kann die Shell-Anwendung das Fenster 408 als Teil der Remote-Desktop-Anwendung erscheinen lassen. In dieser Hinsicht, wie in 4 dargestellt, kann das Fenster 408, das einer auf dem Client-Gerät laufenden Anwendung entspricht, einen Teil des Remote-Desktop-Fensters 404 einnehmen, kann jedoch selbst durch ein Unterfenster 406 des Remote-Desktop-Fensters 404 verdeckt werden. Daher kann der Benutzer der Remote-Desktop-Anwendung die Anwendung, die dem Fenster 408 entspricht, als Teil der Remote-Desktop-Anwendung ansehen.
-
Somit kann eine innerhalb einer Remote-Desktop-Umgebung angeforderte Anwendung dem Benutzer eines Remote-Clients ohne die oben beschriebenen Ineffizienzen im Zusammenhang mit der Remote-Desktop-Umgebung bereitgestellt werden.
-
Verschiedene hier beschriebene Beispiele werden im allgemeinen Kontext von Verfahrensschritten oder Prozessen beschrieben, die in einem Beispiel durch ein Softwareprogramm-Produkt oder eine Komponente umgesetzt werden können, welche in einem maschinenlesbaren Medium verkörpert sind, einschließlich ausführbarer Anweisungen wie zum Beispiel Programmcode, die durch Einheiten in Netzwerkumgebungen ausgeführt werden. Im Allgemeinen können die Programm-Module Routinen, Programme, Objekte, Komponenten, Datenstrukturen usw. umfassen, die bestimmte Aufgaben ausführen oder bestimmte abstrakte Datentypen implementieren. Ausführbare Anweisungen, die dazugehörigen Datenstrukturen und Programm-Module stellen Beispiele für Programmcode für die Ausführung der Schritte der hier offengelegten Verfahren dar. Die spezielle Abfolge dieser ausführbaren Anweisungen oder die dazugehörigen Datenstrukturen stellen Beispiele für die entsprechenden Handlungen zur Umsetzung der in diesen Schritten oder Prozessen beschriebenen Funktionen dar.
-
Die vorstehende Beschreibung verschiedener Beispiele wurde zu Zwecken der Erklärung und Beschreibung dargelegt. Die vorstehende Beschreibung erhebt keinen Anspruch auf Vollständigkeit und soll keine Beschränkung auf die genaue offengelegte Form darstellen, und Veränderungen und Variationen sind anhand der vorstehenden Lehren möglich oder können aus der praktischen Umsetzung verschiedener Beispiele abgeleitet werden. Die hier erörterten Beispiele wurden ausgewählt und beschrieben, um die Grundsätze und die Art verschiedener Beispiele und deren praktische Anwendung zu erklären und es einem Fachmann zu ermöglichen, die verschiedenen Beispiele zu nutzen und verschiedene Veränderungen anhand der vorgesehenen Nutzung vorzunehmen. Die Eigenschaften der hier beschriebenen Beispiele können in allen möglichen Kombinationen von Verfahren, Vorrichtungen, Modulen, Systemen und Computerprogramm-Produkten kombiniert werden.