Title:
System und Verfahren zum intelligenten Auswählen einer Netzwerkschnittstelle
Kind Code:
T5


Abstract:

Ein Verfahren, eine Vorrichtung und ein maschinenlesbares Medium zum intelligenten Auswählen einer Netzwerkschnittstelle werden beschrieben. Ein Versuch kann unternommen werden, eine Verbindung über eine erste Netzwerkschnittstelle mit der höchsten Priorität (z. B. WLAN) herzustellen. Gleichzeitig wird ein Rückfallzeitgeber gestartet. Wenn der Versuch, eine Verbindung über die erste Netzwerkschnittstelle herzustellen, nicht innerhalb eines angegebenen Zeitgeberschwellenwerts erfolgreich ist, wird ein paralleler Versuch unternommen, eine Verbindung über eine zweite Netzwerkschnittstelle mit einer niedrigeren Priorität (z. B. mobil) herzustellen. Die erste Netzwerkschnittstelle, über die erfolgreich eine Verbindung hergestellt wird, wird dann verwendet. Diese Techniken können auf der Grundlage einzelner Verbindungen implementiert werden. Somit kann ein erster Prozess erfolgreich eine Verbindung über die erste Netzwerkschnittstelle herstellen, während ein zweiter Prozess über die erste Netzwerkschnittstelle nicht erfolgreich ist, aber auf die zweite Netzwerkschnittstelle zurückfallen kann.




Inventors:
Graessley, Joshua V., Calif. (Cupertino, US)
Application Number:
DE112013006089T
Publication Date:
09/03/2015
Filing Date:
10/22/2013
Assignee:
Apple Inc. (Calif., Cupertino, US)
International Classes:



Attorney, Agent or Firm:
BARDEHLE PAGENBERG Partnerschaft mbB Patentanwälte, Rechtsanwälte, 81675, München, DE
Claims:
1. Auf einem Netzwerk-Client, der zwei oder mehr Netzwerkschnittstellen umfasst, implementiertes Verfahren, wobei die zwei oder mehr Netzwerkschnittstellen eine erste Netzwerkschnittstelle umfassen, die eine WLAN-Schnittstelle ist, und eine zweite Netzwerkschnittstelle umfassen, die eine mobile Schnittstelle ist, wobei das Verfahren umfasst:
Versehen der zwei oder mehr Netzwerkschnittstellen mit einer Priorität durch den Netzwerkclient;
anfängliches Versuchen einer Verbindung über die erste Netzwerkschnittstelle durch den Netzwerkclient, wobei die erste Netzwerkschnittstelle eine relativ höhere Priorität als die zweite Netzwerkschnittstelle aufweist;
Starten eines Rückfallzeitgebers durch den Netzwerkclient im Wesentlichen gleichzeitig mit dem Versuchen der Verbindung über die erste Netzwerkschnittstelle;
falls der Rückfallzeitgeber einen ersten festgelegten Zeitgeberschwellenwert erreicht hat, bevor eine erfolgreiche Verbindung über die erste Netzwerkschnittstelle hergestellt wurde, Versuchen einer Verbindung über die zweite Netzwerkschnittstelle durch den Netzwerkclient parallel zum Versuch, eine Verbindung über die erste Netzwerkschnittstelle herzustellen; und
Verwenden durch den Netzwerkclient der ersten der ersten und der zweiten Netzwerkschnittstelle, über die erfolgreich eine Verbindung hergestellt wird, um Daten zu übertragen.

2. Verfahren nach Anspruch 1, ferner umfassend:
Einstellen des festgelegten Zeitgeberschwellenwerts auf einen zweiten festgelegten Zeitgeberschwellenwert als Reaktion auf ein Verbinden über die zweite Netzwerkschnittstelle.

3. Verfahren nach Anspruch 2, ferner umfassend:
Nacheinstellen des festgelegten Zeitgeberschwellenwerts auf den ersten festgelegten Zeitgeberschwellenwert als Reaktion auf ein Verbinden über die erste Netzwerkschnittstelle.

4. Verfahren nach Anspruch 1, wobei die zwei oder mehr Netzwerkschnittstellen eine dritte Netzwerkschnittstelle umfassen und wobei, falls der Rückfallzeitgeber einen zweiten festgelegten Zeitgeberschwellenwert erreicht hat, bevor eine erfolgreiche Verbindung über die erste und die zweite Netzwerkschnittstelle hergestellt wurde, eine Verbindung über die dritte Netzwerkschnittstelle versucht wird; und Verwenden der ersten der ersten, zweiten und dritten Netzwerkschnittstelle, über die erfolgreich eine Verbindung hergestellt wurde, um Daten zu übertragen.

5. Verfahren nach Anspruch 1, ferner umfassend:
Empfangen einer Eingabe von einem Benutzer; und
Versehen der zwei oder mehr Netzwerkschnittstellen mit einer Priorität auf der Grundlage der vom Benutzer empfangenen Eingabe.

6. Verfahren nach Anspruch 1, wobei das Versehen der Netzwerkschnittstellen mit einer Priorität auf der Grundlage einzelner Prozesse durchgeführt wird, wobei jeder Netzwerkprozess einem separaten Satz von Netzwerkschnittstellenpriorisierungen zugeordnet ist.

7. Verfahren nach Anspruch 1, wobei die zweite Netzwerkschnittstelle nicht verwendet wird, wenn ein bestimmter Prozess so ausgestaltet ist, dass er nur die erste Netzwerkschnittstelle verwendet.

8. Verfahren nach Anspruch 1, ferner umfassend:
Ermitteln, ob die Verbindung über ein virtuelles privates Netzwerk (VPN) geroutet wird; und
Verwenden der zweiten Netzwerkschnittstelle nur, wenn die Verbindung nicht über ein VPN zu routen ist.

9. Verfahren nach Anspruch 1, ferner umfassend:
Ermitteln, ob ein Prozess, für den eine Verbindung gewünscht wird, eine Bindung an eine bestimmte Netzwerkschnittstelle aufweist, bei der es sich nicht um die zweite Benutzerschnittstelle handelt; und
Versuchen, die zweite Netzwerkschnittstelle nur zu verwenden, wenn der Prozess nicht an die erste Netzwerkschnittstelle gebunden wurde.

10. Verfahren nach Anspruch 1, wobei eine erfolgreiche Verbindung als die Fähigkeit definiert ist, auf eine gewünschte Ressource zuzugreifen.

11. Maschinenlesbares Medium mit darauf gespeichertem Programmcode, der bei Ausführen durch eine Maschine die Maschine veranlasst, die Operationen durchzuführen zum:
Versehen zweier oder mehrerer Netzwerkschnittstellen mit einer Priorität, wobei die zwei oder mehr Netzwerkschnittstellen eine erste Netzwerkschnittstelle und eine zweite Netzwerkschnittstelle umfassen;
anfänglichen Versuchen einer Verbindung über die erste Netzwerkschnittstelle, wobei die erste Netzwerkschnittstelle eine relativ höhere Priorität als die zweite Netzwerkschnittstelle aufweist;
Starten eines Rückfallzeitgebers im Wesentlichen gleichzeitig mit dem Versuchen der Verbindung über die erste Netzwerkschnittstelle;
wobei, falls der Rückfallzeitgeber einen ersten festgelegten Zeitgeberschwellenwert erreicht hat, bevor eine erfolgreiche Verbindung über die erste Netzwerkschnittstelle hergestellt wurde, parallel zum Versuch, eine Verbindung über die erste Netzwerkschnittstelle herzustellen, eine Verbindung über die zweite Netzwerkschnittstelle versucht wird; und
Verwenden der ersten der ersten und der zweiten Netzwerkschnittstelle, über die erfolgreich eine Verbindung hergestellt wurde, um Daten zu übertragen.

12. Maschinenlesbares Medium nach Anspruch 11, das einen zusätzlichen Programmcode umfasst, um die Maschine zu veranlassen, die Operationen durchzuführen zum:
Einstellen des festgelegten Zeitgeberschwellenwerts auf einen zweiten festgelegten Zeitgeberschwellenwert als Reaktion auf ein Verbinden über die zweite Netzwerkschnittstelle.

13. Maschinenlesbares Medium nach Anspruch 12, das zusätzlichen Programmcode umfasst, um die Maschine zu veranlassen, die Operationen durchzuführen zum:
Nacheinstellen des festgelegten Zeitgeberschwellenwerts zurück auf den ersten festgelegten Zeitgeberschwellenwert als Reaktion auf ein Verbinden über die erste Netzwerkschnittstelle.

14. Maschinenlesbares Medium nach Anspruch 11, wobei die erste Netzwerkschnittstelle eine WLAN-Schnittstelle umfasst und die zweite Netzwerkschnittstelle eine mobile Schnittstelle umfasst.

15. Maschinenlesbares Medium nach Anspruch 11, wobei die zwei oder mehr Netzwerkschnittstellen eine dritte Netzwerkschnittstelle umfassen, und wobei, falls der Rückfallzeitgeber einen zweiten festgelegten Zeitgeberschwellenwert erreicht hat, bevor eine erfolgreiche Verbindung über die erste und die zweite Netzwerkschnittstelle hergestellt wurde, eine Verbindung über die dritte Netzwerkschnittstelle versucht wird; und Verwenden der ersten der ersten, zweiten und dritten Netzwerkschnittstelle, über die erfolgreich eine Verbindung hergestellt wurde, um Daten zu übertragen.

16. Maschinenlesbares Medium nach Anspruch 11, wobei das Versehen der Netzwerkschnittstellen mit einer Priorität auf der Grundlage einzelner Prozesse durchgeführt wird, wobei jeder Netzwerkprozess einem separaten Satz von Netzwerkschnittstellenpriorisierungen zugeordnet ist.

17. Maschinenlesbares Medium nach Anspruch 11, wobei die zweite Netzwerkschnittstelle nicht verwendet wird, wenn ein bestimmter Prozess so ausgestaltet ist, dass er nur die erste Netzwerkschnittstelle verwendet.

18. Maschinenlesbares Medium nach Anspruch 11, das zusätzlichen Programmcode umfasst, um die Maschine zu veranlassen, die Operationen durchzuführen zum:
Ermitteln, ob die Verbindung über ein virtuelles privates Netzwerk (VPN) geroutet wird; und
Verwenden der zweiten Netzwerkschnittstelle nur, wenn die Verbindung nicht über ein VPN zu routen ist.

19. Maschinenlesbares Medium nach Anspruch 11, das zusätzlichen Programmcode umfasst, um die Maschine zu veranlassen, die Operationen durchzuführen zum:
Ermitteln, ob ein Prozess, für den eine Verbindung gewünscht wird, eine Bindung an eine bestimmte Netzwerkschnittstelle aufweist, bei der es sich nicht um die zweite Benutzerschnittstelle handelt; und
Versuchen, die zweite Netzwerkschnittstelle nur zu verwenden, wenn der Prozess nicht an die erste Netzwerkschnittstelle gebunden wurde.

20. Verfahren nach Anspruch 11, wobei eine erfolgreiche Verbindung als die Fähigkeit definiert ist, auf eine gewünschte Ressource zuzugreifen.

21. Netzwerkclient, der einen Prozessor zum Verarbeiten von Programmcode umfasst, um die Operationen durchzuführen zum:
Versehen zweier oder mehrerer Netzwerkschnittstellen mit einer Priorität, wobei die zwei oder mehr Netzwerkschnittstellen eine erste Netzwerkschnittstelle und eine zweite Netzwerkschnittstelle umfassen;
anfänglichen Versuchens einer Verbindung über die erste Netzwerkschnittstelle, wobei die erste Netzwerkschnittstelle eine relativ höhere Priorität als die zweite Netzwerkschnittstelle aufweist;
Starten eines Rückfallzeitgebers im Wesentlichen gleichzeitig mit dem Versuchen der Verbindung über die erste Netzwerkschnittstelle;
wobei, falls der Rückfallzeitgeber einen ersten festgelegten Zeitgeberschwellenwert erreicht hat, bevor eine erfolgreiche Verbindung über die erste Netzwerkschnittstelle hergestellt wurde, parallel zum Versuch, eine Verbindung über die erste Netzwerkschnittstelle herzustellen, eine Verbindung über die zweite Netzwerkschnittstelle versucht wird; und
Verwenden der ersten der ersten und der zweiten Netzwerkschnittstelle, über die erfolgreich eine Verbindung hergestellt wurde, um Daten zu übertragen.

22. Netzwerkclient nach Anspruch 21, der zusätzlichen Programmcode umfasst, der bei Ausführen die Operationen veranlasst zum:
Einstellen des festgelegten Zeitgeberschwellenwerts auf einen zweiten festgelegten Zeitgeberschwellenwert als Reaktion auf ein Verbinden über die zweite Netzwerkschnittstelle.

23. Netzwerkclient nach Anspruch 22, der zusätzlichen Programmcode umfasst, der bei Ausführen die Operationen veranlasst zum:
Nacheinstellen des festgelegten Zeitgeberschwellenwerts auf den ersten festgelegten Zeitgeberschwellenwert als Reaktion auf ein Verbinden über die erste Netzwerkschnittstelle.

24. Netzwerkclient nach Anspruch 21, wobei die erste Netzwerkschnittstelle eine WLAN-Schnittstelle umfasst und die zweite Netzwerkschnittstelle eine mobile Schnittstelle umfasst.

25. Netzwerkclient nach Anspruch 21, wobei die zwei oder mehr Netzwerkschnittstellen eine dritte Netzwerkschnittstelle umfassen, und wobei, falls der Rückfallzeitgeber einen zweiten festgelegten Zeitgeberschwellenwert erreicht hat, bevor eine erfolgreiche Verbindung über die erste und die zweite Netzwerkschnittstelle hergestellt wurde, eine Verbindung über die dritte Netzwerkschnittstelle versucht wird; und Verwenden der ersten der ersten, zweiten und dritten Netzwerkschnittstelle, über die erfolgreich eine Verbindung hergestellt wurde, um Daten zu übertragen.

Description:
HintergrundTechnisches Gebiet

Der hierin beschriebene Gegenstand betrifft allgemein das Gebiet von Datenverarbeitungssystemen. Genauer betrifft der hierin beschriebene Gegenstand die intelligente Auswahl von Netzwerkschnittstellen für die Kommunikation.

Beschreibung der verwandten Technik

Derzeitige drahtlose Datenverarbeitungsvorrichtungen sind in der Lage, über mehrere unterschiedliche Kommunikationsschnittstellen einschließlich WLAN-Schnittstellen (z. B. 802.11-Schnittstellen) und mobile Datenschnittstellen (z. B. GPRS-, G3-, G4-Schnittstellen) eine Verbindung mit Netzwerkdiensten herzustellen. 1 veranschaulicht zum Beispiel einen drahtlosen Client 101 mit einer WLAN-Schnittstelle 102 zum Verbinden mit einem Netzwerkdienst 110 über ein WLAN-Netzwerk 105 und einer mobilen Schnittstelle 103 zum Verbinden mit einem Push-Benachrichtigungsdienst 110 über das mobile Netzwerk 106.

Kurze Beschreibung der Zeichnungen

Ein besseres Verständnis des hierin beschriebenen Gegenstands kann anhand der folgenden detaillierten Beschreibung in Verbindung mit den folgenden Zeichnungen erreicht werden, in denen

1 einen drahtlosen Client des Standes der Technik veranschaulicht, der über ein WLAN-Netzwerk und ein mobiles Netzwerk eine Verbindung mit einem Push-Benachrichtigungsdienst herstellt;

2 einen beispielhaften drahtlosen Client zum intelligenten Auswählen entweder einer WLAN-Netzwerkschnittstelle oder einer mobilen Netzwerkschnittstelle veranschaulicht;

3 einen beispielhaften drahtlosen Client zum intelligenten Auswählen zwischen einer Vielfalt unterschiedlicher Netzwerkschnittstellen veranschaulicht;

4 ein beispielhaftes Verfahren zum intelligenten Auswählen zwischen Netzwerkschnittstellen veranschaulicht;

5 eine Anwendungsprogrammierschnittstelle veranschaulicht, die auf einer drahtlosen Clientvorrichtung verwendet werden kann;

6 beispielhafte Anwendungen veranschaulicht, die über eine Schnittstelle eine Verbindung mit Diensten und Betriebssystemen herstellen;

7 eine beispielhafte Architektur einer Datenverarbeitungsvorrichtung veranschaulicht;

8 eine weitere Architektur einer Datenverarbeitungsvorrichtung veranschaulicht.

Detaillierte Beschreibung

Nachstehend werden Vorrichtungen, Verfahren und maschinenlesbare Medien zum intelligenten Auswählen einer Netzwerkschnittstelle beschrieben. Innerhalb der Beschreibung werden zum Zwecke der Erklärung zahlreiche spezifische Details dargelegt. Es ist jedoch für den Fachmann ersichtlich, dass der hierin beschriebene Gegenstand ohne manche dieser spezifischen Details ausgeführt werden kann. In anderen Fällen sind allgemein bekannte Strukturen und Vorrichtungen nicht gezeigt oder in Form eines Blockdiagramms gezeigt, um ein Verschleiern der zugrundeliegenden Prinzipien des beschriebenen Gegenstandes zu vermeiden.

Nachstehend wird eine mobile Vorrichtung, wie eine Tablet-Computervorrichtung (z. B. ein iPad), ein Smartphone (z. B. ein iPhone) oder ein mobiler Computer (z. B. ein MacBook Pro), beschrieben. Es sollte beachtet werden, dass die hierin beschriebenen zugrundeliegenden Techniken auf jedem Typ von mobiler Computervorrichtung implementiert werden können.

Unter Verwendung der hierin beschriebene Techniken wird eine mobile Vorrichtung, die einem WLAN-Netzwerk zugeordnet ist und Zugang zu einer mobilen Datenverbindung besitzt, versuchen, für jegliche Verbindungsversuche, die über WLAN nicht funktionieren, auf die mobile Datenverbindung zurückgreifen. Zum Beispiel verwenden WLAN-Netzwerke typischerweise eine Firewall, die einen Zugriff auf bestimmte Dienste oder Anwendungen, die auf der mobilen Vorrichtung ausgeführt werden, sperren kann. In anderen Fällen ist das WLAN-Netzwerk möglicherweise nicht an das Internet angebunden (z. B. weil das Kabelmodem oder die DSL-Verbindung des Benutzers die Funktion eingestellt hat).

Ein drahtloser Client kann eine Verbindung über eine mobile Netzwerkschnittstelle versuchen, nachdem er eine sinnvolle Zeitspanne auf eine erfolgreiche Verbindung über die WLAN-Netzwerkschnittstelle gewartet hat. Wie in 2 veranschaulicht, kann ein drahtloser Client 201 eine Verbindungslogik 204 zum Implementieren der hierin beschriebenen Techniken einschließen, um zwischen einer WLAN-Schnittstelle 202 und einer mobilen Schnittstelle 203 auszuwählen und eine Verbindung mit einem bestimmten Netzwerkdienst 210 bis 211 herzustellen. Wie veranschaulicht, kann die WLAN-Schnittstelle 202 über ein WLAN-Netzwerk 205 eine Verbindung mit dem drahtlosen Client 201 herstellen, und die mobile Schnittstelle 203 kann über ein mobiles Netzwerk 206 eine Verbindung mit dem kabellosen Client 201 herstellen. Für mobile Verbindungen können vielfältige Techniken verwendet werden, einschließlich, jedoch nicht beschränkt auf: 3rd-Generation-Partnership-Project-Technologien (z. B. 3GPP2) Code-Division-Multiple-Access-Technologien (z. B. CDMA2000-Technologie unter Verwendung von 1xRTT/EVDO/eHRPD); die Long-Term-Evolution(LTE)-Technologie und/oder die LTE-Advanced(LTE-A)-Technologie; und die Universal-Mobile-Telecommunications-System(UMTS)-Technologie wie WCDMA/TDSCDMA.

Die Verbindungslogik 204 schließt eine Verbindungspriorisierungslogik 208 zum Versehen der Netzwerkschnittstellen 202 bis 203 mit einer Priorität sowie einen Rückfallzeitgeber 207 zum Zeitplanen von Verbindungsversuchen ein. Als Reaktion auf eine Netzwerkanfrage durch einen der Prozesse 220 bis 230 versucht die Verbindungslogik 202, über die Netzwerkschnittstelle mit der höchsten Priorität, die verfügbar ist (z. B. die WLAN-Schnittstelle 202), eine Verbindung mit dem benannten Dienst 210 oder 211 herzustellen. Der Rückfallzeitgeber 207 beginnt mit der Zeitplanung des Verbindungsversuchs. Wenn nach einer festgelegten Zeitdauer (z. B. 5 Sekunden) über die Netzwerkschnittstelle 202 mit der höchsten Priorität keine erfolgreiche Verbindung hergestellt wurde, initiiert die Verbindungslogik 204 einen parallelen Verbindungsversuch über die Netzwerkschnittstelle mit der nächsthöheren Priorität (z. B. die mobile Schnittstelle 203). Die Verbindungslogik 204 kann dann die erste Verbindung verwenden, die erfolgreich über eine der Schnittstellen 202 bis 203 hergestellt wird.

Die hierin beschriebenen Techniken können auf Grundlage einzelner Verbindungen implementiert werden. Zum Beispiel kann ein Prozess 220 über das WLAN 202 eine erfolgreiche Verbindung mit einem Dienst herstellen, während ein anderer Prozess 220 unter Umständen nicht in der Lage ist, eine Verbindung über das WLAN 202 herzustellen, jedoch unter Umständen unter Verwendung der hierin beschriebenen Techniken eine erfolgreiche Verbindung über Mobilfunk 203 herstellen kann. Das Fehlschlagen einer Verbindung über WLAN kann auf die Art und Weise bezogen sein, in welcher die WLAN-Firewall konfiguriert ist. Zum Beispiel kann die Firewall konfiguriert sein, bestimmte Typen von Datenverkehr (z. B. Video-Streaming von bestimmten Netzwerkquellen) zu sperren. Bei den Prozessen 220 bis 223 kann es sich um jede Form von ausführbarem Programmcode handeln, der in der Lage ist, eine Netzwerkverbindung anzufordern und aufrechtzuerhalten (z. B. Netzwerkprozesse innerhalb von Apps, Anwendungen, Hintergrundaufgaben oder andere Formen von Programmcode).

3 veranschaulicht drei unterschiedliche Schnittstellentypen 302 bis 304, die für jede Anzahl von Netzwerkschnittstellen zum Kommunizieren über Netzwerke 305 bis 307 stehen, einschließlich, jedoch nicht beschränkt auf, Ethernet, Bluetooth, WiMAX, kabelgebundene mobile Schnittstellen, WLAN und Mobilfunk, um nur einige zu nennen. Mit der Entwicklung neuer Schnittstellen können die hierin beschriebenen zugrundeliegenden Techniken mit diesen Schnittstellen verwendet werden. Die Priorisierungslogik 208 kann (ungeachtet des Schnittstellentyps) ein Priorisierungsschema für jede der Netzwerkschnittstellen 302 bis 304 festlegen, das dann durch die Verbindungslogik 204 verwendet werden kann, wenn Verbindungen initiiert werden. Das Priorisierungsschema kann auf Grundlage einzelner Prozesse festgelegt werden. Zum Beispiel können manche Prozesse 220 bis 223 und/oder Dienste 210 bis 211 ein Verbinden über die Netzwerkschnittstelle 302 bevorzugen, während andere Prozesse/Dienste ein Verbinden über die Netzwerkschnittstelle 303 bevorzugen können.

Der Rückfallzeitgeber 207 kann den Zeitgeberschwellenwert für einen zweiten Verbindungsversuch auf der Grundlage aktueller Bedingungen dynamisch anpassen. Zum Beispiel kann der Rückfallzeitgeber 207 anfänglich einen „langsamen” Zeitgeberwert einstellen (z. B. 5 Sekunden). Wenn die Verbindung über die Netzwerkschnittstelle mit der höchsten Priorität (z. B. WLAN) nicht erfolgreich ist und die Verbindungslogik 204 in der Lage ist, erfolgreich zur Netzwerkschnittstelle mit der nächsthöchsten Priorität (z. B. mobil) zurückzufallen, kann der Rückfallzeitgeber ein Anpassen auf einen „schnellen” Zeitgeberwert vornehmen, der beim nächsten Mal zu verwenden ist, wenn eine Verbindung über die Netzwerkschnittstelle mit der höchsten Priorität versucht wird. Über Prozesse/Dienste hinweg können dieselben Zeitgeberwerte eingerichtet und verwendet werden. Die Zeitgeberwerte können auch pro Prozess/Schnittstelle oder Dienst/Schnittstelle eingestellt werden.

Die Verbindungslogik 204 kann die Notwendigkeit, irgendein Verfahren zum Einrichten einer Verbindung zu versuchen, gegenüber dem Strom- und -Kostenaufwand beim Verwenden einiger oder aller Netzwerkschnittstellen 302 bis 304 abwägen. Bestimmte Verbindungstypen, bestimmte Prozesse und/oder bestimmte Dienste können als für ein Zurückfallen nicht in Frage kommend bezeichnet werden (z. B. ist ein Zurückfallen von WLAN auf Mobilfunk für diese Verbindungen, Prozesse oder Dienste deaktiviert). Ein Benutzer kann auch in die Lage versetzt werden, die Verbindungslogik 204 so zu konfigurieren, dass Verbindungen durch bestimmte Prozesse/Dienste über bestimmte Netzwerkschnittstellen verhindert werden. Zum Beispiel kann der Benutzer festlegen, dass jegliche Prozesse, bei denen ein Medien-Streaming durchgeführt wird, nicht über die mobile Schnittstelle zu verwenden sind (z. B. um mobile Datenkosten und/oder den Stromverbrauch zu verringern). Darüber hinaus können bestimmte Prozesse 220 bis 223 so vorkonfiguriert werden, dass nur bestimmte Schnittstellen 302 bis 304 verwendet werden.

Ein gegebener Prozess kann zu einem Zurückfallen auf eine mobile Verbindung berechtigt sein, sofern bestimmte festgelegte Bedingungen erfüllt sind; zum Beispiel: (1) das Zurückfallen wurde nicht deaktiviert; (2) die Verbindung würde über WLAN erfolgen; (3) die Verbindung wird nicht über ein VPN geroutet; (4) der Client hat ein Zurückfallen nicht abgewählt (wie bei bestimmten bekannten Prozessen wie „mediaserverd”); (5) der Client hat keine spezielle Schnittstelle verbindlich gewählt; (6) der Client hat nicht die Option „nicht mobil” festgelegt; und (7) eine mobile Verbindung ist verfügbar. Wenn all diese Bedingungen erfüllt sind, kann der Rückfallzeitgeber zur selben Zeit gestartet werden, zu welcher der Verbindungsversuch über WLAN gestartet wird. Wenn der Verbindungsversuch über WLAN nicht erfolgreich ist oder innerhalb der angegebenen Zeitdauer fehlschlägt, wird ein paralleler Verbindungsversuch über Mobilfunk gestartet. An diesem Punkt „gewinnt” derjenige Verbindungsversuch, der als Erstes abgeschlossen ist, und der andere Versuch wird abgebrochen.

Der „schnelle” Zeitgeberwert kann auf der Grundlage der gemessenen Umlaufzeit (Round Trip Time (RTT)) über WLAN und die gemessene RTT über Mobilfunk angepasst werden. Das Ziel liegt darin, sicherzustellen, dass die RTT über WLAN immer eine bestimmte Zeitdauer (z. B. 50 Millisekunden) kürzer ist als die RTT über Mobilfunk plus dem schnellen Rückfallzeitgeber. Bei gegebener Tatsache, dass Mobilfunk typischerweise eine viel längere Umlaufzeit besitzt, kann der Rückfallzeitgeber 0 betragen, was bedeutet, dass sowohl WLAN als auch Mobilfunk gleichzeitig mit dem „schnellen” Zeitgeberwert versucht werden.

Wenn eine Rückfallverbindung vor dem ursprünglichen Versuch über WLAN erfolgreich ist, kann, wie erwähnt, ein Wechseln auf den schnellen Zeitgeber erfolgen, wenn er nicht schon verwendet wurde. Wenn ein ursprünglicher Versuch über WLAN erfolgreich ist, kann die Verbindungslogik 204 zum „langsamen” Zeitgeberwert zurückwechseln, wenn er nicht schon verwendet wurde. Der schnelle/langsame Zeitgeberzustand kann auf der Grundlage einzelner Prozesse gespeichert werden (d. h. jedem Prozess 220 bis 223 ist entweder ein „schneller” oder ein „langsamer” Zeitgeberwert zugeordnet).

In manchen Fällen können die vorstehenden Techniken den Vorteil besitzen, die Benutzererfahrung zu verbessern, denn falls das WLAN-Netzwerk keine Intemetkonnektivität bereitstellt, kann ein Prozess eine Verzögerung von ungefähr 5 Sekunden für den ersten Verbindungsversuch erfahren (unter Verwendung des „langsamen” Zeitgebers), alle nachfolgenden Verbindungsversuche wären jedoch ungefähr gerade so schnell wie Mobilfunk (unter Verwendung des „schnellen” Zeitgebers). WLAN kann immer die erste Gelegenheit zum Verbinden geboten werden (unter der Annahme, dass eine WLAN-Verbindung machbar ist).

Sobald eine Transmission-Control-Protocol(TCP)-Verbindung hergestellt ist, wird (in manchen Fällen) unter Umständen nicht zu einer anderen Schnittstelle zurückgewechselt. Ein Grund hierfür liegt darin, dass bei vielen TCP-Implementierungen eine TCP-Verbindung nicht von einer Schnittstelle zur anderen migrieren kann (d. h. weil TCP-Verbindungen durch die Quellen- und Ziel-IP-Adressen und -Ports gebunden sind). Nachfolgende Verbindungen können nach wie vor auf Grundlage einzelner Verbindungen zurückfallen. Alles, was über WLAN funktioniert, wird somit dazu tendieren, WLAN zu verwenden und alles andere wird Mobilfunk verwenden.

Die mobile Datenverbindung wird möglicherweise nur verwendet, wenn die Vorrichtung Zugriff auf mobile Daten hat. In einem Roaming-Zustand und/oder wenn der Benutzer mobiles Daten-Roaming deaktiviert hat oder sich im „Flug”-Modus befindet oder wenn der Benutzer mobile Daten deaktiviert hat, wird ein Rückfall auf Mobilfunk deaktiviert.

Ein Verfahren zum Zurückfallen auf eine Netzwerkschnittstelle ist in 4 veranschaulicht. Bei 401 wird ein Versuch unternommen, eine Netzwerkverbindung über eine erste Netzwerkschnittstelle (z. B. WLAN) herzustellen. Wie vorstehend erläutert, können die Netzwerkschnittstellen mit einer Priorität versehen werden, und die erste Netzwerkschnittstelle stellt die höchste Priorität der verfügbaren Netzwerkschnittstellen dar. Bei 402 wird der Rückfallzeitgeber gestartet und bei 403 wird eine Ermittlung vorgenommen, ob innerhalb der angegebenen Rückfallzeitgeberdauer eine Verbindung über die erste Netzwerkschnittstelle hergestellt wurde. Falls ja, wird bei 404 die Verbindung über die erste Netzwerkschnittstelle aufrechterhalten, und bei 408 wird der Rückfallzeitgeber auf den „langsamen” Zeitgeberwert (z. B. 5 Sekunden) eingestellt oder darauf belassen.

Wenn innerhalb der angegebenen Rückfallzeitgeberdauer keine Verbindung über die erste Netzwerkschnittstelle hergestellt wurde, wird bei 405 ein paralleler Versuch unternommen, eine Verbindung über die zweite Netzwerkschnittstelle (z. B. mobil) herzustellen. Bei 406 wird eine Ermittlung vorgenommen, ob über die erste oder die zweite Netzwerkschnittstelle erfolgreich eine Verbindung hergestellt wurde. Falls dies über die erste erfolgt ist, wird bei 404 die Verbindung über die erste Netzwerkschnittstelle aufrechterhalten, und bei 408 wird der Rückfallzeitgeber auf den „langsamen” Zeitgeberwert eingestellt oder darauf belassen. Wenn jedoch zuerst eine Verbindung über die zweite Netzwerkschnittstelle hergestellt wird, wird bei 407 die Verbindung über die zweite Netzwerkschnittstelle aufrechterhalten, und bei 408 wird der Rückfallzeitgeber auf den „schnellen” Zeitgeberwert eingestellt oder darauf belassen.

Obwohl in 4 nicht gezeigt, kann die drahtlose Clientvorrichtung versuchen, auf eine dritte Netzwerkschnittstelle zurückzufallen, wenn eine Verbindung über die erste und die zweite Netzwerkschnittstelle nicht erfolgreich ist. Wenn es zum Beispiel sowohl der ersten als auch der zweiten Schnittstelle nicht gelingt, nach einem weiteren festgelegten Zeitgeberwert eine Verbindung herzustellen, kann ein paralleler Versuch über eine dritte Netzwerkschnittstelle unternommen werden. Die Anzahl von Verbindungsversuchen ist nur durch die Anzahl von Schnittstellen begrenzt, die auf der drahtlosen Clientvorrichtung verfügbar sind. Somit kann die Verbindungslogik 204 jede Netzwerkschnittstelle durchlaufen, bis eine Verbindung erfolgreich ist.

Die mobile Vorrichtung kann ermitteln, ob sie mit einem Host verbunden ist, der ihren Verbindungsversuch einfach an einen anderen Ort umleitet (z. B. im Falle einer HTTP-Umleitung). Manche Netzwerke (manchmal als „captive portals” bezeichnet) erlauben keine Verbindungen auf dem Netzwerk, bis der Benutzer sich authentifiziert oder Bedingungen akzeptiert. Diese Netzwerke fangen einen HTTP-Verbindungsversuch ab und leiten ihn zu einer speziellen Webseite um, die das Authentifizierungsportal oder die Bedingungen enthält. Die vorstehend beschriebenen mobilen Rückfalltechniken können für Fälle verwendet werden, in denen ein Verbindungsversuch auf ein Portal umgeleitet wird. Zum Beispiel wird die mobile Vorrichtung bei Erkennen der Umleitung eine Verbindung über die mobile Schnittstelle initiieren. Auf andere Weise ausgedrückt, ist die Definition einer „erfolgreichen” Verbindung durch die Fähigkeit bestimmt, auf die gewünschte Ressource zugreifen zu können und nicht nur eine Netzwerkverbindung herzustellen.

Obwohl bestimmte Techniken vorstehend innerhalb des Kontextes zweier spezifischer Kommunikationskanäle, WLAN und Mobilfunk, beschrieben wurden, sind die zugrundeliegenden Prinzipien nicht auf irgendeinen speziellen Typ von Kommunikationskanal beschränkt. Zum Beispiel können die hierin beschriebenen Techniken auf jeder Clientvorrichtung mit mehreren Kommunikationsschnittstellen verwendet werden, die in der Lage ist, eine Verbindung über mehrere unterschiedliche Typen von Kommunikationskanälen herzustellen. Zum Beispiel können diese Techniken implementiert werden, um eine Verbindung über eine erste Kommunikationsschnittstelle herzustellen und dann auf eine zweite Kommunikationsschnittstelle zurückzufallen, wenn die Verbindung über die erste Schnittstelle nach einer Zeitdauer nicht erfolgreich ist.

Verschiedene beispielhafte API's

Verschiedene Anwendungsprogrammierschnittstellen (application programming interfaces (APIs)) können durch eine Softwarekomponente (hierin nachstehend „API-Implementierungs-Softwarekomponente”) implementiert werden, die es einer anderen Softwarekomponente (hierin nachstehend „API-Aufruf-Softwarekomponente”) erlaubt, auf eine oder mehrere Funktionen, Verfahren, Prozeduren, Datenstrukturen und/oder andere durch die API-Implementierungs-Softwarekomponente bereitgestellte Dienste zuzugreifen und sie zu nutzen. Zum Beispiel ermöglicht es eine API einem Entwickler einer API-Aufruf-Softwarekomponente (bei dem es sich um einen Drittentwickler handeln kann), festgelegte, durch eine API-Implementierungs-Softwarekomponente bereitgestellte Funktionen einzusetzen. Es kann eine einzige API-Aufruf-Softwarekomponente oder es können mehr als eine solche Softwarekomponente vorhanden sein. Bei einer API kann es sich um eine Quellcode-Schnittstelle handeln, die ein Computersystem oder eine Programmbibliothek bereitstellt, um Anfragen von einer Softwareanwendung nach Diensten zu unterstützen. Eine API kann hinsichtlich einer Programmiersprache festgelegt sein, die interpretierend oder kompiliert sein kann, wenn eine Anwendung aufgebaut wird, anstelle einer expliziten maschinennahen Beschreibung davon, wie Daten im Speicher gestaltet sind.

Die API definiert die Sprache und die Parameter, die API-Aufruf-Softwarekomponenten verwenden, wenn sie auf festgelegte Funktionen der API-Implementierungs-Softwarekomponente zugreifen und diese nutzen. Zum Beispiel greift eine API-Aufruf-Softwarekomponente auf die festgelegten Funktionen der API-Implementierungs-Softwarekomponente durch einen oder mehrere API-Aufrufe zu (manchmal als Funktions- oder Verfahrensaufrufe bezeichnet), die durch die API dargeboten werden. Die API-Implementierungs-Softwarekomponente kann als Reaktion auf einen API-Aufruf von einer API-Aufruf-Softwarekomponente einen Wert durch die API ausgeben. Während die API die Syntax und das Ergebnis eines API-Aufrufs definiert (z. B. wie der API-Aufruf aufzurufen ist und was der API-Aufruf tut), enthüllt die API typischerweise nicht, wie der API-Aufruf die durch den API-Aufruf festgelegte Funktion erreicht. Verschiedene Funktionsaufrufe oder Nachrichten werden über die eine oder mehreren Anwendungsprogrammierschnittstellen zwischen der aufrufenden Software (API-Aufruf-Softwarekomponente) und einer API-Implementierungs-Softwarekomponente übermittelt. Das Übermitteln der Funktionsaufrufe oder Nachrichten kann ein Ausgeben, Aktivieren, Aufrufen, Empfangen, Rücksenden oder Antworten auf die Funktionsaufrufe oder Nachrichten einschließen. Somit kann eine API-Aufruf-Softwarekomponente einen Aufruf übermitteln, und eine API-Implementierungs-Softwarekomponente kann einen Aufruf übermitteln.

In beispielhafter Weise kann es sich bei der API-Implementierungs-Softwarekomponente 2010 und der API-Aufruf-Softwarekomponente um ein Betriebssystem, eine Bibliothek, einen Vorrichtungstreiber, eine API, ein Anwendungsprogramm oder ein anderes Softwaremodul handeln (es versteht sich, dass es sich bei der API-Implementierungs-Softwarekomponente und der API-Aufruf-Softwarekomponente um dieselben oder sich voneinander unterscheidende Typen von Softwaremodulen handeln kann). Bei der API-Aufruf-Softwarekomponente kann es sich um eine lokale Softwarekomponente (d. h. auf demselben Datenverarbeitungssystem wie die API-Implementierungs-Softwarekomponente) oder eine entfernt angeordnete Softwarekomponente (d. h. auf einem anderen Datenverarbeitungssystem als die API-Implementierungs-Softwarekomponente) handeln, die mit der API-Implementierungs-Softwarekomponente durch die API über ein Netzwerk kommuniziert. Es versteht sich, dass eine API-Implementierungs-Softwarekomponente auch als eine API-Aufruf-Softwarekomponente fungieren kann (d. h. sie kann API-Aufrufe zu einer API vornehmen, die durch eine andere API-Implementierungs-Softwarekomponente dargeboten wird), und eine API-Aufruf-Softwarekomponente kann auch als eine API-Implementierungs-Softwarekomponente fungieren, indem eine API implementiert wird, die einer anderen API-Aufruf-Softwarekomponente dargeboten wird.

Die API kann es mehreren API-Aufruf-Softwarekomponenten, die in unterschiedlichen Programmiersprachen geschrieben sind, ermöglichen, mit der API-Implementierungs-Softwarekomponente zu kommunizieren (somit kann die API Merkmale zum Übersetzen von Aufrufen und Ausgaben zwischen der API-Implementierungs-Softwarekomponente und der API-Aufruf-Softwarekomponente einschließen); die API kann jedoch hinsichtlich einer spezifischen Programmiersprache implementiert sein.

5 veranschaulicht eine API-Architektur, die eine API-Implementierungs-Softwarekomponente 510 (z. B. ein Betriebssystem, eine Bibliothek, einen Vorrichtungstreiber, eine API, ein Anwendungsprogramm oder ein anderes Softwaremodul) einschließt, welche die API 520 implementiert. Die API 520 legt eine oder mehrere Funktionen, Verfahren, Klassen, Objekte, Protokolle, Datenstrukturen, Formate und/oder andere Merkmale der API-Implementierungs-Softwarekomponente fest, die durch die API-Aufruf-Softwarekomponente 530 verwendet werden können. Die API 520 kann mindestens eine Aufrufkonvention festlegen, die festlegt, wie eine Funktion in der API-Implementierungs-Softwarekomponente Parameter von der API-Aufruf-Softwarekomponente empfängt und wie die Funktion ein Ergebnis an die API-Aufruf-Softwarekomponente ausgibt. Die API-Aufruf-Softwarekomponente 530 (z. B. ein Betriebssystem, eine Bibliothek, ein Vorrichtungstreiber, eine API, ein Anwendungsprogramm oder ein anderes Softwaremodul) nimmt durch die API 520 API-Aufrufe vor, um auf die Funktionen der API-Implementierungs-Softwarekomponente 510, die durch die API 520 festgelegt sind, zuzugreifen und diese zu verwenden. Die API-Implementierungs-Softwarekomponente 510 kann als Reaktion auf einen API-Aufruf einen Wert durch die API 520 an die API-Aufruf-Softwarekomponente 530 ausgeben.

Es ist ersichtlich, dass die API-Implementierungs-Softwarekomponente 510 zusätzliche Funktionen, Verfahren, Klassen, Datenstrukturen und/oder andere Merkmale einschließen kann, die nicht durch die API 520 festgelegt sind und die für die API-Aufruf-Softwarekomponente 530 nicht verfügbar sind. Es versteht sich, dass sich die API-Aufruf-Softwarekomponente 530 auf demselben System wie die API-Implementierungs-Softwarekomponente 510 befinden oder entfernt angeordnet sein kann und auf die API-Implementierungs-Softwarekomponente 510 unter Verwendung der API 520 über ein Netzwerk zugreift. Obwohl 5 eine einzige API-Aufruf-Softwarekomponente 530 veranschaulicht, die mit der API 520 interagiert, versteht es sich, dass weitere API-Aufruf-Softwarekomponenten, die in anderen Sprachen als (oder derselben Sprache wie) die API-Aufruf-Softwarekomponente 530 geschrieben sein können, die API 520 verwenden können.

Die API-Implementierungs-Softwarekomponente 510, die API 520 und die API-Aufruf-Softwarekomponente 530 können auf einem maschinenlesbaren Medium gespeichert sein, das irgendeinen Mechanismus zum Speichern von Informationen in einer Form einschließt, die durch eine Maschine (z. B. einen Computer oder ein anderes Datenverarbeitungssystem) lesbar ist. Zum Beispiel schließt ein maschinenlesbares Medium magnetische Platten, optische Platten, Speicher mit wahlfreiem Zugriff, Nur-Lese-Speicher, Flash-Speichervorrichtungen usw. ein.

In 6 („Softwarestapel”) können Anwendungen Aufrufe von Diensten 1 oder 2 unter Verwendung mehrerer Dienst-APIs und von einem Betriebssystem (BS) unter Verwendung mehrerer BS-APIs vornehmen. Der Dienst 1 und der Dienst 2 können unter Verwendung mehrerer BS-APIs Aufrufe des BS vornehmen.

Es ist zu beachten, dass der Dienst 2 zwei APIs besitzt, von denen eine (Dienst 2 API 1) Aufrufe von Anwendung 1 empfängt und Werte an sie ausgibt und die andere (Dienst 2 API 2) Aufrufe von Anwendung 2 empfängt und Werte an diese ausgibt. Der Dienst 1 (bei dem es sich zum Beispiel um eine Softwarebibliothek handeln kann) nimmt Aufrufe von BS-API 1 vor und empfängt ausgegeben Werte von dieser, und Dienst 2 (bei dem es sich zum Beispiel um eine Softwarebibliothek handeln kann) nimmt Aufrufe von sowohl BS-API 1 als auch BS-API 2 vor und empfängt ausgegebene Werte von diesen. Die Anwendung 2 nimmt Aufrufe von BS-API 2 vor und empfängt ausgegebene Werte von dieser.

Beispielhafte Datenverarbeitungsvorrichtungen

7 zeigt ein Blockdiagramm, das ein beispielhaftes Computersystem veranschaulicht, das verwendet werden kann. Obwohl 7 verschiedene Komponenten eines Computersystems veranschaulicht, versteht es sich, dass es nicht beabsichtigt ist, dass sie irgendeine bestimmte Architektur oder Art und Weise des Verbindens der Komponenten wiedergibt, da solche Details für die hierin beschriebenen Techniken nicht relevant sind. Es ist ersichtlich, dass andere Computersysteme, die weniger Komponenten oder mehr Komponenten besitzen, bei den vorliegenden Techniken ebenfalls verwendet werden können.

Wie in 7 veranschaulicht, schließt das Computersystem 700, bei dem es sich um eine Form von Datenverarbeitungssystem handelt, den oder die Busse 750 ein, der oder die mit dem Verarbeitungssystem 720, der Stromversorgung 725, dem Speicher 730, und dem nichtflüchtigen Speicher 740 (z. B. ein Festplattenlaufwerk, Flash-Speicher, Phasenänderungsspeicher (Phase-Change Memory (PCM)) und so weiter) verbunden ist. Der oder die Busse 750 können miteinander über vielfältige Brücken, Steuereinheiten und/oder Adapter verbunden sein, wie in der Technik allgemein bekannt ist. Das Verarbeitungssystem 720 kann eine oder mehrere Anweisungen vom Speicher 730 und/oder vom nichtflüchtigen Speicher 740 abrufen und die Anweisungen ausführen, um Operationen wie vorstehend beschrieben durchzuführen. Der Bus 750 verbindet die vorstehenden Komponenten miteinander und verbindet diese Komponenten auch mit der optionalen Dockingstation 760, der Anzeigesteuereinheit und Anzeigevorrichtung 770, Eingabe/Ausgabe-Vorrichtungen 780 (z. B. eine Ethernet-Netzwerkschnittstelle), einer Cursorsteuereinheit (z. B. einer Maus, einem Touchscreen, einem Touchpad, einer Tastatur usw.) und einer oder mehreren drahtlosen Schnittstellen 790 (z. B. Bluetooth, WLAN 202, mobil 203, Infrarot usw.).

8 zeigt ein Blockdiagramm, das ein beispielhaftes Datenverarbeitungssystem veranschaulicht, auf dem die hierin beschriebenen Techniken implementiert werden können. Zum Beispiel kann es sich bei dem Datenverarbeitungssystem 800 um einen handgeführten Computer, einen persönlichen digitalen Assistenten (personal digital assistant (PDA)), ein mobiles Telefon, ein transportables Spielsystem, eine transportable Medienwiedergabeeinheit, eine Tablet- oder eine handgeführte Computervorrichtung handeln, die ein mobiles Telefon, eine Medienwiedergabeeinheit und/oder ein Spielsystem einschließen kann. Als ein weiteres Beispiel kann es sich bei dem Datenverarbeitungssystem 800 um einen Netzwerkcomputer oder eine eingebettete Verarbeitungsvorrichtung innerhalb einer anderen Vorrichtung handeln.

Die beispielhafte Architektur des Datenverarbeitungssystems 800 kann für die vorstehend beschriebenen mobilen Vorrichtungen verwendet werden. Das Datenverarbeitungssystem 800 schließt das Verarbeitungssystem 820 ein, das einen oder mehrere Mikroprozessoren und/oder ein System auf einer integrierten Schaltung einschließen kann. Das Verarbeitungssystem 820 ist mit einem Speicher 810, einer Stromversorgung 825 (die eine oder mehrere Batterien einschließt), einer Audio-Eingabe/Ausgabe 840, einer Anzeigesteuereinheit und Anzeigevorrichtung 860, einer optionalen Eingabe/Ausgabe 850, einer oder mehreren Eingabevorrichtungen 870 und einer oder mehreren drahtlosen Schnittstellen 830 (wie z. B. die vorstehend erläuterte WLAN- 202 und mobile 203 Schnittstelle) gekoppelt. Es ist ersichtlich, dass in 8 nicht gezeigte zusätzliche Komponenten ebenfalls ein Teil des Datenverarbeitungssystems 800 sein können und dass weniger Komponenten als in 8 gezeigt verwendet werden können. Darüber hinaus ist ersichtlich, dass ein oder mehrere in 8 nicht gezeigte Busse verwendet werden können, um die vielfältigen Komponenten miteinander zu verbinden, wie beim Stand der Technik allgemein bekannt ist.

Im Speicher 810 können Daten und/oder Programme zum Ausführen durch das Datenverarbeitungssystem 800 gespeichert werden. Die Audio-Eingabe/Ausgabe 840 kann ein Mikrofon und/oder einen Lautsprecher einschließen, um zum Beispiel Musik wiederzugeben und/oder durch den Lautsprecher und das Mikrofon eine Telefonfunktionalität bereitzustellen. Die Anzeigesteuereinheit und Anzeigevorrichtung 860 kann eine grafische Benutzeroberfläche (graphical user interface (GUI)) einschließen. Die drahtlosen (z. B. Funkfrequenz) Schnittstellen 830 (die z. B. drahtlose Sende-Empfänger (Transceiver) und/oder Basisband-Verarbeitungskomponenten zum Übertragen von Daten unter Verwendung von WLAN-Technologie, Infrarottechnologie, Bluetooth-Technologie, drahtloser Mobiltelefontechnologie und/oder weiterer Typen von Technologie einschließen können) können verwendet werden, um mit anderen Datenverarbeitungssystemen zu kommunizieren. Die eine oder die mehreren Eingabevorrichtungen 870 können es einem Benutzer ermöglichen, dem System Eingaben bereitzustellen. Bei diesen Eingabevorrichtungen kann es sich um ein Tastenfeld, eine Tastatur, ein Touchpanel, ein Multi-Touchpanel usw. handeln. Bei der optionalen weiteren Eingabe-Ausgabe 850 kann es sich um einen Verbinder für eine Dockingstation handeln.

Die hierin beschriebenen Merkmale können gemäß den verschiedenen Schritten implementiert werden, wie vorstehend dargelegt. Diese Schritte können in maschinenlesbaren Anweisungen ausgebildet sein, die einen universellen oder zweckbestimmten Prozessor veranlassen, bestimmte Schritte durchzuführen. Alternativ dazu können diese Schritte durch spezifische Hardwarekomponenten, die festverdrahtete Logik zum Durchführen der Schritte enthalten, oder durch irgendeine Kombination programmierter Computerkomponenten und angepasster Hardwarekomponenten durchgeführt werden.

Die hierin beschriebenen Merkmale können auch als maschinenlesbares Medium zum Speichern des maschinenausführbaren Programmcodes implementiert werden. Das maschinenlesbare Medium kann, ohne auf diese beschränkt zu sein, Floppydisketten, optische Platten, CD-ROMs und magneto-optische Platten, ROMs, RAMs, EPROMs, EEPROMs, magnetische oder optische Karten oder einen anderen Typ von Medium/maschinenlesbarem Medium einschließen, das zum Speichern elektronischer Programmcodes geeignet ist.

Innerhalb der vorhergehenden Beschreibung wurden zum Zwecke der Erklärung zahlreiche spezifische Details dargelegt, um ein umfassendes Verständnis der Erfindung bereitzustellen. Es ist jedoch für den Fachmann ersichtlich, dass die Erfindung ohne manche dieser spezifischen Details ausgeführt werden kann. Zum Beispiel wird für den Fachmann leicht ersichtlich sein, dass die hierin beschriebenen funktionellen Module und Verfahren als Software, Hardware oder irgendeine Kombination davon implementiert werden können. Darüber hinaus sind die zugrundeliegenden Prinzipien der Erfindung nicht auf eine mobile Computerimplementierung beschränkt, obwohl manche Ausführungsformen der Erfindung hierin innerhalb des Kontextes einer mobilen Computerumgebung beschrieben sind. Praktisch jeder Typ von Client- oder Peer-Datenverarbeitungsvorrichtungen kann in manchen Ausführungsformen verwendet werden, einschließlich zum Beispiel Desktop- oder Workstation-Computer. Dementsprechend sollte der Umfang und Geist der Erfindung im Hinblick auf die folgenden Ansprüche beurteilt werden.