DE112016006083T5 - Bereitstellung von Rechenressourcen für eine virtuelle Maschine, die ausgelegt ist eine Gruppe von Anwendungsprogrammen zu Hosten, die einem Benutzer zugeordnet sind - Google Patents

Bereitstellung von Rechenressourcen für eine virtuelle Maschine, die ausgelegt ist eine Gruppe von Anwendungsprogrammen zu Hosten, die einem Benutzer zugeordnet sind Download PDF

Info

Publication number
DE112016006083T5
DE112016006083T5 DE112016006083.1T DE112016006083T DE112016006083T5 DE 112016006083 T5 DE112016006083 T5 DE 112016006083T5 DE 112016006083 T DE112016006083 T DE 112016006083T DE 112016006083 T5 DE112016006083 T5 DE 112016006083T5
Authority
DE
Germany
Prior art keywords
application
virtual machine
computer system
client
user
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112016006083.1T
Other languages
English (en)
Inventor
Nathan Bartholomew Thomas
Sheshadri Supreeth Koushik
Yang Lin
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of DE112016006083T5 publication Critical patent/DE112016006083T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/70Media network packetisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

Einem Benutzer werden durch Angeben von durch den Benutzer verwendeten Anwendungen und Bereitstellen virtueller Rechenressourcen, die für die Ressourcenanforderungen der angegebenen Anwendungen ausgelegt sind, Rechenressourcen zur Verfügung gestellt. Die Ressourcenanforderungen der angegebenen Anwendungen können in einer einzelnen Gruppe von Ressourcenanforderungen zusammenführt werden und verwendet werden, um eine virtuelle Maschine zu erlangen, die in der Lage ist, die angegebenen Anwendungen zu hosten. Bei anderen Beispielen können virtuelle Maschinen für jede angegebene Anwendung erlangt werden. Jede virtuelle Maschine erzeugt einen Anzeigestream über einen Streaming-Agent. Der Anzeigestream wird von einem Anwendungsstreaming-Client auf dem Client-Computersystem des Benutzers empfangen und dem Benutzer auf einer Client-Anzeige angezeigt. Mehrere virtuelle Maschinen können mehrere Anzeigestreams erzeugen, die durch den Anwendungsstreaming-Client zusammenführt und für den Benutzer auf der einzelnen Client-Anzeige dargestellt werden können.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNG
  • Diese Patentanmeldung beansprucht eine Priorität gegenüber der US-Patentanmeldung Nr. 14/981,774 mit dem Titel „COMPUTING RESOURCE MANAGEMENT“, die am 28. Dezember 2015 eingereicht wurde und deren Inhalt hier durch Bezugnahme vollumfänglich aufgenommen wird.
  • ALLGEMEINER STAND DER TECHNIK
  • In einer Geschäftsumgebung benötigen viele Arbeitnehmer Zugang zu Rechenressourcen, um ihre Arbeitsaufgaben zu erfüllen. Ein Verwaltungsangestellter kann zum Beispiel Zugang zu Textverarbeitungs-, Datenverarbeitungs- und Datenbankzugriffsfunktionen benötigen. Ein Ingenieur kann computergestützte Entwurfsanwendungen (Computer Aided Drafting - CAD) und komplexe Simulationssoftware benötigen. Einige Unternehmen stellen ihren Arbeitnehmern Rechenressourcen zur Verfügung, indem sie Personalcomputer für jeden Arbeitnehmer erlangen. Personalcomputer können mit unterschiedlichen Mengen an Arbeitsspeicher, Datenspeicher und Verarbeitungsfähigkeiten konfiguriert sein. Das Angeben der richtigen Konfiguration für jeden Arbeitnehmer ist ein schwieriges Problem. Werden einem Arbeitnehmer Rechenressourcen zur Verfügung gestellt, die die Rechenanforderungen des Arbeitnehmers wesentlich übersteigen, können die überschüssigen Ressourcen verschwendet sein. Werden einem Arbeitnehmer unzureichende Rechenressourcen zur Verfügung gestellt, kann die Fähigkeit des Arbeitnehmers seine Arbeitsaufgaben zu erfüllen beeinträchtigt sein und das Computersystem kann eine frühzeitige Ersetzung oder kostspielige Aufrüstungen erfordern.
  • Einige Unternehmen haben sich entschieden, diese Probleme bei Bedarf durch das Erlangen von Rechenressourcen von Onlinedienstanbietern zu lösen. Ein Onlinedienstanbieter kann Arbeitnehmern Rechendienste über Thin Clients oder Terminals bereitstellen. Während dieses Modell zu einem gewissen Grad eine erhöhte Flexibilität bei der Anpassung der Menge der zur Verfügung gestellten Rechenressourcen erlaubt, kann es noch immer schwierig sein, die optimale Menge an Rechenressourcen zu bestimmen, die jedem Arbeitnehmer bereitgestellt werden soll, und es unterliegt unter anderem trotzdem den vorstehend erörterten Problemen.
  • Figurenliste
  • Verschiedene Techniken werden unter Bezugnahme auf die Zeichnungen beschrieben, in denen Folgendes gilt:
    • 1 zeigt ein veranschaulichendes Beispiel einer Umgebung, in der verschiedene Ausführungsformen durchgeführt werden können;
    • 2 zeigt ein veranschaulichendes Beispiel eines Prozesses, der infolge seiner Durchführung gemäß einer Ausführungsform die Rechenressourcenanforderungen für einen Client wenigstens teilweise auf Grundlage einer Gruppe von ausgewählten Anwendungsprogrammen bestimmt;
    • 3 zeigt ein veranschaulichendes Beispiel eines Prozesses, der infolge seiner Durchführung gemäß einer Ausführungsform einem Benutzer einen Typ einer virtuellen Instanz zuweist;
    • 4 zeigt ein veranschaulichendes Beispiel eines Client-Server-Computersystems, das gemäß einer Ausführungsform einem Client Rechenressourcen zur Verfügung stellt, die ausgelegt sind, eine definierte Gruppe von Anwendungen zu hosten;
    • 5 zeigt ein veranschaulichendes Beispiel eines Prozesses, der infolge seiner Durchführung durch ein Client-Computersystem gemäß einer Ausführungsform Rechenressourcen von einem Server bereitstellt und Anzeigestreams von Anwendungen empfängt, die auf dem Server ausgeführt werden;
    • 6 zeigt ein veranschaulichendes Beispiel eines Client-Server-Computersystems, das gemäß einer Ausführungsform einem Client in Form einer Reihe virtueller Maschinen Rechenressourcen zur Verfügung stellt, wobei jede virtuelle Maschine ausgelegt ist, eine bestimmte, von dem Client definierte Anwendung zu hosten;
    • 7 zeigt ein veranschaulichendes Beispiel eines Client-Server-Computersystems, das gemäß einer Ausführungsform eine Reihe von Anzeigestreams von einer Reihe von Rechenressourcen empfängt und die Anzeigestreams auf einer Client-Anzeige in einem einheitlichen Bildschirm zusammenführt;
    • 8 zeigt ein veranschaulichendes Beispiel eines Prozesses, der infolge seiner Durchführung durch ein Client-Computersystem gemäß einer Ausführungsform eine Gruppe von virtuellen Maschinen von einem Server bereitstellt und Streams von Anzeigeinformationen von den virtuellen Maschinen in einem einheitlichen Anzeigebildschirm zusammenführt;
    • 9 zeigt ein veranschaulichendes Beispiel eines Client-Server-Computersystems, das gemäß einer Ausführungsform einer Reihe von Clienten Rechenressourcen zur Verfügung stellt, indem es eine virtuelle Maschine zur Verfügung stellt, die eine einzelne Anwendung hostet, die mehrere Sitzungen unterstützt; und
    • 10 veranschaulicht eine Umgebung, in der verschiedene Ausführungsformen implementiert werden können.
  • DETAILLIERTE BESCHREIBUNG
  • Das vorliegende Dokument beschreibt das Zurverfügungstellen von Rechenressourcen für einen Benutzer durch Zuweisen einer oder mehrerer virtueller Maschinen („VMs“) zu dem Benutzer und Streaming von Anzeigeinformationen von Anwendungen, die auf den virtuellen Maschinen gehostet werden, an einen Anwendungsstreaming-Client, der auf einem Client-Computersystem ausgeführt wird. Die Merkmale der virtuellen Maschinen werden durch Angeben einer Gruppe von Anwendungen zur Verwendung durch den Benutzer und Zuweisen einer Menge von Rechenressourcen an die virtuellen Maschinen bestimmt, die für das Hosten der angegebenen Gruppe von Anwendungen ausgelegt ist. Jede Anwendung verfügt über eine ihr zugeordnete Gruppe von Rechenressourcenanforderungen, welche die Rechenressourcen beschreiben, die erforderlich sind, um die Anwendung zu hosten. Jede Gruppe von Anforderungen definiert die Mengen verschiedener Arten von Rechenressourcen, wie etwa Plattenspeicher, freier Speicher, Bildspeicher und Prozessorgeschwindigkeit.
  • In einigen Umgebungen hostet eine einzelne virtuelle Maschine die angegebenen Anwendungen. Die Gruppen von Anforderungen für die angegebenen Anwendungen werden in einer einzelnen Gruppe von Anforderungen zusammenführt und die einzelne Gruppe von Anforderungen wird verwendet, um eine virtuelle Maschine gemäß den zusammenführten Anforderungen zu erzeugen, die in der Lage ist die angegebenen Anwendungen zu hosten. In einem anderen Beispiel wird die einzelne Gruppe von Anforderungen verwendet, um ein Ressourcenprofil aus einer Gruppe von vordefinierten Ressourcenprofilen auszuwählen und das ausgewählte Ressourcenprofil wird verwendet, um die virtuelle Maschine für den Benutzer zu erzeugen. Ein Streaming-Agent, der auf der virtuellen Maschine ausgeführt wird, kodiert Anzeigeinformationen, die von den gehosteten Anwendungen zur Verfügung gestellt werden, und überträgt die kodierten Anzeigeinformationen über einen Anwendungsstreaming-Client an ein Client-Computersystem, das zu dem Benutzer gehört. Der Benutzer ist in der Lage über das Client-Computersystem mit der virtuellen Maschine zu interagieren und im Allgemeinen können die von der virtuellen Maschine zur Verfügung gestellten Rechenressourcen als Reaktion auf sich ändernde Benutzerbedürfnisse oder sich verändernde Anwendungsanforderungen durch einen Administrator oder eine andere Partei gepflegt, erweitert oder geändert werden.
  • Das Zusammenführen von Anwendungsanforderungen kann auf Grundlage vorhergesagter oder beobachteter Muster der Anwendungsnutzung angepasst werden. Zum Beispiel können die Gruppen von Anwendungsanforderungen auf eine Weise zusammengeführt werden, bei denen davon ausgegangen wird, dass der Benutzer nicht mehr als eine Anwendung gleichzeitig ausführt, oder dass nur definierte Anwendungen gleichzeitig ausgeführt werden können. Wenn zwei Anwendungen gleichzeitig ausgeführt werden, wird der virtuellen Maschine, welche die Anwendungen hostet, eine Speichermenge zugewiesen, die gleich der Summe der Speicheranforderungen für jede Anwendung ist.
  • Wenn eine Reihe von Anwendungen nicht gleichzeitig ausgeführt wird, wird der virtuellen Maschine, die die Anwendungen hostet, eine Speichermenge zugewiesen, die gleich der maximalen Speichermenge ist, die von jeder Anwendung benötigt wird. Bestimmte Arten von Rechenressourcen, wie etwa Plattenspeicher, werden unabhängig davon verwendet, ob eine Anwendung ausgeführt wird oder nicht, deshalb wird einer virtuellen Maschine, die mehrere Anwendungen hostet, eine Menge an Plattenspeicher zugewiesen, die gleich der Summe der Plattenspeicheranforderungen der Anwendungen ist. Verarbeitungsanforderungen können unter Verwendung eines Hybridansatzes zusammengeführt werden, weil die Prozessoranforderungen für Anwendungen überwiegend auf einer maximalen Prozessorauslastung basieren statt auf einem gleichmäßigen durchschnittlichen Nutzungsgrad. In einigen Beispielen wird einer virtuellen Maschine, die mehrere Anwendungen hostet, eine Menge an Verarbeitungsressourcen zugewiesen, die gleich der maximalen Menge an Verarbeitungsressourcen ist, die von einer beliebigen einzelnen Anwendung angefragt wird. In einem weiteren Beispiel wird einer virtuellen Maschine, die mehrere Anwendungen hostet, eine Menge an Verarbeitungsressourcen, die gleich der maximalen Menge an Verarbeitungsressourcen ist, die von einer einzelnen Anwendung angefragt wird, und eine zusätzlichen Menge an Verarbeitungsressourcen, die gleich einem Anteil der von den verbleibenden Anwendungen angefragten Verarbeitungsressourcen ist, zugewiesen.
  • In anderen Umgebungen können mehrere virtuelle Maschinen verwendet werden, um Anwendungen für den Benutzer zu hosten. In einer Ausführung wird eine virtuelle Maschine für jede der angegebenen Anwendungen bereitgestellt und jede virtuelle Maschine ist für die Ressourcenanforderungen der bestimmten, von der virtuellen Maschine gehosteten Anwendung ausgelegt. Ein Streaming-Agent wird auf jeder virtuellen Maschine ausgeführt und streamt Anzeigeinformationen von der Anwendung, die von der virtuellen Maschine gehostet wird, auf ein Client-Computersystem. Ein Anwendungsstreaming-Client, der auf dem Client-Computersystem ausgeführt wird, beinhaltet ein Streamzusammenführungselement, das Anzeigestreams von jeder virtuellen Maschine empfängt und die Anzeigestreams in einer einzelnen Anzeige zusammenführt, die für den Benutzer angezeigt wird. Virtuelle Maschinen können gestartet und beendet werden, wenn die Anwendungen vom Benutzer geöffnet und geschlossen werden, und jeder virtuellen Maschine können auf Grundlage des Bedarfs der bestimmten Anwendung, die von der virtuellen Maschine gehostet wird, Rechenressourcen zugewiesen werden.
  • In noch einer weiteren Umgebung haben mehrere Benutzer gemeinsam Zugang zu einer einzelnen virtuellen Maschine. Die virtuelle Maschine hostet eine Instanz einer Anwendung, die mehrere gleichzeitige Benutzersitzungen unterstützt. Jede Sitzung der Anwendung verwendet einen separaten Streaming-Agent, der innerhalb der virtuellen Maschine ausgeführt wird. Jeder Streaming-Agent ist mit einem Anwendungsstreaming-Client verbunden, der auf einem Client-Computersystem ausgeführt wird, der einem Benutzer dient. Die Streaming-Agents in der einzelnen virtuellen Computerumgebung können das Kodieren von Anzeigeinformationen durch gemeinsame Nutzung kodierter Informationen koordinieren, die Anzeigekomponenten, wie etwa Symbolleisten, statischen Anzeigebereichen oder anderen Benutzerschnittstellenkomponenten, die für mehrere Benutzersitzungen gleich sind, zugeordnet sind Anwendungssitzungen können gemeinsame Betriebskomponenten, wie etwa statische und dynamische Bibliotheken, Ressourcendateien und Datenbanken gemeinsam nutzen.
  • Wenn ein Streaming-Agent Anzeigeinformationen für die Übertragung an das Client-Computersystem kodiert, kann der Kodiervorgang auf verschiedene Weise optimiert werden. Abschnitte eines Anwendungsanzeigebildschirms, die statisch sind oder sich nicht häufig verändern, können beibehalten und von dem Streaming-Agent erneut verwendet werden. Wenn der Anwendungsstreaming-Client, der auf dem Client-Computersystem ausgeführt wird, anwendungsorientiert ist, kann der Anwendungsstreaming-Client dem Streaming-Agent Informationen zur Verfügung stellen, die anzeigen, dass bestimmte Abschnitte des Anwendungsanzeigestreams von dem Streaming-Agent nicht zur Verfügung gestellt werden müssen. In einigen Ausführungen führt ein Fenstermanager auf dem Client-Computersystem einen oder mehrere Anzeigestreams zusammen, die von einem oder mehreren Streaming-Agents zur Verfügung gestellt werden, und ein Abschnitt von einem oder mehreren Anzeigestreams kann auf der Client-Anzeige verdeckt sein. Der Fenstermanager stellt dem Streaming-Agent Ansichtsfensterinformationen zur Verfügung, die Abschnitte des Anzeigestreams angeben, die auf dem Client nicht sichtbar sind und daher nicht kodiert oder übertragen werden müssen.
  • Anwendungen zur Verwendung durch den Benutzer können manuell durch den Benutzer oder einen Administrator angegeben werden, oder automatisch durch Überwachen der Anwendungsverwendung durch den Benutzer mit einem Agent, der auf dem Client-Computersystem ausgeführt wird. Zum Beispiel können Rechenressourcen bereitgestellt und einem Benutzer zur Verfügung gestellt werden, mit denen alle Anwendungen ausgeführt werden können. Die tatsächliche Verwendung der Anwendungen wird durch einen Agent verfolgt und nach einem bestimmten Zeitraum werden die von dem Agent erlangten Informationen verwendet, um Anwendungen anzugeben, die für den Benutzer verfügbar, jedoch ungenutzt sind. Die ungenutzten Anwendungen werden aus dem Profil des Benutzers entfernt und der virtuellen Maschine des Benutzers wird auf Grundlage der bestimmten tatsächlich genutzten Anwendungen eine verringerte Menge an Rechenressourcen zugewiesen. In einem anderen Beispiel wird dem Benutzer eine Gruppe von Anwendungen zur Verfügung gestellt und ein Agent gibt an, wenn mehr als eine Anwendung gleichzeitig verwendet wird. Infolge der Feststellung einer gleichzeitigen Anwendungsverwendung werden die Rechenressourcenanforderungen für den Benutzer gemäß der gleichzeitigen Anwendungsverwendung neu berechnet und der virtuellen Maschine des Benutzers werden angemessene erhöhte Rechenressourcen zugewiesen.
  • Die Rechenressourcen können wenigstens teilweise auf Grundlage eines dem Benutzer zugeordneten Budgets angepasst werden. Im Allgemeinen werden Benutzern virtuelle Maschinen zur Verfügung gestellt, die ausgelegt sind, um eine optimale Leistung für die zur Verwendung durch den Benutzer angegebenen Anwendungen zur Verfügung zu stellen. Wenn Rechenressourcen genutzt werden, wird durch den Rechenressourcendienstanbieter ein dem Benutzer zugeordnetes Budget zugeteilt. Während das Budget verbraucht wird, bestimmt der Rechenressourcendienstanbieter, ob das verbleibende Budget vor dem Ablauf des Budgetzeitraums aufgebraucht sein wird. Wenn das verbleibende Budget vor dem Ablauf des Budgetzeitraums aufgebraucht sein wird, rationiert der Rechenressourcendienstanbieter die Rechenressourcen, die der virtuellen Maschine des Benutzers zugewiesen sind, um sicherzustellen, dass das Budget bis zum Ablauf des Budgetzeitraums reicht. Wenn Anpassungen auf Grundlage von Budgetbeschränkungen erfolgen, kann eine Meldung an den Benutzer und einen Administrator gesendet werden, in der eine Erhöhung des Rechenressourcenbudgets angefragt wird.
  • 1 zeigt ein veranschaulichendes Beispiel einer Umgebung, in der verschiedene Ausführungsformen durchgeführt werden können. Eine Umgebung 100 beinhaltet ein Client-Computersystem 102, das von einem Benutzer 104 verwendet wird, um über ein Computernetzwerk 108 auf einen Rechenressourcendienstanbieter 106 zuzugreifen. Der Rechenressourcendienstanbieter 106 umfasst eines oder mehrere Servercomputersysteme, die eine virtuelle Maschine 112 für den Benutzer 104 hosten. Der Rechenressourcendienstanbieter 106 konfiguriert die virtuellen Maschinen durch Zuweisen von Rechenressourcen von den Servercomputersystemen zu den virtuellen Maschinen und Installieren einer oder mehrerer Anwendungen von einem Anwendungsspeicher 110 auf den virtuellen Maschinen. Der Anwendungsspeicher 110 speichert die Anwendungen in der Form von Installationsdateien, die auf einer virtuellen Maschine ausgeführt werden, um die Anwendung zu installieren, oder in der Form eines ausführbaren Abbildes, das auf virtuelle Speicherressourcen auf einer virtuellen Maschine übertragen werden kann. Die virtuelle Maschine 112 hostet eine Textverarbeitungsanwendung 114, eine Solid-Modelling-Anwendung 116 und eine Bildbearbeitungsanwendung 118. Die Anwendungen erzeugen Anzeigeinformationen, die durch einen Streaming-Agent 120, der auf der virtuellen Maschine 112 ausgeführt wird, zu Anzeigestreams kodiert wird. Die Anzeigestreams werden über das Computernetzwerk 108 zu dem Client-Computersystem 102 gestreamt. Das Client-Computersystem 102 empfängt die Anzeigestreams unter Verwendung eines Anwendungsstreaming-Clients, wie etwa eines Webbrowsers, der mit Anwendungsstreaming-Software konfiguriert ist, oder einer eigenständigen Streaminganwendung. Der Anwendungsstreaming-Client dekodiert den Anzeigestream und zeigt die Anwendungsbenutzerschnittstelle auf einem Anzeigebildschirm an, der mit dem Client-Computersystem 102 verbunden ist.
  • Der Benutzer 104 startet den Anwendungsstreamingvorgang, indem er auf eine Anwendungsbrokerschnittstelle auf dem Client-Computersystem 102 zugreift. Die Anwendungsbrokerschnittstelle zeigt eine Liste von dem Benutzer zur Verfügung stehenden Anwendungen in Form eines Menüs, als Symbole auf einem Desktop, als Kacheln auf einem Startbildschirm oder einer anderen anwendungserfordernden Schnittstelle an. Bei einigen Beispielen wird die Anwendungsbrokerschnittstelle über die Befehlszeile bereitgestellt. Die Anwendungsbrokerschnittstelle befüllt die Liste der verfügbaren Anwendungen, indem sie auf einen Anwendungsbrokerdienst zugreift, der auf dem Rechenressourcendienstanbieter 106 ausgeführt wird. Der Anwendungsbrokerdienst pflegt eine Datenbank, die eine Gruppe von Anwendungen definiert, die zur Verwendung durch den Benutzer zur Verfügung stehen. Die Datenbank wird durch einen Administrator des Rechenressourcendienstes befüllt.
  • Infolge des Startens des Anwendungsstreaming-Clients durch den Benutzer, startet der Rechenressourcendienstanbieter 106 die virtuelle Maschine 112 mit Rechenressourcen, die ausgelegt sind, die Gruppe der Anwendungen, zu denen dem Benutzer 104 Zugang gewährt wurde, auszuführen. Die Anwendungen, zu denen dem Benutzer 104 Zugang gewährt wurde, werden aus dem Anwendungsspeicher 110 auf der virtuellen Maschine 112 installiert und es wird ein Anzeigestream zwischen der virtuellen Maschine und dem Client-Computersystem 102 hergestellt, wobei dem Benutzer 104 die Benutzerschnittstelle zu den auf der virtuellen Maschine 112 gehosteten Anwendungen zur Verfügung gestellt wird. Der Benutzer 104 kann eine oder mehrere der installierten Anwendungen, die die Rechenressourcen auf der virtuellen Maschine 112 gemeinsam nutzen, ausführen.
  • Wenn der Benutzer in anderen Ausführungen den Anwendungsstreaming-Client startet, startet der Rechenressourcendienstanbieter 106 keine virtuelle Maschine, sofern und solange der Benutzer 104 keine Anwendung auswählt, die ausgeführt werden soll. Der Anwendungsstreaming-Client, der auf dem Client-Computersystem 102 ausgeführt wird, erzeugt eine Desktop-Schnittstelle und stellt diese für den Benutzer 104 dar. Die Anwendungen, für die der Benutzer 104 eine Berechtigung besitzt, können von der Desktop-Schnittstelle über Symbole, ein Menü oder andere Benutzerschnittstellenelemente gestartet werden. Beim Auswählen einer Anwendung von der Desktop-Schnittstelle wird ein Befehl an den Rechenressourcendienstanbieter 106 gesendet, der eine virtuelle Maschine startet, die mit Rechenressourcen konfiguriert ist, die ausgelegt sind, die ausgewählte Anwendung auszuführen. Wenn eine zusätzliche Anwendung von der Desktop-Schnittstelle ausgewählt wird, startet der Rechenressourcendienstanbieter 106 eine zusätzliche virtuelle Maschine mit Rechenressourcen, die ausgelegt sind, die zusätzliche Anwendung auszuführen. Wenn eine Anwendung geschlossen wird, werden die entsprechende virtuelle Maschine und die zugeordneten Rechenressourcen freigegeben Jede virtuelle Maschine enthält einen Streaming-Agent, der Anzeigeinformationen kodiert, die von der Anwendung zur Verfügung gestellt werden, die auf der virtuellen Maschine ausgeführt wird. Das Client-Computersystem 102 empfängt einen Anzeigestream von jeder virtuellen Maschine. Die Anzeigestreams werden von einer Streamzusammenführungselementkomponente in dem Anwendungsstreaming-Client empfangen und zusammengeführt, und auf einer einheitlichen Desktop-Schnittstelle dargestellt.
  • 2 zeigt ein veranschaulichendes Beispiel eines Prozesses, der infolge seiner Durchführung gemäß einer Ausführungsform die Rechenressourcenanforderungen für einen Client wenigstens teilweise auf Grundlage einer Gruppe von ausgewählten Anwendungsprogrammen bestimmt. Ein Prozessdiagramm 200 zeigt Informationen, die von dem Rechenressourcendienstanbieter gepflegt werden, und die es dem Rechenressourcendienstanbieter erlauben, virtuelle Maschinen zu konfigurieren, die für die bestimmte Gruppe von Anwendungen ausgelegt sind, die dem Benutzer zur Verfügung gestellt werden. Computeranwendungen ist eine Gruppe von Rechenressourcenanforderungen zugeordnet. Die Ressourcenanforderungen beschreiben Mindestmengen und empfohlene Mengen von verschiedenen Rechenressourcentypen, wie etwa Dauerspeicher, Arbeitsspeicher, Verarbeitungsleistung, Netzwerkbandbreite, Grafikspeicher, Grafikleistung, Peripheriegeräteanforderungen, Anforderungen für unterstütztende Software oder andere Anforderungen. Die Verarbeitungsleistung kann als minimale und empfohlene Taktfrequenz oder eine Kombination von Taktfrequenz und Prozessortyp definiert werden. Bei einigen Beispielen kann die Verarbeitungsleistung in allgemeinen Begriffen definiert werden, wie etwa Operationen je Sekunde, Gleitkommaoperationen je Sekunde oder einer Operationsausführungsrate. Die Grafikleistung kann Teil der Anwendungsanforderungen sein und kann eine Mindestmenge an Grafikspeicher und/oder eine Mindestgeschwindigkeit oder einen Typ eines Grafikprozessors definieren. Einige Anwendungen können erfordern, dass bestimmte Peripheriegeräte oder Schnittstellen vorhanden sind, und einige Anwendungen erfordern, dass eine bestimmte unterstützende Software mit der Anwendung installiert ist, wie etwa eine bestimmte Art von Betriebssystem mit einer minimalen Versionsnummer. Anwendungsanforderungen können unter Verwendung einer virtuellen Maschine durch Konfigurieren der virtuellen Maschine mit virtuellen Ressourcenäquivalenten erfüllt werden, die den Rechenressourcenanforderungen der Anwendung entsprechen.
  • Eine Anwendungsvorlage 202 definiert eine Gruppe von Anwendungen, die dem Benutzer durch einen Rechenressourcendienstanbieter zur Verfügung gestellt werden sollen. Der Rechenressourcendienstanbieter kann die Anwendungsvorlage 202 von dem Benutzer oder von einem Administrator, der für das Zurverfügungstellen von Rechendiensten für den Benutzer verantwortlich ist, erlangen. In einigen Ausführungsformen wird die Anwendungsvorlage 202 durch Analysieren von Informationen erlangt, die von einem Überwachungsagenten gesammelt wurden, der auf dem Client-Computersystem des Benutzers ausgeführt wird. Der Überwachungsagent erfasst Anwendungsverwendungsmuster und gibt die Gruppe von Anwendungen an, die verwendet werden, und erfasst Kombinationen von Anwendungen, die gleichzeitig verwendet werden. Die Anwendungsvorlage 202 ist mit drei ausgewählten Anwendungsprofilen gekoppelt. Ein Textverarbeitungsprofil 204 beschreibt eine Gruppe von Anforderungen zum Ausführen einer entsprechenden Textverarbeitungsanwendung auf einem Host-Computersystem. Ein Solid-Modeling-Profil 206 beschreibt eine Gruppe von Anforderungen zum Ausführen einer entsprechenden Solid-Modeling-Anwendung auf einem Host-Computersystem. Ein Bildbearbeitungsprofil 208 beschreibt eine Gruppe von Anforderungen zum Ausführen einer entsprechenden Bildbearbeitungsanwendung auf einem Computersystem. Die drei Anwendungsprofile definieren jeweils eine minimale CPU-Geschwindigkeit, eine Mindestmenge an Speicher, eine Mindestmenge an Plattenspeicher, eine Mindestmenge an Grafikspeicher und eine Mindestmenge an verfügbarer Netzwerkbandbreite.
  • Der Rechenressourcendienstanbieter führt die Profile der Anwendungen zusammen, die in der Anwendungsvorlage 202 ausgewählt wurden, um eine Gruppe von Anforderungen 210 an die virtuelle Maschine zu erzeugen. Wenn erwartet wird, dass Anwendungen nacheinander ausgeführt werden, können die Anforderungen zusammengeführt werden, indem der Höchstwert der minimalen Beschränkungen in Hinsicht auf CPU, Speicher, Grafikspeicher und Netzwerkbandbreite angegeben wird. Da die Plattenspeicheranforderungen allgemein gelten, selbst wenn die Anwendung nicht ausgeführt wird, werden die Plattenspeicheranforderungen für jede Anwendung hinzugefügt, um die Plattenspeicheranforderungen für die Gruppe der Anforderungen 210 an die virtuelle Maschine zu bestimmen. Wenn erwartet wird, dass Anwendungen gleichzeitig ausgeführt werden, werden die Anforderungen 210 an die virtuelle Maschine durch Hinzufügen der Anforderungen der Anwendungen, die gleichzeitig ausgeführt werden sollen, bestimmt. Wenn im Beispiel von 2 beispielsweise die Textverarbeitungsanwendung und die Solid-Modeling-Anwendung gleichzeitig ausgeführt werden sollen, wären die Anforderungen an die virtuelle Maschine 3 GHz CPU, 600 MB Speicher, 1,15 GB Plattenspeicher, 700 kB Netzwerkbandbreite und 3 GB Grafikspeicher.
  • In einigen Beispielen stellen die Rechenressourcenanforderungen einer Anwendung eine maximale vorübergehende Ressourcenverwendung anstatt einer dauerhaften Verwendung dar, und deshalb kann weniger als die Summe der angegebenen Ressourcenanforderungen für die gleichzeitige Ausführung der Anwendungen erforderlich sein. Für eine Gruppe von Anwendungen, die gleichzeitig ausgeführt werden sollen, können verschiedene Elemente der Anforderungen 210 an die virtuelle Maschine durch Angeben des Höchstwerts der minimal erforderlichen Ressourcen für jeden Ressourcentyp für jede Anwendung und Addieren eines Anteils der Differenz zwischen dem angegebenen Höchstwert und der Summe aller Anwendungsressourcen bestimmt werden. Für die drei ausgewählten Anwendungen in 2, die gleichzeitig ausgeführt werden sollen, können zum Beispiel die Anforderungen 210 an die virtuelle Maschine für den Speicher durch Angeben der Höchstmenge an Speicher, der von den drei Anwendungen benötigt wird (1GB) und Addieren eines Anteils (der Hälfte in diesem Beispiel) der Anforderungen der verbleibenden Anwendungen (400MB+200MB) bestimmt werden, um eine Anforderung für einen virtuellen Maschinenspeicher von 1,3GB (1GB +(0,5 x (400MB+200MB))= 1,3GB) zu erreichen. Der Anteil kann wenigstens teilweise auf Grundlage der Veränderlichkeit der tatsächlichen Rechenressourcenverwendung durch die Anwendungen angepasst werden.
  • 3 zeigt ein veranschaulichendes Beispiel eines Prozesses, der infolge seiner Durchführung gemäß einer Ausführungsform einem Benutzer einen Typ einer virtuellen Instanz zuweist. Ein Prozessdiagramm 300 zeigt, wie Anforderungen 302 an die virtuelle Maschine vom Rechenressourcendienstanbieter verwendet werden können, um eine geeignete Profilvorlage für virtuelle Maschinen zum Konfigurieren einer virtuellen Maschine anzugeben. Bei einigen Ausführungen stellt ein Rechenressourcendienstanbieter Clients, unter Verwendung einer Reihe vordefinierter Profilvorlagen für virtuelle Maschinen, virtuelle Maschinen zur Verfügung. Die Profilvorlagen für virtuelle Maschinen definieren eine Konfiguration von Rechenressourcen, die als Vorlage für das Bereitstellen virtueller Maschinen dienen. Durch das Zurverfügungstellen einer Reihe von vordefinierten Konfigurationen für virtuelle Maschinen kann der Rechenressourcendienstanbieter in einigen Ausführungsformen vor jeglichen Client-Anfragen vorab einen Pool an virtuellen Maschinen erzeugen und pflegen. In der Folge kann eine virtuelle Maschine aus dem vorhandenen Pool virtueller Maschinen bereitgestellt werden, wenn eine Anfrage zur Ausführung einer Anwendung von dem Rechenressourcendienstanbieter empfangen wird, und Anwendungen können schneller installiert und gestartet werden.
  • In dem in 3 gezeigten Beispiel wird die Profilvorlage für virtuelle Maschinen durch Angeben einer Profilvorlage für virtuelle Maschinen, welche die Anforderungen 302 an die virtuelle Maschine erfüllt oder übertrifft, ausgewählt. Von dem Rechenressourcendienstanbieter werden drei Profilvorlagen für virtuelle Maschinen unterstützt. Eine erste VM-Profilvorlage 304 ist ungeeignet, weil die Menge der Verarbeitungsleistung, des Plattenspeichers, des Grafikspeichers und die Netzwerkbandbreite unter dem in den Anforderungen 302 an die virtuelle Maschine definierten Mindestbetrag liegen. Eine zweite VM-Profilvorlage 306 ist geeignet, weil die Menge aller Rechenressourcentypen in dem Profil den in den Anforderungen 302 an die virtuelle Maschine definierten Mindestbetrag erfüllen oder übertreffen. Eine dritte VM-Profilvorlage 308 ist ungeeignet, weil die Menge der Verarbeitungsleistung unter dem in den Anforderungen 302 an die virtuelle Maschine definierten Mindestbetrag liegt. Wenn mehr als eine VM-Profilvorlage die Anforderungen 302 an die virtuelle Maschine erfüllt, verwendet der Rechenressourcendienstanbieter eine Reihe von Kriterien zur Auswahl aus den zufriedenstellenden VM-Profilvorlagen. Bei einigen Beispielen wählt der Rechenressourcendienstanbieter eine bestimmte VM-Profilvorlage aus einer Gruppe zufriedenstellender VM-Profilvorlagen wenigstens teilweise auf Grundlage einer Metrik aus, die im Wesentlichen proportional zu den Kosten für das Betreiben einer virtuellen Maschine gemäß jeder VM-Profilvorlage ist. Die Metrik wird auf jeden Rechenressourcentyp angewendet, der in den VM-Profilvorlagen definiert ist, und jede VM-Profilvorlage wird analysiert, um eine Gesamtmetrik für das VM-Profil zu bestimmen. Zum Beispiel kann die folgende Metrik auf verschiedene Arten von Rechenressourcen angewendet werden:
    CPU 50/Ghz
    Speicher 0,2/Mb
    Plattenspeicher 0,5/GB
    Grafikspeicher 100/GB
    Netzwerkbandbreite 0,1/MB
  • Bei Anwendung der vorstehenden Metrik ergibt sich folgende Gesamtmetrik für die in 3 gezeigten VM-Profilvorlagen.
    Ressource Rate VM-Profil 1 Ressourcenmetrik
    CPU 50/Ghz 1Ghz 50
    Speicher 0,2/Mb 1GB 200
    Plattenspeicher 0,5/GB 2GB 1
    Grafikspeicher 100/GB 1GB 100
    Netzwerkbandbreite 0,1/MB 5MB/s 0,5
    Gesamtmetrik= 351,5
    Ressource Rate VM-Profil 2 Ressourcenmetrik
    CPU 50/Ghz 3Ghz 150
    Speicher 0,2/Mb 2GB 400
    Plattenspeicher 0,5/GB 6GB 3
    Grafikspeicher 100/GB 2GB 200
    Netzwerkbandbreite 0,1/MB 20MB/s 2
    Gesamtmetrik= 755
    Ressource Rate VM-Profil 3 Ressourcenmetrik
    CPU 50/Ghz 2Ghz 100
    Speicher 0,2/Mb 1GB 200
    Plattenspeicher 0,5/GB 10GB 5
    Grafikspeicher 100/GB 4GB 400
    Netzwerkbandbreite 0,1/MB 50MB/s 5
    Gesamtmetrik= 710
  • Die für jedes VM-Profil bestimmte Gesamtmetrik ermöglicht es, die verschiedenen VM-Profile zum Zweck der Auswahl eines bestimmten VM-Profils aus einer Vielzahl von zufriedenstellenden VM-Profilen (VM-Profile, welche die gewünschten Anforderungen erfüllen oder übersteigen) miteinander zu vergleichen. In dem vorstehend gezeigten Beispiel wird die erste VM-Profilvorlage 304 bevorzugt, sofern sie die Mindestanforderungen erfüllt. Die zweite VM-Profilvorlage 306 wird als nächstes bevorzugt, gefolgt von der dritten VM-Profilvorlage 308.
  • Bei bestimmten Ausführungen kann die Verfügbarkeit vorkonfigurierter virtueller Maschinen die Auswahl einer bestimmten VM-Profilvorlage beeinflussen oder außer Kraft setzen. Wenn der Rechenressourcendienstanbieter virtuelle Maschinen aus einem bereits bestehenden Pool virtueller Maschinen bereitstellt, kann das Vorhandensein oder Fehlen virtueller Maschinen mit einer bestimmten VM-Profilvorlage in dem Pool genutzt werden, um eine bestimmte VM-Profilvorlage für eine neue Client-Anfrage auszuwählen. Wenn zum Beispiel eine Reihe von VM-Profilvorlagen die Anforderungen 302 an die virtuelle Maschine erfüllen oder übersteigen, aber nur eine der Reihe von VM-Profilvorlagen eine entsprechende virtuelle Maschine in einem Pool verfügbarer VMs besitzt, wird der Rechenressourcendienstanbieter eher die vorhandene virtuelle Maschine aus dem Pool zuweisen als eine neue virtuelle Maschine zu erstellen.
  • Bei einigen Ausführungsformen erzeugt der Rechenressourcendienstanbieter eine virtuelle Maschine wenigstens teilweise direkt auf Grundlage der Anforderungen 302 an die virtuelle Maschine und stützt sich nicht auf eine finite Gruppe von VM-Profilvorlagen. Es kann eine VM-Profilvorlage erstellt werden, die mit den Anforderungen 302 an die virtuelle Maschine übereinstimmt, oder aus den Anforderungen 302 an die virtuelle Maschine kann direkt eine virtuelle Maschine erzeugt werden. Nachdem die VM durch den Rechenressourcendienstanbieter erlangt wurde, wird die VM einem Benutzer 310 zugewiesen. Bei Zusammenführung mit dem Prozess aus 2 wird dem Benutzer 310 eine virtuelle Maschine zur Verfügung gestellt, die ausgelegt ist, die bestimmten von dem Benutzer verwendeten Anwendungen zu hosten.
  • 4 zeigt ein veranschaulichendes Beispiel eines Client-Server-Computersystems, das gemäß einer Ausführungsform einem Client Rechenressourcen zur Verfügung stellt, die ausgelegt sind, eine definierte Gruppe von Anwendungen zu hosten. Ein Systemdiagramm 400 beinhaltet ein Client-Computersystem 402, das von einem Benutzer 404 verwendet wird, um auf Rechenressourcen zuzugreifen, die von einem Host-Server 406 zur Verfügung gestellt werden. Eine Gruppe von Anforderungen 408 an die virtuelle Maschine wird wenigstens teilweise auf Grundlage einer angegebenen Gruppe von Anwendungen bestimmt, die durch den Benutzer 404 verwendet werden. Die Gruppe von Anforderungen 408 an die virtuelle Maschine beinhaltet Spezifikationen 410, die verschiedene Mengen und Eigenschaften bestimmter Rechenressourcen angeben. Ein Anwendungsstreaming-Client wird auf dem Client-Computersystem 402 ausgeführt. Der Anwendungsstreaming-Client ist ein Anwendungsprogramm, das über eine Schnittstelle zu dem Host-Server 406 verfügt, um Rechenressourcen in der Form von Zugriff auf eine oder mehrere virtuelle Maschinen zu erlangen, die von dem Host-Server 406 gehostet werden. Der Anwendungsstreaming-Client 412 verarbeitet ausgehende Schnittstellendaten, wie etwa Tastendrücke, Mausbewegungen, 3D-Mausbewegungen und -stellungen sowie von dem Benutzer 404 ausgeführte Mausklicks und überträgt die Schnittstellendaten an den Host-Server 406. Virtuelle Maschinen, die auf dem Host-Server 406 ausgeführt werden, führen von dem Benutzer 404 angefragte Anwendungen aus, und Anzeigeinformationen, die von den Anwendungen erzeugt werden, werden kodiert und an den Anwendungsstreaming-Client 412 gestreamt. Der Anwendungsstreaming-Client 412 dekodiert die empfangenen gestreamten Anzeigeinformationen und stellt eine betriebsfähige Benutzerschnittstelle für den Benutzer 404 dar, die es dem Benutzer ermöglicht, mit den Anwendungen zu interagieren, die auf den virtuellen Maschinen ausgeführt werden.
  • Bei einigen Beispielen stellt der Host-Server 406 dem Benutzer 404 wenigstens teilweise auf Grundlage einer einzelnen zusammengeführten Gruppe von VM-Anforderungen, die ausreichend sind, um die von dem Benutzer verwendeten Anwendungen zu hosten, eine einzelne virtuelle Maschine zur Verfügung. Der Benutzer 404 startet den Anwendungsstreaming-Client 412. Der Anwendungsstreaming-Client 412 stellt für den Benutzer 404 eine Anzeige dar, die es dem Benutzer ermöglicht, die Ausführung einer Anwendung anzufragen. Der Anwendungsstreaming-Client 412 stellt die Anforderungen 408 an die virtuelle Maschine einem Rechenressourcendienstanbieter zur Verfügung, der auf dem Host-Server 406 ausgeführt wird. Bei einigen Ausführungen greift der Rechenressourcendienstanbieter auf eine Datenbank von VM-Profilvorlagen 414 zu. Die Datenbank der VM-Vorlagen 414 speichert eine Reihe von VM-Profilvorlagen, die von dem Rechenressourcendienstanbieter unterstützt werden. Der Rechenressourcendienstanbieter vergleicht die zur Verfügung gestellten Anforderungen 408 an die virtuelle Maschine mit den in der Datenbank der VM-Vorlagen 414 gespeicherten VM-Profilvorlagen und wählt ein bestimmtes VM-Profil aus, um die Abfrage des Benutzers zu erfüllen. Der Rechenressourcendienstanbieter startet eine Instanz 416 einer virtuellen Maschine gemäß dem ausgewählten VM-Profil. Bei anderen Ausführungen erzeugt der Rechenressourcendienstanbieter die Instanz 416 einer virtuellen Maschine direkt aus den Anforderungen 408 an die virtuelle Maschine.
  • Im Allgemeinen werden von dem Rechenressourcendienstanbieter eine oder mehrere Anwendungen von einem Anwendungsspeicher 418 auf der Instanz 416 einer virtuellen Maschine installiert. Anwendungen können durch Ausführen eines vom Hersteller der Anwendung zur Verfügung gestellten Installationsprogramms oder Installers oder durch Kopieren eines vorinstallierten Plattenabbilds der Anwendung auf die Instanz 416 einer virtuellen Maschine auf der Instanz 416 einer virtuellen Maschine installiert werden. Bei einigen Ausführungen werden der Instanz 416 einer virtuellen Maschine Anwendungen zur Verfügung gestellt, indem der Instanz 416 einer virtuellen Maschine ermöglicht wird, eine Remotekopie der Anwendung außerhalb der Instanz 416 einer virtuellen Maschine auszuführen. Anwendungen können bei Bedarf installiert werden, infolge der Anfrage des Benutzers 404 nach Ausführung der spezifischen Anwendung.
  • Ein Streaming-Agent auf der Instanz 416 einer virtuellen Maschine erfasst die Anzeigeinformationen, die von der auf der Instanz 416 einer virtuellen Maschine ausgeführten Anwendung erzeugt werden, kodiert die Anzeigeinformationen in einen Anzeigestream, der dem Anwendungsstreaming-Client 412 aus dem Client-Computersystem 402 übertragen wird. Der Anwendungsstreaming-Client 412 dekodiert die Anzeigeinformationen und stellt eine Benutzerschnittstelle für den Benutzer 404 dar, die es dem Benutzer ermöglicht, mit der Anwendung zu interagieren. Bei einigen Ausführungen stellt der Rechenressourcendienstanbieter dem Benutzer 404 mehr als eine Instanz einer virtuellen Maschine bereit. Bei einigen Ausführungsformen wird zum Beispiel eine Instanz einer virtuellen Maschine für jede Anwendung, die dem Benutzer 404 zur Verfügung steht, erstellt. Ein Streaming-Agent, der auf jeder virtuellen Maschine ausgeführt wird, stellt dem Anwendungsstreaming-Client 412 einen Anzeigestream zur Verfügung. Der Anwendungsstreaming-Client 412 führt die Anzeigestreams zusammen und stellt eine einzige Benutzerschnittstelle für den Benutzer 404 dar.
  • Der Streaming-Agent ist in der Lage die verwendeten Kodieralgorithmen anzupassen, um die Anzeigeinformationen auf Grundlage der verfügbaren Netzwerkbandbreite und Leistung zu kodieren. Wenn zusätzliche Bandbreite verfügbar ist, erhöht der Streaming-Agent die Auflösung der kodierten Anzeigeinformationen, was zu einer höheren Bitrate für den kodierten Anzeigestream führt. Wenn die Netzwerkbandbreite eingeschränkt wird, kann der Streaming-Agent die Rate des kodierten Anzeigebildschirms durch Verringern der Auflösung der kodierten Anzeigeinformationen oder Verringern der Bildrate der kodierten Anzeigeinformationen verringern. Bei einigen Ausführungen passt der Streaming-Agent den Kodieralgorithmus wenigstens teilweise auf Grundlage der Anwendung an, deren Anzeige kodiert wird. Eine Textverarbeitungsanwendung kann zum Beispiel mit einer höheren Auflösung und einer niedrigeren Bildrate kodiert werden, wohingegen ein Videospiel mit einer niedrigeren Auflösung und einer höheren Bildrate kodiert werden kann, um gleichmäßige Bewegungen zu bewahren. Anpassungen des Kodieralgorithmus können durch den Streaming-Agent oder den Streaming-Client erfolgen, die auf dem Client-Computersystem ausgeführt werden. Anpassungen der Kodieralgorithmen können Anpassungen der Audiokodierung beinhalten, die den Videoanzeigeinformationen zugeordnet ist. Die Audiokodierung kann zum Beispiel angepasst werden, um zwischen Audio in Stereo und Mono zu wählen, sowie zwischen Audio in Sprachqualität, Radioqualität und CD-Qualität. Die Audiokodierung kann wenigstens teilweise auf Audioabspielmöglichkeiten basieren, die dem Client-Computersystem 402 zur Verfügung stehen.
  • 5 zeigt ein veranschaulichendes Beispiel eines Prozesses, der infolge seiner Durchführung durch ein Client-Computersystem gemäß einer Ausführungsform Rechenressourcen von einem Server bereitstellt und Anzeigestreams von Anwendungen empfängt, die auf dem Server ausgeführt werden. Ein Prozessdiagramm 500 beginnt bei Block 502, wobei ein Benutzer einen Anwendungsstreaming-Client auf einem lokalen Client-Computersystem installiert. Bei einigen Beispielen handelt es sich bei dem Anwendungsstreaming-Client um einen Webbrowser oder einen Webbrowser, der mit Plug-ins konfiguriert ist, die eine Anwendungsstreamingfunktion zur Verfügung stellen. Bei einem weiteren Beispiel handelt es sich bei dem Anwendungsstreaming-Client um eine eingenständige Anwendung, die auf dem Client-Computersystem installiert ist. Bei Block 504 meldet sich der Benutzer bei dem Anwendungsstreaming-Client an, der den Benutzer bei einem Dienst authentifiziert, der als Rechenressourcendienstanbieter fungiert. Dem Anwendungsstreaming-Client wird ein Benutzerprofil zur Verfügung gestellt, das von dem Benutzer verwendete Anwendungen angibt. Bei einigen Beispielen beinhaltet das Benutzerprofil Informationen, die Nutzungsmuster der angegebenen Anwendungen beschreiben, wie etwa das Angeben von Anwendungen, die gleichzeitig verwendet werden. Unter Verwendung der in dem Benutzerprofil enthaltenen Informationen bestimmt das Client-Computersystem 506 eine Gruppe von Anforderungen an die virtuelle Maschine, welche die in dem Benutzerprofil beschriebene Anwendungsnutzung ermöglicht.
  • Bei Block 508 startet das Client-Computersystem eine virtuelle Maschine gemäß den bestimmten Anforderungen an die virtuelle Maschine. Bei einigen Beispielen fragt das Client-Computersystem an, dass die virtuelle Maschine von einem Rechenressourcendienstanbieter erstellt wird. Der Rechenressourcendienstanbieter kann eine virtuelle Maschine erstellen, die mit den zur Verfügung gestellten Anforderungen an die virtuelle Maschine übereinstimmt. Bei anderen Beispielen erstellt der Rechenressourcendienstanbieter eine virtuelle Maschine aus einem von einer Reihe von Maschinenprofilen, das die bestimmten Anforderungen an die virtuelle Maschine erfüllt oder übersteigt. Bei noch einem weiteren Beispiel wählt der Rechenressourcendienstanbieter eine virtuelle Maschine aus einem Pool von zuvor erstellten virtuellen Maschinen aus, die zur Verwendung zur Verfügung stehen. Bei Block 510 installiert das Client-Computersystem Anwendungen auf der zur Verfügung gestellten virtuellen Maschine. Die Anwendungen können auf der zur Verfügung gestellten virtuellen Maschine durch den Client oder den Rechenressourcendienstanbieter auf Anfrage des Client installiert werden.
  • Das Client-Computersystem stellt 512 über einen Streaming-Agent eine Streamingverbindung zu der zur Verfügung gestellten virtuellen Maschine her. Der Streaming-Agent ist auf der zur Verfügung gestellten virtuellen Maschine installiert und kodiert Anzeigeinformationen von den installierten Anwendungen und überträgt den entstandenen Anzeigestream zur Anzeige für den Benutzer an das Client-Computersystem. Das Client-Computersystem empfängt 514 die kodierten Anzeigeinformationen und zeigt die Anzeigeinformationen für den Benutzer an. Die Benutzereingabe von dem Benutzer, wie etwa Tastendrücke, Mausbewegungen, 3D-Mausbewegungen und - ausrichtungen sowie Mausklicks, wird von dem Anwendungsstreaming-Client kodiert und an den Streaming-Agent übertragen. Zusätzlich zu Bildanzeigeinformationen können von dem Streaming-Agent zusätzliche Signale kodiert und an den Anwendungsstreaming-Client gestreamt werden. Bei einigen Beispielen werden die von dem Betriebssystem und den Anwendungen erzeugten Audioinformationen kodiert und an den Anwendungsstreaming-Client gesendet.
  • 6 zeigt ein veranschaulichendes Beispiel eines Client-Server-Computersystems, das gemäß einer Ausführungsform einem Client in Form einer Reihe virtueller Maschinen Rechenressourcen zur Verfügung stellt, wobei jede virtuelle Maschine ausgelegt ist, eine bestimmte, von dem Client definierte Anwendung zu hosten. Eine Rechenumgebung 600 beinhaltet ein Client-Computersystem 602, das von einem Benutzer 604 betrieben wird. Das Client-Computersystem 602 kommuniziert mit dem Host-Server 606 für virtuelle Maschinen, der Zugang zu einer Reihe virtueller Maschinen gewährt. Das Client-Computersystem 602 beinhaltet einen Anwendungsstreaming-Client 608. Der Anwendungsstreaming-Client 608 beinhaltet einen VM-Manager 610 und einen Anwendungsstream-Stitcher 612. Der VM-Manager 610 verfügt über eine Schnittstelle zu einem Rechenressourcendienstanbieter auf dem Host-Server 606 für virtuelle Maschinen. Der VM-Manager 610 empfängt Anfragen nach Rechenressourcen von dem Benutzer 604 und übersetzt diese Anfragen in Anfragen nach virtuellen Maschinen von dem Host-Server 606 für virtuelle Maschinen. Wenn der Benutzer 604 eine Anwendung schließt, benachrichtigt der VM-Manager 610 den Host-Server 606 für virtuelle Maschinen, dass die virtuelle Maschine nicht mehr in Verwendung ist. Bei einigen Beispielen nimmt der Hostserver 606 für virtuelle Maschinen die virtuelle Maschine außer Betrieb und gibt die der virtuellen Maschine zugewiesenen Ressourcen frei. Bei einem weiteren Beispiel bringt der Hostserver 606 für virtuelle Maschinen die außer Betrieb genommene virtuelle Maschinen in einen Pool virtueller Maschinen ein, die zur Wiederverwendung zur Verfügung stehen. In einigen Ausführungsformen erzeugt der Rechenressourcendienstanbieter eine Reihe virtueller Maschinen, bevor sie von einem Client-Computersystem angefragt werden und bringt die virtuellen Maschinen in den Pool der verfügbaren virtuellen Maschinen. Wenn der Pool der verfügbaren virtuellen Maschinen Ressourcen über eine vorbestimmte Menge hinaus verbraucht oder wenn es dem Hostserver 606 für virtuelle Maschinen an Ressourcen mangelt, um zwei zusätzliche virtuelle Maschinen zuzuweisen, können virtuelle Maschinen innerhalb des Pools virtueller Maschinen wiederaufbereitet werden und die entsprechenden Rechenressourcen können zurückgewonnen werden.
  • Der Anwendungsstream-Stitcher 612 beinhaltet einen Fenstermanager 614 und ein Streamzusammenführungselement 616. Das Streamzusammenführungselement 616 empfängt Anzeigestreams von den virtuellen Maschinen, die dem Benutzer 604 von dem Hostserver 606 für virtuelle Maschinen zugewiesen wurden. Das Streamzusammenführungselement 616 dekodiert die Informationen in den Anzeigestreams und erzeugt einen einzelnen Anzeigebildschirm, der von dem Benutzer 604 angesehen werden kann und mit dem dieser interagieren kann. Der Fenstermanager 614 hilft dem Benutzer 604 und verwaltet den zusammengeführten Anzeigebildschirm. Der Fenstermanager 614 erlaubt es dem Benutzer 604, Anzeigestreams zum Ansehen auszuwählen, mehrere Anzeigestreams auf einem einzigen Bildschirm anzusehen, Benutzerschnittstellenfenster zum Anzeigen von Anzeigestreams anzuordnen und zu positionieren und Fenster, die Anzeigestreams zugeordnet sind, zu minimieren und maximieren. Der Fenstermanager 614 kann den Streaming-Agents Informationen über die virtuellen Maschinen zur Verfügung stellen, die es den Streaming-Agents erlauben, die in dem Anzeigestream zur Verfügung gestellten Informationen zu optimieren. Zum Beispiel kann der Fenstermanager 614 dem Streaming-Agent ein Signal zur Verfügung stellen, das anzeigt, wenn die entsprechende Anzeigeinformation für den Benutzer 604 nicht sichtbar ist (etwa wenn sich das entsprechende Fenster hinter einem anderen Fenster befindet oder minimiert ist). Bei einigen Ausführungen kann der Fenstermanager 614 anzeigen, wenn ein Abschnitt der entsprechenden Anzeigeinformation nicht sichtbar ist oder durch ein anderes Element auf dem Anzeigebildschirm verborgen wird.
  • Der Hostserver 606 für virtuelle Maschinen kann aus einem einzelnen physischen Server oder einer Gruppe von Servern bestehen, die konfiguriert sind, eine Reihe virtueller Maschinen zur Verfügung zu stellen. Der Hostserver 606 für virtuelle Maschinen hostet virtuelle Maschinen, die für bestimmte Anwendungen ausgelegt sind, und welche die bestimmte Anwendung, für die sie ausgelegt sind, ausführen. Der Hostserver 606 für virtuelle Maschinen hostet eine Reihe von Textverarbeitungs-VM-Instanzen 618, eine Reihe von Solid-Modeling-VM-Instanzen 620, eine Reihe von Bildbearbeitungs-VM-Instanzen 622 und eine Reihe von Datenbank-VM-Instanzen 624. Anwendungen werden von dem Hostserver 606 für virtuelle Maschinen auf neu erstellten virtuellen Maschinen aus dem Anwendungsspeicher 626 installiert. Die Anwendungen können in Form ausführbarer Installationsprogramme oder in der Form von Abbilddateien, die verwendet werden können, um eine virtuelle Maschine schnell zum Hosten der Anwendung zu konfigurieren, gepflegt. Dem Client-Computersystem 602 wird eine VM-Instanz für jede ausgeführte Anwendung zur Verfügung gestellt. Zum Beispiel werden dem Client-Computersystem 602 in 6 eine Textverarbeitungs-VM-Instanz, eine Solid-Modeling-VM-Instanz und eine Bildbearbeitungs-VM-Instanz zur Verfügung gestellt. Die Anzeigestreams, die von den auf den drei VM-Instanzen ausgeführten Anwendungen erzeugt werden, werden dem Anwendungsstream-Stitcher 612 zur Verfügung gestellt, der die Anzeigeinformationen aus den drei Anwendungen in einem einzigen Anzeigebildschirm zusammenführt, der für den Benutzer 604 dargestellt wird.
  • 7 zeigt ein veranschaulichendes Beispiel eines Client-Server-Computersystems, das gemäß einer Ausführungsform eine Reihe von Anzeigestreams von einer Reihe von Rechenressourcen empfängt und die Anzeigestreams auf einer Client-Anzeige in einem einheitlichen Bildschirm zusammenführt. Eine Rechenumgebung 700 beinhaltet ein Client-Computersystem 702, das mit drei virtuellen Maschinen in Kommunikation steht, die von einem Rechenressourcendienstanbieter zur Verfügung gestellt werden. Die virtuellen Maschinen beinhalten dabei eine Textverarbeitungs-VM-Instanz 704, eine Solid-Modeling-VM-Instanz 706 und eine Bildbearbeitungs-VM-Instanz 708. Die Textverarbeitungs-VM-Instanz 704 hostet eine Textverarbeitungsanwendung 710 und einen Streaming-Agent 712, der Anzeigeinformationen und andere Ausgaben von der Testverarbeitungsanwendung 710 kodiert und einen Stream an das Client-Computersystem 702 überträgt. Die Solid-Modeling-VM-Instanz 706 hostet eine Solid-Modeling-Anwendung 714 und einen Streaming-Agent 716, der Anzeigeinformationen kodiert und an das Client-Computersystem 702 überträgt. Die Bildbearbeitungs-VM-Instanz 708 hostet eine Bildverarbeitungsanwendung 718 und einen Streaming-Agent 720, der Anzeigeinformationen von der Bildverarbeitungsanwendung 718 kodiert und an das Client-Computersystem 702 streamt.
  • Das Client-Computersystem 702 führt einen Anwendungsstreaming-Client 722 aus, bei dem es sich um eine eigenständige Anwendung handeln kann, oder der auf einem Webbrowser basieren kann. Der Anwendungsstreaming-Client 722 beinhaltet einen Manager 724 für virtuelle Maschinen und einen Anwendungsstream-Stitcher 726. Der Anwendungsstream-Stitcher 726 beinhaltet einen Fenstermanager 728 und ein Streamzusammenführungselement 730. Das Streamzusammenführungselement 730 empfängt die Anzeigestreams von den Streaming-Agenten 712, 716, und 720 dekodiert die Anzeigestreams, um eine zusammengeführte Benutzerschnittstelle herzustellen. Die zusammengeführte Benutzerschnittstelle beinhaltet die Anzeige eines Textverarbeitungsanzeigefensters 734, eines Bildverarbeitungsanzeigefensters 736 und eines Solid-Modeling-Anzeigefensters 738. Die zusammengeführte Benutzerschnittstelle wird auf einem Anzeigebildschirm 732 angezeigt, der mit dem Client-Computersystem 702 verbunden ist. Der Fenstermanager 728 verfügt über eine Schnittstelle zu einem Streamzusammenführungselement 730, um Anzeigeinformationen anzugeben, die durch die Zusammenführung mit anderen Streams oder die Bearbeitung durch den Benutzer des Client-Computersystems 702 verborgen, minimiert oder verdeckt sind. Der Fenstermanager 728 stellt den Streaming-Agents 712, 716 und 720 Anzeigegrenzinformationen zur Verfügung, welche die verdeckten Bereiche der entsprechenden Anzeigeinformationen beschreiben. Unter Verwendung dieser Informationen sind die Streaming-Agents in der Lage, das Kodieren und Übertragen von Informationen an das Client-Computersystem 702, die aktuell nicht sichtbar sind, zu vermeiden.
  • Bei einigen Beispielen werden die Anzeigeinformationen, die von den Streaming-Agents erzeugt werden, bei dem Rechenressourcendienstanbieter mithilfe eines serverseitigen Anwendungsstream-Stitchers vereinigt. Der serverseitige Anwendungsstream-Stitcher vereinigt die Anzeigeinformationen und überträgt die vereinigten Anzeigeinformationen an den Anwendungsstreaming-Client 722 auf dem Client-Computersystem 702. Der serverseitige Anwendungsstream-Stitcher sendet Ansichtsfensterinformationen an die Streaming-Agents, welche die Bereiche der Anzeigeinformationen anzeigen, die infolge des Vereinigungsvorgangs verdeckt oder verborgen sind. Die Streaming-Agents verwenden die Ansichtsfensterinformationen, um das Kodieren von Anzeigedaten für Anzeigebereiche zu verhindern, die nicht sichtbar sind, und um außerdem das Zurverfügungstellen von Anzeigeinformationen für die nicht sichtbaren Anzeigebereiche zu verhindern.
  • 8 zeigt ein veranschaulichendes Beispiel eines Prozesses, der infolge seiner Durchführung durch ein Client-Computersystem gemäß einer Ausführungsform eine Gruppe von virtuellen Maschinen von einem Server bereitstellt und Streams von Anzeigeinformationen von den virtuellen Maschinen in einem einheitlichen Anzeigebildschirm zusammenführt. Ein Prozessdiagramm 800 beginnt mit der Installation eines Anwendungsstreaming-Clients auf einem Client-Computersystem. Der Anwendungsstreaming-Client stellt einem Benutzer des Client-Computersystems das Menü, die Symbole oder eine andere Schnittstelle dar, die es dem Benutzer ermöglicht eine oder mehrere Anwendungen auszuwählen. Bei Block 804 wählt der Benutzer eine oder mehrere Anwendungen aus und der Anwendungsstreaming-Client teilt die Auswahl einem Rechenressourcendienstanbieter mit. Für jede Anwendung wird von dem Rechenressourcendienstanbieter eine virtuelle Maschine gestartet 806 und die virtuellen Maschinen sind mit Rechenressourcen konfiguriert, die ausgelegt sind die Anwendung zu hosten, die von jeder virtuellen Maschine gehostet wird. Der Rechenressourcendienstanbieter installiert 808 die Anwendungen auf ihren entsprechenden virtuellen Maschinen und installiert auch den Streaming-Agent, um dem Client-Computersystem Anzeigeinformationen von der Anwendung, die von den virtuellen Maschinen gehostet wird, zur Verfügung zu stellen.
  • Das Client-Computersystem stellt 810 eine Streamingverbindung zu jedem Streaming-Agent her. Von dem Client-Computersystem können Ansichtsfensterinformationen zur Verfügung gestellt werden, welche die Streaming-Agents dabei unterstützen, Informationen zu kodieren und an das Client-Computersystem zu übertragen. Das Client-Computersystem empfängt 812 über den Streaming-Agent aktualisierte Anzeigeinformationen von jeder Anwendung. Die aktualisierten Anzeigeinformationen werden durch ein Streamzusammenführungselement in dem Anwendungsstreaming-Agent in einem einzelnen Anzeigebildschirm zusammengeführt 814. Eine Fenstermanagerkomponente in dem Anwendungsstreaming-Client gibt 816 Bereiche der Anzeigeinformationen an, die infolge der Zusammenführung der aktualisierten Anzeigeinformationen in einem einzelnen Anzeigebildschirm geschützt, verborgen oder minimiert sind. Die angegebenen Bereiche werden als Gruppe von Anzeigeansichtsfensterinformationen gekennzeichnet, die den Streaming-Agents auf den virtuellen Maschinen zur Verfügung gestellt werden 818. Die Streaming-Agents können diese Informationen verwenden, um das Kodieren und Übertragen von Informationen, die auf dem Anzeigebildschirm nicht sichtbar sind, zu vermeiden.
  • 9 zeigt ein veranschaulichendes Beispiel eines Client-Server-Computersystems, das gemäß einer Ausführungsform einer Reihe von Clienten Rechenressourcen zur Verfügung stellt, indem es eine virtuelle Maschine zur Verfügung stellt, die eine einzelne Anwendung hostet, die mehrere Sitzungen unterstützt. Eine Umgebung 900 beinhaltet eine Textverarbeitungs-VM-Instanz 902, die von einem Rechenressourcendienstanbieter auf einem Host-Computersystem gehostet wird. Die Textverarbeitungs-VM-Instanz 902 hostet eine Reihe von Textverarbeitungsanwendungssitzungen 903, 904 und 905. Die Textverarbeitungsanwendungssitzungen 903, 904 und 905 werden auf derselben VM-Instanz 902 ausgeführt. Jede Textverarbeitungsanwendungssitzung verfügt über einen zugeordneten Streaming-Agent, um der Sitzung zugeordnete Anzeigeinformationen zur Verfügung zustellen. In 9 hostet die Textverarbeitungs-VM-Instanz 902 einen ersten Streaming-Agent 906, einen zweiten Streaming-Agent 908 und einen dritten Streaming-Agent 910. Der erste Streaming-Agent 906 stellt einem ersten Anwendungsstreaming-Client 912, der von einem ersten Client-Computersystem 914 gehostet wird, das von einem ersten Benutzer 916 betrieben wird, einen Anzeigestream zur Verfügung. Der zweite Streaming-Agent 908 stellt einem zweiten Anwendungsstreaming-Client 918, der von einem zweiten Client-Computersystem 920 gehostet wird, das von einem zweiten Benutzer 922 betrieben wird, einen Anzeigestream zur Verfügung. Der dritte Streaming-Agent 910 stellt einem dritten Anwendungsstreaming-Client 924, der von einem dritten Client-Computersystem 926 gehostet wird, das von einem dritten Benutzer 928 betrieben wird, einen Anzeigestream zur Verfügung.
  • Wenn sich der Benutzer bei einem Client-Computersystem anmeldet und den Zugriff auf eine Textverarbeitungsanwendung über einen Anwendungsstreaming-Client anfragt, kontaktiert der Anwendungsstreaming-Client den Rechenressourcendienstanbieter, der eine Textverarbeitungsanwendungssitzung auf der Textverarbeitungs-VM-Instanz 902 erstellt. Die Textverarbeitungsanwendungssitzung veranlasst, dass ein entsprechender Streaming-Agent auf der Textverarbeitungs-VM-Instanz 902 instanziert wird. Zwischen dem Anwendungsstreaming-Client und dem Streaming-Agent wird eine Streamingsitzung erstellt und von der Textverarbeitungsanwendung werden für die neue Sitzung Anzeigeinformationen zur Verfügung gestellt, die der Textverarbeitungsanfrage des Benutzers entsprechen. Durch Verwenden einer einzigen Anwendungsinstanz können viele Ressourcen innerhalb mehrerer Textverarbeitungssitzungen gemeinsam genutzt werden Zum Beispiel können Elemente der Benutzerschnittstelle für Textverarbeitungsanwendungen von einem Streaming-Agent kodiert werden und von den restlichen Agents wiederverwendet werden, wodurch das Neukodieren gemeinsamer Benutzerschnittstellenelemente, wie etwa Menüs, Menübändern und Symbolen, überflüssig wird.
  • Zusätzlich können Ausführungsformen der vorliegenden Offenbarung im Hinblick auf die folgenden Sätze beschrieben werden:
    1. 1. Computerimplementiertes Verfahren, das Folgendes umfasst:
      • unter der Steuerung von einem oder mehreren Computersystemen, die mit ausführbaren Anweisungen konfiguriert sind,
      • Angeben einer Gruppe von Anwendungsprogrammen, die einer Benutzeridentität zugeordnet sind;
      • Erlangen einer Gruppe von Anwendungsressourcenprofilen durch Abrufen eines Ressourcenprofils für jedes Anwendungsprogramm in der Gruppe der Anwendungsprogramme;
      • Erzeugen eines Profils für virtuelle Maschinen wenigstens teilweise auf Grundlage der Gruppe von Anwendungsressourcenprofilen;
      • Erstellen einer virtuellen Maschine mit einer Konfiguration von Rechenressourcen, die das Profil für virtuelle Maschinen erfüllt;
      • Installieren der Gruppe von Anwendungsprogrammen auf der virtuellen Maschine;
      • Starten von wenigstens einer Anwendung aus der Gruppe der Anwendungsprogramme; und Veranlassen, dass eine Streamingverbindung zwischen der virtuellen Maschine und einem Client-Computersystem aufgebaut wird, wobei die Streamingverbindung kodierte Anzeigeinformationen von der virtuellen Maschine zu dem Client-Computersystem überträgt.
    2. 2. Computerimplementiertes Verfahren nach Satz 1, ferner umfassend das Auswählen einer Profilvorlage aus einer Gruppe von Profilvorlagen für virtuelle Maschinen wenigstens teilweise auf Grundlage des Profils für virtuelle Maschinen, wobei:
      • die Gruppe der Profilvorlagen für virtuelle Maschinen Konfigurationen von virtuellen Maschinen zugeordnet ist, die durch einen Rechenressourcendienstanbieter unterstützt werden können; und
      • die virtuelle Maschine gemäß der Profilvorlage konfiguriert ist.
    3. 3. Computerimplementiertes Verfahren nach Satz 1 oder 2, wobei das Angeben der Gruppe von Anwendungsprogrammen, die der Benutzeridentität zugeordnet sind, wenigstens teilweise erreicht wird durch:
      • Abrufen von Anwendungsnutzungsinformationen von dem Client-Computersystem;
      • Angeben eines bestimmten Anwendungsprogramms, das unter Verwendung der Benutzeridentität auf dem Client-Computersystem ausgeführt wurde; und
      • Hinzufügen des bestimmten Anwendungsprogramms zu der Gruppe der Anwendungsprogramme.
    4. 4. Computerimplementiertes Verfahren nach einem der Sätze 1-3 ferner umfassend:
      • Angeben einer zweiten Gruppe von Anwendungsprogrammen, die gleichzeitig ausgeführt werden kann;
      • Erzeugen eines zusammengeführten Ressourcenprofils für die zweite Gruppe von Anwendungsprogrammen; und
      • Ändern des Profils für virtuelle Maschinen wenigstens teilweise auf Grundlage des zusammengeführten Ressourcenprofils.
    5. 5. Nichtflüchtiges computerlesbares Speichermedium, auf dem ausführbare Anweisungen gespeichert sind, die infolge ihrer Ausführung durch einen oder mehrere Prozessoren eines Computersystems das Computersystem wenigstens zu Folgendem veranlassen:
      • Senden einer Anfrage zur Verwendung einer ersten Anwendung an einen Rechenressourcendienstanbieter, wobei die Anfrage zur Verwendung der ersten Anwendung den Rechenressourcendienstanbieter veranlasst, eine erste virtuelle Maschine bereitzustellen, wobei die erste virtuelle Maschine wenigstens teilweise auf Grundlage der Rechenressourcenanforderungen der ersten Anwendung konfiguriert ist;
      • Empfangen eines ersten Streams kodierter Anzeigeinformationen von der ersten virtuellen Maschine unter Verwendung eines Anwendungsstreaming-Clients;
      • Senden einer Anfrage zur Verwendung einer zweiten Anwendung an einen Rechenressourcendienstanbieter, wobei die Anfrage zur Verwendung der zweiten Anwendung den Rechenressourcendienstanbieter veranlasst, eine zweite virtuelle Maschine bereitzustellen, wobei die zweite virtuelle Maschine wenigstens teilweise auf Grundlage der Rechenressourcenanforderungen der zweiten Anwendung konfiguriert ist;
      • Empfangen eines zweiten Streams kodierter Anzeigeinformationen von der zweiten virtuellen Maschine unter Verwendung des Anwendungsstreaming-Clients;
      • Zusammenführen des ersten Streams kodierter Anzeigeinformationen und des zweiten Streams kodierter Anzeigeinformationen, um eine zusammengeführte Benutzerschnittstelle für die erste Anwendung und die zweite Anwendung herzustellen; und
      • Darstellen der zusammengeführten Benutzerschnittstelle auf einer Anzeige, die mit dem Computersystem verbunden ist.
    6. 6. Nichtflüchtiges computerlesbares Speichermedium nach Satz 5, wobei die Anweisungen ferner Anweisungen umfassen, die infolge ihrer Ausführung durch den einen oder die mehreren Prozessoren das Computersystem veranlassen:
      • wenigstens einen Abschnitt des ersten Streams kodierter Anzeigeinformationen anzugeben, der nicht auf der Benutzerschnittstelle sichtbar ist; und
      • Ansichtsfensterinformationen an den Rechenressourcendienstanbieter zu senden, die den Abschnitt des ersten Streams beschreiben.
    7. 7. Nichtflüchtiges computerlesbares Speichermedium nach Satz 5 oder 6, wobei die Anweisungen ferner Anweisungen umfassen, die infolge ihrer Ausführung durch den einen oder die mehreren Prozessoren das Computersystem veranlassen:
      • zu bestimmen, dass die Netzwerkverbindung zu dem Rechenressourcendienstanbieter unterbrochen wurde; und
      • infolge der Bestimmung, dass die Netzwerkverbindung zu dem Rechenressourcendienstanbieter unterbrochen wurde, den Rechenressourcendienstanbieter zu veranlassen, die Zuweisung der virtuellen Maschine aufzuheben.
    8. 8. Nichtflüchtiges computerlesbares Speichermedium nach einem der Sätze 5-7, wobei die zusammengeführte Benutzerschnittstelle ein erstes Fenster, das kodierte Anzeigeinformationen von der ersten virtuellen Maschine anzeigt, und eine zweites Fenster, das kodierte Anzeigeinformationen von der zweiten virtuellen Maschine anzeigt, beinhaltet.
    9. 9. Nichtflüchtiges computerlesbares Speichermedium nach einem der Sätze 5-8, wobei die Anweisungen ferner Anweisungen umfassen, die infolge ihrer Ausführung durch den einen oder die mehreren Prozessoren das Computersystem veranlassen:
      • eine Benutzereingabe von einer oder mehreren Vorrichtungen, die mit dem Computersystem verbunden sind, in einen Eingabestream zu kodieren; und
      • den Eingabestream an den Rechenressourcendienstanbieter zu übertragen.
    10. 10. Nichtflüchtiges computerlesbares Speichermedium nach Satz 9, wobei das eine oder die mehreren Vorrichtungen eines oder mehrere von einer Tastatur, einer Maus, einer 3D-Maus, einem Mikrofon und einer Kamera beinhalten.
    11. 11. Nichtflüchtiges computerlesbares Speichermedium nach einem der Sätze 5-10, wobei der eine oder die mehreren Dienste einen Webbrowser, der mit einem Manager für virtuelle Maschinen konfiguriert ist, der die Bereitstellung virtueller Maschinen durch den Rechenressourcendienstanbieter steuert, und einen Anwendungsstream-Stitcher, der die Streams mit kodierten Anzeigeinformationen empfängt und in die Benutzerschnittstelle integriert, beinhaltet.
    12. 12. Nichtflüchtiges computerlesbares Speichermedium nach einem der Sätze 5-11, wobei:
      • der erste Stream kodierter Anzeigeinformationen Audioinformationen beinhaltet, die von der ersten Anwendung erzeugt werden;
      • der zweite Stream kodierter Anzeigeinformationen Audioinformationen beinhaltet, die von der zweiten Anwendung erzeugt werden; und
      • die Benutzerschnittstelle Audioinformationen von der ersten Anwendung und der zweiten Anwendung beinhaltet.
    13. 13. System, das wenigstens eine Rechenvorrichtung umfasst, die einen oder mehrere Dienste implementiert, wobei der eine oder die mehreren Dienste:
      • eine Anfrage von einem Client-Computersystem empfangen, eine Anwendung zur Verfügung zu stellen;
      • ein Profil für virtuelle Maschinen aus einer Gruppe von Profilen für virtuelle Maschinen wenigstens teilweise auf Grundlage der der Anwendung zugeordneten Rechenressourcenanforderungen auswählen;
      • der virtuellen Maschine eine Konfiguration zuweisen, die wenigstens teilweise auf dem Profil für virtuelle Maschinen basiert;
      • die Anwendung auf der virtuellen Maschine ausführen; und
      • eine Verbindung zwischen der virtuellen Maschine und dem Client-Computersystem herstellen, die Anzeigeinformationen, die der Anwendung zugeordnet sind, an das Client-Computersystem überträgt.
    14. 14. System nach Satz 13, wobei:
      • die Anzeigeinformationen mit einer Auflösung und einer Bildrate kodiert sind, die für eine Netzwerkbandbreitenmenge ausgelegt sind, die dem Client-Computersystem zur Verfügung steht; und
      • die Anzeigeinformationen Audioinformationen beinhaltet, die mit Merkmalen kodiert sind, die wenigstens teilweise auf Audioabspielmöglichkeiten basieren, die dem Client-Computersystem zugeordnet sind.
    15. 15. System nach Satz 13 oder 14, wobei die Anzeigeinformationen mit einer Auflösung und einer Bildrate kodiert sind, die für die Anwendung ausgelegt sind.
    16. 16. System nach einem der Sätze 13-15, wobei der eine oder die mehreren Dienste die virtuelle Maschine wenigstens teilweise durch Auswählen einer virtuellen Maschine aus einem Pool verfügbarer virtueller Maschinen, die auf einem Host-Computersystem ausgeführt werden, zuweisen.
    17. 17. System nach einem der Sätze 13-16, wobei der eine oder die mehreren Dienste ferner:
      • eine zusätzliche Anfrage empfangen, dem Client-Computersystem eine zusätzliche Anwendung zur Verfügung zu stellen;
      • ein zusätzliches Profil für virtuelle Maschinen wenigstens teilweise auf Grundlage der der zusätzlichen Anwendung zugeordneten Rechenressourcenanforderungen bestimmen;
      • eine zusätzliche virtuelle Maschine wenigstens teilweise auf Grundlage des zusätzlichen Profils für virtuelle Maschinen zuweisen;
      • die zusätzliche Anwendung auf der zusätzlichen virtuellen Maschine ausführen; und
      • eine zusätzliche Verbindung zwischen der zusätzlichen virtuellen Maschine und dem Client-Computersystem herstellen, die Anzeigeinformationen, die der zusätzlichen Anwendung zugeordnet sind, an das Client-Computersystem überträgt.
    18. 18. System nach einem der Sätze 13-17, wobei der eine oder die mehreren Dienste ferner:
      • eine zusätzliche Anfrage empfangen, die Anwendung einem zusätzlichen Client-Computersystem zur Verfügung zu stellen;
      • eine zusätzliche Anwendungssitzung für die Anwendung, die auf der virtuellen Maschine ausgeführt wird, erzeugen; und
      • eine zusätzliche Verbindung zwischen der zusätzlichen Anwendungssitzung auf der virtuellen Maschine und dem Client-Computersystem herstellen, die Anzeigeinformationen, die der zusätzlichen Anwendungssitzung zugeordnet sind, an das Client-Computersystem überträgt.
    19. 19. System nach Satz 18, wobei die Anzeigeinformationen, die der zusätzliche Anwendungssitzung zugeordnet sind, wenigstens teilweise von den Anzeigeinformationen, die der Anwendungssitzung zugeordnet sind, zur Verfügung gestellt werden.
    20. 20. System nach einem der Sätze 13-19, wobei der eine oder die mehreren Dienste ferner:
      • Ansichtsfensterinformationen empfangen, die einen Abschnitt der Anzeigeinformationen angeben, der auf dem Client-Computersystem nicht sichtbar ist; und
      • den Abschnitt der Anzeigeinformationen von den Anzeigeinformationen ausschließen, der an das Client-Computersystem übertragen wird.
  • 10 veranschaulicht Aspekte einer beispielhaften Umgebung 1000 zum Umsetzen von Aspekten gemäß verschiedenen Ausführungsformen. Obwohl zu Zwecken der Erläuterung eine webbasierte Umgebung verwendet wird, versteht es sich, dass gegebenenfalls andere Umgebungen verwendet werden können, um verschiedene Ausführungsformen umzusetzen. Die Umgebung beinhaltet eine elektronische Client-Vorrichtung 1002, die eine beliebige zweckmäßige Vorrichtung beinhalten kann, die dazu betrieben werden kann, Anfragen, Meldungen oder Informationen über ein zweckmäßiges Netzwerk 1004 zu senden und/oder zu empfangen und in einigen Ausführungsformen Informationen zurück an einen Benutzer der Vorrichtung zu übertragen. Zu Beispielen für derartige Client-Vorrichtungen gehören Personalcomputer, Mobiltelefone, tragbare Messaging-Vorrichtungen, Laptop-Computer, Tablet-Computer, Set-Top-Boxen, eingebettete Computersysteme, Personal Data Assistants, E-Book-Reader und dergleichen. Das Netzwerk kann ein beliebiges zweckmäßiges Netzwerk beinhalten, das ein Intranet, das Internet, ein Mobilfunknetz, ein lokales Netzwerk, ein Satellitennetzwerk oder ein beliebiges anderes derartiges Netzwerk und/oder eine Kombination daraus beinhaltet. Komponenten, die für ein solches System verwendet werden, können wenigstens teilweise von der Art des ausgewählten Netzwerks und/oder der ausgewählten Umgebung abhängig sein. Protokolle und Komponenten zum Kommunizieren über ein derartiges Netzwerk sind hinlänglich bekannt und werden hier nicht ausführlich erörtert. Kommunikation über das Netzwerk kann über drahtgebundene oder drahtlose Verbindungen und Kombinationen daraus ermöglicht werden. In diesem Beispiel beinhaltet das Netzwerk das Internet, da die Umgebung einen Webserver 1006 zum Empfangen von Anfragen und Darbieten von Inhalt als Antwort darauf beinhaltet, wobei für andere Netzwerke eine alternative Vorrichtung, die einen ähnlichen Zweck erfüllt, verwendet werden könnte, wie es für den Durchschnittsfachmann ersichtlich ist.
  • Die veranschaulichende Umgebung beinhaltet wenigstens einen Anwendungsserver 1008 und einen Datenspeicher 1010. Es versteht sich, dass mehrere Anwendungsserver, Schichten oder andere Elemente und Vorgänge oder Komponenten vorliegen können, die verkettet oder anderweitig konfiguriert sein können und die interagieren können, um Aufgaben wie etwa Erlangen von Daten von einem zweckmäßigen Datenspeicher durchzuführen. Server können wie hierin verwendet auf verschiedene Arten umgesetzt werden, wie etwa als Hardware-Vorrichtungen oder virtuelle Computersysteme. In einigen Zusammenhängen können Server auf ein Programmierungsmodul Bezug nehmen, das auf einem Computersystem ausgeführt wird. Es sei denn, etwas anderes ist angegeben oder ergibt sich aus dem Kontext, bezieht sich der Ausdruck „Datenspeicher“ im hier verwendeten Sinne auf eine beliebige Vorrichtung oder Kombination aus Vorrichtungen, die dazu in der Lage ist, Daten zu speichern, darauf zuzugreifen und diese abzurufen, was eine beliebige Kombination und Anzahl von Datenservern, Datenbanken, Datenspeichervorrichtungen und Datenspeichermedien in einer beliebigen standardmäßigen, verteilten, virtuellen oder geclusterten Umgebung beinhalten kann. Der Anwendungsserver kann eine beliebige zweckmäßige Hardware, Software und Firmware zum Integrieren mit dem Datenspeicher beinhalten, wie es notwendig ist, um Aspekte von einer oder mehreren Anwendungen für die Client-Vorrichtung auszuführen und einen Teil des Datenzugriffs und der Geschäftslogik oder den gesamten Datenzugriff und die gesamte Geschäftslogik für eine Anwendung zu handhaben. Der Anwendungsserver kann zusammen mit dem Datenspeicher Zugriffssteuerungsdienste bereitstellen und ist in der Lage, Inhalte zu erzeugen, darunter unter anderem Text, Grafiken, Audio, Video und/oder andere Inhalte, die zur Bereitstellung für den Benutzer verwendet werden können, die dem Kunden mit dem Webserver in Form von HyperText Markup Language („HTML“), Extensible Markup Language („XML“), JavaScript, Cascading Style Sheets („CSS“) oder einer anderen angemessenen clientenseitigen strukturierten Sprache zur Verfügung gestellt werden können. Inhalte, die an eine Kundenvorrichtung übertragen werden, können durch die Kundenvorrichtung verarbeitet werden, um die Inhalte in einer oder mehreren Formen bereitzustellen, darunter unter anderem Formen, die akustisch, visuell und/oder mithilfe anderer Sinne, einschließlich Fühlen, Schmecken und/oder Riechen, für den Benutzer wahrnehmbar sind. Die Handhabung aller Anfragen und Antworten sowie die Lieferung von Inhalt zwischen der Client-Vorrichtung 1002 und dem Anwendungsserver 1008 können durch den Webserver unter Verwendung von PHP: Hypertext Preprocessor (PHP), Python, Ruby, Perl, Java, HTML, XML oder einer anderen geeigneten serverseitigen strukturierten Sprache in diesem Beispiel gehandhabt werden. Es versteht sich, dass der Web- und Anwendungsserver nicht erforderlich sind und lediglich beispielhafte Komponenten sind, da hier erörterter strukturierter Code auf jeder beliebigen zweckmäßigen Vorrichtung oder Host-Maschine ausgeführt werden kann, wie es hier an anderer Stelle erörtert ist. Ferner können Vorgänge, die hierin als durch eine einzige Vorrichtung durchgeführt beschrieben werden, sofern aus dem Kontext nichts anderes hervorgeht, durch mehrere Vorrichtungen gemeinsam ausgeführt werden, die ein verteiltes und/oder virtuelles System bilden können.
  • Der Datenspeicher 1010 kann mehrere gesonderte Datentabellen, Datenbanken, Datendokumente, dynamische Datenspeicherschemata und/oder andere Datenspeichermechanismen und Medien zum Speichern von Daten in Bezug auf einen bestimmten Aspekt der vorliegenden Offenbarung beinhalten. Zum Beispiel kann der veranschaulichte Datenspeicher Mechanismen zum Speichern von Produktionsdaten 1012 und Benutzerinformationen 1016 beinhalten, die dazu verwendet werden können, Inhalt für die Produktionsseite darzubieten. Der Darstellung nach beinhaltet der Datenspeicher außerdem einen Mechanismus zum Speichern von Protokolldaten 1014, die für Berichte, Analysen oder andere solche Zwecke verwendet werden können. Es versteht sich, dass viele andere Aspekte vorhanden sein können, die in dem Datenspeicher gespeichert werden müssen, wie etwa Seitenbildinformationen und Zugangsrechteinformationen, die gegebenenfalls in einem beliebigen der vorstehend aufgelisteten Mechanismen oder in zusätzlichen Mechanismen in dem Datenspeicher 1010 gespeichert werden können. Der Datenspeicher 1010 kann durch damit assoziierte Logik dazu betrieben werden, Anweisungen von dem Anwendungsserver 1008 zu empfangen und Daten als Reaktion darauf zu erlangen, zu aktualisieren oder anderweitig zu verarbeiten. Der Anwendungsserver 1008 kann als Reaktion auf die empfangenen Anweisungen statische, dynamische oder eine Kombination aus statischen und dynamischen Daten bereitstellen. Dynamische Daten, wie etwa Daten, die in Weblogs (Blogs), Shopping-Anwendungen, Nachrichtendiensten und anderen solcher Anwendungen verwendet werden, können durch serverseitige strukturierte Sprachen erzeugt werden, wie hierin beschrieben, oder können durch ein Content Management System („CMS“) bereitgestellt werden, das auf dem oder gesteuert von dem Anwendungsserver betrieben wird. In einem Beispiel kann ein Benutzer durch eine durch den Benutzer betriebene Vorrichtung eine Suchanfrage nach einer gewissen Art von Objekt übermitteln. In diesem Fall kann der Datenspeicher auf die Benutzerinformationen zugreifen, um die Identität des Benutzers zu verifizieren, und er kann auf die Katalogdetailinformationen zugreifen, um Informationen über Objekte dieser Art zu erlangen. Die Informationen können dann an den Benutzer ausgegeben werden, wie etwa in einer Ergebnisauflistung auf einer Webseite, die der Benutzer über einen Browser auf der Kundenvorrichtung 1002 betrachten kann. Informationen für ein bestimmtes Objekt von Interesse können auf einer dedizierten Seite oder in einem dedizierten Fenster des Browsers betrachtet werden. Es ist jedoch zu beachten, dass Ausführungsformen der vorliegenden Erfindung nicht notwendigerweise auf den Kontext von Webseiten beschränkt sind, sondern allgemeiner auf das Verarbeiten von Anfragen im Allgemeinen anwendbar sind, wobei die Anfragen nicht notwendigerweise Anfragen nach Inhalten sind.
  • Jeder Server beinhaltet üblicherweise ein Betriebssystem, das ausführbare Programmanweisungen für die allgemeine Administration und den allgemeinen Betrieb dieses Servers bereitstellt, und beinhaltet üblicherweise ein computerlesbares Speichermedium (z. B. eine Festplatte, einen Direktzugriffsspeicher, einen Festwertspeicher usw.), auf dem Anweisungen gespeichert sind, die bei Ausführung durch einen Prozessor des Servers ermöglichen, dass der Server seine beabsichtigten Funktionen durchführt. Geeignete Umsetzungen für das Betriebssystem und die allgemeine Funktionalität der Server sind bekannt oder im Handel erhältlich und werden durch den Durchschnittsfachmann ohne Weiteres umgesetzt, insbesondere in Anbetracht der Offenbarung in dieser Schrift.
  • Die Umgebung ist in einer Ausführungsform eine verteilte und/oder virtuelle Maschine unter Nutzung von mehreren Computersystemen und Komponenten, die über Kommunikationsverknüpfungen unter Verwendung von einem bzw. einer oder mehreren Computernetzwerken oder Direktverbindungen miteinander verbunden sind. Es ist einem Fachmann jedoch ersichtlich, dass ein solches System in einem System mit einer geringeren oder größeren Anzahl von Komponenten als in 10 veranschaulicht gleichermaßen gut arbeiten kann. Somit sollte die Darstellung des Systems 1000 in 10 als veranschaulichend und nicht einschränkend in Bezug auf den Umfang der Offenbarung erachtet werden.
  • Die verschiedenen Ausführungsformen können ferner in einer breiten Vielfalt von Betriebsumgebungen umgesetzt sein, zu denen in einigen Fällen ein oder mehrere Benutzercomputer, Rechenvorrichtungen oder Verarbeitungsvorrichtung gehören können, die dazu verwendet werden können, eine beliebige Anzahl von Anwendungen zu betreiben. Benutzer- oder Client-Vorrichtungen können eine beliebige Anzahl von Universalcomputern beinhalten, wie etwa Desktop-, Laptop- oder Tablet-Computer, auf denen ein standardmäßiges Betriebssystem ausgeführt wird, sowie Mobilfunk-, drahtlose und tragbare Vorrichtungen, auf denen mobile Software ausgeführt wird und die dazu in der Lage sind, eine Reihe von Networking- und Messaging-Protokollen zu unterstützen. Ein solches System kann auch eine Anzahl von Workstations umfassend, auf denen ein beliebiges aus einer Vielzahl von handelsüblichen Betriebssystemen und sonstige bekannte Anwendungen für Zwecke wie etwa Entwicklung und Datenbankverwaltung ausgeführt werden. Diese Vorrichtungen können zudem andere elektronische Vorrichtungen beinhalten, wie etwa Dummy Terminals, Thin Clients, Spielesysteme und andere Vorrichtungen, die dazu in der Lage sind, über ein Netzwerk zu kommunizieren. Diese Vorrichtungen können außerdem virtuelle Vorrichtungen, wie etwa virtuelle Maschinen, Hypervisoren und andere virtuelle Vorrichtungen beinhalten, die dazu in der Lage sind, über ein Netzwerk zu kommunizieren.
  • Verschiedene Ausführungsformen der vorliegenden Offenbarung nutzen wenigstens ein Netzwerk, das einem Fachmann bekannt ist, zur Unterstützung von Kommunikation unter Verwendung einer Vielzahl von im Handel erhältlichen Protokollen, wie etwa das Transmission Control Protocol/Internet Protocol („TCP/IP“), das User Datagram Protocol („UDP“), Protokolle, die in verschiedenen Schichten des Open-System-Interconnection-Modells („OSI“-Modells) arbeiten, das File Transfer Protocol („FTP“), Universal Plug and Play („UpnP“), das Network File System („NFS“), das Common Internet File System („CIFS“) und AppleTalk. Das Netzwerk kann zum Beispiel ein lokales Netzwerk, ein Weitbereichsnetzwerk, ein virtuelles privates Netzwerk, das Internet, ein Intranet, ein Extranet, ein öffentliches Fernsprechwählnetz, ein Infrarot-Netzwerk, ein Drahtlosnetzwerk, ein Satellitennetzwerk und eine beliebige Kombination daraus sein. In einigen Ausführungsformen können verbindungsorientierte Protokolle verwendet werden, um zwischen Netzwerkendpunkten zu kommunizieren. Verbindungsorientierte Protokolle (manchmal als verbindungsbasierte Protokolle bezeichnet) sind in der Lage, Daten in einem geordneten Strom zu übertragen. Verbindungsorientierte Protokolle können zuverlässig oder unzuverlässig sein. Zum Beispiel ist das TCP-Protokoll ein zuverlässiges verbindungsorientiertes Protokoll. Asynchronous Transfer Mode (ATM) und Frame Relay sind unzuverlässige verbindungsorientierte Protokolle. Verbindungsorientierte Protokolle stehen im Gegensatz zu paketorientierten Protokollen wie etwa UDP, das Pakete ohne eine garantierte Ordnung überträgt.
  • In Ausführungsformen, die einen Webserver verwenden, kann der Webserver beliebige aus einer Vielzahl von Server- oder Mid-Tier-Anwendungen ausführen, einschließlich Hypertext Transfer Protocol (HTTP)-Server, FTP-Server, Common Gateway Interface (CGI)-Server, Datenserver, Java-Server, Apache-Server und Business-Anwendungsserver. Der/die Server kann/können auch in der Lage sein, Programme oder Skripte als Reaktion auf Aufforderungen von den Benutzervorrichtungen auszuführen, wie etwa durch Ausführen von einer oder mehreren Webanwendungen, die als ein oder mehrere Skripte oder Programme umgesetzt sein können, die in einer beliebigen Programmiersprache geschrieben sind, wie etwa Java®, C, C# oder C++ oder eine beliebige Skriptsprache wie etwa Ruby, PHP, Perl, Python oder TCL, sowie Kombinationen davon. Der bzw. die Server kann bzw. können zudem Datenbankserver beinhalten, zu denen unter anderem diejenigen gehören, die von Oracle®, Microsoft®, Sybase® und IBM® im Handel erhältlich sind, sowie Open-Source-Server, wie etwa MySQL, Postgres, SQLite, MongoDB und beliebige andere Server, die in der Lage sind, strukturierte oder unstrukturierte Daten zu speichern, abzurufen und darauf zuzugreifen. Zu Datenbankservern gehören tabellenbasierte Server, dokumentbasierte Server, unstrukturierte Server, relationelle Server, nicht-relationelle Server oder Kombinationen davon und/oder andere Datenbankserver.
  • Die Umgebung kann eine Vielzahl von Datenspeichern und anderem Speicher und Speichermedien, wie vorstehend erörtert, beinhalten. Diese können an vielfältigen Stellen angeordnet sein, wie etwa auf einem Speichermedium, das zu einem oder mehrere der Computer lokal (und/oder darin angeordnet) ist oder von beliebigen oder allen der Computer über das Netzwerk hinweg entfernt ist. In einer bestimmten Reihe von Ausführungsformen können die Informationen in einem Storage Area Network („SAN“), das dem Fachmann bekannt ist, liegen. Gleichmaßen können beliebige erforderliche Dateien zum Durchführen der Funktionen, die den Computern, Servern oder anderen Netzwerkvorrichtungen zugeschrieben sind, gegebenenfalls lokal und/oder entfernt gespeichert werden. Wenn ein System computergestützte Vorrichtungen beinhaltet, kann jede derartige Vorrichtung Hardware-Elemente beinhalten, die über einen Bus elektrisch gekoppelt sein können, wobei die Elemente zum Beispiel mindestens eine zentrale Verarbeitungseinheit („CPU“ oder „Prozessor“), mindestens eine Eingabevorrichtung (z. B. eine Maus, eine 3D-Maus, eine Tastatur, einen Controller, einen Touchscreen oder ein Tastenfeld) und mindestens eine Ausgabevorrichtung (z. B. eine Anzeigevorrichtung, einen Drucker oder einen Lautsprecher) beinhalten. Ein derartiges System kann zudem eine oder mehrere Speichervorrichtungen beinhalten, wie etwa Plattenlaufwerke, optische Speichervorrichtungen und Solid-State-Speichervorrichtungen wie etwa Direktzugriffsspeicher („RAM“) oder Festwertspeicher („ROM“) sowie entfernbare Medienvorrichtungen, Speicherkarten, Flash-Karten usw.
  • Diese Vorrichtungen können auch ein computerlesbares Speichermedien-Lesegerät, eine Kommunikationsvorrichtung (z. B. ein Modem, eine Netzwerkkarte (drahtlos oder drahtgebunden), eine Infrarot-Kommunikationsvorrichtung etc.) und Arbeitsspeicher, wie vorstehend beschrieben, umfassen. Das computerlesbare Speichermedien-Lesegerät kann mit einem computerlesbaren Speichermedium, umfassend entfernte, lokale, feste und/oder entfernbare Speichervorrichtungen, sowie Speichermedien für vorübergehendes und/oder dauerhaftes Enthalten, Speichern, Übertragen und Abrufen von computerlesbaren Information, verbunden sein oder dazu konfiguriert sein, dieses zu empfangen. Das System und die verschiedenen Vorrichtungen beinhalten zudem typischerweise eine Reihe von Softwareanwendungen, Modulen, Diensten oder anderen Elementen, die innerhalb wenigstens einer Arbeitsspeichervorrichtung angeordnet sind, einschließlich eines Betriebssystems und Anwendungsprogrammen, wie etwa einer Client-Anwendung oder eines Webbrowsers. Es versteht sich, dass alternative Ausführungsformen zahlreiche Abwandlungen von der vorstehend beschriebenen aufweisen können. Zum Beispiel kann zudem angepasste Hardware verwendet werden und/oder spezielle Elemente können in Hardware, Software (einschließlich portabler Software wie etwa Applets) oder beiden umgesetzt sein. Ferner kann eine Verbindung zu anderen Datenverarbeitungsvorrichtungen wie etwa Netzwerk-Eingabe/Ausgabe-Vorrichtungen verwendet werden.
  • Speichermedien und computerlesbare Medien, die Code oder Teile von Code enthalten, können beliebige zweckmäßige Medien beinhalten, die auf dem Fachgebiet bekannt sind oder verwendet werden, einschließlich Speichermedien und Kommunikationsmedien, wie etwa unter anderem flüchtige und nichtflüchtige, entfernbare und nicht entfernbare Medien, die in einem beliebigen Verfahren oder einer beliebigen Technik zur Speicherung und/oder Übertragung von Informationen umgesetzt sind, wie etwa computerlesbaren Anweisungen, Datenstrukturen, Programmmodulen oder anderen Daten, darunter RAM, ROM, elektrisch löschbarer programmierbarer Festwertspeicher („EEPROM“), Flash-Speicher oder andere Speichertechnik, Compact-Disc-Festwertspeicher („CD-ROM“), Digital Versatile Disk (DVD) oder anderer optischer Speicher, Magnetkassetten, Magnetband, Magnetplattenspeicher oder andere Magnetspeichervorrichtungen oder ein beliebiges anderes Medium, das dazu verwendet werden kann, die gewünschten Information zu speichern, und auf das durch eine Systemvorrichtung zugegriffen werden kann. Auf Grundlage der Offenbarung und der hier bereitgestellten Lehren versteht der Durchschnittsfachmann, dass andere Möglichkeiten und/oder Verfahren vorhanden sind, um die verschiedenen Ausführungsformen umzusetzen.
  • In der vorstehenden und nachfolgenden Beschreibung werden verschiedene Techniken beschrieben. Zum Zwecke der Erklärung werden spezifische Konfigurationen und Details dargelegt, um ein umfassendes Verständnis von möglichen Wegen zur Umsetzung der Techniken bereitzustellen. Es wird jedoch außerdem ersichtlich, dass die in diesem Dokument beschriebenen Techniken in unterschiedlichen Konfigurationen ohne die spezifischen Details ausgeführt werden können. Ferner können wohlbekannte Merkmale weggelassen oder vereinfacht dargestellt sein, um zu verhindern, dass die beschriebenen Techniken unkenntlich gemacht werden.
  • Die Beschreibung und die Zeichnungen sind dementsprechend in einem veranschaulichenden und nicht einschränkenden Sinne zu verstehen. Es versteht sich jedoch, dass verschiedene Modifikationen und Änderungen daran vorgenommen werden können, ohne vom weiteren Geist und Umfang der Erfindung abzuweichen, die in den Patentansprüchen dargelegt sind.
  • Andere Variationen sind im Geist der vorliegenden Offenbarung inbegriffen. Somit können zwar bezüglich der offenbarten Techniken diverse Modifikationen und alternative Konstruktionen vorgenommen werden, bestimmte veranschaulichte Ausführungsformen davon werden jedoch in den Zeichnungen gezeigt und wurden vorangehend ausführlich beschrieben. Allerdings versteht es sich, dass nicht die Absicht verfolgt wird, die Erfindung auf die konkrete(n) offenbarte(n) Form oder Formen einzuschränken, sondern die Absicht ganz im Gegenteil darin besteht, sämtliche Modifikationen, alternativen Konstruktionen und Äquivalente abzudecken, die in den Geist und Umfang der wie in den beigefügten Ansprüche definierten Erfindung abzudecken.
  • Die Verwendung der Begriffe „ein“ und „eine“ und „der/die/das“ und ähnlicher Referenten in dem Zusammenhang der Beschreibung der offenbarten Ausführungsformen (besonders in dem Zusammenhang der folgenden Patentansprüche) soll so ausgelegt werden, dass sie sowohl den Singular als auch den Plural abdeckt, sofern hierin nicht anderweitig angegeben oder im eindeutigen Widerspruch zum Kontext. Die Begriffe „umfassend“, „aufweisend“, „beinhaltend“ und „enthaltend“ sind als offene Begriffe auszulegen (d. h. „einschließend unter anderem“), sofern nicht anderweitig angegeben. Der Begriff „verbunden“, ist als teilweise oder vollständig ineinander enthalten, aneinander befestigt oder aneinander angefügt auszulegen, wenn er unmodifiziert vorliegt und sich auf physische Verbindungen bezieht, selbst, wenn ein Element dazwischen eingefügt ist. Die Nennung von Wertebereichen hierin soll lediglich als schnelle Methode des Bezugnehmens auf jeden getrennten Wert dienen, der in den Bereich fällt, es sei denn, hierin ist etwas anderes angegeben, und jeder getrennte Wert ist in die Beschreibung eingeschlossen, als ob er einzeln hierin wiedergegeben wäre. Die Verwendung des Begriffs „Gruppe“ (z. B. „eine Gruppe von Objekten“) oder „Untermenge“ ist als eine nicht-leere Sammlung, umfassend ein oder mehrere Elemente, auszulegen, sofern es nicht anders angegeben ist oder der Kontext dem anderweitig widerspricht. Sofern es nicht anders angegeben ist oder der Kontext dem anderweitig widerspricht, bezeichnet ferner der Begriff „Untermenge“ nicht notwendigerweise eine richtige Untermenge der entsprechenden Gruppe, sondern die Untermenge und die entsprechende Gruppe können auch gleich sein.
  • Verbindende Sprache, wie etwa Ausdrücke der Form „wenigstens eines von A, B und C“ oder „mindestens eines von A, B und C“, sind andernfalls in dem Kontext zu verstehen, in dem sie allgemein verwendet werden, um darzustellen, dass ein Objekt, ein Begriff usw. entweder A oder B oder C oder eine beliebige nicht leere Untermenge der Gruppe aus A und B und C sein kann, es sei denn, es ist etwas anderes angegeben oder etwas anderes geht eindeutig aus dem Kontext hervor. Zum Beispiel beziehen sich die verbindenden Ausdrücke „wenigstens eines von A, B und C“ und „mindestens eines von A, B und C“ in dem veranschaulichenden Beispiel einer Gruppe, die drei Elemente aufweist, auf eine der folgenden Gruppen: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Somit ist diese verbindende Sprache nicht im Allgemeinen dazu bestimmt, zu implizieren, dass bestimmte Ausführungsformen erfordern, das wenigstens eines von A, wenigstens eines von B und wenigstens eines von C jeweils vorhanden sein muss.
  • Hierin beschriebene Vorgänge von Prozessen können in jeder geeigneten Reihenfolge durchgeführt werden, sofern es hier nicht anders angegeben ist oder der Kontext dem anderweitig eindeutig widerspricht. Hierin beschriebene Prozesse (oder Variationen und/oder Kombinationen davon) können unter der Steuerung von einem oder mehreren Computersystemen ausgeführt werden, die mit ausführbaren Anweisungen konfiguriert sind, und können als Code (z. B. ausführbare Anweisungen, ein oder mehrere Computerprogramme oder eine oder mehrere Anwendungen), die zusammen einen oder mehrere Prozessoren ausführen, durch Hardware oder Kombinationen davon umgesetzt sein. Der Code kann auf einem computerlesbaren Speichermedium gespeichert sein, zum Beispiel in Form eines Computerprogramms, das eine Vielzahl von Anweisungen umfasst, die durch einen oder mehrere Prozessoren ausgeführt werden können. Das computerlesbare Speichermedium kann nichtflüchtig sein. Ferner sind Computersysteme in einigen Beispielen konfiguriert, um einen oder mehrere Dienste umzusetzen, die gemeinsam Vorgänge von hierin beschriebenen Prozessen ausführen. Diese Computersysteme können zum Beispiel mit entsprechender Hardware und/oder Software konfiguriert sein, die die Durchführung der Operationen ermöglicht. Ferner können Computersysteme, die verschiedene Ausführungsformen der vorliegenden Offenbarung umsetzen, in einigen Beispielen einzelne Vorrichtungen sein und in anderen Beispielen verteilte Computersysteme sein, die mehrere Vorrichtungen umfassen, die unterschiedlich betrieben werden, sodass das verteilte Computersystem die hierin beschriebenen Vorgänge ausführt.
  • Die Verwendung jeglicher Beispiele oder beispielhafter Wortwahl (z. B. „wie etwa“), die hier bereitgestellt sind, soll lediglich die Ausführungsformen der Erfindung besser veranschaulichen und stellt keine Einschränkung des Umfangs der Erfindung dar, es sei denn, es ist etwas anderes beansprucht. Keinerlei Formulierung in der Beschreibung sollte so ausgelegt werden, dass sie ein beliebiges nicht beanspruchtes Element als für die Umsetzung der Erfindung wesentlich angibt.
  • Hier sind Ausführungsformen dieser Offenbarung einschließlich der besten den Erfindern bekannten Art und Weise zum Ausführen der Erfindung beschrieben. Der Fachmann kann bei der Lektüre der vorstehenden Beschreibung Variationen an diesen beschriebenen Ausführungsformen erkennen. Die Erfinder gehen davon aus, dass der Fachmann derlei Variationen im geeigneten Fall anwendet, und die Erfinder sehen vor, dass die Ausführungsformen der vorliegenden Offenbarung anders als hier konkret beschrieben umgesetzt werden können. Dementsprechend umfasst der Umfang der vorliegenden Erfindung sämtliche Modifikationen und Entsprechungen des in den hier beigefügten Patentansprüchen zitierten Gegenstands, wie durch jeweils geltendes Recht zulässig. Darüber hinaus ist jede beliebige Kombination der vorstehend beschriebenen Elemente in allen möglichen Variationen davon durch den Umfang der vorliegenden Offenbarung abgedeckt, sofern es hier nicht anders angegeben ist oder der Kontext dem anderweitig eindeutig widerspricht.
  • Jegliche Referenzen, einschließlich Veröffentlichungen, Patentanmeldungen und Patente, die hierin erwähnt werden, sind hiermit durch Bezugnahme in demselben Maße aufgenommen, als wäre jede Referenz einzeln und spezifisch als durch Referenz eingeschlossen angegeben und in ihrer Gesamtheit hierin ausgeführt.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 14981774 [0001]

Claims (16)

  1. BEANSPRUCHT WIRD:
  2. Computerimplementiertes Verfahren, das Folgendes umfasst: unter der Steuerung von einem oder mehreren Computersystemen, die mit ausführbaren Anweisungen konfiguriert sind, Angeben einer Gruppe von Anwendungsprogrammen, die einer Benutzeridentität zugeordnet sind; Erlangen einer Gruppe von Anwendungsressourcenprofilen durch Abrufen eines Ressourcenprofils für jedes Anwendungsprogramm in der Gruppe der Anwendungsprogramme; Erzeugen eines Profils für virtuelle Maschinen wenigstens teilweise auf Grundlage der Gruppe von Anwendungsressourcenprofilen; Erstellen einer virtuellen Maschine mit einer Konfiguration von Rechenressourcen, die das Profil für virtuelle Maschinen erfüllt; Installieren der Gruppe von Anwendungsprogrammen auf der virtuellen Maschine; Starten von wenigstens einer Anwendung aus der Gruppe der Anwendungsprogramme; und Veranlassen, dass eine Streamingverbindung zwischen der virtuellen Maschine und einem Client-Computersystem aufgebaut wird, wobei die Streamingverbindung kodierte Anzeigeinformationen von der virtuellen Maschine zu dem Client-Computersystem überträgt.
  3. Computerimplementiertes Verfahren nach Anspruch 1, ferner umfassend das Auswählen einer Profilvorlage aus einer Gruppe von Profilvorlagen für virtuelle Maschinen wenigstens teilweise auf Grundlage des Profils für virtuellen Maschinen, wobei: die Gruppe der Profilvorlagen für virtuelle Maschinen Konfigurationen von virtuellen Maschinen zugeordnet ist, die durch einen Rechenressourcendienstanbieter unterstützt werden können; und die virtuelle Maschine gemäß der Profilvorlage konfiguriert ist.
  4. Computerimplementiertes Verfahren nach Anspruch 1, wobei das Angeben der Gruppe von Anwendungsprogrammen, die der Benutzeridentität zugeordnet sind, wenigstens teilweise erreicht wird durch: Abrufen von Anwendungsnutzungsinformationen von dem Client-Computersystem; Angeben eines bestimmten Anwendungsprogramms, das unter Verwendung der Benutzeridentität auf dem Client-Computersystem ausgeführt wurde; und Hinzufügen des bestimmten Anwendungsprogramms zu der Gruppe der Anwendungsprogramme.
  5. Computerimplementiertes Verfahren nach Anspruch 1, ferner umfassend: Angeben einer zweiten Gruppe von Anwendungsprogrammen, die gleichzeitig ausgeführt werden kann; Erzeugen eines zusammengeführten Ressourcenprofils für die zweite Gruppe von Anwendungsprogrammen; und Ändern des Profils für virtuelle Maschinen wenigstens teilweise auf Grundlage des zusammengeführten Ressourcenprofils.
  6. Nichtflüchtiges computerlesbares Speichermedium, auf dem ausführbare Anweisungen gespeichert sind, die infolge ihrer Ausführung durch einen oder mehrere Prozessoren eines Computersystems das Computersystem wenigstens zu Folgendem veranlassen: Senden einer Anfrage zur Verwendung einer ersten Anwendung an einen Rechenressourcendienstanbieter, wobei die Anfrage zur Verwendung der ersten Anwendung den Rechenressourcendienstanbieter veranlasst, eine erste virtuelle Maschine bereitzustellen, wobei die erste virtuelle Maschine wenigstens teilweise auf Grundlage der Rechenressourcenanforderungen der ersten Anwendung konfiguriert ist; Empfangen eines ersten Streams kodierter Anzeigeinformationen von der ersten virtuellen Maschine unter Verwendung eines Anwendungsstreaming-Clients; Senden einer Anfrage zur Verwendung einer zweiten Anwendung an einen Rechenressourcendienstanbieter, wobei die Anfrage zur Verwendung der zweiten Anwendung den Rechenressourcendienstanbieter veranlasst, eine zweite virtuelle Maschine bereitzustellen, wobei die zweite virtuelle Maschine wenigstens teilweise auf Grundlage der Rechenressourcenanforderungen der zweiten Anwendung konfiguriert ist; Empfangen eines zweiten Streams kodierter Anzeigeinformationen von der zweiten virtuellen Maschine unter Verwendung des Anwendungsstreaming-Clients; Zusammenführen des ersten Streams kodierter Anzeigeinformationen und des zweiten Streams kodierter Anzeigeinformationen, um eine zusammengeführte Benutzerschnittstelle für die erste Anwendung und die zweite Anwendung herzustellen; und Darstellen der zusammengeführten Benutzerschnittstelle auf einer Anzeige, die mit dem Computersystem verbunden ist.
  7. Nichtflüchtiges computerlesbares Speichermedium nach Anspruch 5, wobei die Anweisungen ferner Anweisungen umfassen, die infolge ihrer Ausführung durch den einen oder die mehreren Prozessoren das Computersystem veranlassen: wenigstens einen Abschnitt des ersten Streams kodierter Anzeigeinformationen anzugeben, der nicht auf der Benutzerschnittstelle sichtbar ist; und Ansichtsfensterinformationen an den Rechenressourcendienstanbieter zu senden, die den Abschnitt des ersten Streams beschreiben.
  8. Nichtflüchtiges computerlesbares Speichermedium nach Anspruch 5, wobei die Anweisungen ferner Anweisungen umfassen, die infolge ihrer Ausführung durch den einen oder die mehreren Prozessoren das Computersystem veranlassen: zu bestimmen, dass die Netzwerkverbindung zu dem Rechenressourcendienstanbieter unterbrochen wurde; und infolge der Bestimmung, dass die Netzwerkverbindung zu dem Rechenressourcendienstanbieter unterbrochen wurde, den Rechenressourcendienstanbieter zu veranlassen, die Zuweisung der virtuellen Maschine aufzuheben.
  9. Nichtflüchtiges computerlesbares Speichermedium nach Anspruch 5, wobei die Anweisungen ferner Anweisungen umfassen, die infolge ihrer Ausführung durch den einen oder die mehreren Prozessoren das Computersystem veranlassen: eine Benutzereingabe von einer oder mehreren Vorrichtungen, die mit dem Computersystem verbunden sind, in einen Eingabestream zu kodieren; und den Eingabestream an den Rechenressourcendienstanbieter zu übertragen.
  10. Nichtflüchtiges computerlesbares Speichermedium nach Anspruch 5, wobei der eine oder die mehreren Dienste einen Webbrowser, der mit einem Manager für virtuelle Maschinen konfiguriert ist, der die Bereitstellung virtueller Maschinen durch den Rechenressourcendienstanbieter steuert, und einen Anwendungsstream-Stitcher, der die Streams mit kodierten Anzeigeinformationen empfängt und in die Benutzerschnittstelle integriert, beinhaltet.
  11. System, das wenigstens eine Rechenvorrichtung umfasst, die einen oder mehrere Dienste implementiert, wobei der eine oder die mehreren Dienste: eine Anfrage von einem Client-Computersystem empfangen, eine Anwendung zur Verfügung zu stellen; ein Profil für virtuelle Maschinen aus einer Gruppe von Profilen für virtuelle Maschinen wenigstens teilweise auf Grundlage der der Anwendung zugeordneten Rechenressourcenanforderungen auswählen; der virtuellen Maschine eine Konfiguration zuweisen, die wenigstens teilweise auf dem Profil für virtuelle Maschinen basiert; die Anwendung auf der virtuellen Maschine ausführen; und eine Verbindung zwischen der virtuellen Maschine und dem Client-Computersystem herstellen, die Anzeigeinformationen, die der Anwendung zugeordnet sind, an das Client-Computersystem überträgt.
  12. System nach Anspruch 10, wobei: die Anzeigeinformationen mit einer Auflösung und einer Bildrate kodiert sind, die für eine Netzwerkbandbreitenmenge ausgelegt sind, die dem Client-Computersystem zur Verfügung steht; und die Anzeigeinformationen Audioinformationen beinhaltet, die mit Merkmalen kodiert sind, die wenigstens teilweise auf Audioabspielmöglichkeiten basieren, die dem Client-Computersystem zugeordnet sind.
  13. System nach Anspruch 10, wobei der eine oder die mehreren Dienste die virtuelle Maschine wenigstens teilweise durch Auswählen einer virtuellen Maschine aus einem Pool verfügbarer virtueller Maschinen, die auf einem Host-Computersystem ausgeführt werden, zuweisen.
  14. System nach Anspruch 10, wobei der eine oder die mehreren Dienste ferner: eine zusätzliche Anfrage empfangen, dem Client-Computersystem eine zusätzliche Anwendung zur Verfügung zu stellen; ein zusätzliches Profil für virtuelle Maschinen wenigstens teilweise auf Grundlage der der zusätzlichen Anwendung zugeordneten Rechenressourcenanforderungen bestimmen; eine zusätzliche virtuelle Maschine wenigstens teilweise auf Grundlage des zusätzlichen Profils für virtuelle Maschinen zuweisen; die zusätzliche Anwendung auf der zusätzlichen virtuellen Maschine ausführen; und eine zusätzliche Verbindung zwischen der zusätzlichen virtuellen Maschine und dem Client-Computersystem herstellen, die Anzeigeinformationen, die der zusätzlichen Anwendung zugeordnet sind, an das Client-Computersystem überträgt.
  15. System nach Anspruch 10, wobei der eine oder die mehreren Dienste ferner: eine zusätzliche Anfrage empfangen, die Anwendung einem zusätzlichen Client-Computersystem zur Verfügung zu stellen; eine zusätzliche Anwendungssitzung für die Anwendung, die auf der virtuellen Maschine ausgeführt wird, erzeugen; und eine zusätzliche Verbindung zwischen der zusätzlichen Anwendungssitzung auf der virtuellen Maschine und dem Client-Computersystem herstellen, die Anzeigeinformationen, die der zusätzlichen Anwendungssitzung zugeordnet sind, an das Client-Computersystem überträgt.
  16. System nach Anspruch 10, wobei der eine oder die mehreren Dienste ferner: Ansichtsfensterinformationen empfangen, die einen Abschnitt der Anzeigeinformationen angeben, der auf dem Client-Computersystem nicht sichtbar ist; und den Abschnitt der Anzeigeinformationen von den Anzeigeinformationen ausschließen, der an das Client-Computersystem übertragen wird.
DE112016006083.1T 2015-12-28 2016-12-21 Bereitstellung von Rechenressourcen für eine virtuelle Maschine, die ausgelegt ist eine Gruppe von Anwendungsprogrammen zu Hosten, die einem Benutzer zugeordnet sind Pending DE112016006083T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/981,774 US10083054B2 (en) 2015-12-28 2015-12-28 Application-based computing resource management
US14/981,774 2015-12-28
PCT/US2016/068095 WO2017116914A2 (en) 2015-12-28 2016-12-21 Computing resource management

Publications (1)

Publication Number Publication Date
DE112016006083T5 true DE112016006083T5 (de) 2018-09-06

Family

ID=57868344

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112016006083.1T Pending DE112016006083T5 (de) 2015-12-28 2016-12-21 Bereitstellung von Rechenressourcen für eine virtuelle Maschine, die ausgelegt ist eine Gruppe von Anwendungsprogrammen zu Hosten, die einem Benutzer zugeordnet sind

Country Status (4)

Country Link
US (2) US10083054B2 (de)
CN (2) CN108701034B (de)
DE (1) DE112016006083T5 (de)
WO (1) WO2017116914A2 (de)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9110699B2 (en) * 2013-09-19 2015-08-18 International Business Machines Corporation Determining optimal methods for creating virtual machines
WO2016043530A1 (en) * 2014-09-18 2016-03-24 Samsung Electronics Co., Ltd. System and method for providing service via application
US11075976B2 (en) 2014-12-24 2021-07-27 Vmware, Inc. Remoting application user interfaces
US10693923B2 (en) 2015-01-28 2020-06-23 Vmware, Inc. Establishing streaming sessions during remote sessions
US10547711B2 (en) 2015-03-25 2020-01-28 Vmware, Inc. Using off-screen user interface data during remote sessions
US10970101B2 (en) 2016-06-03 2021-04-06 Vmware, Inc. System and method for dynamically configuring virtual displays and virtual inputs for different remote sessions that each present content for a virtual machine
US10469562B2 (en) * 2016-06-24 2019-11-05 Vmware, Inc. Virtual machine pixel remoting
US10942760B2 (en) 2017-02-03 2021-03-09 Microsoft Technology Licensing, Llc Predictive rightsizing for virtual machines in cloud computing systems
US10296367B2 (en) 2017-02-03 2019-05-21 Microsoft Technology Licensing, Llc Resource management for virtual machines in cloud computing systems
US10423455B2 (en) * 2017-02-03 2019-09-24 Microsoft Technology Licensing, Llc Method for deploying virtual machines in cloud computing systems based on predicted lifetime
US10176550B1 (en) * 2017-03-20 2019-01-08 Nutanix, Inc. GPU resource usage display and dynamic GPU resource allocation in a networked virtualization system
US10838776B2 (en) * 2017-07-20 2020-11-17 Vmware, Inc. Provisioning a host of a workload domain of a pre-configured hyper-converged computing device
US11520609B2 (en) * 2017-09-15 2022-12-06 International Business Machines Corporation Template-based software discovery and management in virtual desktop infrastructure (VDI) environments
US11048538B2 (en) * 2018-02-26 2021-06-29 Amazon Technologies, Inc. Autonomous cell-based control plane for scalable virtualized computing
US11847479B2 (en) 2018-03-23 2023-12-19 Vmware, Inc. Allocating a host of a pre-configured hyper-converged computing device to a workload domain
FR3086425B1 (fr) * 2018-09-20 2021-03-05 Blade Procede d'execution d'un programme d'application dans un systeme informatique
US10922122B2 (en) * 2018-09-26 2021-02-16 EMC IP Holding Company LLC System and method for virtual machine resource tagging
US10936443B2 (en) 2018-09-26 2021-03-02 EMC IP Holding Company LLC System and method for tag based backup infrastructure
US10831543B2 (en) * 2018-11-16 2020-11-10 International Business Machines Corporation Contention-aware resource provisioning in heterogeneous processors
JP7252332B2 (ja) * 2018-11-21 2023-04-04 アマゾン テクノロジーズ インコーポレイテッド ロボティクスアプリケーション開発のための方法及びシステム
CN111314799A (zh) * 2018-12-11 2020-06-19 中兴通讯股份有限公司 终端系统构架、通信系统及通信方法、存储介质
US11003431B2 (en) * 2019-03-18 2021-05-11 Vmware, Inc. Generating predictive metrics for virtualized deployments
US11625488B2 (en) * 2019-04-05 2023-04-11 Tausight, Inc. Continuous risk assessment for electronic protected health information
CN116366350A (zh) * 2019-06-24 2023-06-30 亚马逊科技公司 具有隔离虚拟网络集成的无服务器分组处理服务
JP7084894B2 (ja) * 2019-06-26 2022-06-15 株式会社日立製作所 リソース管理システム、リソース割当方法
US20210103651A1 (en) * 2019-10-03 2021-04-08 Microsoft Technology Licensing, Llc Registration of dynamically created packaged applications
US11343354B2 (en) * 2019-10-23 2022-05-24 Nvidia Corporation Increasing user engagement during computing resource allocation queues for cloud services
CN111400033B (zh) * 2020-03-03 2024-04-19 京东科技控股股份有限公司 平台资源成本分摊方法、装置、存储介质及计算机设备
CN112083996A (zh) * 2020-09-16 2020-12-15 努比亚技术有限公司 屏幕控制方法、移动终端及计算机可读存储介质
US11574639B2 (en) * 2020-12-18 2023-02-07 Microsoft Technology Licensing, Llc Hypothesis stitcher for speech recognition of long-form audio

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8112513B2 (en) * 2005-11-30 2012-02-07 Microsoft Corporation Multi-user display proxy server
US20070174429A1 (en) * 2006-01-24 2007-07-26 Citrix Systems, Inc. Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment
US7971182B1 (en) * 2006-05-09 2011-06-28 Vmware, Inc. Application environment specifications for provisioning application specific runtime environments using undefined symbols
US8224885B1 (en) * 2009-01-26 2012-07-17 Teradici Corporation Method and system for remote computing session management
US9043454B2 (en) * 2009-08-26 2015-05-26 Red Hat Israel, Ltd. Auto suspense of virtual machine on client disconnection
CN101877043A (zh) * 2009-11-30 2010-11-03 英业达股份有限公司 虚拟机的应用程序的管理系统与其方法
US8490087B2 (en) 2009-12-02 2013-07-16 International Business Machines Corporation System and method for transforming legacy desktop environments to a virtualized desktop model
US8849941B2 (en) 2010-09-30 2014-09-30 Microsoft Corporation Virtual desktop configuration and operation techniques
US9176721B2 (en) * 2011-04-21 2015-11-03 Hewlett-Packard Development Company, L.P. Installing an application into a virtualized environment
US8793377B2 (en) 2011-05-03 2014-07-29 International Business Machines Corporation Identifying optimal virtual machine images in a networked computing environment
US10031783B2 (en) * 2012-03-02 2018-07-24 Vmware, Inc. Execution of a distributed deployment plan for a multi-tier application in a cloud infrastructure
US10313345B2 (en) 2013-03-11 2019-06-04 Amazon Technologies, Inc. Application marketplace for virtual desktops
US10623243B2 (en) 2013-06-26 2020-04-14 Amazon Technologies, Inc. Management of computing sessions

Also Published As

Publication number Publication date
US11340927B2 (en) 2022-05-24
WO2017116914A2 (en) 2017-07-06
US20170185438A1 (en) 2017-06-29
US20190026145A1 (en) 2019-01-24
US10083054B2 (en) 2018-09-25
CN108701034A (zh) 2018-10-23
CN114116088A (zh) 2022-03-01
WO2017116914A3 (en) 2017-08-10
CN108701034B (zh) 2022-04-12

Similar Documents

Publication Publication Date Title
DE112016006083T5 (de) Bereitstellung von Rechenressourcen für eine virtuelle Maschine, die ausgelegt ist eine Gruppe von Anwendungsprogrammen zu Hosten, die einem Benutzer zugeordnet sind
DE60029774T2 (de) Videokonferenzsystem
DE112016004896T5 (de) Bereitstellung von Remote-Befehlsausführung mit fein abgestimmtem Zugriff für Instanzen von virtuellen Maschinen in einer verteilten Datenverarbeitungsumgebung
DE202013012493U1 (de) Stufen der Datenspeicherung für Webanwendungen und Browser-Erweiterungen
DE112011101357T5 (de) Dynamisches Token für den vorübergehenden Datenzugriff
DE112018004411T5 (de) Zugriffssteuerung in mikrodienst-architekturen
DE202013012500U1 (de) Systemübergreifende Installation von Online-Applikationen
DE112013002544T5 (de) Cloudbasiertes Teilen von Datenpunkten und Zusammenarbeit unter Benutzergruppen
DE112013004805T5 (de) Unterstützen eines koordinierten Zugriffs auf einen gemeinsam genutzten Speicher eines Dateisystems unter Verwendung einer automatischen Ausrichtung eines Protokolls für einen parallelen Dateizugriff und einer Metadatenverwaltung
DE112004000460T5 (de) System und Verfahren zum Verwalten verteilter Objekte als eine einzelne Darstellung
JP7154842B2 (ja) クラウドベース文書の許可管理
DE202020005715U1 (de) Dynamische Maskierung geteilter Datenobjekte
DE112009004075T5 (de) Selektives kommunizieren von daten eines peripheriegeräts zumehreren sendenden computern
DE102013204186A1 (de) Ermitteln von Prioritäten für zwischengespeicherte Objekte zum Ordnen des Übertragens von Änderungen an zwischengespeicherten Objekten beruhend auf gemessener Netzwerkbandbreite
DE202017106604U1 (de) Benutzerdefinierte digitale Komponenten
DE102015118675A1 (de) Aggregatservice mit einer Nutzerschnittstelle
DE112018002955T5 (de) Kognitive datei- und objektverwaltung für verteilte speicherumgebungen
DE202016107513U1 (de) Zuordnungsmodell für Inhaltselementumwandlungen
DE202015009317U1 (de) Einbetten eines Guest-Moduls in ein Embedder-Modul
DE102021130396A1 (de) Datenzugriffsüberwachung und -steuerung
DE102015118676A1 (de) Aggregatservice mit einem Filesharing
DE112017005022T5 (de) Umladen der Bandverarbeitung auf Objektspeicher
DE112022002736T5 (de) Übertragen von aufgabendaten zwischen edge-einheiten beim edge computing
DE102020002356A1 (de) Verbesserte gestalterische gemeinsame Bearbeitung unter Nutzung einer gestaltungsbasierten Rückmeldung
DE112021004945T5 (de) Techniken der kompositionellen verifikation für rollenerreichbarkeitsanalysen in identitätssystemen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication