-
QUERVERWEISE ZU VERWANDTEN ANMELDUNGEN
-
Diese Anmeldung ist eine Fortsetzung der US-amerikanischen Anmeldung Nr. 14/939,627, die am 12. November 2015 unter dem Titel „EPHEMERAL APPLICATIONS” (KURZLEBIGE ANWENDUNGEN) eingereicht wurde, und die Priorität gegenüber der provisorischen US-amerikanischen Anmeldung Nr. 62/080,009, die am 14. November 2014 unter dem Titel „EPHEMERAL APPLICATIONS” (KURZLEBIGE ANWENDUNGEN) eingereicht wurde, beansprucht. Die Inhalte der beiden vorgehend genannten Anmeldungen sind hierin zur Gänze durch Verweis einbezogen.
-
TECHNISCHES GEBIET
-
Ausführungsformen betreffen Anwendungen, insbesondere kurzlebige Anwendungen, die innerhalb eines Browsers ausgeführt werden.
-
HINTERGRUND
-
Im Allgemeinen werden Anwendungen entweder von einem Netzwerk oder einem Remote-Server gehostet oder auf einem Client-Computergerät installiert. Gehostete Anwendungen bieten den Vorteil der Flexibilität. Wird die Anwendung verändert, kann dies Auswirkungen auf alle Benutzer der Anwendung haben. Allerdings gelten gehostete Anwendungen aufgrund der Beschaffenheit des Internets normalerweise als nicht sicher. Installierte Anwendungen bieten den Vorteil der Sicherheit, da sie normalerweise unabhängig (z. B. getrennt) vom Internet sind. Installierte Anwendungen sind jedoch nicht flexibel, sodass eine Änderung der Anwendung in der Regel eine neue Installation der Anwendung erfordert.
-
KURZDARSTELLUNG
-
Die nachfolgend beschriebenen exemplarischen Ausführungsformen offenbaren dementsprechend Technologien für die Bereitstellung kurzlebiger Anwendungen, die die Merkmale von gepackten Anwendungen aufweisen können, da der Code einer kurzlebigen Anwendung auf das Client-Computergerät heruntergeladen und für die Ausführung installiert wird. Kurzlebige Anwendungen erfordern keine Überprüfung und Erteilung von Berechtigungen durch den Benutzer, da die kurzlebige Anwendung sofort ausgeführt wird, ohne eine Überprüfung und eine explizite Erteilung von Berechtigungen durch einen Benutzer, doch kann eine kurzlebige Anwendung lokale Ressourcen des Client-Computergerätes nutzen, auf die der Zugriff nur bei einer erteilten Berechtigung möglich ist. In einigen Implementierungen erfolgt dies durch das Verwalten der von einer kurzlebigen Anwendung genutzten Berechtigungen, sodass eine kurzlebige Anwendung nur Berechtigungen oder Berechtigungsversionen verwendet. die als sicher für die Verwendung ohne eine Benutzerüberprüfung gelten.
-
In einem ersten allgemeinen Aspekt beinhaltet ein Verfahren zur Ausführung einer Anwendung in einem Direktstartmodus das Empfangen einer Benutzereingabe für den Download einer Anwendung von einem Remote-Server auf das Client-Computergerät und zum Starten der Anwendung auf dem Client-Computergerät. Die von der Anwendung angeforderten Berechtigungen zur Nutzung lokaler Ressourcen des Client-Computergerätes während der Ausführung der Anwendung durch das Client-Computergerät werden bestimmt, und diese bestimmten Berechtigungen werden mit einer Liste der im Voraus festgelegten Berechtigungen, die eine Modifizierung der Ausführung der Anwendung beim Ausführen der Anwendung im Direktstartmodus erfordern, verglichen. Die Anwendung wird ohne eine zusätzliche Eingabe des Benutzers gestartet und auf dem Client-Computergerät ausgeführt, wobei mindestens eine der angeforderten Berechtigungen nicht vollständig erteilt wurde.
-
In einem anderen allgemeinen Aspekt beinhaltet ein System für die Ausführung einer Anwendung in einem Direktstartmodus einen Speicher, der ausführbare Befehle speichert, sowie einen oder mehrere Prozessoren, die mit dem Speicher gekoppelt und so konfiguriert sind, dass sie die Befehle ausführen, die bewirken, dass das System eine Benutzereingabe für den Download einer Anwendung von einem Remote-Server auf ein Client-Computergerät und zum Starten der Anwendung auf dem Client-Computergerät empfängt. Der eine oder die mehreren Prozessoren sind des Weiteren konfiguriert zum Ausführen der Befehle, die bewirken, dass das System die von der Anwendung angeforderten Berechtigungen zur Nutzung lokaler Ressourcen des Client-Computergerätes während der Ausführung der Anwendung durch das Client-Computergerät bestimmt, und diese bestimmten Berechtigungen mit einer Liste der im Voraus festgelegten Berechtigungen, die eine Modifizierung der Ausführung der Anwendung beim Ausführen der Anwendung im Direktstartmodus erfordern, vergleicht. Der eine oder die mehreren Prozessoren sind des Weiteren konfiguriert zum Ausführen der Befehle, die bewirken, dass das System die Anwendung ohne eine zusätzliche Eingabe des Benutzers startet und auf dem Client-Computergerät ausführt, wobei mindestens eine der angeforderten Berechtigungen nicht vollständig erteilt wurde.
-
In einem anderen allgemeinen Aspekt beinhaltet ein System zur Ausführung einer Anwendung im Direktstartmodus ein Mittel zum Empfangen einer Benutzereingabe für den Download einer Anwendung von einem Remote-Server auf das Client-Computergerät und zum Starten der Anwendung auf dem Client-Computergerät, ein Mittel zum Empfangen einer Benutzereingabe für den Download einer Anwendung von einem Remote-Server auf das Client-Computergerät und zum Starten der Anwendung auf dem Client-Computergerät, ein Mittel zur Bestimmung der von der Anwendung angeforderten Berechtigungen zur Nutzung lokaler Ressourcen des Client-Computergerätes während der Ausführung der Anwendung durch das Client-Computergerät, ein Mittel zum Vergleichen der bestimmten Berechtigungen mit einer Liste der im Voraus festgelegten Berechtigungen, die eine Modifizierung der Ausführung der Anwendung beim Ausführen der Anwendung im Direktstartmodus erfordern, ein Mittel zum Starten der Anwendung ohne eine zusätzliche Benutzereingabe, ein Mittel zum Ausführen der Anwendung auf dem Client-Computergerät, wobei mindestens eine der angeforderten Berechtigungen nicht vollständig gewährt wurde.
-
Implementierungen der obigen Aspekte können eines oder mehrere der folgenden Merkmale allein oder in Kombination beinhalten. Das Ausführen der Anwendung, wobei mindestens eine der angeforderten Berechtigungen nicht vollständig gewährt wurde, kann zum Beispiel das Modifizieren einer Laufzeitumgebung der Anwendung beinhalten, sodass, wenn die Anwendung auf dem Client-Computergerät ausgeführt wird, die geringfügigste der angeforderten Berechtigungen nicht vollständig gewährt wird. Die Anwendung kann entweder in nur einer oder in mehreren Programmiersprachen programmiert werden, und die Anwendung kann auf dem Client-Computergerät ohne Kompilierung ausführbar sein. Die Anwendung kann alle der Ressourcen enthalten, die für die Ausführung der Anwendung auf dem Client-Computergerät erforderlich sind, sowie Code, der für die Ausführung der Anwendung durch das Client-Computergerät benötigt und nicht dynamisch generiert wird. Die mindestens eine der angeforderten Berechtigungen, die nicht vollständig erteilt wurde, kann eine Berechtigung für den Zugriff auf den unbegrenzten Speicherplatz des Client-Computergerätes beinhalten, und die Ausführung der Anwendung kann das Ausführen der Anwendung auf dem Client-Computergerät während der Erteilung des Zugriffs auf einen im Voraus bestimmten maximalen Speicherplatz auf dem Client-Computergerät beinhalten. Die mindestens eine der angeforderten Berechtigungen, die nicht vollständig erteilt wurde, kann eine Berechtigung für den Zugriff auf die Informationen zu einem Standort des Client-Computergerätes beinhalten, und die Ausführung der Anwendung kann das Ausführen der Anwendung auf dem Client-Computergerät beinhalten, während das Informieren der Anwendung über den Standort mit GPS-Genauigkeit nicht verfügbar ist, selbst wenn der GPS-Sender des Client-Computergerätes aktiviert ist.
-
In einem anderen allgemeinen Aspekt beinhaltet ein Verfahren zur Ausführung einer Anwendung im Direktstartmodus das Empfangen einer Benutzereingabe für den Download einer Anwendung von einem Remote-Server auf das Client-Computergerät und zum Starten der Anwendung auf dem Client-Computergerät. Die von der Anwendung angeforderten Berechtigungen zur Nutzung lokaler Ressourcen des Client-Computergerätes während der Ausführung der Anwendung durch das Client-Computergerät werden bestimmt, und diese bestimmten Berechtigungen werden mit einer Liste der im Voraus festgelegten Berechtigungen, die eine Autorisierung durch den Benutzer erfordern, verglichen. Die Anwendung wird ohne eine zusätzliche Benutzereingabe gestartet, nach dem Start der Anwendung und während ihrer Ausführung wird der Benutzer aufgefordert, eine der vorbestimmten Berechtigungen zu autorisieren.
-
In einem anderen allgemeinen Aspekt beinhaltet ein System für die Ausführung einer Anwendung im Direktstartmodus einen Speicher, der ausführbare Befehle speichert, sowie einen oder mehrere Prozessoren, die mit dem Speicher verknüpft und so konfiguriert sind, dass sie Befehle ausführen, die bewirken, dass das System eine Benutzereingabe für den Download einer Anwendung von einem Remote-Server auf das Client-Computergerät und zum Starten der Anwendung auf dem Client-Computergerät empfängt. Der eine oder die mehreren Prozessoren sind des Weiteren konfiguriert zum Ausführen der Befehle, die bewirken, dass das System die von der Anwendung angeforderten Berechtigungen zur Nutzung lokaler Ressourcen des Client-Computergerätes während der Ausführung der Anwendung durch das Client-Computergerät bestimmt, und diese bestimmten Berechtigungen mit einer Liste der im Voraus festgelegten Berechtigungen, die eine Authentifizierung durch den Benutzer erfordern, vergleicht. Der eine oder die mehreren Prozessoren sind des Weiteren konfiguriert zum Ausführen der Befehle, die bewirken, dass das System die Anwendung ohne eine zusätzliche Eingabe des Benutzers startet und nach dem Start der Anwendung und während ihrer Ausführung der Benutzer aufgefordert wird, eine der vorbestimmten Berechtigungen zu autorisieren.
-
In einem anderen allgemeinen Aspekt beinhaltet ein System zur Ausführung einer Anwendung im Direktstartmodus ein Mittel zum Empfangen einer Benutzereingabe für den Download einer Anwendung von einem Remote-Server auf das Client-Computergerät und zum Starten der Anwendung auf dem Client-Computergerät, ein Mittel zur Bestimmung der von der Anwendung angeforderten Berechtigungen zur Nutzung lokaler Ressourcen des Client-Computergerätes während der Ausführung der Anwendung durch das Client-Computergerät, ein Mittel zum Vergleichen dieser bestimmten Berechtigungen mit einer Liste der im Voraus festgelegten Berechtigungen, die eine Autorisierung durch einen Benutzer erfordert, ein Mittel fqür das Starten der Anwendung ohne zusätzliche Eingabe vom Benutzer und ein Mittel für das Auffordern des Benutzers, nach Starten der Anwendung und während der Ausführung der Anwendung eine der vorbestimmten Berechtigungen zu autorisieren.
-
Implementierungen der obigen Aspekte können eines oder mehrere der folgenden Merkmale allein oder in Kombination beinhalten. Die Aufforderung kann beispielsweise während der Ausführung erfolgen, wenn die Anwendung zur weiteren Ausführung die lokalen Ressourcen nutzen muss, die über eine Berechtigung freigegeben werden müssen. Die bestimmte Berechtigung, zu deren Autorisierung der Benutzer aufgefordert wird, kann eine Berechtigung für den Zugriff auf Standortinformationen des Client-Computergerätes mit einer GPS-Genauigkeit sein. Die bestimmte Berechtigung, zu deren Autorisierung der Benutzer aufgefordert wird, kann eine Berechtigung für den Zugriff auf den unbeschränkten Speicherplatz auf dem Client-Computergerät sein. Die bestimmte Berechtigung, zu deren Autorisierung der Benutzer aufgefordert wird, kann eine Berechtigung für das Erfassen von Audiodaten von einem Mikrofon des Client-Computergerätes sein. Die Anwendung kann entweder in nur einer oder in mehreren Webtechnologie-Programmiersprachen programmiert werden, wobei die Anwendung auf dem Client-Computergerät ohne Kompilierung ausführbar ist. Die Anwendung kann alle der Ressourcen enthalten, die für die Ausführung der Anwendung auf dem Client-Computergerät erforderlich sind, sowie Code, der für die Ausführung der Anwendung durch das Client-Computergerät benötigt und nicht dynamisch generiert wird.
-
Die hier beschriebenen Systeme und Verfahren beinhalten eine Anwendungsumgebung. die einen oder mehrere Vorteile von gehosteten und installierten Anwendungen aufweist.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 ist ein Blockdiagramm eines Systems, das zur Implementierung von kurzlebigen Anwendungen mithilfe der hier beschriebenen Techniken verwendet werden kann.
-
2 ist ein Blockdiagramm eines Systems, das ein Computergerät, einen Anwendungsserver, einen Synchronisierungsserver und ein Netzwerk beinhaltet.
-
3 ist eine schematische Darstellung einer Benutzeroberfläche, die zum Starten einer oder mehrerer kurzlebigen Anwendungen verwendet werden kann.
-
4 ist ein Flussdiagramm eines Verfahrens zur Ausführung einer Anwendung im Direktstartmodus.
-
5 ist ein Flussdiagramm eines Verfahrens zur Ausführung einer Anwendung in einem Direktstartmodus in Übereinstimmung mit mindestens einer exemplarischen Ausführungsform.
-
6 zeigt ein Beispiel eines allgemeinen Computergerätes und eines allgemeinen mobilen Computergerätes, die mit den hier beschriebenen Techniken verwendet werden können.
-
AUSFÜHRLICHE BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
-
Ein Webbrowser, ausgeführt durch ein Client-Gerät, kann Code (z. B. HTML Code) von einem Remote-Server (z. B. einem Remote-Server, der eine Website hostet) empfangen und den empfangenen Code zum Nutzen eines Nutzers des Client-Gerätes auf dem Client-Gerät ausführen.
-
In unterschiedlichen Implementierungen kann der Webbrowser eine oder mehrere installierte Anwendungen beinhalten, die so konfiguriert sein können, dass sie eine einzelne oder mehrere Aufgaben für einen Benutzer ausführen können. In dieser Implementierung kann die Webanwendung so konfiguriert sein, um durch den Webbrowser ausgeführt oder interpretiert zu werden. Im Allgemeinen ist eine von einem Browser ausführbare Anwendung ein Programm, das in einem Webtechnologie-Programmiercode geschrieben ist, d. h. einem Code, der zum Programmieren von im Internet verfügbaren Ressourcen verwendet wird und der auf dem Client-Computergerät ohne Kompilierung ausführbar ist. Der Webtechnologie-Programmiercode ist so ausgelegt, dass er vollständig in einem Web-Browser auf dem Client-Computergerät läuft und umfasst z. B. Markup-Sprachcode (z. B. HTML5), JavaScript und CSS. Die auf einem Browser ausführbare Anwendung enthält alle erforderlichen Ressourcen, um die Anwendung auf dem Client-Computergerät auszuführen, und der zum Ausführen der Anwendung durch das Client-Computergerät benötigte Code wird nicht dynamisch erzeugt.
-
Folglich können Webanwendungen innerhalb eines Webbrowsers mit einer dedizierten Benutzeroberfläche ausgeführt werden und eine Funktionalität und Nutzererfahrung bereitstellen, die reichhaltiger und interaktiver als eine eigenständige Website und gleichzeitig im Vergleich zu einer Desktopanwendung weniger umständlich und unflexibel ist. Beispiele für Webanwendungen umfassen Spiele, Foto-Editoren und Videoplayer, die innerhalb des Browsers ausgeführt werden.
-
Webanwendungen könnten „gehostete Webanwendungen” oder „gepackte Anwendungen” sein. Gehosteten Webanwendungen können zusätzliche Berechtigungen zur Nutzung lokaler Ressourcen eines Client-Computergerätes erteilt werden, über die Ressourcen hinaus, die ein typischer durch einen Browser ausgeführter Code in der Regel nutzen darf (z. B. die Fähigkeit, Inhalte aus einer lokalen Zwischenablage zu lesen oder die Fähigkeit, eine verborgene Seite geöffnet zu haben, die Aufgaben wie Datensynchronisierung für die Offline-Nutzung oder das Empfangen der vom Server gesendeten Benachrichtigung zur Anzeige für den Benutzer ausführt). Bei manchen Implementierungen müssen dem Nutzer die zusätzlichen Berechtigungen mitgeteilt werden und muss der Nutzer explizit die Berechtigungen gewähren, so dass der Nutzer Kenntnis von den zusätzlichen Berechtigungen erhält und ermitteln kann, ob sie im Austausch für das Ausführen der gehosteten App erteilt werden sollen. Durch das Starten der gehosteten Anwendung werden implizit die Berechtigungen erteilt, die von der Anwendung für alle Seiten, deren URLs mit denen im Anwendungsmanifest übereinstimmen, wobei das Manifest eine Datei ist, die mit der Webanwendung oder der Anwendungserweiterung zusammenhängenden Metadaten enthalten kann. Die Manifestdatei kann ein oder mehrere Felder enthalten. die mit der Anwendung verbundene Informationen spezifizieren, darunter ein Berechtigungsfeld. In dem Berechtigungsfeld spezifiziert ein Entwickler die angegebenen Berechtigungen, die von der Anwendung benutzt werden können. Die Manifestdatei ist mit der Anwendung assoziiert und Teil der Anweisungen, die dem Client-Computergerät mit der Anwendung geliefert werden. Sobald die von der Anwendung angeforderten Berechtigungen erteilt wurden, ist die Anwendung in der Lage, die durch die Berechtigungen aktivierten Funktionen zu nutzen, ohne den Benutzer wiederholt nach Berechtigungen zur Nutzung der Funktionen zu fragen. Gehostete Webanwendungen werden auch in der Benutzeroberfläche gesondert behandelt und können durch große Symbole dargestellt werden, die angeklickt werden können, um die Anwendung entweder in einer Registerkarte oder einem eigenständigen (eventuell Vollbild-)Fenster zu öffnen.
-
Gepackte Anwendungen können als Webanwendungen angesehen werden, deren Code gebündelt ist, sodass der Nutzer den gesamten Inhalt der Webanwendung zur Ausführung durch den Browser oder in einem eigenständigen Fenster herunterladen kann. Eine gepackte Anwendung benötigt u. U. keinen Netzwerkzugang, um seine Funktionalität für den Nutzer durchzuführen, und kann stattdessen durch den Browser erfolgreich lokal auf dem Computergerät ohne Zugang zu einem Netzwerk ausgeführt werden.
-
Bei gepackten Anwendungen besteht die Möglichkeit, Erweiterungs-Anwendungsprogrammierschnittstellen (APIs) zu nutzen, wodurch gepackte Apps das Verhalten oder Aussehen des Browsers ändern können. In manchen Fällen kann eine gepackte Anwendung ohne Darstellung betrieben werden, um in einem Browser zu laufen, z. B. ohne den Browser „Chrome” (d. h. UI-Elemente rund um die Website oder die im Browser-Fenster angezeigten App-Inhalte), Tab oder eine andere Benutzeroberfläche des Browsers. In einem solchen Fall könnte die gepackte Anwendung in einem eigenständigen Fenster ohne Zugriff auf Contentskripte oder APIs betrieben werden, die mit dem Browserzustand verbunden sind, z. B. Cookies, Verlauf, Lesezeichen, geöffnete Tabs usw. In verschiedenen Fällen können gepackte Anwendungen zum Beispiel auf USB-Laufwerke und BLUETOOTH-Geräte zugreifen, einfache Netzwerk-Sockets öffnen oder auf das lokale Dateisystem zugreifen.
-
Gepackte Anwendungen können mit einem Großbildschirm-Design und einer reichhaltigen Benutzeroberfläche wie native Anwendungen aussehen und sich auch so anfühlen. Gepackte Anwendungen können alle ihre Dateien in einer einzelnen Datei (z. B. einer ZIP-Datei, und ebenso z. B. einer .CRX-Datei) bündeln, die ein Benutzer herunterlädt und dann deren Inhalt installiert. Dieses Bündeln bedeutet, dass gepackte Anwendungen im Unterschied zu gewöhnlichen Webanwendungen nicht von Inhalten im Web abhängig sein müssen. Anwendungen können beispielsweise über einen vertrauenswürdigen Online-Shop oder über individuelle Websites vertrieben werden.
-
In einigen Implementierungen kann die API (und/oder die Web-API) ein Element eines Webbrowsers wie oben beschrieben sein. In einigen Implementierungen kann die API (und/oder Web-API) ein Element eines webbasierten Betriebssystems (Browser-OS) sein. Ein Browser-OS kann eine bootbare Version eines Webbrowsers sein (umfassend einen Browser, einen Mediaplayer und ein Dateisystem). Das Browser-OS kann alle Anwendungen und Daten des Benutzers im Web und nicht auf der lokalen Festplatte speichern. Das Browser-OS (z. B Chrome-OS®) kann ein herkömmliches Betriebssystem ersetzen.
-
Ein Webbrowser und/oder ein Browser-Betriebssystem können eine zugewiesene Laufzeitumgebung beinhalten. Eine Laufzeit (auch Laufzeitsystem oder eine Laufzeitumgebung) kann Verhalten (z. B. Low-Level (z. B Core) und/oder High-Level (z. B. Typüberprüfung, Speicherbereinung und/oder Fehlerbehebung) einer Computersprache (z. B. HTML und/oder JAVASCRIPT) oder eines Programms (z. B. eines Webbrowsers) implementieren. Jede Computersprache kann eine Art Laufzeitumgebung implementieren, ganz gleich, ob die Sprache eine kompilierte Sprache, interpretierte Sprache, eingebettete domainspezifische Sprache ist oder über eine API aufgerufen wird. In einigen Implementierungen kann die Laufzeitumgebung eine Hintergrundseite aufrufen, Details zum Manifest zurückgeben oder Ereignisse im App-Lebenszyklus abhören und darauf reagieren. Die Laufzeitumgebung kann den relativen Pfad einer URL zu einer vollqualifizierten URL konvertieren. In einigen Implementierungen kann die Laufzeit den Lebenszyklus der App verwalten. Die App-Laufzeit verwaltet die Installation der App, steuert die Ereignisseite und kann die App jederzeit abschalten.
-
Wie gehosteten Anwendungen können auch gepackten Anwendungen zusätzliche Berechtigungen zur Nutzung lokaler Ressourcen eines Client-Computergerätes gewährt werden, die über die typischen Berechtigungen eines im Browser ausgeführten Codes hinausgehen. Bei einigen Implementierungen können gepackten Anwendungen zusätzliche Berechtigungen gewährt werden, die einen umfangreicheren Zugriff auf lokale Ressourcen eines Client-Computergeräts bieten, als eine gehostete Anwendung ihn einsetzen darf. Bei einer gepackten Anwendung kann ein Nutzer bequem die Anwendung herunterladen und installieren und der gepackten Anwendung einen hohen Zugriffsgrad auf das Computergerät einräumen, weil die gepackte Anwendung einen Verifizierungs- und Validierungsprozess durchlaufen hat, bevor die gepackte Anwendung auf einem digitalen Marktplatz aufgeführt wird, wobei von der App zuverlässig angenommen wird, dass sie sich nach dem Herunterladen und Installieren auf dem Client-Computergerät nicht ändert. Daher vertraut der Benutzer darauf, dass der heruntergeladene Code nicht schädlich ist, selbst wenn der Code einen hohen Zugriffsgrad auf das Computergerät hat.
-
Demgegenüber ist eine gehostete Webanwendung, selbst wenn sie im digitalen Marktplatz genehmigt wurde, im Wesentlichen nichts weiter als eine URL zu einer Website plus einige Metadaten, die einige Berechtigungen definieren. Da sich der Code der Webseite, auf die die URL hinweist, ändern kann, sollte der Benutzer einer gehosteten Webanwendung nur zögerlich einen höheren Zugriffsgrad auf das Computergerät gewähren, da der Code schädlich werden kann, selbst wenn der Code zuvor zugelassen wurde.
-
Sowohl die gepackten Anwendungen als auch die gehosteten Webanwendungen ziehen die Nutzung von Berechtigungen in Erwägung, um eine erhöhte Nutzung der lokalen Ressourcen beim Ausführen der Anwendung zu ermöglichen. Die Benutzer sind jedoch bereit, gepackten Anwendungen gefährlichere Berechtigungen zu erteilen (z. B. Berechtigungen mit einem hohen Zugriffsgrad für das Computergerät), wenn der Code der gepackten Anwendungen validiert und statisch ist. Mit anderen Worten wird sich der Code der gepackten Anwendung nach dem Herunterladen und Installieren des Codes auf dem Benutzerrechner nicht ändern. Da gepackte Anwendungen gefährlichere Berechtigungen im Vergleich zu gehosteten Anwendungen verwenden können, müssen viele Berechtigungen, die von den gepackten Anwendungen angefordert werden können, explizit von einem Benutzer erteilt werden, bevor eine gepackte Anwendung installiert und auf dem Computergerät des Benutzers ausgeführt werden kann. Der Lebenszyklus einer gepackten Anwendung umfasst dementsprechend Folgendes: Herunterladen der App, Anforderung und Erteilung der Berechtigungen, Installation der App sowie Start und Ausführung der App.
-
Die hier beschriebenen exemplarischen Implementierungen beziehen sich auf eine neue Art von Anwendungen, bekannt unter dem Namen „kurzlebige Anwendungen”, die über die Merkmale gepackter Anwendungen verfügen können, indem der Code für eine kurzlebige Anwendung auf ein Client-Computergerät heruntergeladen und installiert wird, erfordern jedoch keine Überprüfung und Erteilung von Berechtigungen durch den Benutzer, da die kurzlebige Anwendung sofort gestartet wird, ohne die Überprüfung und explizite Erteilung von Berechtigungen durch eine Nutzer, sogar dann, wenn die kurzlebige Anwendung die lokalen Ressourcen des Client-Computergerätes nutzen kann, auf die nur bei einer erteilten Berechtigung zugegriffen werden darf. In einigen Implementierungen erfolgt dies durch das Verwalten der von einer kurzlebigen Anwendung genutzten Berechtigungen, sodass eine kurzlebige Anwendung nur Berechtigungen oder Berechtigungsversionen verwendet, die als sicher für die Verwendung ohne eine Benutzerüberprüfung gelten. Da kurzlebige Anwendungen nicht auf die Erteilung von Berechtigungen angewiesen sind, können sie schnell und effizient gestartet werden. Eine kurzlebige Anwendung, die beispielsweise bestimmte Berechtigungen für die Nutzung lokaler Ressourcen eines Client-Computergerätes verwendet, kann in Reaktion auf eine einzelne Benutzereingabe heruntergeladen, installiert und gestartet werden, wenn mindestens eine der angeforderten Berechtigungen erteilt wurde.
-
Eine kurzlebige Anwendung kann dementsprechend sowohl die Vorteile einer vorgehend beschriebenen gehosteten Webanwendung aufweisen, indem eine kurzlebige Anwendung schnell gestartet werden kann, als auch die Vorteile gepackter Anwendungen, indem die kurzlebige Anwendung für die Offline-Nutzung lokal installiert werden und über höhere Berechtigungen als eine gehostete Anwendung verfügen kann.
-
1 ist ein Blockdiagramm eines Systems 100, das zur Implementierung von kurzlebigen Anwendungen mithilfe der hier beschriebenen Techniken verwendet werden kann. Die Darstellung von System 100 in 1 dient als Beispiel. Es versteht sich, dass andere Konfigurationen und Techniken genutzt werden können, um diese Verfahren zu implementieren.
-
Das System 100 beinhaltet Client-Computergeräte 110A und 110B. Die Client-Computergeräte 110A und 110B können die Form unterschiedlicher Geräte haben, wie ein Personalcomputer, ein Fernsehgerät, ein Laptop, ein Tablet, ein Netbook, ein portables Gerät oder ein Smartphone. Die Geräte 110A und 110B beinhalten jeweils ein Betriebssystem 120A und 120B und einen Browser 122A und 122B, die für den Zugriff auf verschiedene Inhaltstypen verwendet werden können. Diese Inhalte können zum Beispiel Websites, Fotos, Videos, Audioinhalte und ausführbare Skripts sein. Wie in 1 dargestellt, kann Browser 122A eine kurzlebige Anwendung 130A beinhalten, die auf dem Computergerät 110A mithilfe der hier beschriebenen Techniken ausgeführt werden kann. Die kurzlebige Anwendung 130A kann jeweils clientseitige Komponenten der Anwendung beinhalten. Je nach der bestimmten Implementierung kann die kurzlebige Anwendung 130A eine Beschreibung der Anwendung und/oder des Codes, der durch den Browser 122A ausführbar ist und Funktionen für die Webanwendung bereitstellt. Ebenso kann der Browser 122B eine kurzlebige Anwendung 130B beinhalten, die auf dem Computergerät 110B mithilfe der beschriebenen Techniken ausgeführt werden kann.
-
Im System 100 sind die Computergeräte 110A und 110B mit einem Netzwerk 160 gekoppelt. Das Netzwerk 160 kann ein Datenzugriffsnetzwerk beinhalten, welches Zugriff auf das Internet und/oder World Wide Web gewährt. Über das Netzwerk 160 können die Computergeräte 110A und 110B (z. B. mithilfe der Browser 122A und 122B) mit einem digitalen Marktplatz-Server 150 (z. B. einem Anwendungsserver oder einem Online-Shop), oder einer Anwendungsquelle 180 kommunizieren. In diesem Beispiel kann die Anwendungsquelle 180 serverseitige Komponenten für die Anwendung 130A und 130B enthalten. Die Anwendungen 130A und 130B können bei der Ausführung mehrere Quellen nutzen.
-
Die kurzlebigen Anwendungen 130A und 130B können von dem digitalen Marktplatz-Server 150 oder von der Anwendungsquelle 180 auf das Client-Computergerät 110A oder 110B heruntergeladen werden. Um anzuzeigen, dass die Anwendung 130A oder 130B als eine kurzlebige Anwendung ausgeführt werden könnte, können im Anwendungsmanifest Informationen enthalten sein, die angeben, dass die Anwendung als eine kurzlebige Anwendung ausgeführt werden sollte. Beispielsweise könnte eine Markierung, die den kurzlebigen Status der Anwendung anzeigt, im Anwendungsmanifest auf TRUE gesetzt werden. Dementsprechend kann die Anwendung auf Basis der Informationen im Manifest oder anderer Informationen, die angeben, dass die Anwendung als eine kurzlebige Anwendung ausgeführt werden sollte, wenn diese auf dem Client-Computergerät 110A oder 110B ausgeführt wird, als eine kurzlebige Anwendung ausgeführt werden.
-
Wenn die Anwendung 130A oder 130B auf dem Client-Computergerät 110A oder 110B ausgeführt wird, kann die Anwendung eine oder mehrere durch die Anwendung spezifizierte Berechtigungen verwenden (z. B. können durch die Anwendung spezifizierte Berechtigungen im Anwendungsmanifest deklariert werden). Auf Basis der durch die Anwendung spezifizierten Berechtigungen kann beispielsweise der Zugriff auf die lokalen Computerressourcen der Computergeräte 110A und 110B erteilt werden, damit die Anwendung auf die Contentskripte oder APIs, die mit dem Browser und/oder einem höheren Zugriffsgrad für das Computergerät zusammenhängen, zugreifen kann. Wenn die Anwendung 130A oder 130B als kurzlebige Anwendung ausgeführt wird, kann sie eine oder mehrere durch die Anwendung spezifizierten Berechtigungen nutzen, ohne dass eine explizite Bestätigung oder Erteilung der Berechtigungen seitens des Benutzers erforderlich ist. Bei der Ausführung als kurzlebige Anwendung muss der Benutzer nur angeben, dass die Anwendung durch das Client-Computergerät 110A oder 110B gestartet und ausgeführt werden soll; der Benutzer muss nicht separat angeben, dass die von der Anwendung spezifizierten Berechtigungen erteilt werden müssen. Wie hier ausführlich beschrieben, legen die Berechtigungen fest, dass die Anwendung automatisch durch den Browser 122A, 1222B oder das Betriebssystem 120A, 120B verwaltet wird, wenn die Anwendung 130A oder 130B als eine kurzlebige Anwendung ausgeführt wird.
-
In unterschiedlichen Implementierungen können die durch die Anwendung 130A, 130B spezifizierten Berechtigungen einen Zugriff auf beispielsweise USB-Laufwerke, BLUETOOTH-Geräte, lokale Speichermedien, das lokale Dateisystem (z. B. nicht im Zusammenhang mit dem Speichern von Seiten oder des Browserzustands wie Cookies, Verlauf, Lesezeichen, geöffnete Tabs), lokal gespeicherte Kontaktdaten, lokal gespeicherte Kalenderdaten, lokal gespeicherte Standortinformationen und diverse Systemtools (z. B. ein Tool, das das Gerät davon abhält, in den Schlafmodus zu wechseln, ein Tool. das Informationen dazu bereitstellt, ob das Client-Computergerät Daten und den Hintergrund synchronisiert, ein Tool, das es der Anwendung erlaubt, den Prozess einer anderen ausgeführten Anwendung zu stoppen, etc.) gewähren.
-
Die Webanwendungen 132A und 132B, die von der Anwendungsquelle 180 zur Verfügung gestellt werden, können statisch sein, das bedeutet, dass jedes Computergerät (z. B. über einen Webbrowser) beim Zugriff auf eine der Webanwendungen 132A and 132B das gleiche Webanwendungsobjekt (z. B. eine Webseite) erhält. Eine statische Webanwendung ist anders gesagt nicht dynamisch bezüglich der Veränderungen von einzelnen Objekten, aus denen die Webanwendung zusammengesetzt ist. Eine statische Webanwendung wird anders gesagt geändert, indem die ganze Webanwendung ersetzt wird (z. B. Hochladen zur Verwendung). Ein Entwickler einer statischen Webanwendung kann einzelne Webanwendungsobjekte (z. B. eine Webseite oder Benutzeroberfläche oder ein Skript) nicht ersetzen, ohne die ganze Webanwendung zu ersetzen. Wenn ein Entwickler eine Änderung an einer statischen Webanwendung vornehmen will, muss der Entwickler den Code für die überprüfte Webanwendung zur erneuten Validierung und Verifizierung (z. B. durch den digitalen Marktplatzserver 150) einreichen, bevor der Code auf dem vertrauenswürdigen Server verfügbar ist. Anders ausgedrückt, nach dem Empfang einer Änderung (z. B. vom Entwickler der Webanwendung) an einem Objekt der kurzlebigen Anwendung 132A und/oder 132B, wird die Validierung der zugesicherten Eigenschaften der kurzlebigen Anwendung 132A und/oder 132B im Ganzen noch einmal ausgeführt, bevor die Änderung an einem Objekt der kurzlebigen Anwendung 132A und/oder 132B über die URL verfügbar ist.
-
Dementsprechend können die Objekte der kurzlebigen Anwendung 132A und/oder 132B weder ersetzt, umgeleitet, umgeschaltet, neu geordnet oder umcodiert und über die URL zur Verfügung gestellt werden, ohne dass die kurzlebige Anwendung 132A und/oder 132B im Vorfeld als Ganzes erfolgreich validiert und/oder neu validiert wurde. Die Webanwendungen 132A und 132B können statisch sein, indem die Webanwendung alle Ressourcen enthalten kann, die zur Ausführung der Anwendung auf dem Client-Computergerät erforderlich sind und bei denen der Code, der zur Ausführung durch das Client-Computergerät erforderlich ist, nicht dynamisch erzeugt wird.
-
Die Objekte der Anwendungen 132A und 132B können auf Netzwerkgeräten oder serverseitigen Computergeräten 150, 180 (z. B. einem Server) gespeichert (oder im Wesentlichen gespeichert) und auf den Client-Computergeräten 110A, 110B ausgegeben werden. Anders ausgedrückt fordert ein Clientgerät (z. B. Computergeräte 110A und/oder 110B) über einen Browser und/oder über eine Laufzeitumgebung die Objekte der Anwendung von dem Server, der die URL nutzt. Die Anwendungen 132A und 132B können beispielsweise mithilfe eines sicheren Servers gehostet werden. Dieses Hosting umfasst die Bereitstellung eines Zugriffs auf die Anwendung und die Bereitstellung des Anwendungscodes für einen Web-Crawler.
-
In einer Implementierung kann der digitale Marktplatzserver 150 so konfiguriert werden, dass er Anforderungen von den Benutzercomputergeräten (wie dem Computergerät 110A) für die Installation von Anwendungen empfangt und in Reaktion auf diese Anfragen Installationsvorgänge (oder Installationspakete) für die Anwendungen bereitstellt. Diese Installationsvorgänge/-pakete können mindestens eine clientseitige Komponente für die angeforderte Anwendung enthalten.
-
In der in 1 dargestellten Anordnung kann ein Webbrowser 122A verwendet werden, um die Installation der Anwendungen 130A, 130B durch Zusammenwirken mit dem digitalen Marktplatzserver 150 anzufragen. Der digitale Marktplatz 150 kann beispielsweise eine Website implementieren, die zur Verteilung von Webanwendungen und anderen Inhalten verwendet wird. Der digitale Marktplatz-Server 150 kann beispielsweise eine E-Commerce-Website implementieren. Der digitale Marktplatzserver 150 kann Anwendungen von den Entwicklern, beispielsweise von der Anwendungsquelle 180, erhalten.
-
Anforderungen für den Start von Webanwendungen können in den Nachrichten der Computergeräte 110A, 110B an den digitalen Marktplatzserver 150 enthalten sein, um Zustimmung zum Kauf entsprechender Webanwendungen zu zeigen oder kostenlose Anwendungen zu starten. Auch wenn das System 100 nur einen einzelnen digitalen Marktplatzserver 150 und eine Anwendungsquelle 180 abbildet, soll darauf hingewiesen werden, dass zusätzliche digitale Marktplätze, Server oder Quellen in das System 100 eingeschlossen sein können.
-
In einigen Implementierungen kann die Anwendungsquelle 180 ebenfalls eine oder mehrere Websites implementieren, mit denen die Computergeräte 110A und 110B (z. B. mithilfe von Browser 122A und 122B) zusammenwirken können. um die Installation der Anwendungen 130A, 130B, 132A und 132B anzufordern. Die kurzlebige Anwendung 130A kann beispielsweise eine gepackte Anwendung sein, die eine Manifestdatei beinhaltet, die Berechtigungen (z. B. Berechtigungen zur Nutzung lokaler Ressourcen oder zur Ausführung anderer Operationen, die Programmiersprachen mit Webtechnologien (z. B. HTML, XML-Code) in der Regel nicht ausführen dürfen) und mindestens eine Datei zur Bereitstellung einer Benutzeroberfläche zusammen mit anderen Dateien wie Bilddateien beinhalten kann. In einigen Implementierungen kann Anwendungsquelle 180 vertrauenswürdig sein, da sie eine manuelle Überprüfungsverwaltungskomponente beinhaltet, z. B. Personenüberprüfungsanwendungen, die von der Anwendungsquelle 180 aus Scherheitsgründen, wegen Bugs usw. bereitgestellt werden. Ferner kann Anwendungsquelle 180 vertrauenswürdig sein, da sie vom selben Unternehmen betrieben werden kann, das zum Beispiel Browser 122A und 122B entwickelt, sowie Betriebssysteme, die für das Ausführen von Webanwendungen und Browsererweiterungen verwendet werden. Anwendungsquelle 180 kann außerdem vertrauenswürdig sein, da sie autonome Verfahren durch einen Prozessor eines Computergeräts betreiben kann, um Webanwendungen für Sicherheitsprobleme, Urheberschaft, Bugs usw. zu validieren. Dagegen können andere Quellen weniger vertrauenswürdig sein, da von ihnen nicht bekannt ist, dass sie denselben Grad an automatischer und/oder manuelle Überprüfung oder andere Kontrollen beinhalten wie Anwendungsquelle 180 und da andere Quellen zum Beispiel möglicherweise keine vertrauenswürdigen Browser oder Betriebssysteme bereitstellen. Die vertrauenswürdige Anwendungsquelle 180 kann eine der wenigen ausgewählten Webanwendungen mit bekannten Adressen sein, die die Quelle der Webanwendung als vertrauenswürdig identifiziert.
-
Die Browser 122A und 122B können auch Feedback an die Anwendungsquelle 180 bezüglich der lokalen Nutzung einer Webanwendung auf dem Client-Computergerät senden. Durch das Empfangen dieser Feedbackmeldungen von mehreren Client-Computergeräten 110A und 110B kann die Anwendungsquelle 180 Informationen dazu sammeln, wie eine Anwendung tatsächlich verwendet wird, sowie Informationen zu beliebigen Sicherheitsproblemen, die beispielsweise aufgetreten sind, nachdem auf die Anwendung von der Anwendungsquelle 180 aus zugegriffen wurde. Dementsprechend kann die Anwendungsquelle 180 Webanwendungen auf Basis von Signalen im Zusammenhang mit Sicherheitsproblemen analysieren, wobei diese Signale Signale auf Basis der Informationen zur tatsächlichen Leistung von Anwendungen, nachdem auf sie von der Anwendungsquelle 180 aus zugegriffen wurde und sie auf einem Client-Computergerät ausgeführt werden, umfassen können. Benutzer können beispielsweise Berichte zu Malware oder Bugs an die Anwendungsquelle 180 senden.
-
2 ist ein Blockdiagramm eines Systems 200, das ein Computergerät 110 (z. B. Computergeräte 110A und/oder 110B), einen Anwendungsserver 260 (welcher einen Marktplatz 150 oder die Anwendungsquelle 180 bereitstellen kann), einen Synchronisierungsserver 240 und ein Netzwerk 230 beinhaltet. Wie in 2 dargestellt, beinhaltet das Computergerät 110 mindestens einen Prozessor 205 und mindestens einen Speicher 210. Das Computergerät 100 beinhaltet außerdem Hardwarekomponenten wie eine Kamera 203, einen GPS-Sender-Empfänger 207 und ein Mikrofon 209. Der mindestens eine Prozessor 205, die Hardwarekomponenten und der mindestens eine Speicher 210 sind kommunikativ über den Bus 212 gekoppelt. Das Computergerät 110 kann zum Beispiel ein Element eines jeden Computergeräts sein (z. B. PC, Laptopcomputer und dergleichen). Der Server 260 kann einen oder mehrere Prozessoren 262, einen oder mehrere Speicher 278, ein Betriebssystem 264, einen Anwendungsserver 266 und einen Anwendungsdatenspeicher 272 beinhalten.
-
Wie in 2 dargestellt, beinhaltet mindestens ein Speicher 210 Code, der zur Bereitstellung eines Betriebssystems 214, eines Browsers 216 und einer Laufzeitumgebung 218 ausgeführt werden kann. Das Betriebssystem (O/S) 214, der Browser 216 und die Laufzeit 218 können (zusammen) konfiguriert sein, um (mindestens einen Teil der) hier beschriebenen Verfahren zu implementieren. Das Betriebssystem 214 verwaltet Hardwareressourcen, die mit dem Computergerät 110 zusammenhängen, und stellt allgemeine Dienste für die auf dem Computergerät 110 ausgeführten Computerprogramme bereit. Der Browser 216 implementiert die Funktionen eines vorgehend ausführlich beschriebenen Browsers.
-
Die Laufzeitumgebung 218 kann bestimmtes Verhalten (z. B. Low-Level (z. B. Core) und/oder High-Level (z. B. Typüberprüfung, Speicherbereinigung und/oder Debugging)) einer Computersprache (z. B., HTML und/oder JAVASCRIPT) oder eines Programms (z. B. eines Webbrowsers) implementieren. Jede Computersprache kann eine Art Laufzeitumgebung implementieren, ganz gleich, ob die Sprache eine kompilierte Sprache, interpretierte Sprache, eingebettete domainspezifische Sprache ist oder über eine API aufgerufen wird. In einigen Implementierungen kann die Laufzeitumgebung 218 eine Hintergrundseite aufrufen, Details zum Manifest zurückgeben oder Ereignisse im App-Lebenszyklus abhören und darauf reagieren. Die Laufzeitumgebung 218 kann einen App-Lebenszyklus verwalten. In diesem Fall verwaltet die Laufzeit 218 die Installation der App, steuert die Ereignisseite und kann die Anwendung jederzeit abschalten.
-
Wie in 2 dargestellt, kann das System 200 auch einen Synchronisierungsserver 240 beinhalten, der einen oder mehrere Prozessoren 242, einen oder mehrere Speicher 250, ein Betriebssystem 244 und eine Kennungsdatenbank 246 beinhaltet. Die Kennungsdatenbank 246 kann eindeutige Kennungen speichern, um eine Synchronisierung zwischen den verschiedenen Benutzersitzungen auf verschiedenen Client-Computergeräten zu ermöglichen, z. B. Computergeräte 110, 110A und/oder 110B. In einigen Implementierungen erlaubt zum Beispiel ein Benutzerkonto einem Nutzer die Authentifizierung von Systemdiensten (z. B. Online-Anwendungen) und das Erhalten der Berechtigung, um darauf zuzugreifen. Um sich bei einem Benutzerkonto anzumelden, kann sich ein Nutzer zum Beispiel selbst mit einem Passwort oder sonstigen Anmeldeinfomationen zum Zweck der Kontoführung, der Sicherheit oder des Ressourcenmanagements authentifizieren. Sobald der Nutzer angemeldet ist (z. B. bei einem Webbrowser, einem Computergerät usw.), kann ein Betriebssystem statt eines Benutzernamens eine Kennung wie z. B. eine ganze Zahl verwenden, um sich auf den Nutzer zu beziehen. Zum Beispiel kann der Benutzername mit einer Benutzerkennung korreliert sein. Ein System (z. B. Synchronisierungsserver 240) kann das Eigentumsrecht an dem Benutzerkonto abstimmen und validieren und es kann das Eigentumsrecht an diesen Benutzerkonten permanent mit bestimmten Personen verbinden, indem es der validierten Kontoanmeldekennung eine eindeutige Kennung zuweist (z. B. Benutzernamen und Passwörter, sichere Kennungen usw.). Das System kann validieren, dass Personen nur über Kontoanmeldekennungen für die entsprechenden Systeme und Anwendungen verfügen, zum Beispiel gemäß den Geschäftsrichtlinien einer Organisation, den Zugangskontrollrichtlinien und/oder verschiedenen Anwendungsanforderungen.
-
In einigen Implementierungen können alle Lesezeichen, Erweiterungen, im Browser ausführbaren Anwendungen, Designs, sonstige Browserpräferenzen und/oder Einstellungen des Benutzers von einem Synchronisierungsserver 240 über das Netzwerk 230 und die Netzwerkschnittstelle 220 geladen werden, wenn sich ein Benutzer in einem Webbrowser oder an einem bestimmten Gerät anmeldet. Dementsprechend können die Lesezeichen, Erweiterungen, Webanwendungen, Designs, sonstige Browserpräferenzen und/oder Einstellungen des Benutzers gespeichert (z. B. in Speicher 250) und mit einem Benutzerkonto (z. B. unter Verwendung der Kennungsdatenbank 246) synchronisiert werden. Der Benutzer kann dann diese Einstellungen jederzeit laden, wenn er sich beim Webbrowser auf anderen Computern und Geräten anmeldet. Änderungen der Browsereinstellungen können dann zum Beispiel sofort mit dem Konto synchronisiert und automatisch auf den anderen Computer wiedergegeben werden, bei denen sich der Benutzer angemeldet hat (und die Synchronisierung aktiviert hat).
-
Änderungen an Einstellungen auf einem Computergerät können automatisch von anderen Computern (z. B. über den Synchronisierungsserver 240) kopiert werden (zum Beispiel, wenn der Benutzer diese Synchronisierungsfunktion aktiviert hat). Synchronisierte Daten können verschlüsselt sein, wenn sie sich zwischen den Computergeräten bewegen, um die Sicherheit von Informationen zu gewährleisten. Weiterhin können Passwörter auf den Computergeräten durch Nutzung eines kryptographischen Schlüssels verschlüsselt sein. Der Synchronisierungsserver 240 kann einen zentrale Dienst beinhalten, der zum Hashen von Einstellungen konfiguriert ist, die ermitteln, ob plötzlich eine große Anzahl an Geräten Hashes für spezifische neue Einstellungen anfordert, und in diesem Fall die Bereitstellung von Hashes nicht gewähren. Der Synchronisierungsserver 240 kann von Benutzern eingesendete Informationen über Widersprüche umfassen, welche dann verwendet werden, um ein Modell zur Konfidenzberechnung zu erstellen oder zu verbessern. Der Synchronisierungsserver 240 kann die Erkennung von Widersprüchen melden, um die Größenordnung der Infektionsrate zu schätzen.
-
Dementsprechend können Informationen im Zusammenhang mit den Browsereinstellungen (sowie die Einstellungen selbst) aus einer Datei (z. B. XML-Datei) oder einem Datenspeicher (z. B. einer Datenbank) gelesen, vom Synchronisierungsserver 240 heruntergeladen (z. B. synchronisiert) und im Speicher 210 gespeichert werden. Die Kennungsdatenbank 246 kann auf die Datei und/oder den Datenspeicher zugreifen, um Informationen zu den Einstellungen zu ergänzen oder zu generieren.
-
Der Anwendungsserver 266 kann Anwendungen aus dem Anwendungsdatenspeicher 272 an das Client-Computergerät 110 bedienen. Eine Anwendung kann beispielsweise aus dem Anwendungsdatenspeicher 272 in Reaktion auf eine Benutzereingabe auf dem Client-Computergerät 110 bedient werden, wobei die Benutzereingabe das Senden eines Signals von dem Client-Computergerät 110 an den Server 260 auslöst, das angibt, dass eine kurzlebige Anwendung von dem Server 260 auf das Client-Computergerät 110 heruntergeladen und danach auf dem Client-Computergerät 110 gestartet werden sollte. Die Anwendungen, die aus dem Datenspeicher 272 bedient werden, können Anwendungen beinhaltet. die als kurzlebige Anwendungen ausgeführt werden sollen, und diese Anwendungsserver können Informationen beinhalten (z. B. innerhalb ihrer Manifeste), die diese als kurzlebige Anwendungen identifizieren.
-
Auf dem Client-Computergerät 110 kann ein Berechtigungsanalysator 219 das von einem Server 260 abgerufene Anwendungsmanifest parsen, um zu bestimmen, ob die Anwendung als kurzlebige Anwendung ausgeführt werden kann. Zusätzlich kann der Berechtigungsanalysator 219 die Berechtigungen bestimmen, die von der kurzlebigen Anwendung angefordert werden. Der Berechtigungsanalysator 219 kann beispielsweise das Anwendungsmanifest parsen, um die Berechtigungen bestimmen, die von der kurzlebigen Anwendung angefordert werden.
-
Der Berechtigungsanalysator 219 kann die von der kurzlebigen Anwendung angeforderten Berechtigungen mit einer Liste der Berechtigungen vergleichen, die nach deren relativer Sicherheit für einen Benutzer des Computergerätes 110, auf dem die Anwendung ausgeführt wird, bei Ausführung als kurzlebige Anwendung kategorisiert sind – z. B. wenn die Anwendung ohne jegliche Überprüfung und Autorisierung der Berechtigungen durch einen Benutzer installiert und gestartet wird. In einigen Ausführungsformen können Berechtigungen beispielsweise folgendermaßen kategorisiert sein: sicher für die Nutzung in einer kurzlebigen Anwendung ohne Modifizierungen, sicher für die Nutzung in einer kurzlebigen Anwendung dahingehend modifiziert als dass die Berechtigung nicht vollständig erteilt wird, oder unsicher für die Nutzung in einer kurzlebigen Anwendung, es sei denn, die Berechtigung wird explizit durch den Benutzer erteilt.
-
Sobald die Berechtigungen einer kurzlebigen Anwendung bestimmt wurden, kann der Installations- und der Startvorgang der Anwendung abgebrochen werden und eine Fehlermeldung an den Benutzer bereitgestellt werden mit dem Hinweis, dass die Anwendung nicht im kurzlebigen Modus gestartet werden kann, wenn die Anwendung eine Berechtigung enthält, die für die Nutzung unsicher ist, es sei denn, die Berechtigung wird explizit gewährt (z. B. eine Berechtigung zur Gewährung des Lese-/Schreibe-Zugriffs auf ein Dateisystem des Computergeräts). In anderen Ausführungsformen kann der Benutzer aufgefordert werden, die Berechtigung zu überprüfen und explizit zu erteilen, damit der Installations- und der Startvorgang der Anwendung fortgesetzt werden kann, wenn die Anwendung eine Berechtigung vom Typ „für die Nutzung unsicher, es sei denn mit einer expliziten Erteilung” beinhaltet.
-
Wenn die Anwendung nur für die Nutzung in einem kurzlebigen Modus und ohne jegliche Modifizierungen sichere Berechtigungen beinhaltet (z. B. eine Berechtigung, die verhindert, dass das Client-Computergerät 110 während der Anwendungsausführung in den Schlafmodus wechselt, eine Berechtigung, die es der Anwendung erlaubt zu bestimmen, ob der Hintergrunddatenverarbeitungsprozess aktiviert oder deaktiviert wird, eine Berechtigung, die es der Anwendung erlaubt zu bestimmen, ob das Client-Computergerät mit dem Internet über eine WLAN-Verbindung oder über eine mobile Datennetzwerkverbindung verbunden wird, eine Berechtigung, die es der Anwendung erlaubt, Inhalte der Zwischenablage des Client-Computergerätes zu lesen, usw.), kann die kurzlebige Anwendung ohne weitere Benutzereingabe installiert und gestartet werden, nachdem diese Anwendung durch eine Benutzereingabe von dem Server 260 auf das Client-Computergerät 110 heruntergeladen und darauf gestartet wurde.
-
In einigen Implementierungen kann eine im kurzlebigen Modus gestartete Anwendung eine für die Nutzung im kurzlebigen Modus sichere Berechtigung nur dann anfordern, wenn die Berechtigung so modifiziert wurde, dass sie nicht vollständig erteilt werden muss. Eine Anwendung, die die Nutzung des unbeschränkten Speicherplatzes auf dem Client-Computergerät anfordert, kann beispielsweise automatisch ohne eine zusätzliche Nutzereingabe gestartet werden, nachdem der Nutzer eingegeben hat, dass die Anwendung im kurzlebigen Modus gestartet werden soll. Jedoch kann die Anforderung für die Nutzung des unbeschränkten Speicherplatzes in einem modifizierten Format genehmigt werden, und zwar so, dass nur ein im Voraus beschränkter Speicherplatz für die im kurzlebigen Modus gestartete Anwendung freigegeben wird. Auf diese Weise kann die Anwendung „glauben gemacht werden”, dass die angeforderte Berechtigung erteilt wurde, wenn die angeforderte Berechtigung tatsächlich nur teilweise und nicht vollständig erteilt wurde. Daher kann eine Anwendung im kurzlebigen Modus gestartet werden, ohne dass der Benutzer die Nutzung des Speicherplatzes für die Anwendung explizit freigeben muss, gleichzeitig ist der Benutzer geschützt, da nur ein beschränkter Speicherplatz für die Anwendung freigegeben wird, wenn diese im kurzlebigen Modus ausgeführt wird.
-
In einem anderen Beispiel kann, wenn die Anwendung, die als eine kurzlebige Anwendung gestartet wird, eine Berechtigung für den Empfang von Standortinformationen zum Client-Computergerät 110 anfordert, die Berechtigung ohne eine explizite Benutzerfreigabe nach dem Start der Anwendung erteilt werden, die Anwendung kann jedoch informiert werden, dass die Standortinformationen mit GPS-Genauigkeit auf dem Gerät nicht verfügbar sind, selbst wenn der GPS-Sender 207 aktiviert ist. Somit können nur ungefähre Standortinformationen (z. B. auf Basis des Standorts des Mobilfunkturms, mit dem das Gerät kommuniziert) von dem Client-Computergerät für die Anwendung bereitgestellt werden, sodass die Anwendung ohne eine explizite Benutzerfreigabe der Standortinformationen gestartet und ausgeführt werden kann, jedoch werden präzise Standortinformationen (z. B. auf Basis der auf dem Gerät verfügbaren GPS-Signale) für die Anwendung nicht freigegeben, und somit bleibt die Privatsphäre des Benutzers eines Client-Computergerätes geschützt.
-
Diese Modifizierung der Berechtigung, die von der kurzlebigen Anwendung angefordert wurde, in eine beschränkte Version der tatsächlich erteilbaren Berechtigung kann mithilfe der Laufzeitumgebung 218, die über den Lebenszyklus der kurzlebigen Anwendung informiert ist, verwaltet werden. In einigen Implementierungen kann, sobald der Berechtigungsanalysator 219 festlegt, dass die kurzlebige Anwendung eine Berechtigung angefordert hat, die nicht vollständig erteilt werden kann, während die Umgebung im kurzlebigen Modus ausgeführt wird, ein Signal an die Laufzeitumgebung 218 gesendet werden, und in Reaktion auf das Signal kann die Laufzeitumgebung 218 so modifiziert werden, dass sie eine beschränkte Version der angefragten Berechtigung erteilt, d. h. die Berechtigung wird nicht vollständig erteilt und die Anwendung wird ohne eine weitere Benutzereingabe gestartet und ausgeführt, nachdem der Benutzer die Anwendung von dem Server 260 angefordert hat.
-
In einigen Implementierungen kann eine im kurzlebigen Modus ausgeführte Anwendung die Nutzung einer Berechtigung anfordern, die eine explizite Benutzerautorisierung erfordert, bevor die Anwendung die Berechtigung nutzen kann. Anstatt eine Autorisierung der Berechtigung seitens des Nutzers bei der Installation der Anwendung anzufordern, kann die Anwendung in Reaktion auf eine einzelne Benutzereingabe zum Herunterladen und Starten der Anwendung automatisch installiert und gestartet werden, aber die Aufforderung an den Benutzer, eine explizite Autorisierung der Berechtigung yu erteilen, kann verschoben werden, bis die Anwendung ausgeführt wird und die betreffende Berechtigung nutzen will. In diesem Fall kann die Laufzeitumgebung 218 so modifiziert werden, dass sie die Aufforderung des Benutzers, die Berechtigung zu autorisieren, verschieben kann, bis die Anwendung ausgeführt wird und den Zugriff auf die Berechtigung benötigt, statt den Benutzer zum Installationszeitpunkt der Anwendung zur Erteilung der Berechtigung aufzufordern.
-
In einer Implementierung kann eine kurzlebige Anwendung (z. B. eine Telekommunikations- oder Videokonferenzanwendung) beispielsweise den Zugriff auf die Berechtigung für den Empfang von Audiosignalen über das Mikrofon 209 des Computergerätes oder den Zugriff auf die Berechtigung für den Empfang von Videoaufnahmen über die Kamera 203 anfordern. Eine Aufforderung an den Benutzer des Computergerätes 110, diese Berechtigungen zu erteilen, kann bis zu dem Zeitpunkt verschoben werden, in dem eine Anwendung ausgeführt wird und den Zugriff auf die Audiosignale über das Mikrofon 209 oder die Fotoaufnahmen der Kamera 203 benötigt.
-
Nachdem eine kurzlebige Anwendung vom Benutzer gestartet und auf dem Computergerät 110 ausgeführt wurde, kann die Anwendung nach Abschluss der Verwendung durch den Benutzer geschlossen werden. Die kurzlebige Anwendung kann im Cache-Speicher des Client-Computergerätes 110 verbleiben, sodass die kurzlebige Anwendung wieder gestartet und ausgeführt werden kann und sodass die kurzlebige Anwendung von einem lokalen Gerät gestartet werden kann, ohne dass ein Code von einem Remote-Server heruntergeladen werden muss. Aus diesem Grund können kurzlebige Anwendungen im Offline-Modus verwendet werden, wenn das Client-Computergerät nicht mit einem Netzwerk von Remote-Geräten verbunden ist. Ressourcen, die mit der kurzlebigen Anwendung zusammenhängen, können gemäß bekannten Cache Eviction-Richtlinien (Verdrängungsstrategie von Cache-Objekten) verwaltet werden. Eine kurzlebige Anwendung kann beispielsweise in lokalen Ressourcen des Client-Computergerätes gespeichert werden und bleiben, bis neuere Anwendungen Speicherplatz einfordern, der von der kurzlebigen Anwendung belegt wird. An diesem Punkt kann die kurzlebige Anwendung von den lokalen Ressourcen des Client-Computergerätes gelöscht oder es kann eine Speicherbereinigung der lokalen Ressourcen durchgeführt werden, um zusätzlichen Speicherplatz freizugeben.
-
Wenn eine gepackte Anwendung installiert und im nicht kurzlebigen Modus ausgeführt wird. kann die Anwendung nach einer bestimmten Inaktivitätsdauer oder wenn sich die Anwendung nicht mehr im Vordergrund einer Benutzeroberfläche im Browser befindet, in den inaktiven Modus wechseln. Bei Inaktivität kann die Anwendung in den energieschonenden „Schlafmodus” versetzt werden. Die Laufzeitumgebung kann eine inaktive Anwendung „aufwecken”, um die Anwendung über verschiedene Ereignisse zu informieren, z. B. dass die Anwendung eine Nachricht von einer anderen Anwendung erhalten hat, dass die Anwendung eine Push-Benachrichtigung von einem Server erhalten hat, dass ein Alarm (ein durch die Anwendung konfiguriertes Ereignis) ausgelöst wurde usw.; nach dem Aufwecken der Anwendung kann diese das Ereignis verarbeiten. Im Gegensatz zu einer nicht kurzlebigen Anwendung kann eine Anwendung, die im kurzlebigen Modus ausgeführt wird, jedoch nicht über Ereignisse benachrichtigt oder durch die Laufzeitumgebung „geweckt” werden, wenn alle Fenster der Benutzeroberfläche der Anwendung geschlossen wurden. Sie bleibt stattdessen vollständig inaktiv im Cache und wird erst nach einem vom Benutzer initiierten Start oder der Anwendung aktiviert. Aus diesem Grund gestaltet sich die Benutzererfahrung bei kurzlebigen Anwendungen so, dass die Anwendung nur für die Dauer der Benutzerinteraktion mit der Anwendung innerhalb der Benutzeroberfläche der Anwendung gestartet und ausgeführt wird, jedoch vollständig beendet wird, wenn der Benutzer die Anwendung schließt.
-
Das Starten einer Anwendung im kurzlebigen Modus kann es dem Benutzer ermöglichen, eine Anwendung schnell und einfach zu testen, bevor sich der Benutzer für eine vollständige Installation der Anwendung entscheidet. Eine kurzlebige Anwendung kann rasch zu einer vollständig installierten Anwendung hochgestuft werden, da ihr gesamter Code und alle Ressourcen bereits auf das Client-Computergerät heruntergeladen wurden, auch wenn nicht alle Berechtigungen der Anwendung gewährt wurden, wenn die Anwendung in einem kurzlebigen Modus gestartet wird. In einigen Implementierungen kann zum Hochstufen der Anwendung vom kurzlebigen Status in den vollständigen Status eine Benutzeroberfläche bereitgestellt werden (z. B. in der Anwendung selbst oder innerhalb einer Anwendungsstarteinrichtung), um den Benutzer aufzufordern, das Hochstufen der Anwendung vom kurzlebigen Status zum vollständigen Status und die Gewährung aller zusätzlichen Berechtigungen zu genehmigen, die die Anwendung zum Betrieb im vollständigen Status benötigt. Nach dem Empfang der expliziten Zustimmung des Benutzers können die für die Anwendung erforderlichen zusätzlichen Berechtigungen erteilt werden, und die Anwendung darf im inaktiven Modus ausgeführt werden, aus dem heraus sie aktiviert werden kann, um über unterschiedliche Ereignisse informiert zu werden.
-
Wie in 2 dargestellt, kann das System 200 auch einen Server 260 beinhalten, der einen oder mehrere Prozessoren 262, einen oder mehrere Speicher 278, ein Betriebssystem 264, einen Anwendungsserver 266 und einen Anwendungsdatenspeicher 272 beinhaltet. Im Beispiel von 2 können das Computergerät 110, der Server 260 und/oder der Synchronisierungsserver 240 mindestens ein Computersystem bilden, und sie stellen praktisch jedes beliebige Computersystem dar, das sich zur Ausführung der hier beschriebenen Techniken eignet. Als solches versteht es sich, dass das Computergerät 110, der Server 260 und/oder der Synchronisierungsserver 240 unterschiedliche Komponenten beinhalten können, die für die Implementierung der hier beschriebenen Techniken oder anderer Versionen oder künftiger Versionen dieser Techniken verwendet werden können. Zu Beispielzwecken sind das Computergerät 110, der Server 260 und/oder der Synchronisierungsserver 240 so dargestellt, als enthielten sie mindestens einen Prozessor 205, 242 bzw. 262, mindestens einen Speicher 210, 250 bzw. 278 (z. B. ein nicht-transitorisches, computerlesbares Medium).
-
Dementsprechend können mindestens ein Prozessor 205, 242 und/oder 262 auf einem Träger gebildet und dazu verwendet werden, die in mindestens einem Speicher 210, 250 und/oder 278 gespeicherten Befehle auszuführen, um die verschiedenen hier beschriebenen Funktionen und Optionen oder zusätzliche oder alternative Funktionen und Optionen zu implementieren. Natürlich können mindestens ein Prozessor 205, 242 und/oder 262 und mindestens ein Speicher 210, 250 und/oder 278 für verschiedene andere Zwecke verwendet werden. Insbesondere versteht es sich, dass mindestens ein Speicher 210, 250 und/oder 278 exemplarisch für verschiedene Arten von Speichern und entsprechender Hardware und Software stehen, die zur Implementierung eines der hier beschriebenen Module verwendet werden können. Die oben und/oder unten beschriebenen Systeme und/oder Verfahren können Daten und/oder Speicherelemente beinhalten. Die Daten- und/oder Speicherelemente (z. B. Datentabellen) können in beispielsweise mindestens einem Speicher 210, 250 und/oder 278 gespeichert werden.
-
3 ist eine schematische Darstellung einer Benutzeroberfläche 300, die zum Starten einer oder mehrerer kurzlebigen Anwendungen verwendet werden kann. Die Benutzeroberfläche 300 kann als Benutzeroberfläche 302 zum Starten der Anwendung bereitgestellt werden, die zur Verwaltung und Anzeige von im Browser ausführbaren Anwendungen, die auf dem Client-Computergerät 110 installiert sind, dienen soll. Die Benutzeroberfläche 302 zum Starten der Anwendung kann ein Suchfeld 304 zur Eingabe von Suchbegriffen 306 durch den Benutzer beinhalten. Nachdem ein Benutzer gewünschte Suchbegriffe in das Suchfeld 304 eingegeben hat, kann ein Benutzeroberflächenelement 308 ausgewählt werden, um nach den gewünschten Objekten zu suchen. Nach der Auswahl des Benutzeroberflächenelements 308 kann die Auswahl eines weiteren Benutzeroberflächenelements 310 beispielsweise eine Suche nach im Internet verfügbaren Ressourcen, die für die Suchanfrage zutreffen, ausgeführt werden. In einem anderen Beispiel kann ein Benutzer nach Auswahl des Benutzeroberflächenelements 308 und weiterer Auswahl der Benutzeroberflächenelemente 312A, 312B und 312C zu den bestimmten Unterdomänen des Marktplatzservers 150 navigieren, wo zusätzliche Suchen nach Anwendungen zur Verfügung gestellt werden können.
-
In einer weiteren Implementierung und nach Auswahl des Benutzeroberflächenelements 308 können die Benutzeroberflächenelemente 314, 316, die sich auf bestimmte im Browser ausführbare Anwendungen, die heruntergeladen und auf dem Client-Computergerät gespeichert werden können, beziehen, bereitgestellt werden. Im Zusammenhang mit dem Benutzeroberflächenelement 314 kann für eine erste im Browser ausführbare Anwendung, auf die die Suchkriterien zutreffen, ein erstes Benutzeroberflächenelement 315A bereitgestellt werden. Die Auswahl des Benutzeroberflächenelements 315A kann dazu führen, dass die Anwendung, die mit dem Benutzeroberflächenelement 314 zusammenhängt, von einem Remote-Server 260 auf ein Client-Computergerät 110 heruntergeladen werden kann, wo die Anwendung mithilfe eines gewöhnlichen Installationsvorgangs, in dem alle der von der Anwendung angeforderten Berechtigungen entweder passiv erteilt oder explizit durch den Nutzer zum Installationszeitpunkt erteilt werden, bevor die Anwendung gestartet und ausgeführt werden kann, installiert wird.
-
Außerdem kann in Verbindung mit dem Benutzeroberflächenelement 314 ein zweites Benutzeroberflächenelement 315B bereitgestellt werden. Die Auswahl des Benutzeroberflächenelements 315A kann dazu führen, dass die Anwendung, die mit dem Benutzeroberflächenelement 314 verbunden ist, von einem Remote-Server 260 auf ein Client-Computergerät 110 heruntergeladen werden kann, wo die Anwendung sofort im kurzlebigen Modus ohne Aufforderung zur zusätzlichen Benutzereingabe (z. B. um von der Anwendung angeforderte Berechtigungen zu erteilen) gestartet werden kann. Im Zusammenhang mit dem Benutzeroberflächenelement 316 für eine zweite im Browser ausführbare Anwendung kann ein erstes Benutzeroberflächenelement 317A und ein zweites Benutzeroberflächenelement 317B bereitgestellt werden, wobei das erste Benutzeroberflächenelement 317A einen gewöhnlichen Installationsvorgang bereitstellt und das zweite Benutzeroberflächenelement 317B einen Installationsvorgang mit einem sofortigen Start der Anwendung im kurzlebigen Modus bereitstellt.
-
4 ist ein Flussdiagramm eines Verfahrens 400 zur Ausführung einer Anwendung im Direktstartmodus. Das Verfahren beinhaltet das Empfangen einer Benutzereingabe für den Download einer Anwendung von einem Remote-Server auf das Client-Computergerät und zum Starten der Anwendung auf dem Client-Computergerät (402). In einigen Implementierungen kann die Anwendung entweder in nur einer oder in mehreren Programmiersprachen programmiert werden und auf dem Client-Computergerät ohne Kompilierung ausführbar sein. In einigen Implementierungen umfasst die Anwendung sämtliche Ressourcen, die für die Ausführung der Anwendung auf dem Client-Computergerät erforderlich sind, sowie Code, der für die Ausführung der Anwendung durch das Client-Computergerät und nicht dynamisch generiert wird.
-
Das Verfahren 400 beinhaltet das Bestimmen der von der Anwendung angeforderten Berechtigungen zur Nutzung lokaler Ressourcen des Client-Computergerätes während der Ausführung der Anwendung durch das Client-Computergerät (404). Die bestimmten Berechtigungen werden mit einer Liste der im Voraus festgelegten Berechtigungen, die eine Modifizierung oder Ausführung der Anwendung beim Start der Anwendung im Direktstartmodus (406) erfordern, verglichen. Die Anwendung wird ohne eine zusätzliche Eingabe des Benutzers (408) gestartet und auf dem Client-Computergerät ausgeführt, wobei mindestens eine der angeforderten Berechtigungen nicht vollständig erteilt wird (410).
-
Das Ausführen der Anwendung, wobei mindestens eine der angeforderten Berechtigungen nicht vollständig erteilt wurde, kann beispielsweise das Modifizieren einer Laufzeitumgebung der Anwendung beinhalten, und zwar dann, wenn die Anwendung auf dem Client-Computergerät ausgeführt wird, die geringfügigste der angeforderten Berechtigungen nicht vollständig erteilt wird. In einigen Implementierungen beinhaltet mindestens eine der angeforderten Berechtigungen, die nicht vollständig erteilt wurden, eine Berechtigung für den Zugriff auf den unbegrenzten Speicherplatz des Client-Computergerätes, wobei die Ausführung der Anwendung das Ausführen der Anwendung auf dem Client-Computergerät während der Erteilung des Zugriffs auf einen im Voraus beschränkten Speicherplatz auf dem Client-Computergerät beinhalten kann. In einigen Implementierungen beinhaltet mindestens eine der angeforderten Berechtigungen, die nicht vollständig erteilt wurden, eine Berechtigung für den Zugriff auf die Informationen zum Standort des Client-Computergerätes, wobei die Ausführung der Anwendung das Ausführen der Anwendung auf dem Client-Computergerät beinhaltet, während das Informieren der Anwendung über den Standort mit GPS-Genauigkeit nicht verfügbar ist, selbst wenn der GPS-Sender des Client-Computergerätes aktiviert ist.
-
5 ist ein Flussdiagramm eines Verfahrens 500 zur Ausführung einer Anwendung in einem Direktstartmodus in Übereinstimmung mit mindestens einer exemplarischen Ausführungsform. Das Verfahren beinhaltet das Empfangen einer Benutzereingabe für den Download einer Anwendung von einem Remote-Server auf das Client-Computergerät und zum Starten der Anwendung auf dem Client-Computergerät (502). Die von der Anwendung angeforderten Berechtigungen zur Nutzung lokaler Ressourcen des Client-Computergerätes während der Ausführung der Anwendung durch das Client-Computergerät werden bestimmt. (504). Diese bestimmten Berechtigungen werden mit einer Liste der im Voraus festgelegten Berechtigungen, die eine Autorisierung durch den Benutzer (506) erfordern, verglichen. Die Anwendung wird ohne eine zusätzliche Benutzereingabe (508) gestartet, und nach dem Start der Anwendung und während ihrer Ausführung wird der Benutzer aufgefordert, eine der vorbestimmten Berechtigungen (510) zu autorisieren. In einigen Implementierungen kann die Aufforderung beispielsweise während der Ausführung erfolgen, wenn die Anwendung zur weiteren Ausführung die lokalen Ressourcen nutzen muss, die über eine Berechtigung freigegeben werden müssen.
-
In einigen Implementierungen kann die Benutzeraufforderung das Auffordern des Benutzers umfassen, eine Berechtigung für den Zugriff auf Standortinformationen des Client-Computergerätes mit GPS-Genauigkeit zu autorisieren. In einigen Implementierungen kann die Benutzeraufforderung das Auffordern des Benutzers umfassen, eine Berechtigung für den Zugriff auf unbeschränkten Speicherplatz auf dem Client-Computergerät zu autorisieren. In einigen Implementierungen kann die Benutzeraufforderung das Auffordern des Benutzers umfassen, eine Berechtigung für den Zugriff auf Audiodaten des Mikrofons des Client-Computergerätes zu autorisieren. In einigen Implementierungen kann die Anwendung entweder in nur einer oder in mehreren Programmiersprachen programmiert werden, wobei die Anwendung auf dem Client-Computergerät ohne Kompilierung ausführbar sein kann. In einigen Implementierungen kann die Anwendung sämtliche Ressourcen enthalten, die für die Ausführung der Anwendung auf dem Client-Computergerät erforderlich sind, sowie Code, der für die Ausführung der Anwendung durch das Client-Computergerät und nicht dynamisch generiert wird.
-
6 zeigt ein Beispiel eines generischen Computergeräts 600 und eines generischen mobilen Computergeräts 650, die mit den hier beschriebenen Techniken verwendet werden. Computergerät 600 soll verschiedene Formen von Digitalcomputern darstellen, zum Beispiel Laptops, Desktops, Workstations, Personal Digital Assistants, Server, Blade Server, Mainframes und andere geeignete Computer. Computergerät 650 soll verschiedene Formen von Mobilgeräten, wie Personal Digital Assistants, Mobiltelefone, Smartphones und andere ähnliche Computergeräte darstellen. Die hier gezeigten Komponenten, ihre Verbindungen und Beziehungen und ihre Funktionen sollen nur exemplarisch sein und sollen Implementierungen der in diesem Dokument beschriebenen und/oder beanspruchten Erfindungen nicht einschränken.
-
Das Computergerät 600 beinhaltet einen Prozessor 602, einen Speicher 604, ein Speichergerät 606, eine Hochgeschwindigkeitsschnittstelle 608, die verbunden ist mit Speicher 604 und Hochgeschwindigkeits-Erweiterungsports 610, und eine Niedriggeschwindigkeitsschnittstelle 612 zum Anschluss an den Niedriggeschwindigkeitsbus 614 und das Speichergerät 606. Die Komponenten 602, 604, 606, 608, 610 und 612 sind jeweils mithilfe verschiedener Busse miteinander verbunden und können an einer gemeinsamen Hauptplatine oder auf andere jeweils geeignete Weise angebracht sein. Der Prozessor 602 kann Anweisungen zur Ausführung innerhalb des Computergeräts 600 verarbeiten, darunter Anweisungen, die im Speicher 604 oder auf dem Speichergerät 606 gespeichert sind, um graphische Informationen für eine GUI auf einem externen Ein-/Ausgabegerät anzuzeigen, wie Anzeige 616, die an die Hochgeschwindigkeitsschnittstelle 608 gekoppelt ist. In anderen Implementierungen können je nach Bedarf mehrere Prozessoren und/oder mehrere Busse zusammen mit mehreren Speichern und Speichertypen verwendet werden. Außerdem können mehrere Computergeräte 600 verbunden sein, wobei jedes Gerät Teile der nötigen Operationen bereitstellt (z. B. als Serverbank, eine Gruppe von Blade Servern oder ein Multiprozessor-System).
-
Der Speicher 604 speichert Informationen im Computergerät 600. In einer Implementierung umfasst der Speicher 604 ein oder mehrere flüchtige Speichereinheiten. In einer anderen Implementierung umfasst der Speicher 604 ein oder mehrere nicht flüchtige Speichereinheiten. Der Speicher 604 kann auch eine andere Form von computerlesbarem Medium sein, zum Beispiel ein magnetischer oder optischer Datenträger.
-
Das Speichergerät 606 kann Massenspeicher für das Computergerät 600 bereitstellen. In einer Implementierung kann das Speichergerät 606 ein computerlesbares Medium sein oder enthalten, zum Beispiel ein Diskettengerät, ein Festplattengerät, ein optisches Datenträgergerät oder ein Bandgerät, ein Flash-Speicher oder ein anderes ähnliches Solid-State-Speichergerät oder eine Reihe von Geräten, zum Beispiel Geräte in einem Storage Area Network oder anderen Konfigurationen. Ein Computerprogrammprodukt kann physisch in einem Datenträger ausgeführt sein. Das Computerprogrammprodukt kann auch Anweisungen enthalten, die bei Ausführung ein oder mehrere Verfahren wie die oben beschriebenen durchführen. Der Datenträger ist ein computer- oder maschinenlesbares Medium, wie der Speicher 604, das Speichergerät 606 oder der Prozessorspeicher 602.
-
Der High-Speed-Controller 608 verwaltet bandbreitenintensive Operationen für das Computergerät 600, während der Low-Speed-Controller 612 weniger bandbreitenintensive Operationen verwaltet. Eine solche Zuordnung von Funktionen ist nur exemplarisch. In einer Implementierung ist der High-Speed-Controller 608 an den Speicher 604, die Anzeige 616 (z. B. durch einen Grafikprozessor oder -beschleuniger) und an die High-Speed-Erweiterungsanschlüsse 610 gekoppelt, die verschiedene Erweiterungskarten aufnehmen können (nicht dargestellt). In der Implementierung ist der Low-Speed-Controller 612 an das Speichergerät 606 und an den Low-Speed-Erweiterungsanschluss 614 gekoppelt. Der Low-Speed-Erweiterungsanschluss, der verschiedene Kommunikationsanschlüsse (z. B. USB, B, Ethernet, Funkethernet) beinhalten kann, kann an ein oder mehrere Ein-/Ausgabevorrichtungen wie eine Tastatur, ein Zeigegerät, einen Scanner oder ein Netzwerkgerät, wie einen Switch oder Router, z. B. durch einen Netzwerkadapter gekoppelt sein.
-
Das Computergerät 600 kann wie in der Figur dargestellt in einer Reihe von verschiedenen Formen implementiert sein. Zum Beispiel kann es als Standardserver 620, oder mehrmals in einer Gruppe solcher Server implementiert sein. Es kann auch als Teil eines Rackserversystems 624 implementiert sein. Darüber hinaus kann es in einem Personalcomputer, wie Laptop-Computer 622, implementiert sein. Alternativ können Komponenten des Computergerätes 600 mit anderen Komponenten in einem mobilen Gerät kombiniert sein (nicht dargestellt), z. B. Gerät 650. Jedes dieser Geräte kann ein oder mehrere Computergeräte 600, 650 enthalten, und ein gesamtes System kann aus mehreren miteinander kommunizierenden Computergeräten 600, 650 bestehen.
-
Das Computergerät 650 beinhaltet unter anderen Komponenten einen Prozessor 652, einen Speicher 664, eine Ein-/Ausgabevorrichtung, wie eine Anzeige 654, eine Verbindungsschnittstelle 666, und einen Transceiver 668. Das Gerät 650 kann auch mit einem Speichergerät ausgestattet sein, zum Beispiel einem Microdrive oder einem anderen Gerät, um zusätzlichen Speicher bereitzustellen. Die Komponenten 650, 652, 664, 654, 666 und 668 sind jeweils mithilfe verschiedener Busse miteinander verbunden, und können an einer gemeinsamen Hauptplatine oder auf andere jeweils geeignete Weise angebracht sein.
-
Der Prozessor 652 kann Anweisungen im Computergerät 650 ausführen, darunter im Speicher 664 gespeicherte Anweisungen. Der Prozessor kann als Chipsatz von Chips implementiert sein, die separate und mehrere analoge und digitale Prozessoren beinhalten. Der Prozessor kann zum Beispiel für die Koordinierung der anderen Komponenten des Geräts 650 sorgen, zum Beispiel die Steuerung von Benutzeroberflächen, vom Gerät 650 ausgeführter Anwendungen, und der drahtlosen Kommunikation durch Gerät 650.
-
Der Prozessor 652 kann mit einem Benutzer über die Steueroberfläche 658 und die mit einer Anzeige 654 gekoppelte Anzeigeschnittstelle 656 kommunizieren. Die Anzeige 654 kann zum Beispiel ein TFT-LCD (Thin-Film-Transistor Liquid Crystal Display)- oder ein OLED(organisches Leuchtdioden)-Display oder eine andere angemessene Anzeigetechnologie sein. Die Anzeigeschnittstelle 656 kann eine geeignete Schaltung enthalten, die die Anzeige 654 dazu bringt, grafische und andere Informationen für einen Benutzer darzustellen. Die Steuerschnittstelle 658 kann Befehle von einem Benutzer empfangen und sie für die Sendung an Prozessor 652 umwandeln. Zusätzlich kann eine externe Schnittstelle 662 Kommunikation mit dem Prozessor 652 bereitstellen, zum Beispiel, um Nahbereichskommunikation des Gerätes 650 mit anderen Geräten zu ermöglichen. Die externe Schnittstelle 662 kann zum Beispiel in einigen Implementierungen eine kabelgebundene Kommunikation oder in anderen Implementierungen eine drahtlose Kommunikation bereitstellen, und es können auch mehrere Schnittstellen verwendet werden.
-
Der Speicher 664 speichert Informationen im Computergerät 650. Der Speicher 664 kann als eines oder mehrere computerlesbare Medien, flüchtige Speichergeräte oder nicht flüchtige Speichergeräte implementiert sein. Erweiterungsspeicher 674 kann ebenfalls bereitgestellt und mit dem Gerät 650 über Erweiterungsschnittstelle 672 verbunden werden, die zum Beispiel eine SIMM(Single In Line Memory Module)-Kartenschnittstelle umfassen kann. Dieser Erweiterungsspeicher 674 kann zusätzlichen Speicherplatz für Gerät 650 bereitstellen oder auch Anwendungen oder andere Informationen für Gerät 650 speichern. Insbesondere kann Erweiterungsspeicher 674 Anweisungen zum Ausführen oder Ergänzen der oben beschriebenen Prozesse enthalten, und er kann außerdem sichere Daten enthalten. Somit kann Erweiterungsspeicher 674 zum Beispiel als Sicherheitsmodul für Gerät 650 bereitgestellt werden und mit Anweisungen programmiert sein, die die sichere Verwendung von Gerät 650 gestatten. Zusätzlich können über die SIMM-Karten sichere Anwendungen bereitgestellt werden, zusammen mit zusätzlichen Informationen, wie dem Ablegen von Identifizierungsinformationen auf der SIMM-Karte auf eine Weise, die nicht gehackt werden kann.
-
Der Speicher kann zum Beispiel, wie unten besprochen, Flashspeicher und/oder NVRAM-Speicher beinhalten. In einer Implementierung ist ein Computerprogrammprodukt physisch in einem Datenträger ausgeführt. Das Computerprogrammprodukt enthält Anweisungen, die bei Ausführung ein oder mehrere Verfahren wie die oben beschriebenen durchführen. Der Datenträger ist ein computer- oder maschinenlesbares Medium, wie der Speicher 664, die Speichererweiterung 674 oder der Speicher in Prozessor 652, die zum Beispiel über den Sender-Empfänger 668 oder die externe Schnittstelle 662 empfangen werden können.
-
Gerät 650 kann drahtlos über Kommunikationsschnittstelle 666 kommunizieren, die bei Bedarf eine digitale Signalverarbeitungsschaltung beinhalten kann. Die Kommunikationsschnittstelle 666 kann Verbindungen mit verschiedenen Kommunikationstypen oder -protokollen aufbauen, darunter GSM-Sprachanrufe, SMS, EMS, oder u. a. MMS-Messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000 oder GPRS. Eine solche Kommunikation kann zum Beispiel über Funkfrequenzempfänger 668 erfolgen. Zusätzlich kann eine Kurzstreckenkommunikation stattfinden, wie unter Verwendung eines Bluetooth-, WLAN- oder anderen solchen Sendern-Empfängern (nicht dargestellt). Außerdem kann GPS(Global Positioning System)-Empfängermodul 670 zusätzliche navigations- und standortbezogene drahtlose Daten für Gerät 650 bereitstellen, die ggf. von auf dem Gerät 650 ausgeführten Anwendungen verwendet werden können.
-
Gerät 650 kann außerdem akustisch mithilfe von Audio-Codec 660 kommunizieren, der gesprochene Informationen von einem Benutzer empfangen und in nutzbare digitale Informationen umwandeln kann. Das Audio-Codec 660 kann zudem akustische Töne für einen Benutzer erzeugen, z. B. durch einen Lautsprecher, wie beispielsweise in einem Handgerät von Gerät 650. Solche Töne können Töne von Sprachtelefonanrufen beinhalten, können aufgezeichnete Töne (z. B. Sprachnachrichten, Musikdateien usw.), und können außerdem Töne enthalten, die von auf dem Gerät 650 betriebenen Anwendungen erzeugt werden.
-
Das Computergerät 650 kann wie in der Figur dargestellt in einer Reihe von verschiedenen Formen implementiert sein. Zum Beispiel kann es als Mobiltelefon 680 implementiert sein. Es kann außerdem als Teil eines Smartphones 682, Personal Digital Assistant (PDA) oder eines anderen ähnlichen Mobilgeräts implementiert sein.
-
Verschiedene Implementierungen der hier beschriebenen Systeme und Techniken können in digitalen elektronischen Schaltungen, integrierten Schaltungen, in speziell konstruierten ASICs (anwendungsspezifische integrierte Schaltungen), in Computer-Hardware, Firmware, Software und/oder Kombinationen davon realisiert werden. Diese verschiedenen Implementierungen können eine Implementierung in einem oder mehreren Computerprogrammen beinhalten, die auf einem programmierbaren System ausfahrbar und/oder interpretierbar sind, das mindestens einen programmierbaren Prozessor beinhaltet, der ein spezieller Prozessor oder ein Universalprozessor sein kann und der zum Empfangen von Daten und Anweisungen und zum Senden von Daten und Anweisungen an ein Speichersystem, mindestens eine Eingabevorrichtung und mindestens eine Ausgabevorrichtung gekoppelt ist.
-
Diese Computerprogramme (auch bekannt als Programme, Software, Anwendungen oder Code) enthalten Maschinenanweisungen für einen programmierbaren Prozessor und können in eine hochrangige verfahrens- und/oder objektorientierte Programmiersprache und/oder in eine Assemblier-/Maschinensprache umgesetzt werden. Die hier verwendeten Begriffe „maschinenlesbares Medium”, „computerlesbares Medium” beziehen sich auf ein beliebiges Computerprogrammprodukt, eine beliebige Vorrichtung und/oder ein beliebiges Gerät (z. B. Magnetplatten, optische Platten, Speicher, programmierbare Logikbausteine (PLDs)), die verwendet werden, um einem programmierbaren Prozessor Maschinenanweisungen und/oder Daten bereitzustellen, einschließlich eines maschinenlesbaren Mediums, das Maschinenanweisungen als maschinenlesbares Signal empfängt. Der Begriff „maschinenlesbares Signal” bezieht sich auf ein beliebiges Signal, mit dem Maschinenanweisungen und/oder Daten für einen programmierbaren Prozessor bereitgestellt werden.
-
Zur Interaktion mit einem Benutzer können die hier beschriebenen Techniken und Systeme auf einem Computer mit einem Bildschirm (z. B. einem CRT-(Cathode Ray Tube) oder LCD-(Liquid Crystal Display)Monitor) für die Anzeige von Informationen für den Benutzer und mit einer Tastatur und einem Zeigegerät (z. B. einer Maus oder einem Trackball), durch die der Benutzer Eingaben an den Computer vornehmen kann, implementiert werden. Andere Arten von Geräten können auch verwendet werden, um eine Interaktion mit einem Benutzer bereitzustellen; zum Beispiel kann eine dem Benutzer bereitgestellte Rückmeldung eine Form von sensorischer Rückmeldung sein (z. B. visuelle Rückmeldung, auditive Rückmeldung oder Tastrückmeldung); und eine Eingabe vom Benutzer kann in einer beliebigen Form empfangen werden, einschließlich akustischer, Sprach- oder Tasteingaben.
-
Die hier beschriebenen Systeme und Techniken können in einem Computersystem implementiert werden, das eine Backend-Komponente (z. B. als Datenserver) oder das eine Middleware-Komponente (z. B. einen Anwendungsserver) oder das eine Frontend-Komponente (z. B. einen Client-Computer, der eine grafische Benutzeroberfläche oder einen Webbrowser aufweist, durch die ein Benutzer mit einer Implementierung der hier beschriebenen Systeme und Techniken interagieren kann) oder eine beliebige Kombination solcher Backend, Middleware- oder Frontend-Komponenten beinhaltet. Die Komponenten des Systems können durch eine beliebige Form oder ein beliebiges Medium von digitaler Datenkommunikation (z. B. ein Kommunikationsnetzwerk) miteinander verbunden sein. Beispiele von Kommunikationsnetzwerken beinhalten ein lokales Netzwerk („LAN”). ein Fernnetz („WAN”) und das Internet.
-
Das Rechensystem kann Client und Server beinhalten. Ein Client und Server befinden sich im Allgemeinen ortsfern voneinander und interagieren typischerweise über ein Kommunikationsnetz. Die Beziehung zwischen Client und Server wird aufgrund der Computerprogramme erzeugt
-
Einige der vorstehend genannten exemplarischen Ausführungsformen werden als Prozesse oder Verfahren anhand von Flussdiagrammen beschrieben. Obwohl die Flussdiagramme die Operationen als sequentielle Prozesse darstellen. verlaufen viele der Operationen parallel, gleichzeitig oder simultan. Zusätzlich kann die Reihenfolge der Vorgänge neu angeordnet werden. Die Prozesse können beendet werden, wenn die Operationen abgeschlossen sind, können aber auch zusätzliche Schritte umfassen, die nicht in der Figur dargestellt sind. Die Prozesse können Verfahren, Funktionen, Prozeduren, Subroutinen, Subprogrammen, usw. entsprechen.
-
Die oben erörterten Verfahren, von denen einige durch die Flussdiagramme veranschaulicht sind, können durch Hardware, Software, Firmware, Middleware, Mikrocode, Hardwarebeschreibungssprachen oder eine beliebige Kombination davon implementiert werden. Falls durch Software, Firmware, Middleware oder Microcode implementiert, können der Programmcode oder Codesegmente, die die erforderlichen Aufgaben ausführen, auf einem maschinen- oder computerlesbaren Medium wie einem Speichermedium und/oder einem nicht-transitorischen computerlesbaren Speichermedium gespeichert werden. Prozessor(en) (z. B. ein aus Silicium- oder GaAs-Substrat geformter Prozessor) kann die erforderlichen Aufgaben ausführen.
-
Spezifische strukturelle und funktionelle Details, die hier offenbart sind, sind lediglich zum Zwecke der Beschreibung exemplarischer Ausführungsformen angegeben. Exemplarische Ausführungsformen können in vielen Formen ausgeführt sein und sollten nicht als durch die hier beschriebenen Ausführungsformen begrenzt angesehen werden.
-
Obgleich die Begriffe erste, zweite usw. hier verwendet werden können, um verschiedene Elemente zu beschreiben, sollten diese Elemente nicht durch diese Begriffe beschränkt werden. Diese Begriffe werden nur verwendet, um ein Element vom anderen zu unterscheiden. Ein erstes Element könnte beispielsweise als zweites Element bezeichnet sein und analog könnte ein zweites Element als erstes Element bezeichet sein, ohne dass vom Umfang der exemplarischen Ausführungsform abgewichen wird. Der hier verwendete Begriff „und/oder” umfasst sämtliche Kombinationen von einem oder mehreren der zugewiesenen aufgeführten Elemente.
-
Es versteht sich, dass wenn ein Element als mit einem anderen Element „verbunden” oder „gekoppelt” bezeichnet wird, es mit dem anderen Element direkt verbunden oder gekoppelt sein kann, oder dazwischen geschaltete Elemente vorhanden sein können. Wenn hingegen ein Element als mit einem anderen Element „direkt verbunden” oder „direkt gekoppelt” bezeichnet wird, gibt es keine dazwischen geschalteten Elemente. Andere Worte, mit denen die Beziehung zwischen Elementen beschrieben wird, sollten auf gleiche Weise interpretiert werden (z. B. „zwischen” gegenüber „direkt zwischen”, „benachbart” gegenüber „direkt benachbart” usw.).
-
Die hier verwendete Terminologie dient lediglich der Beschreibung bestimmter Ausführungsformen und soll keine Beschränkung von exemplarischen Ausführungsformen darstellen. Die hier verwendeten Singularformen „ein” und „die” sollen auch die Pluralformen einschließen, wenn der Kontext nicht eindeutig etwas anderes angibt. Es versteht sich ferner, dass die Begriffe „umfasst”, „umfassend”, „beinhaltet” und/oder „beinhaltend”, wenn sie hier verwendet werden, das Vorhandensein der angegebenen Funktionen, Ganzzahlen, Schritte, Operationen, Elemente und/oder Komponenten angeben, aber nicht das Vorhandensein oder Hinzufügen von einem oder mehreren anderen Funktionen, Ganzzahlen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen davon ausschließen.
-
Es sollte auch angemerkt werden, dass in einigen alternativen Ausführungsformen die Funktionen/Vorgänge in einer anderen als der in den Figuren dargestellten Reihenfolge auftreten können. Zwei Figuren, die beispielsweise nacheinander gezeigt werden, können je nach den beteiligten Funktionen/Handlungen manchmal gleichzeitig oder manchmal in umgekehrter Reihenfolge ausgeführt werden.
-
Sofern nicht anders definiert, haben alle hier verwendeten Begriffe (einschließlich technischer und wissenschaftlicher Begriffe) die gleiche Bedeutung wie sie von Fachleuten auf dem Gebiet, zu dem die exemplarischen Ausführungsformen gehören, allgemein verstanden werden. Es versteht sich auch, dass Begriffe, z. B. solche, die in häufig verwendeten Wörterbüchern definiert werden, so zu verstehen sind, dass sie die Bedeutung annehmen, die für sie im fachlichen Zusammenhang gilt und dass sie nicht idealisiert oder übermäßig formal verwendet werden, es sei denn, dies wird ausdrücklich angegeben.
-
Teile der obigen exemplarischen Ausführungsformen und die entsprechende ausführliche Beschreibung werden in Bezug auf Software oder Algorithmen und symbolische Darstellungen der Operationen an Datenbits innerhalb eines Computerspeichers dargestellt. Diese Beschreibungen und Darstellungen sind von Datenverarbeitungsexperten verwendete Mittel, um das Wesentliche ihrer Arbeit anderen Fachleuten auf dem Gebiet zu vermitteln. Ein Algorithmus, so wie der Begriff hier verwendet und im Allgemeinen verstanden wird, wird als selbstkonsistente Sequenz von Schritten verstanden, die zu einem erwünschten Ergebnis führen. Die Schritte sind die, die eine physische Manipulierung der physischen Mengen erfordern. Normalerweise, aber nicht notwendigerweise, können solche Mengen die Form optischer, elektrischer oder magnetischer Signale annehmen, die gespeichert, übertragen, kombiniert, verglichen oder anderweitig manipuliert werden können. Es hat sich zuweilen bewährt, diese Signale hauptsächlich aus Gründen der gemeinsamen Verwendung als Bits, Werte, Elemente, Symbole, Zeichen, Begriffe, Zahlen oder dergleichen zu bezeichnen.
-
Bei den obigen exemplarischen Ausführungsformen umfasst die Bezugnahme auf Handlungen und symbolische Darstellungen von Operationen (z. B. in Form von Flussdiagrammen), die als Programmmodule oder funktionale Prozesse implementiert werden können, Routinen, Programme, Objekte, Komponenten, Datenstrukturen usw., die bestimmte Aufgaben durchführen oder bestimmte abstrakte Datentypen implementieren, und sie können unter Verwendung bestehender Hardware an vorhandenen Strukturelementen beschrieben und/oder implementiert werden. Diese bestehende Hardware kann eine oder mehrere zentrale Recheneinheiten (CPUs), digitale Signalprozessoren (DSPs), anwendungsspezifische integrierte Schaltungen, feldprogrammierbare Gate-Arrays(FPGAs)-Computer oder dergleichen beinhalten.
-
Es sollte jedoch beachtet werden, dass all diese und ähnliche Begriffe mit den entsprechenden physikalischen Mengen verbunden werden müssen und lediglich praktische Kennzeichnungen sind, die auf diese Mengen angewendet werden. Wenn nicht spezifisch anders erklärt oder aus der obigen Abhandlung ersichtlich, beziehen sich verwendete Begriffe wie z. B. „verarbeitend” oder „berechnend” oder „bestimmend” oder „anzeigend” oder dergleichen, auf den Betrieb und Prozesse eines Computersystems oder eines ähnlichen elektronischen Computergeräts, das Daten manipuliert und umwandelt, die als physikalische (elektronische) Mengen innerhalb der Computersystemspeicher oder -register oder anderer solcher Datenspeicher-, Übertragungs- oder Anzeigegeräte dargestellt sind.
-
Es ist auch zu beachten, dass die softwareimplementierten Aspekte der exemplarischen Ausführungsformen normalerweise auf irgendeiner Form eines nicht flüchtigen Programmspeichermediums codiert oder über irgendeine Art von Übertragungsmedium implementiert werden. Das Programmspeichermedium kann magnetisch (z. B. eine Diskette oder ein Festplattenlaufwerk) oder optisch (z. B. eine nicht beschreibbare „CD-ROM”) sein und kann als Nur-Lesen oder Zufallszugriff gestaltet sein. Auf gleiche Weise kann das Übertragungsmedium verdrillte Adernpaare, Koaxialkabel, Lichtwellenleiter oder ein anderes geeignetes, dem Fach bekanntes Übertragungsmedium sein. Die exemplarischen Ausführungsformen sind nicht auf diese Aspekte einer beschriebenen Implementierung beschränkt.
-
Und schließlich sollte auch beachtet werden, dass, obwohl die beigefügten Ansprüche spezielle Kombinationen von hier beschriebenen Merkmalen darstellen, der Umfang der vorliegenden Offenbarung nicht auf die nachstehend beanspruchten speziellen Kombinationen beschränkt ist, sondern stattdessen eine beliebige Kombination von hierin offenbarten Merkmalen oder Ausführungsformen umfasst, unabhängig davon, ob diese spezielle Kombination in den beigefügten Ansprüchen zu diesem Zeitpunkt speziell aufgezählt wurde.