ES2348260T3 - Recuperacion asincrona de datos en tiempo real. - Google Patents

Recuperacion asincrona de datos en tiempo real. Download PDF

Info

Publication number
ES2348260T3
ES2348260T3 ES04707416T ES04707416T ES2348260T3 ES 2348260 T3 ES2348260 T3 ES 2348260T3 ES 04707416 T ES04707416 T ES 04707416T ES 04707416 T ES04707416 T ES 04707416T ES 2348260 T3 ES2348260 T3 ES 2348260T3
Authority
ES
Spain
Prior art keywords
data
service
user
presentation
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
ES04707416T
Other languages
English (en)
Inventor
Coyle Brett Marl
Gregory Scott Friedman
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Good Technology Corp
Original Assignee
Visto Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Visto Corp filed Critical Visto Corp
Application granted granted Critical
Publication of ES2348260T3 publication Critical patent/ES2348260T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/42—Mailbox-related aspects, e.g. synchronisation of mailboxes
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00—Network architectures or network communication protocols for network security
    • H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00—Network arrangements or protocols for supporting network services or applications
    • H04L67/01—Protocols
    • H04L67/10—Protocols in which an application is distributed across nodes in the network
    • H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00—Network arrangements or protocols for supporting network services or applications
    • H04L67/01—Protocols
    • H04L67/10—Protocols in which an application is distributed across nodes in the network
    • H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004—Server selection for load balancing
    • H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00—Network arrangements or protocols for supporting network services or applications
    • H04L67/01—Protocols
    • H04L67/10—Protocols in which an application is distributed across nodes in the network
    • H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1027—Persistence of sessions during load balancing
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00—Network arrangements or protocols for supporting network services or applications
    • H04L67/2866—Architectures; Arrangements
    • H04L67/30—Profiles
    • H04L67/303—Terminal profiles
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00—Network arrangements or protocols for supporting network services or applications
    • H04L67/50—Network services
    • H04L67/56—Provisioning of proxy services
    • H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00—Network arrangements or protocols for supporting network services or applications
    • H04L67/50—Network services
    • H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/62—Establishing a time schedule for servicing the requests
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40—Network security protocols
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00—Network architectures or network communication protocols for network security
    • H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/083—Network architectures or network communication protocols for network security for authentication of entities using passwords
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00—Network architectures or network communication protocols for network security
    • H04L63/18—Network architectures or network communication protocols for network security using different networks or channels, e.g. using out of band channels
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00—Network arrangements or protocols for supporting network services or applications
    • H04L67/01—Protocols
    • H04L67/10—Protocols in which an application is distributed across nodes in the network
    • H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004—Server selection for load balancing
    • H04L67/1012—Server selection for load balancing based on compliance of requirements or conditions with available server resources
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00—Network arrangements or protocols for supporting network services or applications
    • H04L67/2866—Architectures; Arrangements
    • H04L67/289—Intermediate processing functionally located close to the data consumer application, e.g. in same machine, in same home or in same sub-network
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00—Network arrangements or protocols for supporting network services or applications
    • H04L67/50—Network services
    • H04L67/56—Provisioning of proxy services
    • H04L67/563—Data redirection of data network streams
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Information Transfer Between Computers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)

Abstract

Servidor de pasarela (101), que comprende: un servicio de presentación (115) dispuesto para recibir una solicitud de datos desde un dispositivo remoto (119) de comunicaciones de un usuario, solicitando la solicitud de datos la recepción de datos desde unos medios de almacenamiento de datos (109); y un servicio (117) de tiempo real dispuesto para retransmitir la solicitud de datos desde el servicio de presentación (115) a un cliente de acceso (103) asociado a los medios de almacenamiento de datos (109), en el que el servidor de pasarela (101) está dispuesto para establecer, entre el servicio de presentación (115) y el dispositivo remoto (119) de comunicaciones del usuario, una sesión de presentación correspondiente a la solicitud de datos del dispositivo remoto (119) de comunicaciones del usuario, en el que el servidor de pasarela (101) está dispuesto para transmitir datos de identificación de sesión de la presentación al dispositivo remoto (119) de comunicaciones del usuario antes de que los datos solicitados hayan sido recibidos por el servicio de presentación (115) y en el que el servicio de presentación (115) está dispuesto para: activar un temporizador al producirse la recepción de la solicitud de datos; cuando el temporizador alcanza un valor de umbral, determinar si los datos solicitados en la solicitud de datos han sido recibidos después de haber sido recuperados desde los medios de almacenamiento de datos; y si se han recibido los datos solicitados, reenviar los datos solicitados al dispositivo remoto (119) de comunicaciones del usuario, y si no se han recibido los datos solicitados, reenviar un mensaje al dispositivo remoto (119) de comunicaciones del usuario ordenando al dispositivo remoto (119) de comunicaciones del usuario que vuelva a presentar la solicitud de datos.

Description

Recuperación asíncrona de datos en tiempo real.
Campo de la invención
La presente invención se refiere a la recuperación asíncrona de datos en tiempo real. Varios aspectos de la presente invención son particularmente aplicables a la recuperación asíncrona de datos en tiempo real desde una base de datos corporativa hacia un dispositivo remoto, tal como un teléfono inalámbrico o un asistente personal digital.
Antecedentes de la invención
Recientemente, la información digital está cobrando cada vez más importancia para todo tipo de personas. A medida que ha aumentado la importancia de la información digital, se ha incrementado también la necesidad de un acceso remoto cómodo a una variedad de tipos de información digital. Por ejemplo, los hombres de negocios que viajan pueden desear acceder continuamente a información contenida en hojas de cálculo electrónicas, los abogados pueden desear acceder a documentos de procesado de texto desde la ubicación de un cliente, y los estudiantes pueden desear enviar o recuperar correo electrónico mientras se encuentran en la escuela.
Para hacer frente a esta necesidad, muchos proveedores de servicios de comunicación permiten que sus clientes accedan a información digital remota a través de una red de comunicaciones. Por ejemplo, un proveedor de servicios telefónicos inalámbricos puede permitir que sus clientes usen sus teléfonos inalámbricos u otros dispositivos de comunicación para enviar y recibir correo electrónico, recuperar información de imágenes de una red, obtener información de contacto de una base de datos centralizada, o similares. De modo similar, algunas empresas han establecido conexiones remotas de Internet de alta velocidad, tanto por hilos como inalámbricas, en ubicaciones públicas tales como restaurantes, hoteles, y aeropuertos, a las que se puede acceder con el ordenador de un cliente.
Aunque los proveedores de servicios de comunicación han creado una infraestructura que permite potencialmente que sus clientes accedan de forma remota a información digital, muchas cuestiones prácticas siguen evitando que esta infraestructura sea utilizada de forma plena. Por ejemplo, algunos clientes pretenden acceder a información digital almacenada detrás de una barrera, tal como información digital almacenada en la base de datos del empresario para el que trabajan y protegida por un cortafuegos. Con esta disposición, si la red del empresario no soportara una herramienta de acceso que permita conexiones externas a través del cortafuegos, entonces se estaría impidiendo que un cliente accediera a la información digital deseada a través de la red del proveedor de servicios de comunicación. Estas herramientas de acceso incluyen, por ejemplo, el uso de una red privada virtual (VPN) o técnicas similares para posibilitar conexiones seguras y autenticadas desde dispositivos no conectados directamente a la red del empresario. Por otra parte, incluso si la red del empresario soportara dicha herramienta, el dispositivo de comunicaciones del cliente seguiría sin poder acceder a los datos si el propio dispositivo del usuario no estuviera configurado para soportar esa herramienta.
En otras situaciones, un cliente puede intentar usar un dispositivo de comunicaciones inadecuado para recuperar datos. Por ejemplo, un usuario puede intentar utilizar un asistente personal digital o un teléfono inalámbrico con un navegador relativamente simple para recuperar una página web con una gran cantidad de datos de imágenes o audio. Antes de que se pueda recuperar completamente la gran cantidad de datos, el "tiempo límite" del asistente personal digital o teléfono inalámbrico puede expirar y dicho dispositivo puede cortar la conexión. De forma alternativa o adicional, el usuario puede pretender descargar más datos de los que pueda almacenar el asistente personal digital o teléfono inalámbrico.
El documento WO02/06964 da a conocer un sistema en el que un cliente 54 de acceso remoto puede recibir datos desde un dispositivo de base a través de varios componentes distribuidos. En particular, en un componente se recibe una solicitud de datos, que asigna un servidor de usuarios al dispositivo solicitante; el servidor de usuarios asignado se comunica directamente con el dispositivo de base, siendo gestionada la conexión inicial por un servidor sili. El servidor sili envía detalles del servidor de usuarios asignado hacia el dispositivo de base, posibilitando de este modo que el dispositivo de base envíe los datos solicitados directamente al servidor de usuarios asignado. Una vez recibidos por el servidor de usuarios, los datos se almacenan en memoria caché localmente como datos de usuario y a continuación se transmiten hacia el cliente de acceso remoto.
Sumario
Según aspectos de la presente invención, está previsto un aparato y un método según las reivindicaciones adjuntas.
De forma ventajosa, varios ejemplos de la invención permiten que un usuario, de forma más cómoda, envíe datos hacia y recupere datos desde unos medios remotos de almacenamiento de datos usando un dispositivo de comunicaciones remoto. Con diferentes aspectos de la invención, un sistema de recuperación de datos incluye un servidor de bandeja de entrada (IB), al que se hará referencia en lo sucesivo de forma más general como "servidor de pasarela", y un cliente de acceso al escritorio (DAC), al que se hará referencia en lo sucesivo de forma más general simplemente como cliente de acceso. El servidor de pasarela está conectado comunicativamente al cliente de acceso a través de una red. El servidor de pasarela proporciona un servicio de presentación (PS) y un servicio de tiempo real (RTS), que colaboran con el cliente de acceso para recuperar datos desde unos medios de almacenamiento de datos y a continuación proporcionan los datos recuperados al dispositivo de comunicaciones remoto de un usuario usando un protocolo de presentación apropiado para las capacidades del dispositivo.
Con varias implementaciones de la invención, el cliente de acceso creará una conexión hacia el servidor de pasarela. Cuando el usuario desea recuperar datos de los medios de almacenamiento de datos o enviar datos a los medios de almacenamiento de datos, el usuario establece una conexión de comunicaciones entre su dispositivo remoto de comunicaciones y el servidor de pasarela, y a continuación solicita los datos deseados del servidor de pasarela. Como respuesta, el servidor de pasarela envía una orden al cliente de acceso, que le da instrucciones para recuperar los datos solicitados. El cliente de acceso recupera los datos solicitados desde los medios de almacenamiento de datos, y devuelve los datos recuperados al servidor de pasarela. A continuación, el servidor de pasarela retransmite la información solicitada de vuelta al dispositivo remoto de comunicaciones del usuario a través del servidor de presentación usando un protocolo de presentación apropiado para las capacidades del dispositivo.
Breve descripción de los dibujos
La Figura 1 muestra un entorno de red que incluye un sistema para la recuperación asíncrona de datos según varias formas de realización de la invención.
La Figura 2 muestra un ejemplo de un sistema informático que se puede usar para implementar varias formas de realización de la invención.
Las Figuras 3A a 3D muestran un diagrama de flujo que muestra un método para la recuperación asíncrona de datos según varias formas de realización de la invención.
Las Figuras 4A a 4E muestran un diagrama de flujo que muestra un método de recuperación de datos desde unos medios de almacenamiento de datos según varias formas de realización de la invención.
La Figura 5 muestra un sistema para la recuperación asíncrona de datos, que utiliza múltiples servidores de pasarela según varias formas de realización de la invención.
Descripción detallada de los dibujos Visión general
La Figura 1 muestra un diagrama de bloques esquemático de un sistema 100 de recuperación de datos según varias formas de realización de la invención. El sistema 100 de recuperación permite la recuperación de datos, tales como datos de unos medios corporativos de almacenamiento de datos, hacia un dispositivo remoto. Tal como se observa en esta figura, el sistema 100 de recuperación de datos incluye por lo menos un servidor de pasarela 101 (IB) y un cliente de acceso (DAC) 103. En el ejemplo ilustrado, el cliente de acceso 103 está alojado en el ordenador 105 de un usuario. El ordenador 105 está ubicado, por ejemplo, en un entorno 107 de red corporativa que incluye los medios de almacenamiento de datos 109 desde los cuales se van a recuperar datos. Los medios de almacenamiento de datos 109 pueden ser cualquier tipo de medios de almacenamiento de datos, tales como una base de datos que organice datos, un dispositivo servidor que proporcione servicios a uno o más dispositivos de cliente o una combinación de los dos. Los medios de almacenamiento de datos 109 pueden ser, por ejemplo, un servidor Lotus Domino o un servidor Microsoft Exchange que gestione una variedad de datos incluyendo mensajes de correo electrónico, información de calendario, información de contacto y similares. El entorno 107 de red corporativa también puede incluir un cortafuegos 111 u otra barrera para evitar un acceso no deseado al entorno 107 de red corporativa. Los medios de almacenamiento de datos 109 también pueden ser unos medios de almacenamiento de datos públicamente disponibles, tales como, por ejemplo, un servidor de correo electrónico Yahoo o similares. Todavía adicionalmente, los medios de almacenamiento de datos pueden ser unos medios genéricos de almacenamiento de datos de correo IMAP ó POP3, o incluso unos medios de almacenamiento que utilicen un sistema de archivos deseado, tal como el sistema de archivos NTFS.
Tal como se muestra en esta figura, el servidor de pasarela 101 está conectado comunicativamente al cliente de acceso 103 a través de una red 113, tal como una red de área extensa. La red 113 puede ser una red públicamente accesible, tal como Internet. Alternativamente, la red puede ser una red privada (a la que se hace referencia frecuentemente como Intranet), o una combinación de red públicas y privadas. El servidor de pasarela 101 proporciona un servicio de presentación (PS) 115 y un servicio de tiempo real (RTS) 117, explicándose cada uno de ellos de forma detallada posteriormente. El servicio de presentación 115 y el servicio 117 de tiempo real del servidor de pasarela 101 colaboran con el cliente de acceso 103 para recuperar datos de los medios de almacenamiento de datos 109 y a continuación, proporcionar los datos recuperados al dispositivo remoto 119 de comunicaciones del usuario.
Más particularmente, el cliente de acceso 103 crea una conexión 121 (que puede ser, por ejemplo, una conexión persistente) con el servidor de pasarela 101 a través del cortafuegos 111. A continuación, el cliente de acceso 103 se sitúa inactivo hasta que recibe órdenes del servidor de pasarela 101 para recuperar datos desde el servidor de pasarela 101 o proporcionar datos al servidor de pasarela 101. Cuando el usuario desea recuperar datos desde los medios de almacenamiento de datos 109 hacia el dispositivo remoto 119 de comunicaciones del usuario (o, alternativamente, enviar datos desde el dispositivo remoto 119 de comunicaciones del usuario hacia los medios de almacenamiento de datos 109), el usuario establece una conexión 123 de comunicaciones entre el dispositivo remoto 119 de comunicaciones con el servidor de pasarela 101. A través del dispositivo remoto 119 de comunicaciones del usuario, este último solicita a continuación los datos deseados del servidor de pasarela 101. Como respuesta, el servidor de pasarela 101 envía una orden a través de la conexión 121 hacia el cliente de acceso 103, ordenando al cliente de acceso 103 que recupere los datos solicitados. Como respuesta, el cliente de acceso 103 recupera los datos solicitados de los medios de almacenamiento de datos 109, y devuelve los datos recuperados al servidor de pasarela 101. A continuación, el servidor de pasarela 101 retransmite la información solicitada de vuelta al dispositivo remoto 119 de comunicaciones del usuario. Este proceso, junto con los componentes del sistema 100, se describirá de forma más detallada posteriormente.
Entorno operativo
Tal como apreciarán los expertos ordinarios en la materia, el servidor de pasarela 101 se puede implementar usando uno o más dispositivos informáticos, tales como un ordenador programable que se puede programar para enviar, recuperar y almacenar los archivos de datos que constituyen mensajes electrónicos. Este tipo de ordenador se puede materializar, por ejemplo, mediante un servidor de cuentas de correo electrónico. La Fig. 2 muestra un ejemplo de dicho sistema 201 de ordenador programable, capaz de recuperar y almacenar en memoria caché archivos de datos de correo electrónico de una o más cuentas externas de correo electrónico. El sistema 201 de ordenador incluye una unidad 203 de procesado, una memoria 205 de sistema, y un bus 207 de sistema que acopla varios componentes del sistema, incluyendo la memoria 105 de sistema, a la unidad 203 de procesado. La memoria 205 de sistema puede incluir una memoria de solo lectura (ROM) 209 y una memoria de acceso aleatorio (RAM) 211.
En la memoria de solo lectura (ROM) 209, se puede almacenar un sistema básico 213 de entrada/salida (BIOS), que contiene las rutinas que ayudan a transferir información entre elementos dentro del sistema 201 de ordenador. Si el sistema 201 de ordenador se materializa mediante un ordenador personal, el mismo puede incluir además una unidad 215 de disco duro para leer desde y escribir en un disco duro (no representado), una unidad 217 de disco magnético para leer desde o escribir en un disco magnético extraíble (no mostrado), una unidad 219 de disco óptico para leer desde o escribir en un disco óptico extraíble (no mostrado) tal como un CD-ROM u otros soportes ópticos, o una tarjeta 221 de memoria, tal como una tarjeta de memoria flash.
En la ROM 209, la unidad 215 de disco duro, la unidad 217 de disco magnético, y la unidad 219 de disco óptico se pueden almacenar varios módulos de programa. Un usuario puede introducir órdenes e información en el sistema 201 de ordenador a través de un dispositivo 223 de entrada, tal como un teclado, un dispositivo de puntero, una pantalla táctil, un micrófono, un joystick o cualquier otro dispositivo de interfaz adecuado. Evidentemente, el sistema 201 de ordenador puede utilizar una variedad de diferentes dispositivos 223 de entrada, tal como es conocido en la técnica. Se incluye también un dispositivo 225 de salida, tal como un monitor u otro tipo de dispositivo de visualización, para transportar información desde el sistema 201 de ordenador al usuario. Tal como apreciarán los expertos ordinarios en la materia, en el sistema 201 de ordenador se puede incluir de forma alternativa o adicional una variedad de dispositivos 225 de salida, tales como altavoces e impresoras.
Para acceder a cuentas de correo electrónico, el sistema 201 de ordenador preferentemente es capaz de funcionar en un entorno de red usando conexiones lógicas con uno o más ordenadores remotos, tales como el ordenador 227. El sistema 201 de ordenador puede ser conectable al ordenador remoto 227 a través de una red de área local (LAN) 229 ó una red de área extensa (WAN), tal como Internet. Cuando se usa en un entorno de red, el sistema 201 de ordenador se puede conectar a la red a través de una interfaz 228, tal como un transceptor inalámbrico, un módem, una conexión de Ethernet, o cualquier otra interfaz adecuada. Aunque en la Fig. 2 la interfaz 228 se ilustra como una interfaz interna, la misma puede ser alternativamente una interfaz externa tal como es bien sabido en la materia. Evidentemente, se apreciará que las conexiones de red antes descritas son ilustrativas, y se pueden usar otros medios de establecimiento de un enlace de comunicaciones con otros ordenadores.
Uso del servicio de presentación y el servicio de tiempo real
Con varias formas de realización de la invención, los datos recuperados de los medios de almacenamiento de datos 109 se pueden solicitar y recibir a través de una red de área extensa tal como Internet. Este tipo de medio de comunicación es, sin embargo, relativamente impredecible, y el nivel existente de tráfico a través de la red puede afectar a la velocidad a la que el servicio 117 de tiempo real recibe datos solicitados. Además, una solicitud de datos desde el dispositivo remoto 119 de comunicaciones del usuario no especificará típicamente el tamaño de los datos solicitados. Por ejemplo, un usuario puede utilizar el dispositivo remoto 119 de comunicaciones para solicitar su mensaje de correo electrónico más reciente de los medios de almacenamiento de datos 109 sin conocer el tamaño del mensaje. Por consiguiente, cuando el servicio de presentación 115 recibe una solicitud de datos desde el dispositivo remoto 119 de comunicaciones del usuario, el servicio de presentación 115 típicamente no puede averiguar cuándo recibirá los datos solicitados desde el cliente de acceso 103.
Esta incertidumbre presenta un problema por cuanto el servicio de presentación 115 no puede determinar de antemano durante cuánto tiempo mantener la conexión 123 con el dispositivo remoto 119 de comunicaciones del usuario. Típicamente, el dispositivo remoto 119 de comunicaciones mantendrá una conexión de reposo solamente durante un periodo de tiempo preestablecido antes de cortar la conexión. De este modo, en algunas situaciones, el tiempo entre el momento en el que el servicio de presentación 115 solicita los datos desde el servicio 117 de tiempo real y el momento en el que el servicio de presentación 115 recibe los datos solicitados como respuesta puede ser mayor que la cantidad de tiempo que esperará una respuesta el dispositivo remoto 119 de comunicaciones del usuario desde el servicio de presentación 115 antes de cortar la conexión 123.
Adicionalmente, la red de comunicaciones que soporta el dispositivo de comunicaciones también puede implementar procedimientos de tiempo límite que se configuran por separado y de forma independiente con respecto o bien al dispositivo remoto 119 de comunicaciones o bien al servidor de pasarela 101. Estos procedimientos pueden ser usados por proveedores de servicios de comunicaciones para evitar que conexiones de reposo consuman recursos de la red que, de otro modo, se podrían asignar a conexiones activas. De esta manera, se puede producir una expiración del tiempo límite de la propia red de comunicaciones y esta última puede cortar la conexión 123 con el servidor de pasarela 101 antes de que se haya recibido una respuesta desde el servicio de presentación 115.
Por otra parte, tipos diferentes de dispositivos remotos 119 de comunicaciones presentarán periodos de espera diferentes antes de cortar una conexión de reposo (es decir, una conexión en la que no se están intercambiando datos). Más particularmente, algunos tipos de dispositivos remotos 119 de comunicaciones pueden utilizar una aplicación de software de comunicaciones relativamente sofisticada que mantendrá una conexión de reposo durante varios minutos. Por ejemplo, si el dispositivo remoto 119 de comunicaciones es un ordenador personal portátil, puede usar una versión del navegador Internet Explorer de Microsoft para comunicarse con el servicio de presentación 115. Este tipo de aplicación de software de comunicaciones se configura típicamente para recibir datos ricos en gráficos y colores, y por lo tanto esperará durante un tiempo relativamente prolongado una respuesta desde el servicio de presentación 115 antes de que se produzca una expiración del "tiempo límite" y de que corte la conexión 123.
Por otro lado, un dispositivo remoto 119 de comunicaciones menos sofisticado puede utilizar una aplicación de software de comunicaciones destinada a recibir únicamente datos muy sencillos y que mantendrá una conexión de reposo solamente de forma breve. Por ejemplo, un teléfono inalámbrico se puede comunicar con el servicio de presentación 115 usando un navegador optimizado que reciba únicamente datos de texto y que está diseñado para navegar con un teclado numérico. Típicamente, este tipo de aplicación de software de comunicaciones simple esperará solamente durante un periodo de tiempo relativamente corto una respuesta desde el servicio de presentación 115 antes de que se produzca una expiración del tiempo límite y de cortar la conexión 123.
Para hacer frente a esta discrepancia entre tipos diferentes de dispositivos remotos 119 de comunicaciones y sus diferentes redes de comunicaciones de soporte, el servidor de pasarela 101 según varias formas de realización de la invención puede utilizar tanto el servicio de presentación 115 como el servicio 117 de tiempo real. Más particularmente, con varias formas de realización de la invención, el servicio 117 de tiempo real mantiene la conexión 121, que puede ser una conexión persistente, con el cliente de acceso 103. A continuación, el servicio de presentación 115 gestiona la conexión 123 con diversos dispositivos remotos 119 de comunicaciones a través de varias redes de comunicación. De este modo, el servicio de presentación 115 y el servicio 117 de tiempo real colaboran entre sí para proporcionar una recuperación asíncrona de datos desde los medios de almacenamiento de datos 109 hacia el dispositivo remoto 119 de comunicaciones del usuario. Es decir, la temporización de las comunicaciones entre el servicio 117 de tiempo real y los medios de almacenamiento de datos 109 (a través del cliente de acceso 103) es independiente de la temporización de las
comunicaciones entre el servicio de presentación 115 y un dispositivo remoto 119 de comunicaciones de un usuario.
Según varias formas de realización de la invención, la conexión 121, la conexión 123, o ambas conexiones pueden estar cifradas. Por ejemplo, la conexión 121, la conexión 123, o ambas conexiones se pueden cifrar usando el protocolo de Capa de Conexión Segura (SSL). El cifrado se puede producir basándose en un esquema de conexión-a-conexión. De este modo, la conexión 121 se puede cifrar usando un conjunto de información de cifrado compartida entre el cliente de acceso 103 y el servicio 117 de tiempo real, mientras que la conexión 123 se puede cifrar usando otro conjunto de información de cifrado compartida entre el dispositivo remoto 119 de comunicaciones del usuario y el servicio de presentación 115. Alternativamente, con varias formas de realización de la invención, las conexiones 121 y 123 se pueden cifrar comúnmente de "extremo-a-extremo", usando información de cifrado compartida entre el dispositivo remoto 119 de comunicaciones del usuario y el cliente de acceso 103.
Recuperación asíncrona de datos
Haciendo referencia a continuación a las Figuras 3A y a 3D, las mismas ilustran un diagrama de flujo para un proceso que se puede producir según varias formas de realización de la invención cuando el usuario desea enviar datos hacia o recuperar datos desde los medios de almacenamiento de datos 109. Tal como se muestra en la Figura 3A, para utilizar el sistema 100, en primer lugar un usuario instala el cliente de acceso 103 en un ordenador que tiene acceso a los medios de almacenamiento de datos 109 (es decir, en el ordenador 105) en la etapa 301. Por ejemplo, si los medios de almacenamiento de datos 109 son un servidor de Microsoft Exchange que gestiona los mensajes de correo electrónico del usuario, el usuario instalará el cliente de acceso 103 en un ordenador que tenga acceso a la cuenta de correo electrónico del usuario en los medios de almacenamiento de datos 109. Como parte del proceso de instalación para algunas formas de realización de la invención, el usuario puede presentar información de autenticación. A continuación esta información de autenticación se puede usar posteriormente para autenticar la identidad del usuario cuando el mismo intenta recuperar datos hacia o enviar datos desde el dispositivo remoto 119 de comunicaciones del usuario.
En muchas situaciones, el usuario utilizará el sistema 100 para enviar o recibir mensajes de correo electrónico u otros datos desde unos medios de almacenamiento de datos 109 mantenidos por el empresario del usuario. Por consiguiente, los medios de almacenamiento de datos 109 se ilustran en la Figura 1 de manera que están dentro de un entorno 107 de red corporativa, que se puede encontrar detrás del cortafuegos 111, tal como se ha indicado previamente. En estas situaciones, el ordenador 105 puede ser el ordenador de trabajo personal del usuario que se encuentra también dentro del entorno 107 de red corporativa y detrás del cortafuegos 111, y, por lo tanto, dispone de un acceso sencillo a los medios de almacenamiento de datos 109. No obstante, debería apreciarse que se pueden utilizar varias formas de realización de la invención para recuperar datos desde o enviar datos hacia unos medios de almacenamiento de datos 109 ubicados dentro de cualquier entorno informático. Además, como ordenador 105 puede servir cualquier dispositivo informático que disponga del acceso deseado a los medios de almacenamiento de datos 109. Además, tal como se explicará de forma detallada posteriormente, un usuario puede utilizar múltiples clientes 103 de acceso en diferentes ordenadores 105 para recuperar datos desde o enviar datos hacia los medios de almacenamiento de datos 109, y múltiples usuarios pueden utilizar un cliente de acceso 103 compartido en un único ordenador 105 para recuperar datos desde o enviar datos hacia los medios de almacenamiento de datos 109.
Debería apreciarse que, aunque el cliente de acceso 103 se describe en la forma de realización ilustrada como un cliente alojado en un único ordenador 105, varias formas de realización alternativas de la invención pueden utilizar cualquier configuración para el cliente de acceso 103. Por ejemplo, el propio cliente de acceso 103 se puede implementar mediante un ordenador "servidor" que preste servicio a otros ordenadores en una red. De este modo, el cliente de acceso 103 puede proporcionar acceso a los medios de almacenamiento de datos 109 para más de un usuario. Además, el cliente de acceso 103 puede proporcionar herramientas de gestión y administración centralizadas que posibiliten que un administrador del sistema (por ejemplo, un administrador del sistema para los medios de almacenamiento de datos 109) gestione y controle la utilización del cliente 109 de acceso por parte de usuarios individuales, por ejemplo, seleccionándolos de entre un directorio o una lista de direcciones de la empresa. Por otra parte, el cliente de acceso 103 se puede implementar por lo tanto en un servidor que realice otras funciones, las cuales pueden estar relacionadas o no con el funcionamiento del cliente de acceso 103. Por ejemplo, el cliente de acceso 103 se puede implementar en un servidor de correo electrónico público, tal como un servidor de correo electrónico de Yahoo o Hotmail, o en un servidor de correo electrónico privado. Todavía adicionalmente, con diferentes formas de realización de la invención, el funcionamiento del cliente de acceso 103 puede estar distribuido entre una pluralidad de ordenadores 105.
Volviendo a continuación a la Figura 3A, una vez que se ha instalado el cliente de acceso 103 en el ordenador 105 en la etapa 301, el cliente de acceso 103 establece una conexión segura de comunicaciones con el servidor de pasarela 101 en la etapa 303. Más particularmente, el cliente de acceso 103 establece una conexión segura 121 con el servicio 117 de tiempo real alojado en el servidor de pasarela 101. En el directorio 127 se crea además una entrada para la conexión, a la que se hace referencia como sesión de tiempo real. El directorio 127 puede ser, por ejemplo, una base de datos de Oracle u otra base de datos adecuada, o un directorio de Novell u otro directorio adecuado. La entrada para la conexión 121 identifica tanto el usuario como el servidor de pasarela 101 que aloja el servicio 117 de tiempo real con el cual se realiza la conexión 121.
Según varias formas de realización de la invención, la conexión 121 puede ser una conexión persistente que se mantenga siempre que tanto el cliente de acceso 103 como el servicio 117 de tiempo real estén funcionando para proporcionar servicio a un usuario. No obstante, todavía con otras formas de realización de la invención, la conexión 121 se puede establecer sobre la base de un esquema fundamentado en instrucciones o de forma periódica. De este modo, varias formas de realización de la invención pueden utilizar la heurística para determinar cuándo establece el cliente de acceso 103 la conexión 121 con el servicio 117 de tiempo real. Esta heurística puede determinar, por ejemplo, que el cliente de acceso 103 se conectará cada minuto (o algún otro periodo de tiempo) si presta servicio a un usuario (o usuarios) que no ha recuperado datos frecuentemente desde los medios de almacenamiento de datos 109. Esta heurística también puede determinar que el cliente de acceso 103 mantendrá de forma persistente la conexión 121 si presta servicio a un usuario (o usuarios) que han recuperado datos con frecuencia desde los medios de almacenamiento de datos 109. Todavía adicionalmente, varias formas de realización de la invención pueden utilizar esta heurística únicamente bajo ciertas condiciones, tales como cuando el tráfico de red correspondiente a la red que transporta la conexión 121 aumenta por encima de un nivel de umbral, o cuando el servicio 117 de tiempo real alcanza cierto umbral de conexiones simultáneas 121 con múltiples clientes 103 de acceso.
Para recuperar posteriormente datos desde los medios de almacenamiento de datos 109 hacia el dispositivo remoto 119 de comunicaciones del usuario (o para enviar datos desde el dispositivo remoto 119 de comunicaciones del usuario hacia los medios de almacenamiento de datos 109), el usuario se conecta al servidor de pasarela 101 a través del dispositivo remoto 119 de comunicaciones del usuario en la etapa 305. Más particularmente, el usuario establece la conexión 123 de comunicaciones desde el dispositivo remoto 119 de comunicaciones del usuario hacia el servicio de presentación 115 alojado en el servidor de pasarela 101.
Tal como apreciarán los expertos ordinarios en la materia, además de iniciar personalmente una conexión con el servidor de pasarela 101 y solicitar datos de los medios de almacenamiento de datos 109, una o más aplicaciones de software que se ejecuten en el dispositivo remoto 119 de comunicaciones del usuario pueden iniciar en nombre del usuario también la conexión 123 con el servicio de presentación 115 alojado en el servidor de pasarela 101. Dependiendo de la finalidad y las necesidades de la aplicación de software particular, la aplicación de software puede iniciar la conexión 123 basándose en un esquema periódico, planificado, o controlado por acontecimientos y realizar una o más solicitudes de datos demandando la recuperación de datos desde o el envío de datos hacia los medios de almacenamiento de datos 109. Este planteamiento libera al usuario de la necesidad de iniciar de forma proactiva todas las conexiones y solicitudes o transferencias de datos y mejora considerablemente la experiencia global del usuario.
En la forma de realización ilustrada en la Figura 1, el dispositivo remoto 119 de comunicaciones del usuario es un dispositivo de comunicaciones inalámbricas que intercambia datos o información de voz a través de una red telefónica 125 de comunicaciones inalámbricas de área extensa. Por ejemplo, el dispositivo remoto 119 de comunicaciones del usuario puede ser un teléfono inalámbrico, o un asistente personal digital (PDA) o un ordenador portátil equipado con una unidad de comunicaciones inalámbricas, tal como una tarjeta PCMCIA por ejemplo la Sierra Wireless AirCard®. No obstante, todavía con otras formas de realización de la invención, el dispositivo remoto 119 de comunicaciones del usuario se puede conectar al servidor de pasarela 101 a través de cualquier conexión adecuada, incluyendo una red de comunicaciones pública tal como Internet. Por ejemplo, el dispositivo remoto 119 de comunicaciones del usuario se puede conectar alternativamente al servidor de pasarela 101 usando una conexión por hilos, tal como una conexión telefónica de "marcación" convencional ó DSL, una conexión de banda ancha de alta velocidad proporcionada por un proveedor de servicios de televisión por cable, o incluso una conexión óptica. Además, el dispositivo remoto 119 de comunicaciones del usuario se puede conectar al servidor de pasarela 101 a través de otro dispositivo de comunicaciones, tal como un quiosco público de Internet. De este modo, en lugar de conectarse al servidor de pasarela 101 a través de la red inalámbrica 125, el dispositivo remoto 119 de comunicaciones del usuario se puede conectar al servidor de pasarela 101 a través de cualquier medio adecuado, incluyendo una red de comunicaciones inalámbricas, una red de comunicaciones por hilos o una red combinada de comunicaciones por hilos e inalámbricas.
De forma similar, la conexión 121 entre el cliente de acceso 103 y el servicio 117 de tiempo real se puede realizar a través de cualquier medio adecuado. En la forma de realización ilustrada, la conexión 121 se establece a través de una red pública de comunicaciones de área extensa, tal como Internet. Con formas de realización alternativas de la invención, la conexión 121 se puede establecer sin embargo a través de, por ejemplo, una red de comunicaciones privada, tal como una red telefónica inalámbrica de comunicaciones, privada. De este modo, la conexión 121 también se puede establecer a través de una red de comunicaciones inalámbricas, una red de comunicaciones por hilos, o una red combinada de comunicaciones por hilos/inalámbricas.
Tal como apreciarán los expertos ordinarios en la materia, se han desarrollado una variedad de técnicas y protocolos de comunicaciones para intercambiar datos entre dispositivos. Por ejemplo, se pueden realizar comunicaciones a través de conexiones de ancho de banda tanto alto como bajo usando protocolos de lenguaje de marcado extensible bien conocidos, tales como el protocolo de Lenguaje de Marcado de Hipertexto (HTML), el Lenguaje de Marcado Extensible (XML) o el Lenguaje de Marcado de Sincronización (SyncML) u otros protocolos centralizados en la mensajería tales como el Protocolo de Oficina de Correos (POP) o el Protocolo de Acceso a Mensajes de Internet (IMAP). De modo similar, se pueden realizar comunicaciones a través de conexiones inalámbricas de ancho de banda inferior (tales como conexiones de teléfonos inalámbricos) usando el protocolo bien conocido de Lenguaje de Marcado Inalámbrico (WML). Para intercambiar datos entre el dispositivo remoto 119 de comunicaciones y el servicio de presentación 115, y entre el cliente de acceso 103 y el servicio 117 de tiempo real, se puede usar cualquier protocolo adecuado, incluyendo cualquiera de estos protocolos conocidos. De este modo, se pueden realizar comunicaciones a través de la conexión 121 entre el cliente de acceso 103 y el servidor de pasarela 101 usando páginas HTML ó XML, mientras que las comunicaciones a través de la conexión 123 entre el dispositivo remoto 119 de comunicaciones del usuario y el servidor de pasarela 101 se pueden realizar usando páginas HTML, XML, SyncML, ó WML, u otros protocolos que incluyen, entre otros, IMAP y POP3. Como los equipos y procedimientos para comunicar datos entre dispositivos usando estos protocolos son bien conocidos en la materia, los mismos no se describirán de forma más detallada en la presente memoria.
Volviendo a continuación a la Figura 3A, el usuario autentica su identidad para el servicio de presentación 115 en la etapa 307. Por ejemplo, el servicio de presentación 115 puede transmitir una o más consultas de autenticación al dispositivo remoto 119 de comunicaciones del usuario. Estas consultas, que pueden estar contenidas en una única página de lenguaje de marcado, pueden pedirle al usuario un nombre de usuario y una contraseña. Como respuesta, el usuario transmite la información de autenticación solicitada de vuelta al servicio de presentación 115. Evidentemente, el dispositivo remoto 119 de comunicaciones del usuario puede proporcionar de forma alternativa o adicional una o más aplicaciones de software para gestionar y presentar datos, que incluyen elementos de interfaz de usuario para recoger, almacenar, y presentar información de autenticación al servicio de presentación 115 sin que sea necesario que el usuario vuelva a introducir manualmente la información de autenticación para cada sesión con el servicio de presentación 115.
Cuando el usuario desea recuperar datos de los medios de almacenamiento de datos 109, el usuario envía una solicitud de los datos deseados a través de la conexión 123 hacia el servicio de presentación 115 en la etapa 309. Por ejemplo, el usuario puede solicitar la información de encabezamiento para los 10 mensajes de correo electrónico más recientes en la cuenta de correo electrónico del usuario en los medios de almacenamiento de datos 109. Esta solicitud se puede realizar usando cualquier técnica adecuada. Por ejemplo, una vez que el dispositivo remoto 119 de comunicaciones del usuario ha establecido la conexión 123 con el servicio de presentación 115, el servicio de presentación 115 puede transmitir páginas WML con peticiones de información hacia el dispositivo remoto 119 de comunicaciones del usuario. Estas páginas pueden contener, por ejemplo, una lista de posible información que puede ser solicitada por el usuario. Después de que el usuario seleccione las peticiones de información correspondientes a la información deseada, las peticiones de información seleccionadas se transmiten de vuelta al servicio de presentación 115 en forma de una solicitud de los datos deseados. Evidentemente, se pueden utilizar todavía otras técnicas para recuperar información deseada de los medios de almacenamiento de datos 109, incluyendo técnicas en las que se recuperan datos automáticamente mediante una aplicación en el dispositivo remoto 119 de comunicaciones sin requerir la intervención del usuario, tal como se ha indicado anteriormente.
En la etapa 311, el servicio de presentación 115 establece una sesión de presentación para la conexión 123 con el dispositivo remoto 119 de comunicaciones del usuario. De este modo, el servicio de presentación 115 asocia todas las comunicaciones posteriores relacionadas con la solicitud de los datos deseados al dispositivo remoto 119 de comunicaciones del usuario. Por ejemplo, la sesión de presentación puede ser una entrada en memoria, tal como una tabla de datos, que asocie el nombre de usuario y la contraseña del mismo a un valor de sesión de presentación. La sesión de presentación también puede identificar una posición en la memoria, memoria caché 1151, en la que se almacenarán los datos deseados tras la recuperación, y una bandera que indique si los datos deseados se han almacenado en la memoria caché 1151. A continuación se describirá de forma más detallada el uso de la sesión de presentación para recuperar datos de los medios de almacenamiento de datos 109 hacia el dispositivo remoto 119 de comunicaciones.
En la etapa 313, el servicio de presentación 115 realiza una comprobación para ver si la información deseada ya ha sido almacenada en la memoria caché 1151. Tal como se describirá de forma más detallada posteriormente, si el servicio de presentación 115 determina que ya ha almacenado en memoria caché la información deseada, entonces, en la etapa 315, el servicio de presentación 115 recupera inmediatamente la información deseada de la memoria caché 1151 y devuelve la información deseada al dispositivo remoto 119 de comunicaciones del usuario. No obstante, cuando la solicitud de los datos deseados se realiza inicialmente al servicio de presentación 115, probablemente los datos deseados todavía no habrán sido almacenados en memoria caché por el servicio de presentación 115.
Por consiguiente, cuando los datos deseados no están en ese momento en la memoria caché 1151, se envía una solicitud de los datos deseados desde el servicio de presentación 115 al servicio 117 de tiempo real en la etapa 317. Como respuesta, el servicio 117 de tiempo real emite una orden a través de la conexión 121 hacia el cliente de acceso 103 en la etapa 319, ordenando al cliente de acceso 103 que recupere la información deseada de los medios de almacenamiento de datos 109. Al producirse la recepción de la orden desde el servicio 117 de tiempo real, el cliente de acceso 103 recupera los datos deseados de los medios de almacenamiento de datos 109 en la etapa 321. A continuación, en la etapa 323, el cliente de acceso 103 devuelve los datos recuperados al servicio 117 de tiempo real, que, a su vez, proporciona los datos recuperados al servicio de presentación 115 en la etapa 325. A continuación, el servicio de presentación 115 almacena los datos recuperados en la memoria caché 1151 en la etapa 327.
En la etapa 329, el servicio de presentación 115 determina si todavía está pendiente la solicitud de los datos desde el dispositivo remoto 119 de comunicaciones del usuario. Es decir, el servicio de presentación 115 determina si el dispositivo remoto 119 de comunicaciones del usuario está manteniendo todavía la conexión 123 en espera de los datos deseados. Si la solicitud todavía está pendiente, a continuación, los datos recuperados son proporcionados al dispositivo remoto 119 de comunicaciones del usuario en la etapa 331.
De este modo, si el servidor de pasarela 101 puede recuperar los datos deseados desde los medios de almacenamiento de datos 109 dentro del tiempo de reposo del dispositivo remoto 119 de comunicaciones del usuario, entonces los datos deseados se pueden proporcionar inmediatamente al usuario. No obstante, en muchas situaciones, el servidor de pasarela 101 no podrá recuperar los datos deseados antes de que se produzca la expiración del tiempo de reposo correspondiente al dispositivo remoto 119 de comunicaciones del usuario, y el dispositivo remoto 119 de comunicaciones del usuario finaliza la conexión 123. Tal como se describirá de forma más detallada posteriormente, el servicio de presentación 115 hace frente a estas situaciones respondiendo al dispositivo remoto 119 de comunicaciones del usuario antes de que se produzca la expiración de su tiempo de reposo.
Más particularmente, si no se han recuperado los datos deseados antes de que el dispositivo remoto 119 de comunicaciones del usuario finalice la conexión 123, entonces el servicio de presentación 115 enviará un mensaje al dispositivo remoto 119 de comunicaciones del usuario ordenando al usuario (o al dispositivo remoto 119 de comunicaciones del usuario) que vuelva a presentar la solicitud de los datos deseados. Esta respuesta se puede repetir hasta que se recuperen los datos deseados desde los medios de almacenamiento de datos 109 y los mismos se almacenen en la memoria caché 1151. Usando la sesión de presentación para asociar estas solicitudes posteriores a la solicitud inicial de los datos deseados, los datos deseados pueden ser transmitidos al dispositivo remoto 119 de comunicaciones del usuario una vez que hayan sido almacenados en la memoria caché 1151. Es decir, los datos deseados almacenados en la memoria 1151 se pueden transmitir al dispositivo remoto 119 de comunicaciones del usuario como respuesta a una solicitud existente de los datos (es decir, a través de la conexión existente 123) o cuando se vuelva a presentar la solicitud al servicio de presentación 115. Por consiguiente, se pueden recuperar datos deseados de los medios de almacenamiento de datos 109 en un esquema basado en tiempo real, con independencia de la disparidad entre el tiempo de reposo del dispositivo remoto 119 de comunicaciones del usuario y el tiempo requerido para obtener los datos deseados de los medios de almacenamiento de datos 109.
Comunicación con el dispositivo remoto de comunicaciones
Tal como se ha indicado previamente, el servicio de presentación 115 gestiona comunicaciones con el dispositivo remoto 119 de comunicaciones del usuario, para garantizar que no se produce una expiración del tiempo límite del dispositivo remoto 119 de comunicaciones del usuario sin que se reciba una respuesta a su solicitud de datos. Las Figuras 4A a 4E ilustran un diagrama de flujo que muestra un método que puede ser utilizado por el servicio de presentación 115, según varias formas de realización de la invención, para comunicarse de forma fiable con el dispositivo remoto 119 de comunicaciones del usuario.
\newpage
Tal como se ha indicado previamente, en la etapa 309 del diagrama de flujo mostrado en las Figuras 3A a 3D, el usuario envía al servicio de presentación 115 una solicitud de datos deseados de los medios de almacenamiento de datos 109. En la etapa 401, el servicio de presentación 115 determina si la solicitud es una solicitud nueva de los datos deseados, o si es otra presentación de una solicitud anterior de los datos deseados. Si la solicitud es una solicitud nueva de los datos deseados, el servicio de presentación 115 crea una sesión de presentación en la etapa 403, y a continuación traslada la solicitud al servicio 117 de tiempo real para recuperar los datos deseados de los medios de almacenamiento de datos 109.
Según varias formas de realización de la invención, el proceso de creación de la sesión de presentación en la etapa 403 incluye designar la memoria caché 1151 que se va a usar para almacenar en memoria caché información referente a la solicitud de los datos deseados desde el dispositivo remoto 119 de comunicaciones del usuario. Tal como apreciarán los expertos ordinarios en la materia, el servicio de presentación 115 puede utilizar cualquier recurso de memoria disponible para el servidor de pasarela 101. No obstante, como los datos solicitados se almacenarán en la memoria caché 1151 para su inmediata transmisión hacia el dispositivo remoto 119 de comunicaciones de usuario, para la memoria caché 1151 se puede usar adecuadamente un recurso de memoria al que se pueda acceder rápidamente para proporcionar los datos solicitados al dispositivo remoto 119 de comunicaciones del usuario. Con varias formas de realización de la invención, la memoria caché 1151 puede o no estar cifrada.
El proceso de crear la sesión de presentación en la etapa 401 incluye además designar información de identificación que identifique la sesión de presentación. A continuación, esta información de identificación se proporciona al servicio 117 de tiempo real con la solicitud de la información deseada. Cuando el servicio 117 de tiempo real devuelve a continuación los datos recuperados desde los medios de almacenamiento de datos 109, proporciona también la información de identificación correspondiente de la sesión de presentación. Usando esta información devuelta de identificación de la sesión de presentación, el servicio de presentación 115 almacena los datos recuperados en la memoria 1151 asociada a la sesión de presentación. Debería apreciarse que, para identificar la sesión de presentación para la solicitud de datos, se puede usar cualquier información de identificación adecuada. Por ejemplo, la información de identificación puede ser un código específico o una contraseña. Alternativamente, con algunas formas de realización de la invención, la información de identificación puede ser la dirección de memoria de la posición de la memoria caché 1151 para la sesión de presentación.
En la etapa 405, el servicio de presentación 115 inicia además un temporizador 1153 para el dispositivo remoto 119 de comunicaciones del usuario, correspondiente a la sesión de presentación. Tal como se describirá de forma más detallada posteriormente, el temporizador 1153 se usará para predecir cuándo se producirá la expiración del tiempo límite del dispositivo remoto 119 de comunicaciones del usuario y se cortará la conexión 123 con el servicio de presentación 115. Además, en la etapa 407, el servicio de presentación 115 determina información de tipo de dispositivo correspondiente al dispositivo 119 que ha solicitado los datos. Es decir, el servicio de presentación 115 determina información sobre el tipo de dispositivo que realiza la solicitud, lo cual permitirá que el servicio de presentación 115 identifique características de funcionamiento del dispositivo remoto 119 de comunicaciones del usuario.
Con algunas implementaciones de la invención, el servicio de presentación 115 puede determinar únicamente una categoría general en la que se puede clasificar el dispositivo remoto 119 de comunicaciones del usuario. Por ejemplo, con algunas formas de realización de la invención, el servicio de presentación 115 puede determinar si el dispositivo remoto 119 de comunicaciones del usuario está utilizando WML, HTML, SyncML, IMAP ó POP o similares para comunicarse. Si el dispositivo remoto 119 de comunicaciones del usuario está usando HTML, el servicio de presentación 115 determina entonces si el dispositivo remoto 119 de comunicaciones del usuario es un ordenador personal o un asistente personal digital (PDA). De este modo, si el usuario está utilizando, por ejemplo, un dispositivo PDAPocket PC® de Toshiba para acceder al servicio de presentación 115, el servicio de presentación 115 puede clasificar ese dispositivo como un dispositivo HTML de asistente personal digital.
No obstante, todavía otras formas de realización de la invención pueden determinar información diferente o más detallada en relación con el dispositivo remoto 119 de comunicaciones del usuario. Por ejemplo, con algunas formas de realización de la invención, el servicio de presentación 115 puede determinar el navegador específico (u otro software de comunicación) que está siendo usado por el dispositivo remoto 119 de comunicaciones del usuario para comunicarse con el servicio de presentación 115, particularmente valores de configuración para ese software de comunicación, o cualquier otra información que podría ser útil para determinar cómo se comunicará el dispositivo remoto 119 de comunicaciones del usuario con el servicio de presentación 115.
Con algunas formas de realización de la invención, esta información de tipo de dispositivo la puede proporcionar convencionalmente el dispositivo remoto 119 de comunicaciones del usuario cuando el mismo inicia la conexión 123. Por ejemplo, si el dispositivo remoto 119 de comunicaciones del usuario envía una solicitud de datos usando una página HTML, esa página puede incluir convencionalmente información que puede ser usada por el servicio de presentación 115 para determinar el tipo de navegador que está utilizando el dispositivo remoto 119 de comunicaciones del usuario para comunicarse con el servicio de presentación 115. No obstante, formas de realización alternativas de la invención pueden utilizar técnicas alternativas para proporcionar la información de tipo de dispositivo al servicio de presentación 115.
Por ejemplo, con algunas implementaciones de la invención, el usuario puede especificar la información de tipo de dispositivo para el dispositivo remoto 119 de comunicaciones del usuario cuando el usuario instala el cliente de acceso 103 en el ordenador 105. De forma alternativa o adicional, el usuario puede especificar la información de tipo de dispositivo usando una página de encuesta o cuestionario (tal como una página HTML) proporcionada al cliente de acceso 103 o al dispositivo remoto 119 de comunicaciones del usuario. Una vez que el usuario ha especificado la información de tipo de dispositivo con la página de cuestionario, el servicio de pasarela 101 puede generar y poner una cookie en el dispositivo remoto 119 de comunicaciones del usuario. Cuando el usuario a continuación utiliza el dispositivo remoto 119 de comunicaciones del usuario para solicitar datos desde el servicio de presentación 115, el servicio de presentación 115 puede solicitar la información de tipo de dispositivo a partir de la cookie que se encuentra en el dispositivo remoto 119 de comunicaciones del usuario como respuesta. Evidentemente, todavía otras técnicas para determinar la información de tipo de dispositivo se pondrán de manifiesto para los expertos ordinarios en la materia, y las mismas se pueden usar con varias formas de realización de la invención.
Una vez que el servicio de presentación 115 ha determinado la información de tipo de dispositivo para el dispositivo remoto 119 de comunicaciones del usuario en la etapa 407, el servicio de presentación 115 utiliza esa información de tipo de dispositivo para determinar las características de comunicación del dispositivo remoto 119 de comunicaciones del usuario en la etapa 409. De entre las diversas características de comunicación que pueden ser identificadas por el servicio de presentación 115, el servicio de presentación 115 determina cuánto esperará el dispositivo remoto 119 de comunicaciones del usuario una respuesta a la solicitud desde el servicio de presentación 115 antes de cortar la conexión 123. Es decir, el servicio de presentación 115 usa la información de tipo de dispositivo correspondiente al dispositivo remoto 119 de comunicaciones del usuario para determinar el tiempo de reposo del dispositivo remoto 119 de comunicaciones del usuario.
Por ejemplo, tal como se ha indicado previamente, con la forma de ilustración ilustrada de la invención, el servicio de presentación 115 puede determinar si el dispositivo remoto 119 de comunicaciones del usuario está usando WML ó HTML para comunicarse y, en caso de que el dispositivo remoto 119 de comunicaciones del usuario esté usando HTML, si el dispositivo remoto 119 de comunicaciones del usuario es un ordenador personal o un asistente personal digital. Si el servicio de presentación 115 determina que el dispositivo 119 de comunicaciones del usuario está usando WML para comunicarse, entonces el dispositivo remoto 119 es probablemente un teléfono inalámbrico que usa una aplicación sencilla de software navegador. Por consiguiente, el servicio de presentación 115 puede determinar que el dispositivo remoto 119 de comunicaciones del usuario únicamente esperará durante un pequeño periodo de tiempo (por ejemplo, 5 segundos) después de presentar la solicitud para recibir una respuesta desde el servicio de presentación 115, antes de cortar la conexión 123. Por otro lado, si el dispositivo remoto 119 de comunicaciones del usuario es un ordenador personal que utiliza HTML para comunicarse, entonces el dispositivo remoto 119 de comunicaciones del usuario está usando probablemente una aplicación sofisticada de software navegador, tal como el Internet Explorer de Microsoft. De este modo, el servicio de presentación 115 puede determinar que el dispositivo remoto 119 de comunicaciones del usuario esperará durante un periodo de tiempo relativamente largo (por ejemplo, 2 minutos) para recibir una respuesta desde el servicio de presentación 115, antes de cortar la conexión.
Diversas formas de realización de la invención pueden utilizar tipos diferentes de información de tipo de dispositivo para determinar las características de las comunicaciones del dispositivo, tal como se ha explicado de forma detallada anteriormente. Por consiguiente, diferentes formas de realización de la invención también pueden determinar tipos diferentes de características de comunicaciones del dispositivo a partir de la información de tipo de dispositivo. Por ejemplo, si el servicio de presentación 115 utiliza información de tipo de dispositivo que identifica únicamente el dispositivo remoto 119 de comunicaciones del usuario como uno de entre tres categorías generales de dispositivos (por ejemplo, un dispositivo WML, un dispositivo de asistente personal digital HTML o un dispositivo de ordenador personal HTML), entonces el servicio de presentación 115 puede identificar de forma correspondiente únicamente uno de entre tres tipos generales de características de comunicaciones del dispositivo. Por ejemplo, puede determinar que todos los dispositivos WML esperarán solamente 5 segundos una respuesta, todos los dispositivos de asistente personal digital HTML esperarán solamente 90 segundos una respuesta, y que todos los dispositivos de ordenador personal HTML esperarán solamente 2 minutos una respuesta, con independencia de la configuración específica de cualquier dispositivo en particular.
No obstante, si el servicio de presentación 115 utiliza información de tipo de dispositivo más detallada, tal como el navegador particular que está siendo usado por el dispositivo remoto 119 de comunicaciones, entonces el servicio de presentación 115 puede utilizar de forma correspondiente información más específica de las características de comunicación del dispositivo. Por ejemplo, el servicio de presentación 115 puede determinar que un dispositivo 119 que use el Internet Explorer de Microsoft, Versión 6.0, esperará durante solamente tres minutos una respuesta desde el servicio de presentación 115 antes de cortar la conexión 123, mientras que un dispositivo que use un navegador Sony-Ericsson para teléfonos GSM inalámbricas esperará durante solamente 45 segundos una respuesta desde el servicio de presentación 115 antes de cortar la conexión 123. Tal como se pondrá de manifiesto para los expertos ordinarios en la materia, el nivel de detalle de la información de características del dispositivo puede depender del nivel de detalle de la información de tipo de dispositivo obtenida por el servicio de presentación 115.
Con varias formas de realización de la invención, el servicio de presentación 115 puede obtener la información de las características del dispositivo a partir de, por ejemplo, una tabla de consulta tal como la tabla 1155 de características de dispositivos. La tabla 1155 se puede llenar usando cualquier técnica convencional. Por ejemplo, las características de los dispositivos en la tabla 1155 se pueden introducir cuando se inicialice el servidor. Alternativamente, el servidor de pasarela 101 puede llenar la tabla 1155 buscando la información apropiada de características de los dispositivos a partir de una fuente remota, tal como, por ejemplo, Internet, para cada tipo nuevo de dispositivo remoto 119 de comunicaciones que sea utilizado por un usuario.
En la forma de realización ilustrada, la tabla 1155 es un componente del servicio de presentación 115, para permitir que el servicio de presentación 115 recupere más rápidamente la información de características de dispositivos. No obstante, formas de realización alternativas de la invención pueden tener la tabla 1155 ubicada en el servicio 117 de tiempo real, una base de datos dependiente accesible de forma directa o indirecta por el servicio de presentación 115, o incluso en el cliente de acceso 103. Todavía otras formas de realización de la invención pueden utilizar otras técnicas para determinar la información de características de dispositivos. Por ejemplo, si el dispositivo remoto 119 de comunicaciones del usuario proporciona una cookie al servicio de presentación 115 con la información de tipo de dispositivo, tal como se ha descrito anteriormente, esta cookie también puede incluir la información de características de dispositivo correspondiente al dispositivo 119. Además, con varias formas de realización de la invención, el uso de la información de dispositivo para determinar la información de características del dispositivo se puede omitir por completo. En su lugar, por ejemplo, con estas formas de realización de la invención, el dispositivo remoto 119 de comunicaciones del usuario puede proporcionar la información apropiada de características del dispositivo directamente al servicio de presentación 115 cuando se realiza una solicitud de datos.
Debería apreciarse también que, además del tiempo de reposo correspondiente al dispositivo remoto 119 de comunicaciones del usuario, la información de características del dispositivo puede incluir otros datos según se desee. Por ejemplo, la información de características de dispositivo puede identificar un formato de datos particular utilizado por el dispositivo remoto 119 de comunicaciones del usuario, una velocidad de transmisión para transmitir los datos recuperados hacia el dispositivo remoto 119 de comunicaciones del usuario, u otra información útil correspondiente al tipo de dispositivo del dispositivo remoto 119 de comunicaciones del usuario.
Volviendo a continuación a la Figura 4B, cuando el servicio de presentación 115 ha determinado las características de dispositivo para el dispositivo remoto 119 de comunicaciones del usuario, el servicio de presentación 115 fija un umbral para el temporizador 1153 en la etapa 411 usando la información determinada de características del dispositivo, correspondiente al dispositivo remoto 119 de comunicaciones del usuario. Más particularmente, el servicio de presentación 115 fija un valor para el temporizador 1153, en el que el servicio de presentación 115 generará y enviará una respuesta a la solicitud de datos del dispositivo remoto 119 de comunicaciones del usuario. El valor de umbral se selecciona para dejarle tiempo al servicio de presentación 115 para responder a la solicitud de datos del dispositivo remoto de comunicaciones del usuario antes de que se produzca la expiración del tiempo límite del dispositivo remoto 119 de comunicaciones del usuario y el mismo corte la conexión 123.
Tal como apreciarán los expertos ordinarios en la materia, el umbral específico fijado para un temporizador 115 se puede predecir basándose en una variedad de factores, que incluyen la cantidad de tiempo necesaria para preparar y enviar una respuesta adecuada. De este modo, si un dispositivo 119 está usando un navegador sofisticado que requiere una respuesta compleja (incluyendo, por ejemplo, gráficos), entonces el umbral se puede fijar para dejar, para una respuesta, más tiempo que cuando el dispositivo remoto 119 de comunicaciones del usuario está usando un navegador sencillo que requiere únicamente una respuesta de texto.
Por ejemplo, si el servicio de presentación 115 ha determinado que el dispositivo remoto 119 de comunicaciones del usuario está usando un navegador sencillo y esperará durante solamente 5 segundos una respuesta antes de cortar la conexión 123, entonces el servicio de presentación 115 puede fijar el umbral para el temporizador 1153 de manera que sea 3 segundos, dejando 2 segundos para generar y enviar el mensaje de respuesta. No obstante, si el servicio de presentación 115 ha determinado que el dispositivo remoto 119 de comunicaciones del usuario está usando un navegador sofisticado y esperará durante dos minutos una respuesta antes de cortar la conexión 123, entonces el servicio de presentación 115 puede fijar el umbral para el temporizador 1153 de manera que sea 1 minuto, 50 segundos, dejando de este modo más tiempo (es decir, 10 segundos) para preparar y enviar una respuesta más compleja antes de que se produzca la expiración del tiempo límite del dispositivo remoto 119 de comunicaciones del usuario y el mismo corte la conexión 123.
Con varias formas de realización de la invención, se pueden tener en cuenta todavía otros factores cuando se determine el valor de umbral para el temporizador 1153, incluyendo, por ejemplo, condiciones actuales del tráfico para la red 125 y el grado de fiabilidad deseada para la conexión 123. Alternativamente, se puede designar un único valor de umbral para cada categoría de tipo de dispositivo. De este modo, por ejemplo, todos los dispositivos 119 de comunicaciones que usen WML pueden tener un primer valor de umbral para el temporizador 1153, todos los dispositivos 119 de comunicaciones que sean dispositivos de asistente personal digital que usen HTML pueden tener un segundo valor de umbral para el temporizador 1153, y todos los dispositivos 119 de comunicaciones que sean ordenadores personales que usen HTML pueden tener un tercer valor de umbral para el temporizador 1153.
Evidentemente, todavía con otras formas de realización de la invención, se puede usar un único periodo de tiempo para determinar el valor de umbral del temporizador para todos los tipos de dispositivos 119 de comunicaciones, con independencia de sus características individuales de comunicación del dispositivo. Por ejemplo, el valor de umbral del temporizador se puede fijar para todos los tipos de dispositivos de manera que el servicio de presentación 115 utilice únicamente un solo periodo de tiempo para todos los dispositivos. Con estas formas de realización de la invención, se puede omitir la determinación tanto de la información de tipo de dispositivo como de la información correspondiente de características de dispositivo.
Debería indicarse también que, aunque las etapas 401 a 411 se han descrito anteriormente de manera que se suceden en un orden específico, otras formas de realización de la invención pueden ordenar estas etapas de cualquier manera deseada. Por ejemplo, algunas formas de realización de la invención pueden fijar el valor de umbral e iniciar el temporizador 1153 antes de retransmitir la solicitud de datos al servicio 117 de tiempo real. Alternativamente, algunas formas de realización de la invención pueden retransmitir la solicitud de datos al servicio 117 de tiempo real antes de determinar el valor de umbral e iniciar el temporizador 1153. Todavía adicionalmente, con algunas formas de realización de la invención, el servicio de presentación 115 puede fijar el valor de umbral para el temporizador 1153 antes de iniciar el temporizador 1153, mientras que, todavía con otras formas de realización de la invención, el temporizador 1153 se puede iniciar antes de que se determine el valor de umbral para el temporizador 1153. Por otra parte, por ejemplo, con algunas formas de realización de la invención, el servicio de presentación 115 puede designar la memoria caché 1151 después de que se haya retransmitido la solicitud de datos hacia el servicio 117 de tiempo real, antes de que se haya retransmitido la solicitud de datos al servicio 117 de tiempo real, antes de que se haya activado el temporizador 1153, o después de que se haya activado el temporizador 1153.
En cualquier caso, una vez que se ha fijado el valor de umbral para el temporizador 1153 y se ha retransmitido la solicitud de datos al servicio 117 de tiempo real, el servicio de presentación 115 monitoriza a continuación el servicio 117 de tiempo real en la etapa 413 en busca de una respuesta que contenga los datos recuperados y la información de identificación que identifique la sesión de presentación correspondiente a la solicitud de los datos recuperados. Si no se recibe ninguna respuesta, entonces, en la etapa 415, el servicio de presentación 115 determina si el temporizador 1153 ha alcanzado su valor de umbral. Si el temporizador 1153 no ha alcanzado su valor de umbral, entonces el servicio de presentación 115 continúa monitorizando el servicio 117 de tiempo real en busca de una respuesta con los datos solicitados. No obstante, si el temporizador 1153 ha alcanzado su valor de umbral, entonces el servicio de presentación 115 envía una respuesta al dispositivo remoto 119 de comunicaciones del usuario en la etapa 417, indicando que los datos deseados todavía no se han recuperado desde los medios de almacenamiento de datos 109.
Más particularmente, cuando el servicio de presentación 115 determina que se ha alcanzado el valor de umbral, formula y envía una respuesta al dispositivo remoto 119 de comunicaciones del usuario indicando que todavía no se han recuperado los datos deseados. Debería apreciarse que las diversas formas de realización de la invención pueden utilizar cualquier tipo adecuado de mensaje de respuesta. Por ejemplo, con algunas formas de realización de la invención, el mensaje de respuesta puede ser una página (tal como una página HTML ó WML) que visualice un mensaje para el usuario exponiendo que todavía no se han recuperado los datos deseados. Con algunas formas de realización de la invención, el mensaje de respuesta puede pedir adicionalmente al usuario que vuelva a presentar manualmente la solicitud de los datos deseados. De este modo, el mensaje de respuesta puede visualizar una invitación para que el usuario vuelva a presentar la solicitud, junto con una petición de orden para volver a presentar la solicitud. Cuando el usuario activa la petición de orden, un código de software asociado en la página de respuesta ordenará al dispositivo remoto 119 de comunicaciones del usuario que vuelva a presentar la solicitud. Dichas operaciones de respuesta automática son bien conocidas, y por lo tanto no se describirán de forma más detallada. No obstante, todavía con otras formas de realización de la invención, el mensaje de respuesta puede incluir simplemente software que ordene al dispositivo remoto 119 de comunicaciones del usuario que vuelva a presentar automáticamente la solicitud de los datos deseados. Con estas formas de realización de la invención, el mensaje de respuesta puede omitir por lo tanto la visualización de un mensaje para el usuario.
Para varias formas de realización de la invención, el mensaje de respuesta incluirá también datos de identificación de la sesión de presentación que identifican la sesión de presentación asociada a la solicitud. Esta información de identificación de la sesión de presentación puede ser la misma información de identificación de la sesión de presentación proporcionada al servicio 117 de tiempo real, o puede ser diferente de la información de identificación de sesión de presentación proporcionada al servicio 117 de tiempo real. Además, aunque la información de sesión de presentación proporcionada al dispositivo remoto 119 de comunicaciones del usuario se puede transmitir adecuadamente con el mensaje de respuesta, también se puede transmitir en una comunicación aparte. Por ejemplo, la identificación de la sesión de presentación se puede proporcionar al dispositivo remoto 119 de comunicaciones del usuario inmediatamente después de que el dispositivo remoto 119 de comunicaciones del usuario haya presentado una solicitud inicial de información deseada.
En cualquier caso, cuando el dispositivo remoto 119 de comunicaciones del usuario vuelve a presentar la solicitud de la información deseada, la solicitud que se ha vuelto a presentar incluye la información de sesión de presentación asociada a la solicitud inicial de los datos deseados. De este modo, cuando el servicio de presentación 115 recibe la solicitud que se ha vuelto a presentar, el servicio de presentación 115 determina que la solicitud se corresponde con una sesión de presentación existente en la etapa 401. A continuación, el servicio de presentación 115 prosigue inmediatamente hacia la etapa 413 para determinar si se han recuperado los datos deseados a partir de los medios de almacenamiento de datos 109 y los mismos se han almacenado en la memoria caché 1151.
Si los datos deseados han sido recuperados y se han almacenado en la memoria caché 1151, a continuación los datos deseados se devuelven inmediatamente al dispositivo remoto 119 de comunicaciones del usuario, tal como se ha indicado anteriormente. No obstante, si los datos deseados no se han almacenado todavía en la memoria caché 1151, entonces se repite el proceso de las etapas 401 y 413 a 417 hasta que se recuperen los datos deseados a partir de los medios de almacenamiento de datos 109, los mismos se almacenen en la memoria caché 1151, y a continuación se proporcionen al dispositivo remoto 119 de comunicaciones del usuario en la etapa 419.
Debería indicarse que, con la forma de realización ilustrada, el servicio de presentación 115 traduce los datos recuperados a un formato que puede ser procesado por el dispositivo remoto 119 de comunicaciones del usuario antes de transmitir los datos recuperados al dispositivo remoto 119 de comunicaciones del usuario. No obstante, debería apreciarse también que esta traducción se puede realizar en cualquier instante de tiempo, por ejemplo, con algunas formas de realización de la invención, los datos recuperados se pueden traducir a un formato apropiado antes de que se almacenen en la memoria caché 1151, mientras que, con otras formas de realización de la invención, los datos recuperados se pueden traducir a un formato apropiado justo antes de que sean transmitidos al dispositivo remoto 119 de comunicaciones del usuario. No obstante, todavía con otras formas de realización de la invención, los datos solicitados pueden ser traducidos de forma alternativa o adicional por el cliente de acceso 103, el servicio 117 de tiempo real, los medios de almacenamiento de datos 109 o incluso el propio dispositivo remoto 119 de comunicaciones del usuario. Todavía adicionalmente, la traducción puede incluso ser realizada mediante una combinación de estos componentes (incluyendo el servicio de presentación 115).
Por lo tanto, el dispositivo remoto 119 de comunicaciones del usuario puede presentar y volver a presentar la solicitud de datos hasta que se recuperen los datos deseados a partir de los medios de almacenamiento de datos 109 por medio del servicio 117 de tiempo real y los mismos se almacenen en la memoria caché 1151. Si se produce un error en la recuperación de los datos deseados, entonces el servicio 117 de tiempo real puede generar un mensaje de error que informe al dispositivo remoto 119 de comunicaciones del usuario de que no se pueden recuperar los datos. Con algunas formas de realización de la invención, este mensaje de error se puede almacenar en la memoria caché 1151 en lugar de los datos deseados. Cuando el dispositivo remoto 119 de comunicaciones del usuario recupera a continuación datos de la memoria caché 1151, recuperará el mensaje de error que informa al usuario de que los datos deseados no se pudieron recuperar satisfactoriamente a partir de los medios de almacenamiento de datos 109. No obstante, todavía otras formas de realización de la invención pueden retransmitir el mensaje de error inmediatamente después de recibir el mensaje de error desde el servicio 117 de tiempo real.
Con algunas formas de realización de la invención, el servicio de presentación 115, el servicio 117 de tiempo real, o ambos pueden realizar una "pre-recuperación" de datos de los medios de almacenamiento de datos 109. De este modo, varias formas de realización de la invención pueden utilizar la heurística para predecir cuántos datos solicitará un usuario de los medios de almacenamiento de datos 109 basándose, por ejemplo, en el patrón previo de recuperación de datos del usuario. Por ejemplo, algunos usuarios recuperarán frecuentemente mensajes de correo electrónico nuevos de su cuenta de correo electrónico. Para un usuario de este tipo, el servicio de presentación 115 (o el servicio 117 de tiempo real) puede solicitar periódicamente de forma independiente todos los mensajes de correo electrónico nuevos para el usuario desde los medios de almacenamiento de datos 109. Por consiguiente, cuando el usuario utiliza el dispositivo remoto 119 de comunicaciones para recuperar sus mensajes nuevos del correo electrónico, esos datos ya estarán almacenados en la memoria caché 1151. No obstante, todavía otros usuarios pueden solicitar solamente de forma ocasional mensajes nuevos de correo electrónico. Para estos usuarios, el servicio de presentación 115 (o el servicio 117 de tiempo real) no puede solicitar de forma independiente mensajes nuevos de correo electrónico desde los medios de almacenamiento de datos 109.
De forma similar, algunos usuarios solicitarán regularmente combinaciones particulares de datos. Por ejemplo, algunos usuarios solicitarán típicamente la recuperación de un mensaje de correo electrónico, y a continuación solicitarán inmediatamente la recuperación de cualquier adjunto a los mensajes de correo electrónico recuperados. Con estos usuarios, el servicio de presentación 115 (o el servicio 117 de tiempo real) puede solicitar independientemente datos de adjuntos con cualquier solicitud para recuperar mensajes nuevos de correo electrónico para el usuario desde los medios de almacenamiento de datos 109. Por consiguiente, cuando a continuación un usuario de este tipo realiza una solicitud para recuperar datos de adjuntos para el mensaje de correo electrónico recuperado después de una solicitud para recuperar un mensaje nuevo de correo electrónico, esos datos de adjuntos ya estarán almacenados en la memoria caché 1151.
Evidentemente, varias formas de realización de la invención pueden utilizar otra heurística en lugar de o además de la heurística referente a la frecuencia de recuperación o el tipo de datos recuperados. Dicha heurística puede incluir, por ejemplo, el nivel de servicio al que está abonado un usuario, el tamaño de los datos típicamente recuperados, o cualquier otra evaluación heurística deseada. Además, de forma adicional a almacenamiento independiente de datos recuperados en la memoria caché 1151, varias formas de realización de la invención también pueden ir más allá y reenviar los datos recuperados independientemente hacia el dispositivo remoto 119 de comunicaciones sin recibir una solicitud expresa de recuperar esos datos.
Comunicación con el cliente de acceso
Tal como se ha indicado anteriormente, el servicio 117 de tiempo real recupera los datos deseados a partir de los medios de almacenamiento de datos 109 a través del cliente de acceso 103. Más particularmente, cuando el servicio 117 de tiempo real recibe una solicitud de datos desde el servicio de presentación 115, retransmite esa solicitud al cliente de acceso 103. Como el cliente de acceso 103 está alojado en el ordenador 105 que tiene acceso a los medios de almacenamiento de datos 109, el cliente de acceso 103 puede mandar al ordenador 105 que recupere los datos deseados a partir de los medios de almacenamiento de datos 109. Cuando el ordenador 105 ha obtenido los datos deseados de los medios de almacenamiento de datos 109, el cliente de acceso 103 devuelve los datos deseados al servicio 117 de tiempo real.
Con algunas formas de realización de la invención, el servicio 117 de tiempo real se puede comunicar con el cliente de acceso 103 usando técnicas de comunicación convencionales disponibles para el ordenador 105, con el fin de establecer de este modo la conexión 121. No obstante, en algunas situaciones, el ordenador 105 estará situado en un entorno protegido por una barrera, tal como el cortafuegos 111 ilustrado en la Figura 1, contra accesos no autorizados. En estas situaciones, la barrera puede evitar muchos tipos de comunicación bidireccional convencional entre el ordenador 105 (y, por lo tanto, el cliente de acceso 103) y el servicio 117 de tiempo real. Con estas formas de realización de la invención, el servicio 117 de tiempo real y el cliente de acceso 103 se pueden comunicar usando cualquier técnica de comunicación adecuada, tal como el uso de una red privada virtual (VPN). No obstante, en algunas situaciones, incluso si la barrera se puede configurar para permitir una comunicación bidireccional convencional entre el ordenador 105 y el servicio 117 de tiempo real, el proceso de reconfiguración de la barrera puede ser oneroso, particularmente si un número elevado de usuarios está utilizando ordenadores diferentes 105 para recuperar datos a partir de un dispositivo remoto de comunicaciones.
Por consiguiente, con varias formas de realización de la invención, el servicio 117 de tiempo real puede utilizar una conexión con el cliente de acceso 103 a través de la red 113 que pasará a través del cortafuegos. Tal como apreciarán los expertos ordinarios en la materia, varios sistemas de cortafuegos permitirán típicamente uno o más puntos de acceso específicos mediante los cuales un ordenador, tal como el ordenador 105, puede recibir datos de fuentes fuera del cortafuegos. Por ejemplo, los cortafuegos convencionales típicamente designan un puerto (identificado en ocasiones como Puerto 80) a través del cual un ordenador puede recibir datos de fuentes externas. El servicio 117 del tiempo real según varias formas de realización de la invención puede usar, por lo tanto, un puerto de acceso de este tipo para utilizar una conexión de comunicaciones bidireccional con el cliente de acceso 103 a través de este tipo de puerto designado.
Usando esta conexión de comunicaciones bidireccional, a la que en lo sucesivo se hará referencia como canal de órdenes, el servicio 117 de tiempo real puede enviar instrucciones al cliente de acceso 103. Más particularmente, el servicio 117 de tiempo real puede enviar instrucciones que ordenen al cliente de acceso 103 que recupere y retransmita información, tal como la información deseada, de vuelta al servicio 117 de tiempo real. Debería observarse también que el servicio 117 de tiempo real puede usar el canal de órdenes unidireccional para ordenar al cliente de acceso 103 que recupere también información desde una ubicación diferente a la fuente 109 de datos. Por ejemplo, un usuario puede desear añadir información, tal como un mensaje nuevo de correo electrónico, a los medios de almacenamiento de datos 109 para su almacenamiento o alguna otra acción. Al recibir los datos nuevos desde el dispositivo remoto 119 de comunicaciones del usuario, el servicio de presentación 115 (a través del servicio 117 de tiempo real) puede ordenar entonces al cliente de acceso 103 que recupere los datos nuevos desde el servicio 117 de tiempo real para su entrega a los medios de almacenamiento de datos 109.
De este modo, con varias formas de realización de la invención, el canal de órdenes se puede usar únicamente para enviar órdenes desde el servidor de pasarela 101 al cliente de acceso 103. Como una orden será típicamente una instrucción para realizar alguna acción (por ejemplo, recuperar encabezamientos para los primeros 10 mensajes en la carpeta de correo electrónico "bandeja de entrada" del usuario, recuperar citas del día en curso del calendario electrónico correspondiente al usuario, realizar una búsqueda del texto "Mike" en la carpeta de correo electrónico "contactos" del usuario, etcétera), las órdenes de forma habitual serán relativamente pequeñas (por ejemplo, menores que 1 kB). Como consecuencia de su tamaño pequeño, en el canal de órdenes se pueden multiplexar múltiples órdenes.
A su vez, el cliente de acceso 103 puede enviar datos asociados a la orden hacia el servicio 117 de tiempo real (o recuperar datos asociados a la orden, desde el servicio 117 de tiempo real) a través de una o más conexiones alternativas, a las que en lo sucesivo se hará referencia de forma conjunta como canales de datos. Por ejemplo, las órdenes pueden incluir una dirección específica a la que se deberían enviar los datos asociados (o desde la cual se deberían recuperar los datos asociados). La orden también puede incluir un parámetro que puede ser usado posteriormente por el cliente de acceso 103 para identificar que su respuesta (o bien envío o bien recuperación de datos) es una respuesta a esa orden específica. Usando esta información, el cliente de acceso 103 puede enviar a continuación datos a la dirección especificada (o recuperar datos de la dirección especificada) a través de un socket diferente del socket usado por el canal de órdenes. De modo similar, el cliente de acceso 103 también puede enviar varias órdenes al servicio 117 de tiempo real. Estas órdenes se pueden referir, por ejemplo, a la autorización de usuarios adicionales para el cliente de acceso 103.
De este modo, una respuesta a una orden desde el servicio 117 de tiempo real no interferirá con la recepción, por parte del cliente de acceso, de órdenes nuevas desde el servicio 117 de tiempo real, o con la transmisión de datos asociados a respuestas a órdenes anteriores. De forma ventajosa, esta disposición mejora el rendimiento permitiendo el establecimiento de canales de datos según sea necesario directamente con el servidor físico que está prestando servicio en ese momento al dispositivo del usuario. El canal de órdenes y los canales de datos proporcionan conjuntamente la conexión 121 que permite una comunicación bidireccional entre el servicio 117 de tiempo real y el cliente de acceso 103 a través de una barrera tal como un cortafuegos.
Por ejemplo, el servicio 117 de tiempo real puede ordenar al cliente de acceso 103 que recupere los datos deseados desde los medios de almacenamiento de datos 109, y a continuación enviar los datos recuperados, junto con la información de identificación de sesión de presentación correspondiente a la solicitud, de vuelta a una dirección específica. La dirección puede ser una dirección de una localización universal de recursos (URL) correspondiente a una localización mantenida por el servicio 117 de tiempo real, permitiendo de este modo que el servicio 117 de tiempo real recupere los datos deseados desde el cliente de acceso 103. Las instrucciones (o una instrucción anterior o posterior) también pueden ordenar al cliente de acceso 103 que realice alguna acción con respecto a los datos nuevos, tal como almacenar los datos nuevos en los medios de almacenamiento de datos 109 o enviar los datos nuevos a otra ubicación.
Tal como se ha indicado previamente, cuando el cliente de acceso 103 establece la conexión persistente 121 con el servicio 117 de tiempo real, el servicio 117 de tiempo real crea una sesión de tiempo real para esa conexión. La sesión de tiempo real puede ser, por ejemplo, un objeto de datos que contenga cualquier dato deseado sobre el usuario y la conexión, tal como el puerto del ordenador 105 a través del cual se establece la conexión 121. Con algunas formas de realización de la invención, la sesión de tiempo real se puede almacenar en el directorio 127. Alternativamente, la sesión de tiempo real se puede almacenar en otra posición de memoria adecuada.
Para varias formas de realización de la invención, se puede utilizar un servicio proxy entre el cliente de acceso 103 y el servicio 117 de tiempo real (por ejemplo, en la red pública 113 de área extensa). Con este tipo de disposición, el servicio proxy puede cerrar la conexión 121 por decisión propia después de una cantidad de tiempo predeterminada sin ningún intercambio de datos a través de la conexión. De forma alternativa o adicional, se podrían producir otros problemas referentes al servicio proxy, provocando que el mismo corte la conexión 121. Por lo tanto, resultaría beneficioso que el cliente de acceso 103 pudiera detectar cuándo está cortada la conexión 121, de manera que el mismo pueda volver a establecer dicha conexión 121. No obstante, las interfaces convencionales de programación de aplicación para comunicaciones de redes, tales como las interfaces convencionales de programación de aplicación para comunicación que usan TCP/IP, no resultan adecuadas típicamente para proporcionar una realimentación de aplicación cuando una conexión de red se cierra repentinamente. Por otra parte, el servicio 117 de tiempo real no sabrá necesariamente que la conexión 121 se ha cortado hasta que, por ejemplo, intente a escribir en el socket a través del cual se estableció la conexión 121.
Por consiguiente, con varios ejemplos de la invención, el servicio 117 de tiempo real puede enviar regularmente mensajes de "latido" ("heartbeat") al cliente de acceso 103. Estos latidos pueden ser, por ejemplo, pequeños grupos de paquetes de datos que se pueden enviar para mantener continuamente la conexión unidireccional entre el servicio 117 de tiempo real y el cliente de acceso 103. Mediante el intento periódico de enviar estos latidos, el servicio 117 de tiempo real puede detectar inmediatamente cuándo se ha cortado la conexión 121. De este modo, manteniendo una conexión continua entre el servicio 117 de tiempo real y el cliente de acceso 103, el servicio 117 de tiempo real estará preparado para procesar inmediatamente solicitudes de datos deseados desde el dispositivo remoto 119 de comunicaciones del usuario sin tener que iniciar un canal nuevo de órdenes para cada solicitud nueva.
Con algunas formas de realización de la invención, el latido puede incluir datos que le indiquen al cliente de acceso 103 cuándo se debería recibir el siguiente latido desde el servicio 117 de tiempo real. Si, a continuación, el cliente de acceso 103 no recibe el latido siguiente dentro del periodo de tiempo indicado (y cualquier periodo adicional de seguridad, según se desee), entonces el cliente de acceso 103 puede concluir que la conexión 121 se ha cortado y necesita volver a establecerse. Además, como el latido es generado por el servicio 117 de tiempo real, el valor de tiempo que indica la velocidad del latido se puede controlar por medio del servicio 117 de tiempo real. Más particularmente, los datos de velocidad correspondientes a los latidos se pueden ajustar por medio del servicio 117 de tiempo real basándose, por ejemplo, en la cantidad de tráfico que está siendo gestionada por el servidor de pasarela 101. De este modo, el latido es planificable de forma dinámica.
Para algunas implementaciones de la invención, la velocidad planificada del latido puede ser la misma para cada conexión 121. No obstante, formas de realización alternativas de la invención pueden tener dos intervalos independientes para latidos. Más particularmente, algunas formas de realización de la invención pueden tener una velocidad de latidos para sesiones de presentación activas en las que un usuario está usando actualmente un dispositivo 119 de comunicaciones para comunicarse con el servidor de pasarela 101, y otra velocidad de latidos para sesiones inactivas. Esta disposición puede proporcionar un tiempo menor de detección de errores de conexión para sesiones en las que un usuario percibirá el momento en el que la conexión 121 se corta erróneamente, y un tiempo de detección de errores de conexión menos exigente en cuanto a recursos en el que un usuario no percibirá inmediatamente el momento en el que se ha cortado erróneamente la conexión 121.
Uso múltiple del cliente de acceso
Aunque el uso del cliente de acceso 103 se ha descrito anteriormente en referencia a un cliente único 103 de acceso que accede a los medios de almacenamiento de datos 109, varias formas de realización de la invención pueden tener múltiples clientes 103 de acceso que se comuniquen con el servicio de pasarela 101. Es decir, cada uno de una pluralidad de usuarios puede mantener una comunicación de cliente de acceso 103 con el servidor de pasarela 101. Por
otra parte, un usuario puede utilizar múltiples clientes 103 de acceso para comunicarse con el servidor de pasarela 101.
Adicionalmente, varias formas de realización de la invención pueden permitir que un único cliente de acceso 103 preste servicio a más de un usuario. Por ejemplo, con estas formas de realización, cuando un usuario instala el cliente de acceso 103 en el ordenador 105, el cliente de acceso 103 puede realizar una consulta sobre si el usuario desea delegar el acceso remoto a los datos del usuario de los medios de almacenamiento de datos 109 a través de otro usuario (es decir, otro usuario que utilice un cliente de acceso 103 diferente). Si al usuario le agradase la capacidad de acceder a datos deseados de los medios de almacenamiento de datos 109 a través del cliente de acceso 103 de otro usuario, entonces el cliente de acceso 103 puede facilitar esa disposición.
Por ejemplo, si el cliente de acceso 103 está siendo utilizado en un entorno de red corporativa tal como se ilustra en la Figura 1, el cliente de acceso 103 puede proporcionar al usuario una lista de otras personas que tienen acceso a los medios de almacenamiento de datos 109, corporativos (por ejemplo, todos los que aparezcan en un servidor corporativo de correo electrónico). Cuando el usuario selecciona otra persona de la lista, el cliente de acceso 103 puede disponer, por ejemplo, que la persona seleccionada reciba un correo electrónico informándole sobre su selección (junto con instrucciones sobre cómo obtener e instalar un cliente de acceso 103, si fuera necesario). El cliente de acceso 103 del usuario también puede llevar un mensaje cifrado a la persona seleccionada, o bien por correo electrónico o bien mediante otra técnica de transmisión. El mensaje cifrado contiene la información necesaria para obtener el acceso del usuario a los medios de almacenamiento de datos 109. De este modo, si la persona seleccionada está de acuerdo en proporcionar acceso a los medios de almacenamiento de datos 109 para el usuario, el cliente de acceso 103 de la persona seleccionada puede utilizar la información de acceso contenida en el mensaje cifrado para obtener el acceso del usuario a los medios de almacenamiento de datos 109.
Ventajosamente, con algunas de las formas de realización de la invención descritas anteriormente que utilizan un canal unidireccional de órdenes, el canal unidireccional de órdenes puede prestar servicio a múltiples usuarios del cliente de acceso 103. Más particularmente, a través del canal único de órdenes se pueden multiplexar órdenes correspondientes a diferentes usuarios. Con esta disposición, cuando el cliente de acceso 103 establece la conexión 121 con el servicio 117 de tiempo real, identifica los usuarios a los que está prestando servicio para el servicio 117 de tiempo real.
Uso de múltiples servidores de pasarela
Aunque la exposición anterior ha descrito el uso de solamente un único servidor de pasarela 101 para facilitar su comprensión, muchas implementaciones de la invención utilizarían múltiples servidores 101 de pasarela, tal como se muestra en la Figura 5, tanto para incrementar la capacidad como la redundancia. Por ejemplo, algunas formas de realización de la invención pueden utilizar servidores 101 de pasarela en una arquitectura N + 1, incluyendo tantos servidores 101 de pasarela como sean necesarios para una capacidad deseada, más un servidor adicional 101 de pasarela para la redundancia.
Un sistema convencional de servicio Web de N niveles puede tener típicamente entre uno y cuatro niveles, dependiendo de la finalidad del servicio. Por ejemplo, un sistema convencional de servicio Web puede incluir un servidor Web de primer nivel, un servidor de aplicaciones de segundo nivel, y a continuación un servidor de base de datos de tercer nivel. En general, un usuario puede acceder a un sistema de servicio Web de este tipo presentando al nivel del servidor Web una solicitud, que a continuación fluye hacia el servidor de aplicaciones, y al servidor de base de datos de una manera vertical. Este tipo de red convencional incluirá frecuentemente uno o más equilibradores de carga que encaminan solicitudes entrantes sobre la base del uso actual de cada servidor (es decir, el equilibrador de carga encaminará solicitudes entrantes a servidores que estén menos ocupados).
Sin embargo, con varias formas de realización de la invención, cada usuario tiene por lo menos un cliente de acceso 103 instalado en un ordenador 105, que a su vez establece una conexión persistente con un servidor de pasarela 101. De este modo, cuando un usuario utiliza un dispositivo remoto 119 de comunicaciones para transmitir una solicitud al sistema 100' de recuperación de datos, resultaría más eficaz encaminar específicamente la solicitud hacia el servidor de pasarela 101 que ya ha establecido una conexión persistente 121 con el cliente de acceso 103 del usuario.
Ventajosamente, varias implementaciones de la invención pueden emparejar de forma conveniente una solicitud entrante de un usuario para enviar o recuperar datos con el cliente de acceso 103 del usuario. Tal como se ha indicado anteriormente, cuando un cliente de acceso 103 se conecta con un servicio 117 de tiempo real, el servidor 117 de tiempo real crea una sesión de tiempo real para esa conexión. Aunque una sesión de tiempo real existe para una conexión persistente 121, puede existir a través de múltiples solicitudes de dispositivos remotos 119 de comunicaciones. Es decir, cuando el servicio de presentación 115 recibe una solicitud desde un dispositivo remoto 119 de comunicaciones, se puede establecer una correspondencia de la misma a través de una sesión de tiempo real con el servicio 117 de tiempo real manteniendo la conexión 121 con el cliente de acceso 103 del usuario. Por otra parte, cada vez que la solicitud es recibida posteriormente desde el dispositivo remoto 119 de comunicaciones, se puede volver a establecer nuevamente una correspondencia de la misma con el servicio correcto 117 de tiempo real a través de la sesión de tiempo real. De este modo, estas formas de realización de la invención proporcionan un proceso de colocación conjunta para colocar conjuntamente una sesión de presentación de un usuario, mantenida por un servicio de presentación 115, con la sesión de tiempo real del usuario correspondiente a la conexión persistente establecida entre el cliente de acceso 103 del usuario y un servicio 117 de tiempo real.
Haciendo referencia a continuación a la Figura 5, con la colocación conjunta, cuando se activa un cliente 103A de acceso, el mismo negocia una conexión segura con un servicio 117 de tiempo real proporcionado por un servidor de pasarela (por ejemplo, el servicio 117A de tiempo real proporcionado por el servidor 101A de pasarela). En el proceso de establecimiento de esta conexión, en el directorio 127 se almacena información referente a la conexión. Por ejemplo, cuando un usuario USUARIO1 utiliza el cliente 103A de acceso, el servicio 117 de tiempo real puede observar que el USUARIO1 ha establecido una conexión desde el cliente 103A de acceso al servidor 101A de pasarela (o al servicio 117A de tiempo real). Debería observarse que, con algunas formas de realización de la invención, un usuario puede delegar su acceso a unos medios de almacenamiento de datos (por ejemplo, los medios 109A de almacenamiento de datos de la Figura 5) en múltiples clientes 103 de acceso tal como se ha descrito anteriormente. Si, por lo tanto, un usuario está asociado a conexiones con múltiples servicios 117 de tiempo real, entonces se puede utilizar una heurística adecuada para seleccionar una conexión con un servidor de pasarela 101 que sea preferible con respecto a los otros con la finalidad de colocar conjuntamente una sesión de presentación con una sesión de tiempo real.
Cuando, posteriormente, un usuario utiliza un dispositivo remoto 119 de comunicaciones para, por ejemplo, presentar una solicitud de datos desde los medios de almacenamiento de datos 109, el servicio de presentación 115 que recibe la solicitud inicialmente autenticará la misma, tal como se ha descrito de forma detallada anteriormente. Por ejemplo, tal como se ha indicado previamente, el servicio de presentación 115 puede proporcionar al dispositivo remoto 119 de comunicaciones del usuario una interfaz de usuario de autenticación que solicite el nombre, la contraseña, etcétera, del usuario. Una vez que el dispositivo remoto 119 de comunicaciones (es decir, el usuario) ha sido autenticado, el servicio de presentación 115 realiza una consulta a su servicio 117 de tiempo real asociado, que a su vez consulta el directorio 127 en relación con el servidor de pasarela 101 (o, alternativamente, el servicio 117 de tiempo real) correspondiente al usuario. Más específicamente, el servicio 117 de tiempo real puede consultar al directorio 127 si el usuario ha establecido una conexión inexistente 121 entre un cliente de acceso 103 y un servidor de pasarela 101, y si existe actualmente una conexión 121 de este tipo, qué servidor de pasarela 101 está manteniendo la conexión 121.
Si, por ejemplo, una solicitud de datos del USUARIO1 se encamina inicialmente hacia el servidor 101B de pasarela, mediante una consulta al directorio 127, el servidor 101B de pasarela puede determinar que el cliente de acceso 103 al usuario está conectado actualmente al servidor 101A de pasarela (es decir, al servicio 117A de tiempo real). Sobre la base de esta información, el servicio 115B de presentación genera una respuesta de redireccionamiento para el dispositivo remoto 119 de comunicaciones. La respuesta de redireccionamiento puede ser específica del dispositivo, pero puede que no requiera ningún software especial. En su lugar, la respuesta puede ser, por ejemplo, una orden convencional de redireccionamiento HTML, WML ó HTML. A continuación, la respuesta de redireccionamiento provoca que el dispositivo remoto 119 de comunicaciones emita sus solicitudes posteriores de los datos deseados específicamente al servidor 101A de pasarela. Más particularmente, la respuesta de redireccionamiento puede proporcionar, por ejemplo, al dispositivo remoto 119 de comunicaciones instrucciones de software, tales como una "cookie" HTTP. Estas instrucciones de software contienen información de encaminamiento (o, alternativamente, son ellas mismas información de encaminamiento) que será incluida en presentaciones posteriores de la solicitud de los datos deseados.
Por consiguiente, cuando el dispositivo remoto 119 de comunicaciones vuelve a presentar una solicitud de información deseada, la información de encaminamiento se puede usar para encaminar la solicitud directamente hacia el servicio de presentación 115 asociado al servicio 117 de tiempo real que mantiene una conexión con el cliente de acceso 103 del usuario. Por ejemplo, tal como se muestra en la Figura 5, un sistema 100' de recuperación de datos según varias implementaciones de la invención puede utilizar uno o más equilibradores 501 de carga. Estos equilibradores 501 de carga encaminan tanto solicitudes de recuperación de datos entrantes como solicitudes de presentación de datos entrantes desde dispositivos remotos 119 de comunicación hacia un servidor de pasarela 101. Con estas formas de realización, cuando un equilibrador de carga recibe una solicitud, en primer lugar realiza la comprobación para determinar si la solicitud contiene información de encaminamiento, tal como una cookie según se ha descrito anteriormente. Si la solicitud no contiene información de encaminamiento, entonces el equilibrador 501 de carga asigna la solicitud a un servidor de pasarela 101 basándose en la distribución actual de la carga de todos los servidores 101 de pasarela, tal como es sabido en la materia. No obstante, si el equilibrador 501 de carga determina que una solicitud sí que contiene información de encaminamiento, entonces encamina la solicitud hacia la solicitud 101 de pasarela identificado en la información de encaminamiento.
Tal como apreciarán los expertos ordinarios en la materia, con esta disposición cada equilibrador 501 de carga puede tener una dirección de red pública, tal como una dirección pública de protocolo de internet (IP). A continuación, los servidores 101 de pasarela por detrás de los equilibradores 501 de carga pueden tener direcciones de red virtuales a las que no se puede acceder directamente desde fuera de la red. Para estas implementaciones de la invención, la información de encaminamiento proporcionará la dirección de red virtual para el servidor de pasarela 101 deseado, y, a continuación, el equilibrador 501 de carga que recibe una solicitud que contiene la información de encaminamiento puede establecer una correspondencia de la solicitud con el servidor de pasarela 101 identificado.
Con varios ejemplos de la invención, la respuesta de redireccionamiento también puede contener información adicional de "transferencia" que se insertará en las solicitudes posteriores de los datos deseados. Cuando a continuación el servidor de pasarela 101 encaminado recibe una solicitud posterior de los datos deseados, puede determinar, a partir de la información de transferencia, que la solicitud es una transferencia desde otro servidor de pasarela 101. La información de transferencia puede contener también una indicación de tiempo, de manera que el servidor de pasarela 101 encaminado puede confirmar que la transferencia fue reciente. Usando esta información, asociará la solicitud a una sesión de presentación en el servidor de pasarela 101 inicial. De este modo, el servidor de pasarela 101 encaminado puede colocar conjuntamente la sesión de presentación del servicio de presentación 115 del servidor de pasarela 101 inicial con su propio servicio de presentación 115, de tal manera que su propio servicio de presentación 115 devuelve los datos deseados al dispositivo remoto 119 de comunicaciones cuando los mismos son recuperados.
Según todavía otras formas de realización de la invención, el servidor de pasarela 101 encaminado puede usar la información de transferencia para utilizar la autenticación realizada por el servidor de pasarela 101 inicial, evitando de este modo la necesidad de que el usuario se vuelva a autenticar. Por consiguiente, para estas formas de realización, la información de transferencia se puede cifrar, con el fin de evitar que usuarios no autorizados creen una información de transferencia falsa para evitar la autenticación. Evidentemente, la información de transferencia se puede cifrar incluso si el servidor de pasarela 101 encaminado no utiliza la autenticación realizada por el servidor de pasarela 101 inicial. Además, debería indicarse que, con varias formas de realización de la invención, el proceso de colocación conjunta lo pueden realizar alternativamente los equilibradores 501 de carga, aunque esto puede requerir un código personalizado.
De este modo, en referencia nuevamente al ejemplo anterior para el USUARIO1, después de que se encamine inicialmente hacia el servidor 101B de pasarela una solicitud de datos desde el USUARIO1, el servidor 101B de pasarela puede determinar, a partir de una consulta al directorio 127, que el cliente de acceso 103 del usuario está conectado actualmente al servidor 101A de pasarela (es decir, al servicio 117A de tiempo real). Por consiguiente, el servidor 101B de pasarela proporciona una respuesta de redireccionamiento al dispositivo remoto 119A de comunicaciones con información de transferencia. La información de transferencia incluirá información de encaminamiento, tal como, por ejemplo, una dirección de red virtual, para el servicio 101A de pasarela. La información de transferencia también se puede cifrar, y puede incluir una indicación de tiempo y, por ejemplo, una confirmación de la autenticación del USUARIO1. Cuando el USUARIO1 vuelve a presentar solicitudes de la información deseada, las solicitudes nuevas incluirán la información de transferencia. Por consiguiente, cuando el equilibrador 501A de carga recibe las solicitudes que se han vuelto a presentar, el mismo encaminará las solicitudes hacia el servidor 101A de pasarela para su
gestión.
Tal como apreciarán los expertos ordinarios en la materia, pueden producirse algunas situaciones en las que este proceso de colocación conjunta no se puede utilizar. Por ejemplo, un usuario puede utilizar inicialmente un primer cliente de acceso 103 para recuperar datos. Si a continuación ese primer cliente de acceso 103 falla antes de que los datos sean recuperados, puede que se obligue al usuario a utilizar un segundo cliente de acceso 103 delegado para recuperar la información. En este escenario, no resultaría deseable reencaminar solicitudes posteriores hacia otro servidor de pasarela 101, puesto que el servidor de pasarela 101 correspondiente al primer cliente de acceso 103 ya puede tener parte o la totalidad de los datos solicitados en la memoria caché 1151. Además, la colocación conjunta puede no ser deseable cuando un usuario se registra por primera vez en el sistema de recuperación de datos con el ordenador 105, pero no tiene instalado todavía un cliente de acceso 103.
Debería apreciarse también que, con diferentes formas de realización de la invención, un servicio localizador independiente puede realizar una o más de las funciones de colocación conjunta en lugar del servicio de presentación 115. Por ejemplo, con algunas formas de realización de la invención, un servicio localizador puede realizar una consulta al directorio 127 para determinar el servidor de pasarela 101 al cual está conectado actualmente el cliente de acceso 103 del usuario, y a continuación generar una respuesta de redireccionamiento correspondiente para el dispositivo remoto 119 de comunicaciones.
Evidentemente, varias formas de realización de la invención pueden utilizar de forma alternativa o adicional procedimientos convencionales de llamadas remotas para asociar una sesión de presentación mantenida por un servicio de presentación 115 en un servidor de pasarela 101 a una conexión 121 mantenida por un servicio 117 de tiempo real en un servidor de pasarela 101 diferente. Dichos procedimientos de llamada remota se pueden utilizar, por ejemplo, en lugar del proceso de colocación conjunta descrito anteriormente, o si, por alguna razón, falla el proceso de colocación conjunta.
Comunicación segura entre el cliente de acceso y el servidor de tiempo real
Para establecer una conexión segura con un ordenador, típicamente un navegador usará un protocolo de cifrado, tal como el Protocolo Seguro de Transferencia de Hipertexto, que utiliza la técnica de cifrado de la Capa de Conexión Segura (SSL). Con este protocolo, se preinstalan certificados de clave de cifrado, y, durante un proceso de "señalización de entrada en contacto" ("handshake"), se usan una clave pública y claves privadas para negociar una clave de sesión para la conexión. Con un una señalización de entrada en contacto SSL, un tercero no puede determinar la clave de sesión, ni siquiera si se intercepta la totalidad de los datos intercambiados. No obstante, este tipo de protocolo requiere una gran cantidad de tara de recursos para comenzar, y requiere el mantenimiento de una gran cantidad de tara de recursos. Por otra parte, con varios ejemplos de la invención, el servicio de presentación 115 se puede implementar usando un servidor Web convencional, aunque el servicio 117 de tiempo real se puede implementar usando un tipo diferente de servidor. Con esta disposición, el servicio 117 de tiempo real puede usar comunicaciones HTTP y/o HTTPS, pero únicamente para entregar mensajes a través de cortafuegos (por ejemplo, para solicitudes al Puerto 80, que convencionalmente se hacen pasar por cortafuegos).
Por consiguiente, resultaría beneficioso permitir el cliente de acceso 103 y el servicio 117 de tiempo real sin mantener una sesión SSL. De forma ventajosa, varias formas de realización de la invención permiten que el cliente de acceso 103 se comunique con el servicio 117 de tiempo real sin tener que mantener una sesión SSL. Según estas formas de realización, los equilibradores 501 de carga sirven también como terminadores de protocolo de cifrado además de equilibradores de carga. Es decir, el equilibrador de carga puede tener software o hardware SSL (por ejemplo, tarjetas aceleradoras SSL) que gestionen muy rápidamente las comunicaciones SSL. Cuando el equilibrador de carga traslada una comunicación a un servidor de pasarela 101, la comunicación se descifra por lo tanto hacia un formato HTTP regular (es decir, el equilibrador 501 de carga descifra la comunicación antes de trasladarla al servidor de pasarela 101). Estos equilibradores de carga especializados son conocidos en la técnica y se pueden obtener de una variedad de fuentes, y por lo tanto no se describirán de forma más detallada.
Cuando el cliente de acceso 103 intenta establecer una conexión con el servicio 117 de tiempo real, no se comunica directamente con el servicio 117 de tiempo real. En su lugar, el cliente de acceso 103 inicialmente transmite un mensaje cifrado, tal como un mensaje HTTPS, a través de un equilibrador 501 de carga hacia un servidor 115 de presentación. El mensaje HTTPS es recibido en el equilibrador 501 de carga, que descifra el mensaje y lo encamina a un servicio de presentación 115 en forma de un mensaje HTTP. Más particularmente, el equilibrador 501 de carga encamina la solicitud hacia el servicio de presentación 115 de un servidor de pasarela 101 según su algoritmo de equilibrado (por ejemplo, al servidor de pasarela 101 que esté menos ocupado). A continuación, el servicio de presentación 115 realiza una llamada al servicio 117 de tiempo real para informar de que el cliente de acceso 103 estará proporcionando en poco tiempo una solicitud para establecer una conexión.
Como respuesta, el servicio 117 de tiempo real crea una entrada en una lista de conexiones pendientes (por ejemplo, una tabla de clientes 103 de acceso que pronto estarán conectándose al servicio 117 de tiempo real). Como respuesta, se genera una clave de cifrado de sesión única (por ejemplo, una clave de 128 bits), que no está relacionada con la comunicación SSL inicial entre el cliente de acceso 103 y el equilibrador 501 de carga. Para generar la clave de cifrado se puede usar cualquier algoritmo de cifrado deseado, tal como el RC4. Por lo tanto, la entrada en la tabla incluirá la identidad del cliente de acceso 103, una identificación de sesión pública y una clave de cifrado privada.
A continuación, el servicio de presentación 115 envía una respuesta HTTP que contiene la dirección (tal como una dirección de localización universal de recursos (URL)) correspondiente al servicio 117 de tiempo real al que se debería conectar el cliente de acceso 103. La respuesta incluye además la identificación de sesión pública y la clave de cifrado privada. A continuación, el cliente de acceso 103 puede transmitir un mensaje al servicio 117 de tiempo real usando la dirección (por ejemplo, usando un URL de la forma http://www.gateway.com/real-timeserver IDsesión=xxxxxx). Usando esta disposición, el mensaje enviado desde el cliente de acceso 103 al servicio 117 de tiempo real puede ser un mensaje HTTP no cifrado, pero los datos en el mensaje se pueden cifrar usando la clave de cifrado privada. A continuación, el servicio 117 de tiempo real puede usar la identificación de sesión en el mensaje para localizar la entrada apropiada en la tabla con la clave de cifrado privada correspondiente. A continuación, el servicio 117 de tiempo real descifrará el contenido del mensaje con la clave de cifrado privada.
De este modo, el cliente de acceso 103 y el servicio 117 de tiempo real se pueden comunicar sin mantener una sesión de cifrado. En su lugar, el cliente de acceso 103 y el servicio 117 de tiempo real pueden usar la identificación de sesión pública y la clave de cifrado privada para comunicarse de forma segura. Por otra parte, mediante la transferencia de la conexión directamente al servicio 117 de tiempo real, estas formas de realización de la invención pueden evitar el maximizar el límite del equilibrador 501 de carga. Evidentemente, todavía con otras formas de realización de la invención, el cliente de acceso 103 y el servicio 117 de tiempo real se pueden comunicar de forma segura mientras mantienen una sesión de cifrado (tal como una sesión de cifrado SSL), aunque también pueden hacer que los datos intercambiados a través de la conexión segura se cifren por separado. Es decir, la descripción de los datos a través de la conexión segura, tal como se ha descrito de forma detallada anteriormente, puede usar información de cifrado diferente a la información de cifrado usada para mantener la conexión segura.

Claims (35)

1. Servidor de pasarela (101), que comprende:
un servicio de presentación (115) dispuesto para recibir una solicitud de datos desde un dispositivo remoto (119) de comunicaciones de un usuario, solicitando la solicitud de datos la recepción de datos desde unos medios de almacenamiento de datos (109); y
un servicio (117) de tiempo real dispuesto para retransmitir la solicitud de datos desde el servicio de presentación (115) a un cliente de acceso (103) asociado a los medios de almacenamiento de datos (109),
en el que el servidor de pasarela (101) está dispuesto para establecer, entre el servicio de presentación (115) y el dispositivo remoto (119) de comunicaciones del usuario, una sesión de presentación correspondiente a la solicitud de datos del dispositivo remoto (119) de comunicaciones del usuario,
en el que el servidor de pasarela (101) está dispuesto para transmitir datos de identificación de sesión de la presentación al dispositivo remoto (119) de comunicaciones del usuario antes de que los datos solicitados hayan sido recibidos por el servicio de presentación (115) y
en el que el servicio de presentación (115) está dispuesto para:
activar un temporizador al producirse la recepción de la solicitud de datos;
cuando el temporizador alcanza un valor de umbral, determinar si los datos solicitados en la solicitud de datos han sido recibidos después de haber sido recuperados desde los medios de almacenamiento de datos; y
si se han recibido los datos solicitados, reenviar los datos solicitados al dispositivo remoto (119) de comunicaciones del usuario, y
si no se han recibido los datos solicitados, reenviar un mensaje al dispositivo remoto (119) de comunicaciones del usuario ordenando al dispositivo remoto (119) de comunicaciones del usuario que vuelva a presentar la solicitud de datos.
2. Servidor de pasarela (101) según la reivindicación 1, en el que el servicio de presentación (115) incluye además unas características (1155) de dispositivos, correspondientes al dispositivo remoto (119) de comunicaciones del usuario, y el tiempo de umbral se determina basándose en las características (1155) del dispositivo.
3. Servidor de pasarela (101) según la reivindicación 1 ó la reivindicación 2, en el que
el servicio (117) de tiempo real está dispuesto para recibir unos datos solicitados en una solicitud de datos, y el servicio de tiempo real está dispuesto para retransmitir los datos recibidos al servicio de presentación (115); y
el servicio de presentación (115) está dispuesto para reenviar los datos recibidos al dispositivo remoto (119) de comunicaciones del usuario.
4. Servidor de pasarela (101) según la reivindicación 3, en el que el servicio de presentación (115) incluye además una memoria caché para almacenar los datos recibidos.
5. Servidor de pasarela (101) según la reivindicación 3 ó la reivindicación 4, en el que el servicio de presentación está dispuesto para asociar dicha solicitud de datos, que se ha vuelto a presentar, a la solicitud de datos inicialmente recibida desde el dispositivo remoto (119) de comunicaciones del usuario usando los datos de identificación de sesión de presentación transmitidos al dispositivo remoto de comunicaciones del usuario, mediante lo cual se reenvían los datos recibidos al mismo.
6. Servidor de pasarela (101) según cualquiera de las reivindicaciones anteriores, que incluye además un directorio para ser usado en la identificación de una conexión entre uno o más clientes (103) de acceso y el servicio (117) de tiempo real.
7. Servidor de pasarela (101) según cualquiera de las reivindicaciones anteriores, en el que los medios de almacenamiento de datos incluyen una base de datos, y el servicio (117) de tiempo real está dispuesto para retransmitir las solicitudes de datos desde el servicio de presentación (115) a un cliente de acceso (103) asociado a la base de datos.
8. Servidor de pasarela (101) según cualquiera de las reivindicaciones anteriores, en el que los medios de almacenamiento de datos incluyen un dispositivo servidor que proporciona servicios a uno o más dispositivos de cliente, y el servicio (117) de tiempo real está dispuesto para retransmitir las solicitudes de datos desde el servicio de presentación (115) a un cliente de acceso (103) asociado al dispositivo servidor.
9. Servidor de pasarela (101) según cualquiera de las reivindicaciones anteriores, en el que el servidor de pasarela (101) está dispuesto para seleccionar unos medios de almacenamiento de datos de entre el grupo constituido por: un servidor Microsoft Exchange, un servidor Lotus Domino, unos medios de almacenamiento de correo IMAP, unos medios de almacenamiento de correo POP3, y un sistema de archivos NTFS.
10. Servidor de pasarela (101) según cualquiera de las reivindicaciones anteriores, en el que el servicio de presentación (115) está dispuesto para recibir las solicitudes de datos desde un dispositivo remoto (119) de comunicaciones de un usuario a través de una red inalámbrica.
11. Servidor de pasarela (101) según cualquiera de las reivindicaciones anteriores, en el que una temporización de las comunicaciones entre el servicio (117) de tiempo real y el cliente de acceso (103) es independiente de una temporización de comunicaciones entre el servicio de presentación (115) y el dispositivo remoto (119) de comunicaciones del usuario.
12. Servidor de pasarela (101) según cualquiera de las reivindicaciones anteriores, que comprende además un directorio que almacena una entrada correspondiente al dispositivo remoto (119) de comunicaciones del usuario y una conexión entre el servicio (117) de tiempo real y el cliente de acceso (103), identificando la entrada tanto al usuario como al servicio (117) de tiempo real conectado al cliente de acceso (103).
13. Servidor de pasarela (101) según cualquiera de las reivindicaciones anteriores, en el que el servidor de pasarela (101) está dispuesto para proporcionar acceso a datos de correo electrónico, datos de calendario y datos de directorio.
14. Servidor de pasarela (101) según cualquiera de las reivindicaciones anteriores, en el que los medios de almacenamiento de datos residen detrás de un cortafuegos corporativo (111), y el servicio (117) de tiempo real está dispuesto para retransmitir las solicitudes de datos desde el servicio de presentación (115) hacia la base de datos a través del cortafuegos corporativo (111).
15. Servidor de pasarela (101) según cualquiera de las reivindicaciones anteriores, en el que el cliente de acceso (103) asociado a los datos almacenados reside detrás de un cortafuegos corporativo (111), y el servicio (117) de tiempo real está dispuesto para retransmitir las solicitudes de datos desde el servicio de presentación (115) al cliente de acceso (103) a través del cortafuegos corporativo (111).
16. Servidor de pasarela (101) según cualquiera de las reivindicaciones 1 a 14, en el que el cliente de acceso (103) asociado a los medios de almacenamiento de datos es un servidor de correo electrónico público, y el servicio (117) de tiempo real está dispuesto para retransmitir las solicitudes de datos desde el servicio de presentación (115) al servidor de correo electrónico público.
17. Método de recuperación de datos desde unos medios de almacenamiento de datos, que comprende:
recibir (309) una solicitud de datos desde un dispositivo remoto (119) de comunicaciones de un usuario en un servicio de presentación (115), solicitando la solicitud de datos la recepción de datos desde unos medios de almacenamiento de datos (109);
proporcionar (317) la solicitud de datos recibida a un servicio (117) de tiempo real;
retransmitir (319) la solicitud de datos desde el servicio (117) de tiempo real a un cliente de acceso (103) asociado a los medios de almacenamiento de datos;
establecer (311) una sesión de presentación correspondiente a la solicitud de datos desde el dispositivo remoto (119) de comunicaciones del usuario, estableciéndose dicha sesión de presentación entre el servicio de presentación y el dispositivo remoto de comunicaciones del usuario;
transmitir datos de identificación de la sesión de presentación al dispositivo remoto (119) de comunicaciones del usuario antes de que el servicio de presentación (115) haya recibido los datos, comprendiendo el método, en el servicio de presentación:
activar (405) un temporizador al producirse la recepción de la solicitud de datos;
cuando el temporizador alcanza un valor de umbral, determinar si los datos solicitados en la solicitud de datos han sido recibidos después de haber sido recuperados desde los medios de almacenamiento de datos; y
si se han recibido los datos solicitados, reenviar (419) los datos solicitados al dispositivo remoto (119) de comunicaciones del usuario, y
si no se han recibido los datos solicitados, reenviar (417) un mensaje al dispositivo remoto (119) de comunicaciones del usuario ordenando al dispositivo remoto (119) de comunicaciones del usuario que vuelva a presentar la solicitud de datos.
18. Método según la reivindicación 17, en el que el mensaje provoca que el dispositivo remoto (119) de comunicaciones vuelva a presentar automáticamente la solicitud de datos.
19. Método según la reivindicación 17, en el que el mensaje pide al usuario que vuelva a presentar la solicitud de datos.
20. Método según la reivindicación 17, que comprende además:
antes de que el temporizador alcance un valor de umbral, determinar periódicamente si datos solicitados en la solicitud de datos han sido recibidos después de haber sido recuperados desde los medios de almacenamiento de datos; y
si los datos solicitados han sido recibidos, reenviar los datos solicitados al dispositivo remoto (119) de comunicaciones del usuario.
21. Método según la reivindicación 17, que comprende además determinar (409) características de dispositivo para el dispositivo remoto (119) de comunicaciones del usuario; y
fijar (411) el valor de umbral basándose en las características de dispositivo determinadas.
22. Método según cualquiera de las reivindicaciones 17 a 21, que comprende además
recibir (323), en el servicio (117) de tiempo real, datos recuperados desde los medios de almacenamiento de datos por el cliente de acceso (103) en respuesta a una solicitud de datos;
retransmitir (325) los datos recuperados desde el servicio (117) de tiempo real al servicio de presentación (115); y
reenviar (329) los datos recuperados desde el servicio de presentación (115) al dispositivo remoto (119) de comunicaciones del usuario.
23. Método según la reivindicación 22, que comprende además almacenar (327) los datos recuperados retransmitidos desde el servicio (117) de tiempo real en una memoria caché (1151) prevista por el servicio de presentación (115) antes de reenviar los datos recuperados desde el servicio de presentación (115) al dispositivo remoto (119) de comunicaciones del usuario.
24. Método según la reivindicación 22 ó la reivindicación 23, que comprende asociar dicha solicitud de datos, que se ha vuelto a presentar, a la solicitud de datos inicialmente recibida desde el dispositivo remoto (119) de comunicaciones del usuario usando los datos de identificación de sesiones de presentación transmitidos hacia el dispositivo remoto de comunicaciones del usuario, mediante lo cual se reenvían los datos recibidos al mismo.
25. Método según cualquiera de las reivindicaciones 17 a 24, que comprende además crear una entrada en un directorio correspondiente al dispositivo remoto (119) de comunicaciones del usuario y una conexión entre el servicio (117) de tiempo real y el cliente de acceso (103), identificando la entrada tanto al usuario como al servicio (117) de tiempo real conectado al cliente de acceso (103).
26. Método según cualquiera de las reivindicaciones 17 a 25, en el que la sesión de presentación se identifica mediante una entrada en memoria y asocia el usuario a un valor de sesión de presentación.
27. Método según cualquiera de las reivindicaciones 17 a 26, en el que la sesión de presentación se asocia a una posición en memoria en la que se almacenarán datos recuperados desde los medios de almacenamiento de datos en respuesta a la solicitud de datos.
28. Método según cualquiera de las reivindicaciones 17 a 27, en el que la sesión de presentación se asocia a una bandera que indica si los datos que se deben recuperar desde los medios de almacenamiento de datos en respuesta a la solicitud de datos han sido recibidos y almacenados por el servicio de presentación (115).
29. Método según cualquiera de las reivindicaciones 17 a 28, en el que la retransmisión de la solicitud de datos desde el servicio (117) de tiempo real a un cliente de acceso (103) asociado a los medios de almacenamiento de datos incluye:
establecer una conexión segura entre el servicio (117) de tiempo real y el cliente de acceso (103);
proporcionar al cliente de acceso (103) información de cifrado a través de la conexión segura;
cifrar la solicitud de datos con la información de cifrado; y
retransmitir la solicitud de datos cifrada hacia el cliente de acceso (103).
30. Método según la reivindicación 29, en el que la conexión segura se establece usando el protocolo de Capa de Conexión Segura.
31. Método según la reivindicación 28 ó la reivindicación 29, en el que la conexión segura se establece a través de un equilibrador (501A, 510B) de carga que recibe las comunicaciones para el servicio de presentación (115).
32. Método según cualquiera de las reivindicaciones 29 a 31, en el que la información de cifrado incluye una identificación de sesión de cifrado pública y una clave de cifrado privada.
33. Método según cualquiera de las reivindicaciones 29 a 32, que comprende además recibir, en el servicio (117) de tiempo real, datos recuperados desde los medios de almacenamiento de datos por el cliente de acceso (103) en respuesta a una solicitud de datos.
34. Método según cualquiera de las reivindicaciones 29 a 33, en el que la recepción de datos recuperados desde los medios de almacenamiento de datos por el cliente de acceso (103) en respuesta a una solicitud de datos incluye:
recibir los datos recuperados desde el cliente de acceso (103) a través de una conexión no segura, estando cifrado los datos recuperados usando la información de cifrado; y
descifrar los datos recuperados usando la información de cifrado.
35. Sistema que comprende un servidor de pasarela (101), un dispositivo remoto (119) de comunicaciones de un usuario, unos medios de almacenamiento de datos (109) y un cliente de acceso (103) asociado a los medios de almacenamiento de datos (109),
estando dispuesto el dispositivo remoto de comunicaciones del usuario para transmitir una solicitud de datos que solicita la recepción de datos desde los medios de almacenamiento de datos (109),
comprendiendo el servidor de pasarela (101):
un servicio de presentación (115) dispuesto para recibir la solicitud de datos desde el dispositivo remoto (119) de comunicaciones del usuario; y
un servicio (117) de tiempo real dispuesto para retransmitir la solicitud de datos desde el servicio de presentación (115) al cliente de acceso (103) asociado a los medios de almacenamiento de datos (109),
estando dispuesto el cliente de acceso (103) para recuperar los datos solicitados en la solicitud de datos desde los medios de almacenamiento de datos (109) y para transmitir los datos recuperados hacia el servidor de pasarela (101),
en el que el servidor de pasarela (101) está dispuesto para establecer, entre el servicio de presentación (115) y el dispositivo remoto (119) de comunicaciones del usuario, una sesión de presentación correspondiente a la solicitud de datos del dispositivo remoto (119) de comunicaciones del usuario,
estando dispuesto el servidor de pasarela (101) para transmitir datos de identificación de la sesión de presentación al dispositivo remoto (119) de comunicaciones del usuario antes de que los datos solicitados hayan sido recibidos por el servicio de presentación (115), y
en el que el servicio de presentación (115) está dispuesto para:
activar un temporizador al producirse la recepción de la solicitud de datos;
cuando el temporizador alcanza un valor de umbral, determinar si datos solicitados en la solicitud de datos han sido recibidos después de haber sido recuperados desde los medios de almacenamiento de datos; y
si se han recibido los datos solicitados, reenviar los datos solicitados al dispositivo remoto (119) de comunicaciones del usuario, y
si no se han recibido los datos solicitados, reenviar un mensaje al dispositivo remoto (119) de comunicaciones del usuario ordenando al dispositivo remoto (119) de comunicaciones del usuario que vuelva a presentar la solicitud de datos.
ES04707416T 2003-01-31 2004-02-02 Recuperacion asincrona de datos en tiempo real. Expired - Lifetime ES2348260T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US44421303P 2003-01-31 2003-01-31
US444213P 2003-01-31

Publications (1)

Publication Number Publication Date
ES2348260T3 true ES2348260T3 (es) 2010-12-02

Family

ID=32850837

Family Applications (2)

Application Number Title Priority Date Filing Date
ES10169425T Expired - Lifetime ES2409936T3 (es) 2003-01-31 2004-02-02 Recuperación asíncrona de datos en tiempo real
ES04707416T Expired - Lifetime ES2348260T3 (es) 2003-01-31 2004-02-02 Recuperacion asincrona de datos en tiempo real.

Family Applications Before (1)

Application Number Title Priority Date Filing Date
ES10169425T Expired - Lifetime ES2409936T3 (es) 2003-01-31 2004-02-02 Recuperación asíncrona de datos en tiempo real

Country Status (6)

Country Link
US (5) US7363349B2 (es)
EP (2) EP1634162B1 (es)
AT (1) ATE474261T1 (es)
DE (1) DE602004028121D1 (es)
ES (2) ES2409936T3 (es)
WO (1) WO2004070568A2 (es)

Families Citing this family (111)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6219694B1 (en) 1998-05-29 2001-04-17 Research In Motion Limited System and method for pushing information from a host system to a mobile data communication device having a shared electronic address
US20080261633A1 (en) 2002-10-22 2008-10-23 Research In Motion Limited System and Method for Pushing Information from a Host System to a Mobile Data Communication Device
US7363349B2 (en) 2003-01-31 2008-04-22 Visto Corporation Asynchronous real-time retrieval of data
US6917675B2 (en) * 2003-05-23 2005-07-12 General Instrument Corporation Method and apparatus for providing telephone conference bridging within a residential gateway
GB2409069B (en) * 2003-12-11 2007-03-07 Hewlett Packard Development Co Administration of computing entities in a network
CN1753359B (zh) 2004-09-24 2011-01-19 华为技术有限公司 实现传输SyncML同步数据的方法
US8079059B1 (en) * 2005-05-31 2011-12-13 Imera Systems, Inc. Method and system for providing terminal view access of a client device in a secure network
US20070112954A1 (en) * 2005-11-15 2007-05-17 Yahoo! Inc. Efficiently detecting abnormal client termination
US7853753B2 (en) * 2006-06-30 2010-12-14 Verint Americas Inc. Distributive network control
US20080082670A1 (en) * 2006-09-28 2008-04-03 Microsoft Corporation Resilient communications between clients comprising a cloud
US20080098093A1 (en) * 2006-10-16 2008-04-24 Palm, Inc. Offline automated proxy cache for web applications
US20080148298A1 (en) * 2006-12-18 2008-06-19 Palm, Inc. System and Methods for Providing Granular Security for Locally Running Scripted Environments and Web Applications
JP4386926B2 (ja) * 2007-02-16 2009-12-16 富士通株式会社 暗号通信プログラム、暗号通信方法および暗号通信装置
US20080248834A1 (en) * 2007-04-03 2008-10-09 Palm, Inc. System and methods for providing access to a desktop and applications of a mobile device
US8478299B2 (en) * 2007-04-06 2013-07-02 Hewlett-Packard Development Company, L.P. System and methods for obtaining coarse location for a mobile device
US8060486B2 (en) * 2007-05-07 2011-11-15 Hewlett-Packard Development Company, L.P. Automatic conversion schema for cached web requests
US8850035B1 (en) * 2007-05-16 2014-09-30 Yahoo! Inc. Geographically distributed real time communications platform
US8400913B2 (en) 2007-05-23 2013-03-19 Microsoft Corporation Method for optimizing near field links
US7881329B2 (en) * 2007-05-25 2011-02-01 Sharp Laboratories Of America, Inc. Method and system for maintaining high reliability logical connection
US8331294B2 (en) * 2007-07-20 2012-12-11 Broadcom Corporation Method and system for managing information among personalized and shared resources with a personalized portable device
US8458612B2 (en) * 2007-07-29 2013-06-04 Hewlett-Packard Development Company, L.P. Application management framework for web applications
US20090091422A1 (en) * 2007-10-03 2009-04-09 Apple Inc. Device identification via serial communication link
US8590039B1 (en) 2007-11-28 2013-11-19 Mcafee, Inc. System, method and computer program product for sending information extracted from a potentially unwanted data sample to generate a signature
US8274935B2 (en) * 2008-02-11 2012-09-25 Amdocs Software Systems Limited Mobile communication device notifier
US9306796B1 (en) * 2008-03-18 2016-04-05 Mcafee, Inc. System, method, and computer program product for dynamically configuring a virtual environment for identifying unwanted data
US8301904B1 (en) 2008-06-24 2012-10-30 Mcafee, Inc. System, method, and computer program product for automatically identifying potentially unwanted data as unwanted
US8627461B2 (en) 2009-03-04 2014-01-07 Mcafee, Inc. System, method, and computer program product for verifying an identification of program information as unwanted
US8547931B2 (en) 2009-05-21 2013-10-01 Microsoft Corporation Conserving call logic during handoff
CN102088470B (zh) * 2009-12-07 2014-03-05 中兴通讯股份有限公司 通信系统中文件传输协议死锁检测及自恢复的方法与装置
US8719939B2 (en) * 2009-12-31 2014-05-06 Mcafee, Inc. Malware detection via reputation system
US8904554B2 (en) * 2010-03-30 2014-12-02 Private Access, Inc. System and method for selectively redacting information in electronic documents
EP2609517B1 (en) 2010-08-24 2020-04-01 BlackBerry Limited Constant access gateway and de-duplicated data cache server
US20120066322A1 (en) * 2010-09-15 2012-03-15 Veragen, Inc. Computer-network-based system and methodology for enhancing personal-information storage and transfer control
US9692631B2 (en) * 2010-09-16 2017-06-27 Blackberry Limited Load sensitive data session scheduling mechanisms of wireless/wireline access networks
US8364655B2 (en) 2010-09-29 2013-01-29 International Business Machines Corporation Hybrid off-peak and just-in-time integration
US9686228B2 (en) 2010-09-29 2017-06-20 International Business Machines Corporation Integrated just-in-time synchronization
US9219706B2 (en) 2010-09-29 2015-12-22 International Business Machines Corporation Just-in-time wrapper synchronization
US8943570B1 (en) * 2010-12-02 2015-01-27 Cellco Partnership Techniques for providing enhanced network security
US9465885B2 (en) * 2010-12-03 2016-10-11 Salesforce.Com, Inc. Method and system for providing information to a mobile handheld device from a database system
US9292358B2 (en) * 2011-06-13 2016-03-22 Microsoft Technology Licensing, Llc Remotely retrieving information from consumer devices
US8601134B1 (en) * 2011-06-30 2013-12-03 Amazon Technologies, Inc. Remote storage gateway management using gateway-initiated connections
US8789208B1 (en) 2011-10-04 2014-07-22 Amazon Technologies, Inc. Methods and apparatus for controlling snapshot exports
US8843758B2 (en) * 2011-11-30 2014-09-23 Microsoft Corporation Migrating authenticated content towards content consumer
US8713646B2 (en) 2011-12-09 2014-04-29 Erich Stuntebeck Controlling access to resources on a network
JP6063121B2 (ja) * 2011-12-26 2017-01-18 任天堂株式会社 通信システム、通信端末、通信方法およびプログラム
US10257194B2 (en) 2012-02-14 2019-04-09 Airwatch Llc Distribution of variably secure resources in a networked environment
US9705813B2 (en) 2012-02-14 2017-07-11 Airwatch, Llc Controlling distribution of resources on a network
US10404615B2 (en) 2012-02-14 2019-09-03 Airwatch, Llc Controlling distribution of resources on a network
US9680763B2 (en) 2012-02-14 2017-06-13 Airwatch, Llc Controlling distribution of resources in a network
EP2831718A4 (en) 2012-03-30 2015-12-02 Goldman Sachs & Co SAFE MOBILE FRAMEWORK
US9319449B2 (en) * 2012-06-29 2016-04-19 Mckesson Financial Holdings Method, apparatus, and computer program product for processing data requests
US8862882B2 (en) * 2012-06-29 2014-10-14 Intel Corporation Systems and methods for authenticating devices by adding secure features to Wi-Fi tags
US9288077B1 (en) * 2012-09-28 2016-03-15 Emc Corporation Cluster file system with server block cache
US20140092904A1 (en) * 2012-10-03 2014-04-03 Research In Motion Limited System and method for requesting content using an electronic device
US9247432B2 (en) 2012-10-19 2016-01-26 Airwatch Llc Systems and methods for controlling network access
US8826432B2 (en) 2012-12-06 2014-09-02 Airwatch, Llc Systems and methods for controlling email access
US8978110B2 (en) 2012-12-06 2015-03-10 Airwatch Llc Systems and methods for controlling email access
US8832785B2 (en) 2012-12-06 2014-09-09 Airwatch, Llc Systems and methods for controlling email access
US8862868B2 (en) 2012-12-06 2014-10-14 Airwatch, Llc Systems and methods for controlling email access
US9021037B2 (en) 2012-12-06 2015-04-28 Airwatch Llc Systems and methods for controlling email access
US20150295874A1 (en) * 2012-12-17 2015-10-15 Nokia Technologies Oy Message preloading system
US9473417B2 (en) 2013-03-14 2016-10-18 Airwatch Llc Controlling resources used by computing devices
US20140280955A1 (en) 2013-03-14 2014-09-18 Sky Socket, Llc Controlling Electronically Communicated Resources
US9819682B2 (en) 2013-03-15 2017-11-14 Airwatch Llc Certificate based profile confirmation
US9148416B2 (en) 2013-03-15 2015-09-29 Airwatch Llc Controlling physical access to secure areas via client devices in a networked environment
US8997187B2 (en) 2013-03-15 2015-03-31 Airwatch Llc Delegating authorization to applications on a client device in a networked environment
US9275245B2 (en) 2013-03-15 2016-03-01 Airwatch Llc Data access sharing
US9203820B2 (en) 2013-03-15 2015-12-01 Airwatch Llc Application program as key for authorizing access to resources
US9401915B2 (en) 2013-03-15 2016-07-26 Airwatch Llc Secondary device as key for authorizing access to resources
US10652242B2 (en) 2013-03-15 2020-05-12 Airwatch, Llc Incremental compliance remediation
US9378350B2 (en) 2013-03-15 2016-06-28 Airwatch Llc Facial capture managing access to resources by a device
US9781214B2 (en) * 2013-04-08 2017-10-03 Amazon Technologies, Inc. Load-balanced, persistent connection techniques
US9787686B2 (en) 2013-04-12 2017-10-10 Airwatch Llc On-demand security policy activation
US10754966B2 (en) 2013-04-13 2020-08-25 Airwatch Llc Time-based functionality restrictions
US8914013B2 (en) 2013-04-25 2014-12-16 Airwatch Llc Device management macros
US9123031B2 (en) 2013-04-26 2015-09-01 Airwatch Llc Attendance tracking via device presence
US9426162B2 (en) 2013-05-02 2016-08-23 Airwatch Llc Location-based configuration policy toggling
US9246918B2 (en) 2013-05-10 2016-01-26 Airwatch Llc Secure application leveraging of web filter proxy services
US9058495B2 (en) 2013-05-16 2015-06-16 Airwatch Llc Rights management services integration with mobile device management
US9900261B2 (en) 2013-06-02 2018-02-20 Airwatch Llc Shared resource watermarking and management
US9584437B2 (en) 2013-06-02 2017-02-28 Airwatch Llc Resource watermarking and management
US20140358703A1 (en) 2013-06-04 2014-12-04 SkySocket, LLC Item Delivery Optimization
DE102013105781A1 (de) * 2013-06-05 2014-12-11 Ralf Sommer Verfahren zur Adressierung, Authentifizierung und sicheren Datenspeicherung in Rechnersystemen
US9270777B2 (en) 2013-06-06 2016-02-23 Airwatch Llc Social media and data sharing controls for data security purposes
US9535857B2 (en) 2013-06-25 2017-01-03 Airwatch Llc Autonomous device interaction
US8924608B2 (en) 2013-06-25 2014-12-30 Airwatch Llc Peripheral device management
US8806217B2 (en) 2013-07-03 2014-08-12 Sky Socket, Llc Functionality watermarking and management
US8756426B2 (en) 2013-07-03 2014-06-17 Sky Socket, Llc Functionality watermarking and management
US8775815B2 (en) 2013-07-03 2014-07-08 Sky Socket, Llc Enterprise-specific functionality watermarking and management
US9736118B2 (en) * 2013-07-17 2017-08-15 Cisco Technology, Inc. Session initiation protocol denial of service attack throttling
US9112749B2 (en) 2013-07-25 2015-08-18 Airwatch Llc Functionality management via application modification
US9226155B2 (en) 2013-07-25 2015-12-29 Airwatch Llc Data communications management
US9665723B2 (en) 2013-08-15 2017-05-30 Airwatch, Llc Watermarking detection and management
US9516005B2 (en) 2013-08-20 2016-12-06 Airwatch Llc Individual-specific content management
US10129242B2 (en) 2013-09-16 2018-11-13 Airwatch Llc Multi-persona devices and management
US9185099B2 (en) 2013-09-23 2015-11-10 Airwatch Llc Securely authorizing access to remote resources
US9544306B2 (en) 2013-10-29 2017-01-10 Airwatch Llc Attempted security breach remediation
US9258301B2 (en) 2013-10-29 2016-02-09 Airwatch Llc Advanced authentication techniques
US9306915B2 (en) * 2013-11-05 2016-04-05 General Electric Company Systems and methods for secure file transfers
US9536067B1 (en) 2014-01-01 2017-01-03 Bryant Christopher Lee Password submission without additional user input
US9736248B2 (en) * 2014-11-04 2017-08-15 Comcast Cable Communications, Llc Systems and methods for data routing management
US9584964B2 (en) 2014-12-22 2017-02-28 Airwatch Llc Enforcement of proximity based policies
US9413754B2 (en) 2014-12-23 2016-08-09 Airwatch Llc Authenticator device facilitating file security
US10298561B2 (en) * 2015-06-30 2019-05-21 Vmware, Inc. Providing a single session experience across multiple applications
CN107291756A (zh) 2016-04-01 2017-10-24 阿里巴巴集团控股有限公司 数据缓存的方法及装置
US9917862B2 (en) 2016-04-14 2018-03-13 Airwatch Llc Integrated application scanning and mobile enterprise computing management system
US9916446B2 (en) 2016-04-14 2018-03-13 Airwatch Llc Anonymized application scanning for mobile devices
US10193992B2 (en) 2017-03-24 2019-01-29 Accenture Global Solutions Limited Reactive API gateway
US10375100B2 (en) 2017-10-27 2019-08-06 Cisco Technology, Inc. Identifying anomalies in a network
US11792288B2 (en) * 2019-09-09 2023-10-17 Extreme Networks, Inc. Wireless network device with directional communication functionality
US11922297B2 (en) * 2020-04-01 2024-03-05 Vmware, Inc. Edge AI accelerator service

Family Cites Families (143)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5754765A (en) 1993-11-24 1998-05-19 Intel Corporation Automatic transport detection by attempting to establish communication session using list of possible transports and corresponding media dependent modules
US5990810A (en) 1995-02-17 1999-11-23 Williams; Ross Neil Method for partitioning a block of data into subblocks and for storing and communcating such subblocks
EP0826181A4 (en) 1995-04-11 2005-02-09 Kinetech Inc IDENTIFYING DATA IN A DATA PROCESSING SYSTEM
US5850517A (en) * 1995-08-31 1998-12-15 Oracle Corporation Communication link for client-server having agent which sends plurality of requests independent of client and receives information from the server independent of the server
US5590810A (en) 1995-10-19 1997-01-07 Wehbi; Ali D. Order of participation control device
US5826014A (en) * 1996-02-06 1998-10-20 Network Engineering Software Firewall system for protecting network elements connected to a public network
US7028049B1 (en) * 1996-02-17 2006-04-11 Allcare Health Management System, Inc. Standing order database search system and method for internet and internet application
GB2311443A (en) 1996-03-23 1997-09-24 Ibm Data message transfer in batches with retransmission
US5916307A (en) 1996-06-05 1999-06-29 New Era Of Networks, Inc. Method and structure for balanced queue communication between nodes in a distributed computing application
US5857201A (en) * 1996-06-18 1999-01-05 Wright Strategies, Inc. Enterprise connectivity to handheld devices
US5832514A (en) 1996-06-26 1998-11-03 Microsoft Corporation System and method for discovery based data recovery in a store and forward replication process
US5790789A (en) 1996-08-02 1998-08-04 Suarez; Larry Method and architecture for the creation, control and deployment of services within a distributed computer environment
JP3409652B2 (ja) * 1996-09-02 2003-05-26 松下電器産業株式会社 マルチメディア情報提供装置
US6802068B1 (en) 1996-10-16 2004-10-05 International Business Machines Corporation Addressless internetworking
US6178331B1 (en) * 1997-06-17 2001-01-23 Bulletin.Net, Inc. System and process for allowing wireless messaging
US5987463A (en) * 1997-06-23 1999-11-16 Oracle Corporation Apparatus and method for calling external routines in a database system
US6226649B1 (en) * 1997-06-23 2001-05-01 Oracle Corporation Apparatus and method for transparent access of foreign databases in a heterogeneous database system
US5873104A (en) 1997-06-26 1999-02-16 Sun Microsystems, Inc. Bounded-pause time garbage collection system and method including write barrier associated with source and target instances of a partially relocated object
US5895471A (en) * 1997-07-11 1999-04-20 Unwired Planet, Inc. Providing a directory of frequently used hyperlinks on a remote server
US6065046A (en) 1997-07-29 2000-05-16 Catharon Productions, Inc. Computerized system and associated method of optimally controlled storage and transfer of computer programs on a computer network
CA2220578A1 (en) 1997-11-10 1999-05-10 Northern Telecom Limited Distributed service network
US6078948A (en) 1998-02-03 2000-06-20 Syracuse University Platform-independent collaboration backbone and framework for forming virtual communities having virtual rooms with collaborative sessions
US6185598B1 (en) * 1998-02-10 2001-02-06 Digital Island, Inc. Optimized network resource location
US6463463B1 (en) * 1998-05-29 2002-10-08 Research In Motion Limited System and method for pushing calendar event messages from a host system to a mobile data communication device
US6196846B1 (en) * 1998-06-02 2001-03-06 Virtual Village, Inc. System and method for establishing a data session and a voice session for training a user on a computer program
US6721288B1 (en) 1998-09-16 2004-04-13 Openwave Systems Inc. Wireless mobile devices having improved operation during network unavailability
US7136645B2 (en) 1998-10-09 2006-11-14 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US6397246B1 (en) * 1998-11-13 2002-05-28 International Business Machines Corporation Method and system for processing document requests in a network system
US6424841B1 (en) 1999-02-18 2002-07-23 Openwave Systems Inc. Short message service with improved utilization of available bandwidth
US6526493B1 (en) 1999-03-30 2003-02-25 Adaptec, Inc. Method and apparatus for partitioning and formatting a storage media without rebooting by creating a logical device control block (DCB) on-the-fly
US6510550B1 (en) 1999-05-12 2003-01-21 Intel Corporation Method and apparatus for providing intermittent connectivity support in a computer application
US6959291B1 (en) 1999-05-19 2005-10-25 International Business Machines Corporation Management of a concurrent use license in a logically-partitioned computer
US7356494B2 (en) 1999-05-19 2008-04-08 I.D. Systems, Inc. Robust wireless communications system architecture and asset management applications performed thereon
US6473794B1 (en) 1999-05-27 2002-10-29 Accenture Llp System for establishing plan to test components of web based framework by displaying pictorial representation and conveying indicia coded components of existing network framework
US6289382B1 (en) 1999-08-31 2001-09-11 Andersen Consulting, Llp System, method and article of manufacture for a globally addressable interface in a communication services patterns environment
US6792085B1 (en) 1999-09-10 2004-09-14 Comdial Corporation System and method for unified messaging with message replication and synchronization
US7020697B1 (en) 1999-10-01 2006-03-28 Accenture Llp Architectures for netcentric computing systems
US6563800B1 (en) * 1999-11-10 2003-05-13 Qualcomm, Inc. Data center for providing subscriber access to data maintained on an enterprise network
US7590644B2 (en) 1999-12-21 2009-09-15 International Business Machine Corporation Method and apparatus of streaming data transformation using code generator and translator
US6877023B1 (en) 2000-01-28 2005-04-05 Softwired, Inc. Messaging system for delivering data in the form of portable message formats between message clients
US6704730B2 (en) 2000-02-18 2004-03-09 Avamar Technologies, Inc. Hash file system and method for use in a commonality factoring system
US20020078198A1 (en) * 2000-02-25 2002-06-20 Buchbinder John E. Personal server technology with firewall detection and penetration
KR100847596B1 (ko) 2000-03-02 2008-07-21 소니 가부시끼 가이샤 통신망 시스템, 게이트웨이, 데이터 통신방법과 프로그램제공매체
US20020049841A1 (en) 2000-03-03 2002-04-25 Johnson Scott C Systems and methods for providing differentiated service in information management environments
WO2001077815A2 (en) 2000-04-05 2001-10-18 Tranceive Technologies, Inc. Method and apparatus for profiling in a distributed application environment
US6687735B1 (en) 2000-05-30 2004-02-03 Tranceive Technologies, Inc. Method and apparatus for balancing distributed applications
US20020002611A1 (en) 2000-04-17 2002-01-03 Mark Vange System and method for shifting functionality between multiple web servers
WO2001098903A1 (en) * 2000-06-16 2001-12-27 Entriq Limited BVI Abbot Building Methods and systems to distribute content via a network utilizing distributed conditional access agents and secure agents, and to perform digital rights management (drm)
WO2001098936A2 (en) 2000-06-22 2001-12-27 Microsoft Corporation Distributed computing services platform
US8073954B1 (en) 2000-07-19 2011-12-06 Synchronoss Technologies, Inc. Method and apparatus for a secure remote access system
US6782419B2 (en) * 2000-07-24 2004-08-24 Bandai Co., Ltd. System and method for distributing images to mobile phones
WO2002021413A2 (en) 2000-09-05 2002-03-14 Zaplet, Inc. Methods and apparatus providing electronic messages that are linked and aggregated
US7562147B1 (en) 2000-10-02 2009-07-14 Microsoft Corporation Bi-directional HTTP-based reliable messaging protocol and system utilizing same
US7035828B2 (en) * 2000-10-25 2006-04-25 Topmoxie, Inc. Method and system for modifying and transmitting data between a portable computer and a network
US6810398B2 (en) 2000-11-06 2004-10-26 Avamar Technologies, Inc. System and method for unorchestrated determination of data sequences using sticky byte factoring to determine breakpoints in digital sequences
US20030054810A1 (en) * 2000-11-15 2003-03-20 Chen Yih-Farn Robin Enterprise mobile server platform
US6947761B2 (en) 2000-11-22 2005-09-20 Leap Wireless International Inc. Method and system for improving the efficiency of state information transfer over a wireless communications network
US6959436B2 (en) * 2000-12-15 2005-10-25 Innopath Software, Inc. Apparatus and methods for intelligently providing applications and data on a mobile device system
US7085834B2 (en) * 2000-12-22 2006-08-01 Oracle International Corporation Determining a user's groups
US20020095487A1 (en) * 2001-01-18 2002-07-18 Robert Day System for registering, locating, and identifying network equipment
JP2002319230A (ja) 2001-01-25 2002-10-31 Sony Computer Entertainment Inc 記録媒体、情報処理装置、コンテンツ配信サーバ、方法、プログラム、その記録媒体
US6871236B2 (en) * 2001-01-26 2005-03-22 Microsoft Corporation Caching transformed content in a mobile gateway
US20020111995A1 (en) 2001-02-14 2002-08-15 Mansour Peter M. Platform-independent distributed user interface system architecture
US20020116472A1 (en) * 2001-02-20 2002-08-22 Niragonogo Inc. Method and system for pushing content through cellular network
JP3764423B2 (ja) * 2001-04-09 2006-04-05 株式会社エヌ・ティ・ティ・ドコモ 通信データ量測定システム
US6742081B2 (en) 2001-04-30 2004-05-25 Sun Microsystems, Inc. Data storage array employing block checksums and dynamic striping
WO2002102009A2 (en) * 2001-06-12 2002-12-19 Research In Motion Limited Method for processing encoded messages for exchange with a mobile data communication device
GB2377135B (en) 2001-06-28 2003-08-27 Symbian Ltd E-mail manager program for a wireless information device
US6983312B1 (en) * 2001-07-16 2006-01-03 At&T Corp. Method for using scheduled hyperlinks to record multimedia content
US6981029B1 (en) * 2001-07-17 2005-12-27 Cisco Technology, Inc. System and method for processing a request for information in a network
US6922725B2 (en) * 2001-09-07 2005-07-26 Xerox Corporation Method and apparatus for processing document service requests originating from a mobile computing device
US7010581B2 (en) * 2001-09-24 2006-03-07 International Business Machines Corporation Method and system for providing browser functions on a web page for client-specific accessibility
AU2002365257A1 (en) * 2001-10-26 2003-07-24 Zeosoft Corporation Development, management of distributed clients and servers
US7631084B2 (en) * 2001-11-02 2009-12-08 Juniper Networks, Inc. Method and system for providing secure access to private networks with client redirection
US20030115200A1 (en) * 2001-12-13 2003-06-19 Anthony John J. Wireless application protocol for real estate data access
US7051180B2 (en) 2002-01-09 2006-05-23 International Business Machines Corporation Masterless building block binding to partitions using identifiers and indicators
US6934835B2 (en) 2002-01-09 2005-08-23 International Business Machines Corporation Building block removal from partitions
US20030177171A1 (en) * 2002-01-22 2003-09-18 Brown Bruce Loring Electronic mail retrieval
US6941436B2 (en) 2002-05-09 2005-09-06 International Business Machines Corporation Method and apparatus for managing memory blocks in a logical partitioned data processing system
US6976146B1 (en) 2002-05-21 2005-12-13 Network Appliance, Inc. System and method for emulating block appended checksums on storage devices by sector stealing
US7209466B2 (en) 2002-06-06 2007-04-24 Symbol Technologies, Inc. Software method utilizing gateways for maintaining connectivity during communications over distinct wireless networks by mobile computer terminals
US7269173B2 (en) 2002-06-26 2007-09-11 Intel Corporation Roaming in a communications network
US8301884B2 (en) * 2002-09-16 2012-10-30 Samsung Electronics Co., Ltd. Method of managing metadata
KR100462886B1 (ko) 2002-10-15 2004-12-17 삼성전자주식회사 부하 분담 구조와 프라이머리/백업 구조가 혼합된 시스템
JP2004146961A (ja) * 2002-10-23 2004-05-20 Nec Corp 移動通信システム、携帯電話装置及びそれらに用いるスケジュール登録方法並びにそのプログラム
US8176186B2 (en) 2002-10-30 2012-05-08 Riverbed Technology, Inc. Transaction accelerator for client-server communications systems
US7120666B2 (en) 2002-10-30 2006-10-10 Riverbed Technology, Inc. Transaction accelerator for client-server communication systems
US6667700B1 (en) 2002-10-30 2003-12-23 Nbt Technology, Inc. Content-based segmentation scheme for data compression in storage and transmission including hierarchical segment representation
US7366796B2 (en) * 2002-11-05 2008-04-29 Microsoft Corporation Method and levels of ping notification
US6928526B1 (en) 2002-12-20 2005-08-09 Datadomain, Inc. Efficient data storage system
US7065619B1 (en) 2002-12-20 2006-06-20 Data Domain, Inc. Efficient data storage system
US7363349B2 (en) * 2003-01-31 2008-04-22 Visto Corporation Asynchronous real-time retrieval of data
US9197668B2 (en) 2003-02-28 2015-11-24 Novell, Inc. Access control to files based on source information
KR20040091392A (ko) 2003-04-21 2004-10-28 주식회사 에트피아텍 웹을 이용한 원격 백업관리 시스템 및 그 시스템을 운용한백업관리 방법
US7792933B2 (en) * 2003-07-03 2010-09-07 Cadence Design Systems, Inc. System and method for performing design verification
CN1567303A (zh) 2003-07-03 2005-01-19 富士通株式会社 结构文档信息块的自动分割方法和装置
US20060047855A1 (en) 2004-05-13 2006-03-02 Microsoft Corporation Efficient chunking algorithm
BRPI0418877B1 (pt) 2004-05-31 2020-03-17 Telecom Italia S.P.A. Método e sistema para habilitar um usuário a se comunicar em uma rede privada virtual através de uma rede de comunicação pública, e, rede de comunicação pública
US7757074B2 (en) 2004-06-30 2010-07-13 Citrix Application Networking, Llc System and method for establishing a virtual private network
US7487138B2 (en) 2004-08-25 2009-02-03 Symantec Operating Corporation System and method for chunk-based indexing of file system content
US20060069733A1 (en) 2004-09-30 2006-03-30 Microsoft Corporation Detection and removal of information in files
TWI274297B (en) 2004-11-19 2007-02-21 Aiptek Int Inc Method for deciding partition types of macro block
US7382758B2 (en) 2004-11-30 2008-06-03 Motorola, Inc. Medium access control for simultaneous channel communications
US7460857B2 (en) * 2005-01-21 2008-12-02 Roach Jr Peter O Method and apparatus for providing information in response to a delayed grant of subscriber permission
US20060212439A1 (en) 2005-03-21 2006-09-21 Microsoft Corporation System and method of efficient data backup in a networking environment
US8984636B2 (en) 2005-07-29 2015-03-17 Bit9, Inc. Content extractor and analysis system
US7447865B2 (en) 2005-09-13 2008-11-04 Yahoo ! Inc. System and method for compression in a distributed column chunk data store
US7624335B1 (en) 2005-10-13 2009-11-24 Data Domain, Inc. Verifying a file in a system with duplicate segment elimination using segmention-independent checksums
GB0520836D0 (en) 2005-10-13 2005-11-23 Scansafe Ltd Remote access to resources
WO2008048304A2 (en) 2005-12-01 2008-04-24 Firestar Software, Inc. System and method for exchanging information among exchange applications
US7546321B2 (en) 2005-12-19 2009-06-09 Yahoo! Inc. System and method for recovery from failure of a storage server in a distributed column chunk data store
US7472242B1 (en) 2006-02-14 2008-12-30 Network Appliance, Inc. Eliminating duplicate blocks during backup writes
US7562186B2 (en) 2006-04-11 2009-07-14 Data Domain, Inc. Efficient data storage using resemblance of data segments
US7949824B2 (en) 2006-04-11 2011-05-24 Emc Corporation Efficient data storage using two level delta resemblance
US7504969B2 (en) 2006-07-11 2009-03-17 Data Domain, Inc. Locality-based stream segmentation for data deduplication
US7970216B2 (en) 2006-08-24 2011-06-28 Dell Products L.P. Methods and apparatus for reducing storage size
US7881544B2 (en) 2006-08-24 2011-02-01 Dell Products L.P. Methods and apparatus for reducing storage size
US7974478B2 (en) 2006-08-24 2011-07-05 Dell Products L.P. Methods and apparatus for reducing storage size
US7936932B2 (en) 2006-08-24 2011-05-03 Dell Products L.P. Methods and apparatus for reducing storage size
US7961959B2 (en) 2006-08-24 2011-06-14 Dell Products L.P. Methods and apparatus for reducing storage size
JP2008085470A (ja) 2006-09-26 2008-04-10 Fujitsu Ltd Ipアプリケーションサービス提供システム
KR100834574B1 (ko) 2006-09-29 2008-06-02 한국전자통신연구원 파일 저장 시스템 및 그 시스템에서의 파일 저장 및 검색방법
US7733910B2 (en) 2006-12-29 2010-06-08 Riverbed Technology, Inc. Data segmentation using shift-varying predicate function fingerprinting
US8166012B2 (en) 2007-04-11 2012-04-24 Emc Corporation Cluster storage using subsegmenting
US8768895B2 (en) 2007-04-11 2014-07-01 Emc Corporation Subsegmenting for efficient storage, resemblance determination, and transmission
US8942219B2 (en) 2007-04-13 2015-01-27 Hart Communication Foundation Support for network management and device communications in a wireless network
US9930099B2 (en) 2007-05-08 2018-03-27 Riverbed Technology, Inc. Hybrid segment-oriented file server and WAN accelerator
US8209506B2 (en) 2007-09-05 2012-06-26 Emc Corporation De-duplication in a virtualized storage environment
US8880797B2 (en) 2007-09-05 2014-11-04 Emc Corporation De-duplication in a virtualized server environment
US7870409B2 (en) 2007-09-26 2011-01-11 Hitachi, Ltd. Power efficient data storage with data de-duplication
US8447938B2 (en) 2008-01-04 2013-05-21 International Business Machines Corporation Backing up a deduplicated filesystem to disjoint media
US8224831B2 (en) 2008-02-27 2012-07-17 Dell Products L.P. Virtualization of metadata for file optimization
US8219534B2 (en) 2008-02-27 2012-07-10 Dell Products L.P. Multiple file compaction for network attached storage
US8516002B2 (en) 2008-03-21 2013-08-20 Dell Products L.P. Deflate file data optimization
US7933939B2 (en) 2008-04-16 2011-04-26 Quantum Corporation Apparatus and method for partitioning data blocks
US8001329B2 (en) 2008-05-19 2011-08-16 International Business Machines Corporation Speculative stream scanning
US7864083B2 (en) 2008-05-21 2011-01-04 Ocarina Networks, Inc. Efficient data compression and decompression of numeric sequences
EP2316071A4 (en) 2008-06-19 2011-08-17 Servicemesh Inc CLOUD DATA PROCESSING GATEWAY, CLOUD DATA PROCESSING HYPERVISOR, AND METHOD FOR IMPLEMENTING THEM
US8682845B2 (en) 2008-07-09 2014-03-25 The Boeing Company Secure high performance multi-level security database systems and methods
AU2009335697A1 (en) 2008-12-18 2011-08-04 Copiun, Inc. Methods and apparatus for content-aware data partitioning and data de-duplication
WO2011113042A2 (en) 2010-03-12 2011-09-15 Copiun, Inc. Distributed catalog, data store, and indexing
WO2011116087A2 (en) 2010-03-16 2011-09-22 Copiun, Inc. Highly scalable and distributed data de-duplication
EP2609517B1 (en) 2010-08-24 2020-04-01 BlackBerry Limited Constant access gateway and de-duplicated data cache server

Also Published As

Publication number Publication date
WO2004070568A3 (en) 2005-03-31
US9059956B2 (en) 2015-06-16
US20110320552A1 (en) 2011-12-29
US20100146072A1 (en) 2010-06-10
WO2004070568A2 (en) 2004-08-19
ES2409936T3 (es) 2013-06-28
EP1634162A2 (en) 2006-03-15
DE602004028121D1 (de) 2010-08-26
US20080133712A1 (en) 2008-06-05
US8478829B2 (en) 2013-07-02
ATE474261T1 (de) 2010-07-15
US7363349B2 (en) 2008-04-22
EP1634162A4 (en) 2007-05-23
US20050027818A1 (en) 2005-02-03
EP1634162B1 (en) 2010-07-14
US20130282849A1 (en) 2013-10-24
EP2325743B1 (en) 2012-12-19
US8041776B2 (en) 2011-10-18
EP2325743A1 (en) 2011-05-25

Similar Documents

Publication Publication Date Title
ES2409936T3 (es) Recuperación asíncrona de datos en tiempo real
ES2523100T3 (es) Un sistema de comunicación directa multimedia enlazado con el protocolo http
EP0992145B1 (en) Method of operating an authenticating server system and such a system
CA2636780C (en) Method and device for anonymous encrypted mobile data and speech communication
EP1284570B1 (en) System and method for pushing encrypted information between a host system and a mobile data communication device
US7912896B2 (en) Data access, replication or communication system comprising a distributed software application
JP4386732B2 (ja) モバイルネットワークの接続アーキテクチャ
US7233997B1 (en) Data communications
EP0989712A2 (en) Method and apparatus for establishing a secure connection over a one-way data path
JP2003078570A (ja) サービス提供方法、中継装置及びサービス提供装置
US7746824B2 (en) Method and apparatus for establishing multiple bandwidth-limited connections for a communication device
US20020194295A1 (en) Scalable data-sharing architecture
ES2864249T3 (es) Método y sistema para la determinación de una configuración de una interfaz
JP2006277752A (ja) コンピュータ遠隔管理方法
ES2360178T3 (es) Método y aparato para empujar correo electrónico hacia dispositivos de comunicación inalámbricos.
JP2005073051A (ja) 中継装置およびその中継プログラム
ES2364658T3 (es) Pasarela segura que tiene identificación de usuario y autentificación por contraseña.
HK1055650B (en) System and method for pushing encrypted information between a host system and a mobile data communication device