ES2209549T3 - Un aparato y procedimiento para determinar un programa cercano en un nodo cliente de una red cliente-servidor. - Google Patents

Un aparato y procedimiento para determinar un programa cercano en un nodo cliente de una red cliente-servidor.

Info

Publication number
ES2209549T3
ES2209549T3 ES99966622T ES99966622T ES2209549T3 ES 2209549 T3 ES2209549 T3 ES 2209549T3 ES 99966622 T ES99966622 T ES 99966622T ES 99966622 T ES99966622 T ES 99966622T ES 2209549 T3 ES2209549 T3 ES 2209549T3
Authority
ES
Spain
Prior art keywords
application
server
client
user
client system
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
ES99966622T
Other languages
English (en)
Inventor
Martin Duursma
Anatoly Panasyuk
Anthony Ungerman
Bradley Jay Pedersen
Tom C. Davis, Iii
Marc A. Bloomfield
Robert Ciraldo
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.)
Citrix Systems Inc
Original Assignee
Citrix Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/252,391 external-priority patent/US6643690B2/en
Application filed by Citrix Systems Inc filed Critical Citrix Systems Inc
Application granted granted Critical
Publication of ES2209549T3 publication Critical patent/ES2209549T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4541Directories for service discovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/306User profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/75Indicating network or usage conditions on the user display
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/102Entity profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/104Grouping of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/24Negotiation of communication capabilities

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Stored Programmes (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

Método para visualizar cada programa de aplicación de programas de aplicación albergados en una pluralidad de servidores (30, 32, 34) de una red que está disponible para su uso por parte de un sistema cliente, comprendiendo el método las etapas de: (a) recibir credenciales de usuario asociadas a la identidad del usuario del sistema cliente (10, 20); (b) mantener la información relativa a la aplicación correspondiente a cada programa de aplicación que está albergado por cada servidor (30, 32, 34); (c) determinar si el usuario del sistema cliente (10, 20) está autorizado a usar cada programa de aplicación albergado por los servidores (30, 32, 34) basándose en las credenciales de usuario; y (d) transmitir información al sistema cliente (10, 20) en respuesta a la información relativa a la aplicación, describiendo la información transmitida cada programa de aplicación que el usuario del sistema cliente (10, 20) está autorizado a usar.

Description

Un aparato y procedimiento para determinar un programa cercano en un nodo cliente de una red cliente-servidor.
Campo de la invención
La invención se refiere en general a redes cliente-servidor. Más específicamente, la invención se refiere a un método para informar a un sistema cliente de programas de aplicación instalados en los sistemas servidor que están disponibles para su ejecución por el sistema cliente.
Antecedentes de la invención
Las redes de ordenadores actuales constan de varios sistemas de ordenador, llamados nodos, que se comunican con otros sistemas de ordenador vía enlaces de comunicaciones. Típicamente, algunos de los nodos son nodos cliente y otros nodos son nodos servidor. Un nodo cliente formula y suministra consultas a un nodo servidor. Un usuario del nodo cliente introduce las consultas a través de una interfaz de usuario que opera en el nodo cliente. El nodo servidor evalúa las consultas y suministra respuestas al nodo cliente para su visualización en la interfaz de usuario del
cliente.
Usualmente, los nodos servidor albergan una diversidad de programas de aplicación a los que pueden acceder y que pueden ser ejecutados por los nodos cliente. Cuando un nodo cliente inicia un programa de aplicación, la ejecución del programa de aplicación puede producirse en el nodo cliente o en el nodo servidor, dependiendo del modelo informático seguido por la red de ordenadores. En un modelo informático basado en el servidor, el nodo servidor ejecuta el programa de aplicación, y sólo la información de control para la interfaz de usuario del cliente es transmitida a través de la red de ordenadores al nodo cliente para su visualización. En un modelo informático basado en el cliente, el nodo servidor transmite el programa de aplicación al nodo cliente de manera que el nodo cliente puede ejecutar el programa usando los recursos del nodo cliente.
Un inconveniente de las redes de ordenadores actuales es que los nodos cliente pueden ignorar los programas de aplicación disponibles para su uso en los nodos servidor. De hecho, los nodos cliente pueden incluso no conocer cada nodo servidor disponible en la red. Para encontrar programas de aplicación disponibles en un nodo servidor particular, un usuario del nodo cliente puede necesitar encontrar y obtener acceso a dicho nodo servidor y realizar un listado de directorios de los archivos existentes en dicho nodo servidor. Incluso entonces, este listado podría no indicar al usuario aquellas aplicaciones que el usuario está autorizado a usar.
Además, una vez que el usuario conoce los programas de aplicación en el nodo servidor, a menudo dicho usuario debe establecer un enlace con dichas aplicaciones. La industria ha desarrollado herramientas de software para ayudar al usuario a crear estos enlaces, por ejemplo, el Gestor de Aplicaciones Remotas desarrollado por Citrix Systems, Inc. de Ft. Lauderdale, Florida. El Gestor de Aplicaciones Remotas es un programa de aplicación instalado en el nodo cliente. Este programa de aplicación guía a un administrador del nodo cliente para introducir información que establezca un enlace con una aplicación publicada en un nodo servidor particular. El administrador proporciona información tal como el nombre de la sesión, el protocolo para acceder al nodo servidor, el nombre del servidor o dirección IP o la aplicación publicada. Enfoques de este tipo requieren que el administrador conozca la información y entienda los detalles de protocolos y dominios para establecer la conexión.
El documento AU-A-199853031 describe un sistema para crear automáticamente bases de datos que contienen datos de industria, de servicios, de productos y clasificación de temas, datos de contacto, datos de localización geográfica (datos CCG) y enlaces a páginas web de páginas web codificadas en HTML, XML o SGML expuestas en redes de ordenadores tales como Internet o Intranets. Las páginas web que contienen datos CCG codificados en HTML, XML o SGML, controles de actualización de bases de datos y controles de visualización de exploradores web son creadas y modificadas usando editores de texto simples, editores HTML, XML o SGML o editores construidos para tal propósito. Las bases de datos CCG pueden ser buscadas por referencias (URLs) a páginas web mediante el uso de informaciones con referencia a uno o más de los ítems de los datos CCG. Alternativamente, informaciones con referencia a los datos CCG en las bases de datos pueden suministrar datos de contacto sin referencias a páginas web. La duplicación y coordinación de datos es reducida incluyendo en la página web controles de visualización de datos CCG que son usados por los exploradores web para formatear para la visualización los mismos datos que son usados para actualizar automáticamente las bases de datos.
El documento US-A-5,689,708 describe un gestor de recursos en una red de ordenadores cliente/servidor que controla de disponibilidad de recursos del sistema. Un administrador del sistema genera un conjunto de perfiles que especifica qué recursos de sistema puede emplear cada usuario para cada uno de los múltiples programas de aplicación. Programas de aplicación individuales pueden configurar internamente sus posibles elecciones de tales recursos del sistema de acuerdo con los perfiles apropiados en una base dinámica.
La presente invención es como se especifica en las reivindicaciones.
Sumario de la invención
La presente invención permite al usuario de un sistema cliente informarse acerca de los programas de aplicación disponibles en los servidores en una red sin exigir que el usuario conozca donde encontrar tales aplicaciones ni que introduzca información técnica necesaria para enlazar con tales aplicaciones.
En un aspecto, la invención se refiere a un método para presentar programas de aplicación a un sistema cliente en una red que incluye el sistema cliente y una pluralidad de servidores. Los servidores incluyen un servidor principal que recibe la información relativa a la aplicación correspondiente a los programas de aplicación albergados por una pluralidad de servidores en una red. Las credenciales de usuario son recibidas desde el sistema cliente. Si cada programa de aplicación albergado está disponible para su ejecución por el sistema cliente es determinado basándose en las credenciales de usuario y la información relativa a la aplicación recibida. La información es transmitida desde el servidor principal al sistema cliente indicando al sistema cliente cada aplicación albergada que está disponible para su ejecución por el sistema cliente. En algunas realizaciones, el servidor principal crea una visualización de salida que contiene la información relativa a la aplicación, tal como un archivo de lenguaje de composición de hipertexto (HTML), archivo de lenguaje de composición extendido (XML), u archivo de otro lenguaje de composición general estructurado (SGML).
El servidor principal puede autentificar al sistema cliente basándose en las credenciales de usuario recibidas. Cuando el sistema cliente selecciona una de las aplicaciones disponibles para su ejecución, dicha aplicación puede ser ejecutada sin requerir la entrada adicional de credenciales de usuario por parte de un usuario del sistema cliente, aunque la aplicación seleccionada esté en un servidor distinto del servidor principal.
En una realización se establece una conexión entre el sistema cliente y el servidor principal usando un protocolo de Arquitectura de Computación Independiente (ICA). El protocolo ICA puede establecer un canal virtual para transmitir información al sistema cliente que indica cada programa de aplicación albergado que está disponible para el sistema cliente.
Una petición para ejecutar uno de los programas de aplicación albergados disponibles puede ser recibida en la conexión. En respuesta a la petición puede ser establecida una segunda conexión entre el sistema cliente y el servidor principal para intercambiar información asociada a la ejecución del programa de aplicación solicitado. En otra realización puede ser establecida una conexión entre el servidor principal y un segundo servidor que alberga la aplicación solicitada en respuesta a la petición. La información asociada a la ejecución del programa de aplicación solicitado puede ser intercambiada entre el segundo servidor y el sistema cliente vía el servidor principal.
Una segunda petición para ejecutar un segundo de los programas de aplicación albergados disponibles puede ser recibida en la conexión entre el servidor principal y el sistema cliente. Otra conexión entre el servidor principal y un tercer servidor que alberga la aplicación solicitada puede ser establecida en respuesta a la segunda petición. La información asociada a una ejecución del segundo programa de aplicación solicitado puede ser intercambiada entre el tercer servidor y el sistema cliente vía el servidor principal. La información recibida del segundo y tercer servidores puede ser combinada para su transmisión al sistema cliente.
En aún otra realización, la información de la aplicación puede ser proporcionada por el servidor principal al sistema cliente en respuesta a la primera petición. Una segunda conexión puede ser establecida entre el sistema cliente y un segundo servidor que alberga la aplicación solicitada en respuesta a la información de la aplicación proporcionada.
El servidor principal puede transmitir la información de la aplicación disponible en respuesta a una petición por parte del sistema cliente. La información transmitida puede producir una visualización de interfaz gráfica de usuario en el sistema cliente que tenga iconos que representan los programas de aplicación disponibles. La información transmitida puede también describir cada programa de aplicación albergado que el sistema cliente no está autorizado a usar.
El servidor principal puede comunicarse con cada uno de los otros servidores para determinar los programas de aplicación albergados por dichos otros servidores y desarrollar una base de datos para almacenar la información relativa a la aplicación. La base de datos puede ser accesible a cada uno de los otros servidores de la pluralidad, o cada uno de los otros servidores puede mantener una base de datos para almacenar la información relativa a la aplicación.
En otro aspecto, la invención se refiere a un método para presentar a un sistema cliente cada aplicación albergada por un servidor que está disponible para el sistema cliente. Las credenciales de usuario son recibidas desde el sistema cliente. La información relativa a la aplicación es mantenida por el servidor. Si cada aplicación albergada por el servidor está disponible para su ejecución por el sistema cliente es determinado basándose en las credenciales de usuario y la información relativa a la aplicación. La información que indica cada aplicación que está disponible para el sistema cliente es transmitida desde el servidor al sistema cliente.
En otro aspecto, la invención se refiere a un servidor que comprende un módulo de servicio que recoge la información relativa a la aplicación correspondiente a los programas de aplicación albergados por la pluralidad de servidores. Una base de datos almacena la información relativa a la aplicación recogida. Un receptor recibe las credenciales de usuario desde el sistema cliente. El módulo de servicio determina para cada programa de aplicación albergado por la pluralidad de servidores si dicho programa de aplicación albergado se encuentra disponible para el uso por parte del usuario del sistema cliente basándose en las credenciales de usuario y en la información relativa a la aplicación almacenada en la base de datos. Un transmisor transmite la información al sistema cliente.
El módulo de servicio puede transmitir un datagrama a otros servidores de la pluralidad para recoger la información relativa a la aplicación correspondiente a los programas de aplicación albergados por dichos servidores. La información transmitida describe a un usuario del sistema cliente cada programa de aplicación albergado que está disponible para su uso por parte del usuario del sistema cliente. El transmisor puede transmitir la información de la aplicación disponible usando un protocolo de comunicaciones de canal virtual.
Breve descripción de los dibujos
La invención está indicada en detalle en las reivindicaciones adjuntas. Las anteriores y otras ventajas de la invención pueden ser entendidas mejor con referencia a la siguiente descripción junto a los dibujos adjuntos, en los que:
Fig. 1, es un diagrama de una realización de nodos cliente en comunicación con un grupo de nodos servidor vía una red, en la que un entorno de programas de un nodo cliente puede ser determinado de acuerdo con los principios de la invención;
Fig. 2A, es un diagrama de bloques que ilustra un procedimiento ejemplar por medio del cual uno de los nodos servidor puede iniciar la ejecución de un programa de aplicación para determinar el entorno de programas de un nodo cliente;
Fig. 2B, es un diagrama de bloques que ilustra un procedimiento ejemplar por medio del cual un nodo cliente puede iniciar la ejecución de un programa de aplicación para determinar el entorno de programas de dicho nodo cliente;
Fig. 2C, es un diagrama de bloques que ilustra un procedimiento ejemplar por medio del cual un nodo cliente usa una aplicación de explorador web para determinar su entorno de programas;
Figs. 3A,3B y 3C,son diagramas de bloques que ilustran procedimientos ejemplares mediante los cuales un nodo cliente puede iniciar un programa de aplicación de una ventana de Entorno de Programas visualizada en dicho nodo cliente;
Fig. 3D, es un diagrama de bloques que ilustra un procedimiento ejemplar mediante el cual un nodo cliente puede iniciar un programa de aplicación de una página web de Entorno de Programas visualizada en dicho nodo cliente;
Fig. 4, es un diagrama de bloques de una realización informática basada en el cliente en la que un nodo cliente que tiene instalada una aplicación de entorno de programas de la invención está en comunicación con uno de los nodos servidor;
Fig. 5, es un diagrama de bloques de una realización informática basada en el servidor en la que un nodo cliente está en comunicación con un nodo servidor que tiene instalado un programa de aplicación de entorno de programas de la invención;
Fig. 6A, es un cuadro de pantalla de una visualización ejemplar en la pantalla de visualización de un nodo cliente después de que el programa de aplicación de entorno de programas ha sido ejecutado;
Fig. 6B, es un cuadro de pantalla de otra visualización ejemplar en la pantalla de visualización de un nodo cliente después de que el programa de aplicación de entorno de programas ha sido ejecutado; y
Fig. 7, es una representación en diagrama de flujo de una realización de un procedimiento por medio del cual un nodo cliente es informado en cuanto a la disponibilidad de uso de programas de aplicación en los servidores de aplicación.
Descripción detallada de la invención
La Fig. 1 muestra un primer sistema informático (nodo cliente) 10 y un segundo sistema informático (nodo cliente) 20 en comunicación con sistemas informáticos (servidores de aplicación) 30, 32, 34 y 36 a través de una red 40. La red 40 puede ser una red de área local (LAN) o una red de área extensa (WAN) tal como Internet o World Wide Web. Los usuarios de los nodos cliente 10, 20 pueden estar conectados a la red 40 a través una diversidad de conexiones que incluyen líneas telefónicas estándar, enlaces LAN y WAN (por ejemplo, T1, T3, 56 kb, X.25), conexiones de banda ancha (ISDN, retransmisión de tramas (Frame Relay), ATM) y conexiones inalámbricas. Las conexiones pueden ser establecidas usando una diversidad de protocolos de comunicaciones (por ejemplo, TCP/IP, IPX, SPX, NetBIOS, Ethernet, RS232 y conexiones asíncronas directas).
El nodo cliente 10 puede ser cualquier ordenador personal (por ejemplo, 286, 386, 486, Pentium, Pentium II, ordenador Macintosh), terminal basada en Windows, ordenador en red, dispositivo inalámbrico, dispositivo de información, RISC Power PC, dispositivo X, estación de trabajo, miniordenador, gran sistema u otro dispositivo informático que tenga un escritorio basado en ventanas y almacenamiento persistente suficiente para ejecutar programas de aplicación descargados desde los servidores de aplicación 30, 32, 34 a través de la red 40. Las plataformas orientadas a ventanas soportadas por el nodo cliente 10 pueden incluir Windows 3.x, Windows 95, Windows 98, Windows NT 3.51, Windows NT 4.0, Windows CE, Macintosh, Java y Unix. El nodo cliente 10 puede incluir una pantalla de visualización 12, un teclado 14, memoria 16 para almacenar los programas de aplicación descargados, un procesador 17, y un ratón 18. La memoria 16 puede proporcionar almacenamiento persistente o volátil. El procesador 17 puede ejecutar los programas de aplicación localmente en el nodo cliente 10 y visualizar un escritorio basado en ventanas resultante en la pantalla de visualización 12. Tal procesamiento local en el nodo cliente 10 está de acuerdo con el modelo informático basado en el cliente descrito anteriormente.
Alternativamente, el nodo cliente 20 puede ser cualquier terminal (basado en ventanas o no) o un dispositivo cliente delgado que opera de acuerdo con un modelo informático basado en el servidor. En un modelo informático basado en el servidor, la ejecución de programas de aplicación se produce enteramente en los servidores de aplicación 30, 32, 34, y la interfaz de usuario, pulsaciones de teclas, y movimientos del ratón son transmitidos a través de la red 40 al nodo cliente 20. La interfaz de usuario puede ser conducida por texto (por ejemplo, DOS) o conducida gráficamente (por ejemplo, Windows). Plataformas que pueden ser soportadas por el nodo cliente 20 incluyen DOS y Windows CE para terminales basados en ventanas. El nodo cliente 20 incluye una pantalla de visualización 22, un teclado 24, un ratón 28, un procesador (no mostrado) y almacenamiento persistente (no mostrado).
Los servidores de aplicación 30, 32, 34 y 36 pueden ser cualquier dispositivo informático que controle el acceso a otras porciones de la red (por ejemplo, estaciones de trabajo, impresoras). Hay que entender que más o menos servidores de aplicación pueden ser conectados a la red 40. Los servidores 30, 32, 34 y 36 pueden operar de acuerdo con un modelo informático basado en el cliente o un modelo informático basado en el servidor como se describió anteriormente.
Cada servidor de aplicación 30, 32, 34 y 36 alberga uno o más programas de aplicación a los que pueden acceder los nodos cliente 10 y 20. A las aplicaciones puestas a disposición para su uso por parte de los nodos cliente se hace referencia como aplicaciones publicadas. Ejemplos de tales aplicaciones incluyen programas de procesamiento de texto, tales como MICROSOFT WORD® y programas de hoja de cálculo tales como MICROSOFT EXCEL®, ambos desarrollados por Microsoft Corporation de Redmond, Washington, programas de informes financieros, programas de registro de clientes, programas que proporcionan información de soporte técnico, aplicaciones de bases de datos de clientes o gestores de conjuntos de aplicaciones.
Los servidores 30, 32 y 34 pueden pertenecer al mismo dominio 38. En la red 40, un dominio es una subred que comprende un grupo de servidores de aplicación y nodos cliente sometidos al control de una base de datos de seguridad. Un dominio puede incluir uno o más "granjas de servidores". (Una granja de servidores es un grupo de servidores que están enlazados entre sí para actuar como un único sistema servidor para proporcionar administración centralizada). Recíprocamente, una granja de servidores puede incluir uno o más dominios. Para que servidores de dos dominios diferentes pertenezcan a la misma granja de servidores puede ser necesario que exista una relación de confianza entre los dominios. Una relación de confianza es una asociación entre los diferentes dominios que permite a un usuario acceder a los recursos asociados a cada dominio con sólo una autentificación de entrada.
En una realización, el servidor de aplicación 36 está en un dominio diferente al dominio 38. En otra realización, el servidor de aplicación 36 está en el mismo dominio que los servidores 30, 32 y 34. Para cualquier realización, los servidores de aplicación 30, 32 y 34 pueden pertenecer a una única granja de servidores, mientras que el servidor 36 pertenece a otra granja de servidores, o bien todos los servidores de aplicación 30, 32, 34 y 36 pueden pertenecer a la misma granja de servidores. Cuando un nuevo servidor es conectado a la red 40, el nuevo servidor, o bien se une a una granja de servidores existente, o bien inicia una nueva granja de servidores,
La red 40 puede incluir un nodo servidor maestro para realizar el equilibrio del nivel de carga entre los servidores de aplicación 30, 32, 34 y 36. El nodo servidor maestro puede ser uno de los servidores de aplicación 30, 32, 34 o 36. El nodo servidor maestro incluye una lista de direcciones de servidores e información de carga correspondiente a cada uno de los otros servidores de aplicación. El nodo servidor maestro puede dirigir al nodo cliente a un nodo servidor particular en el que ejecutar una aplicación basándose en la lista de servidores disponibles y los niveles de carga correspondientes. Alternativamente, los servidores de aplicación 30, 32, 34, 36 pueden colaborar entre sí a la par para intercambiar información de administración tal como niveles de carga, permitiendo a cualquier servidor 30, 32, 34, 36 responder a una petición hecha por un nodo cliente 10, 20.
Entorno de programas
De acuerdo con los principios de la invención, un usuario de cualquier nodo cliente 10, 20 puede conocer la disponibilidad de los programas de aplicación albergados por los servidores de aplicación 30, 32, 34 y 36 en la red 40 sin necesitar que el usuario sepa donde encontrar tales aplicaciones ni introducir información técnica necesaria para enlazar con tales aplicaciones. Estos programas de aplicación disponibles comprenden el "entorno de programas" del usuario. Un sistema para determinar un entorno de programas para un nodo cliente incluye un programa de aplicación (en lo que sigue se hará referencia a él como aplicación de "Entorno de programas"), memoria para almacenar componentes del programa de aplicación, y un procesador para ejecutar el programa de aplicación.
La aplicación de Entorno de Programas puede ser instalada en la memoria del nodo cliente 10 y/o en los servidores de aplicación 30, 32, 34 y 36 como se describió anteriormente. La aplicación de Entorno de Programas es una colección de servicios, interfaces de programas de aplicación (APIs) y programas de interfaz de usuario (UI) que indican a los usuarios de los nodos cliente 10, 20 aquellos programas de aplicación albergados por los servidores de aplicación que cada nodo cliente está autorizado a usar (por ejemplo, ejecutar).
Un servidor de aplicación que opere de acuerdo con la aplicación de Entorno de Programas recoge información relativa a la aplicación de cada uno de los servidores de aplicación en una granja de servidores. La información relativa a la aplicación para cada aplicación albergada puede ser una diversidad de información que incluya, por ejemplo, una dirección del servidor que alberga dicha aplicación, el nombre de la aplicación, los usuarios o grupos de usuarios que están autorizados a usar dicha aplicación, y las capacidades mínimas requeridas del nodo cliente antes de establecer una conexión para ejecutar la aplicación. Por ejemplo, la aplicación puede lanzar datos de vídeo, y por tanto una capacidad mínima requerida es que el nodo cliente soporte datos de vídeo. Otros ejemplos son que el nodo cliente pueda soportar datos de audio o que pueda procesar datos encriptados. La información relativa a la aplicación puede ser almacenada en una base de datos como se describirá posteriormente en la memoria descriptiva.
Cuando un nodo cliente entra en la red 40, el usuario del nodo cliente proporciona credenciales de usuario. Las credenciales de usuario incluyen típicamente el nombre del usuario del nodo cliente, la contraseña del usuario, y el nombre del dominio para el que el usuario está autorizado. Las credenciales de usuario pueden ser obtenidas de tarjetas inteligentes, testigos basados en tiempo, números de seguridad social, contraseñas de usuario, números de identificación personal (NIP), certificados digitales basados en criptografía de clave simétrica o curva elíptica, características biométricas del usuario, o cualesquiera otros medios con los cuales pueda ser obtenida la identificación del usuario del nodo cliente y sometida a autentificación. El servidor que responde al nodo cliente puede autentificar al usuario basándose en las credenciales de usuario. Las credenciales de usuario pueden ser almacenadas siempre que la aplicación de Entorno de Programas se esté ejecutando. Cuando el nodo cliente 10 ejecuta la aplicación de Entorno de Programas, las credenciales de usuario pueden ser almacenadas en el nodo cliente 10. Cuando un servidor de aplicación está ejecutando el Entorno de Programas, las credenciales de usuario pueden ser almacenadas en dicho servidor.
A partir de las credenciales de usuario y la información relativa a la aplicación, el servidor puede también determinar qué programas de aplicación albergados por los servidores de aplicación están disponibles para su uso por parte del usuario del nodo cliente. El servidor transmite información que representa los programas de aplicación disponibles al nodo cliente. Este procedimiento elimina la necesidad para un usuario del nodo cliente de establecer conexiones de aplicación. También, un administrador del servidor puede controlar el acceso a las aplicaciones entre los diversos usuarios del nodo cliente.
La autentificación de usuario realizada por el ser servidor puede ser suficiente para autorizar el uso de cada programa de aplicación albergado presentado al nodo cliente, aunque tales aplicaciones pueden residir en otro servidor. Por consiguiente, cuando el nodo cliente inicia (es decir, inicia la ejecución de) una de las aplicaciones albergadas, la entrada adicional de credenciales de usuario por parte del usuario puede ser innecesaria para autentificar el uso de dicha aplicación. Así, una entrada única de las credenciales de usuario puede servir para determinar las aplicaciones disponibles y autorizar el inicio de tales aplicaciones sin un procedimiento de autentificación de entrada manual adicional por parte del usuario del cliente.
Un nodo cliente 10, 20 o un servidor de aplicación puede iniciar la aplicación de Entorno de Programas como está descrito con relación a las figuras 2A-2C. Los resultados se muestran en la pantalla de visualización 12, 22 del nodo cliente 10, 20. En una implementación gráfica basada en ventanas, los resultados pueden ser visualizados en una ventana gráfica de Entorno de Programas y cada programa de aplicación autorizado puede ser representado mediante un icono gráfico en dicha ventana.
Una realización de la aplicación de Entorno de Programas filtra los programas de aplicación que el nodo cliente 10, 20 no está autorizado a usar y visualiza sólo los programas autorizados (es decir disponibles). En otras realizaciones, la aplicación de Entorno de Programas puede visualizar las aplicaciones autorizadas y no autorizadas. Cuando las aplicaciones no autorizadas no son filtradas de la visualización, puede ser proporcionado un aviso que indique que tales aplicaciones no están disponibles. Alternativamente, la aplicación de Entorno de Programas puede informar de todas las aplicaciones albergadas por los servidores de aplicación 30, 32, 34, 36 al usuario de un nodo cliente, sin identificar qué aplicaciones el nodo cliente está autorizado o no autorizado a ejecutar. La autorización puede ser determinada posteriormente cuando el nodo cliente 10, 20 intenta ejecutar una de dichas aplicaciones.
La Fig. 2a muestra un procedimiento ejemplar mediante el cual un servidor inicia la aplicación de Entorno de Programas (PN) y presenta los resultados de la aplicación PN al nodo cliente 10. El servidor puede iniciar la aplicación PN en respuesta a una petición 42 por parte del nodo cliente 10 para un programa de aplicación particular. La petición pasa al nodo servidor maestro, en este ejemplo el servidor 30. El nodo servidor maestro 30, teniendo en cuenta el equilibrio de carga y la disponibilidad de la aplicación, indica (flecha 43) al nodo cliente 10 que la aplicación solicitada está disponible en el servidor 32. El nodo cliente 10 y el servidor 32 establecen una conexión (flechas 45 y 46). Mediante esta conexión, el servidor 32 puede transferir el código ejecutable de la aplicación particular al nodo cliente 10, cuando el nodo cliente 10 y el servidor 32 están operando de acuerdo con el modelo informático basado en el cliente. Alternativamente, el servidor 32 puede ejecutar la aplicación particular y transferir la interfaz gráfica de usuario al nodo cliente 10, cuando el nodo cliente 10 y el servidor 32 están operando de acuerdo con el modelo informático basado en el servidor. Además, o bien el nodo servidor maestro 30 o el servidor 32 pueden ejecutar la aplicación de Entorno de Programas 41 y hacer volver los resultados (flechas 43 o 46) al nodo cliente 10 para que cuando el nodo cliente 10 solicite la aplicación de Entorno de Programas, los resultados de entorno de programas estén ya disponibles en el nodo cliente 10.
La Fig. 2B muestra otro procedimiento ejemplar mediante el cual el nodo cliente 10 inicia la ejecución de la aplicación de Entorno de Programas y un servidor presenta los resultados de la aplicación PN al nodo cliente 10. El nodo cliente 10 inicia la aplicación de Entorno de Programas (por ejemplo, pinchando en el icono 41 de Entorno de Programas que representa la aplicación). La petición 50 para la aplicación de Entorno de Programas es dirigida al nodo servidor maestro, en este ejemplo el servidor 30. El nodo servidor maestro 30 puede ejecutar la aplicación de Entorno de Programas si la aplicación está en el nodo servidor maestro 30 y devolver los resultados al nodo cliente 10. Alternativamente, el nodo servidor maestro 30 puede indicar (flecha 51) al nodo cliente 10 que la aplicación de Entorno de Programas 41está disponible en otro servidor, en este ejemplo el servidor 32. El nodo cliente 10 y el servidor 32 establecen una conexión (flechas 53 y 54) mediante la cual el nodo cliente 10 solicita la ejecución de la aplicación de Entorno de Programas 41. El servidor 32 puede ejecutar la aplicación 41 y transferir los resultados (es decir, la interfaz gráfica de usuario) al nodo cliente 10.
La Fig. 2C muestra otro procedimiento ejemplar mediante el cual un nodo cliente 20 inicia la ejecución de la aplicación de Entorno de Programas, en este ejemplo vía la World Wide Web. Un nodo cliente 20 ejecuta una aplicación explorador web 80, tal como el NAVEGADOR NESTCAPE, desarrollado por Nestcape Communications, Inc. de Mountain View, California o EXPLORADOR DE INTERNET MICROSOFT, desarrollado por Microsoft Corporation de Redmond, Washington.
El nodo cliente 20, vía el explorador web 80, transmite una petición 82 para acceder a una dirección de Localizador Uniforme de Recursos (URL) correspondiente a una página HTML residente en el servidor 30. En algunas realizaciones, la primera página HTML devuelta 84 al nodo cliente 20 por el servidor 30 es una página de autentificación que persigue identificar al nodo cliente 20.
La página de autentificación permite al nodo cliente 20 transmitir las credenciales de usuario, vía el explorador web 80, al servidor 30 para su autentificación. Las credenciales de usuario transmitidas son verificadas por el servidor 30 o por otro servidor en la granja. Esto permite que un dominio de seguridad sea proyectado sobre el servidor 30. Por ejemplo, si el servidor 30 ejecuta el sistema operativo Windows NT, desarrollado por Microsoft Corporation de Redmond, Washington, y el servidor de autentificación ejecuta el sistema operativo UNIX, puede decirse que el dominio de seguridad UNIX se ha proyectado sobre el servidor 30. Las credenciales de usuario pueden ser transmitidas "sin codificar", o pueden estar encriptadas. Por ejemplo, las credenciales de usuario pueden ser transmitidas vía una conexión de capa de conexiones seguras (SSL), que encripta los datos usando el algoritmo RC3, fabricado por RSA Data Security, Inc. de San Mateo, California.
El servidor 30 puede verificar las credenciales de usuario recibidas del nodo cliente 20. Alternativamente, el servidor 30 puede pasar las credenciales de usuario a otro servidor para su autentificación. En esta realización, el servidor de autentificación puede estar en un dominio diferente al del servidor 30. Las credenciales de usuario del nodo cliente 20 autentificadas pueden ser almacenadas en el nodo cliente 20 en una cookie por sesión o en campos que no son visualizados por el explorador web 80, o de cualquier otro modo normal en el mantenimiento de páginas web. En algunas realizaciones, una granja de servidores a la que está asociado el servidor 30 puede permitir descubrir usuarios, es decir, usuarios que no tienen credenciales de usuario asignadas, accediendo a las aplicaciones albergadas por los servidores en la granja. En estas realizaciones, la página de autentificación puede proporcionar un mecanismo para permitir que un nodo cliente 20 identifique que se trata de un usuario descubierto, tal como un botón o selección de menú. En otras de estas realizaciones, el servidor 30 puede omitir la página de autentificación por completo.
Aún con referencia a la Fig. 2C, una vez que el nodo cliente 20 es autentificado por el servidor 30, el servidor prepara y transmite al nodo cliente 20 una página HTML 88 que incluye una ventana 58 de Entorno de Programas en la que aparecen iconos gráficos 57, 57' que representan los programas de aplicación a los que tiene acceso el nodo cliente 20. Un usuario del nodo cliente 20 invoca la ejecución de una aplicación representada por el icono 57 pinchando en dicho icono 57.
La Fig. 3A muestra un procedimiento de comunicación ejemplar entre el nodo cliente 10, el nodo servidor maestro, en este ejemplo el servidor 30, y el servidor 32. El nodo cliente 10 tiene una conexión activa 72 con el servidor 32. El nodo cliente 10 y el servidor 32 pueden usar la conexión activa 72 para intercambiar información concerniente a la ejecución de un primer programa de aplicación. Las credenciales de usuario del nodo cliente 10 son almacenadas en el nodo cliente. Tal almacenamiento de las credenciales de usuario puede ser en memoria caché o almacenamiento persistente.
En esta realización, la aplicación de Entorno de Programas se ejecuta en el nodo cliente 10. La visualización del nodo cliente tiene una ventana 58 de Entorno de Programas en la que aparece un icono gráfico 57 que representa un segundo programa de aplicación. Un usuario del nodo cliente 10 puede iniciar el segundo programa de aplicación pinchando dos veces en el icono 57 con el ratón. La petición pasa al nodo servidor maestro 30 vía una conexión 59. El nodo servidor maestro 30 indica al nodo cliente 10 vía una conexión 59 que la aplicación solicitada está disponible en el servidor 32. El nodo cliente 10 señala al servidor 32 que establezca una segunda conexión 70. El servidor 32 requiere las credenciales de usuario del nodo cliente 10 para autentificar el acceso al segundo programa de aplicación. Con una autentificación con éxito, el nodo cliente 10 y el servidor 32 establecen la segunda conexión 70 e intercambian información concerniente a la ejecución del segundo programa de aplicación. Por consiguiente, el nodo cliente 10 y el servidor 32 se comunican entre sí a través de múltiples conexiones.
La Fig. 3B muestra un procedimiento de comunicación ejemplar entre el nodo cliente 20, el nodo servidor maestro, en este ejemplo el servidor 30, y los servidores 32, 34 y 36. El nodo cliente 20 tiene una conexión activa 73 con el servidor 32. El nodo cliente 20 y el servidor 32 pueden usar la conexión activa 73 para intercambiar información concerniente a la ejecución de un primer programa de aplicación. Las credenciales de usuario del nodo cliente 20 son almacenadas en el servidor 32 en memoria caché o en almacenamiento persistente.
En esta realización, la aplicación de Entorno de Programas se ejecuta en el servidor 32. El servidor 32 incluye software que proporciona una máquina cliente 62 basada en el servidor, que permite al servidor 32 operar en la capacidad del nodo cliente 20. La visualización del nodo cliente 20 tiene una ventana 58 de Entorno de Programas en la que aparecen iconos gráficos 57, 57' que representan un segundo programa de aplicación y un tercer programa de aplicación, respectivamente. Un usuario del nodo cliente 20 puede iniciar el segundo programa de aplicación pinchando dos veces en el icono 57. La petición de inicio del segundo programa de aplicación pasa al servidor 32 vía la conexión activa 73, y el servidor 32 remite la petición al nodo servidor maestro 30 (flecha 65).
El nodo servidor maestro 30 indica (flecha 65) al servidor 32 que la aplicación solicitada está disponible en el servidor 34. El servidor 32 contacta con el servidor 34 para establecer una conexión 66. Para autentificar el acceso a la aplicación, el servidor 34 obtiene las credenciales de usuario para el nodo cliente 20 del servidor 32. El servidor 32 y el servidor 34 establecen la conexión (flecha 66) mediante la cual el servidor 32 solicita la ejecución de la segunda aplicación y el servidor 34 devuelve los resultados de la interfaz gráfica de usuario al servidor 32. El servidor 32 remite los resultados de la interfaz gráfica de usuario al nodo cliente 20, donde son visualizados los resultados. Por consiguiente, la información intercambiada entre el nodo cliente 20 y el servidor 34 "pasa a través" del servidor 32.
De forma similar, el nodo cliente 20 puede iniciar el tercer programa de aplicación pinchando dos veces en el icono 57'. La petición de iniciar el tercer programa de aplicación pasa al servidor 32. El servidor 32 remite la petición al nodo servidor maestro 30, que considera el equilibrio de carga y la disponibilidad de programas de aplicación para decidir que servidor puede encargarse de la petición. En este ejemplo, el nodo servidor maestro indica que el servidor 36 puede ejecutar el tercer programa de aplicación.
El servidor 32 y el servidor 36 establecen una conexión (flecha 74) mediante la cual el servidor 32 solicita la ejecución del tercer programa de aplicación, y el servidor 36 devuelve los resultados de la interfaz gráfica de usuario al servidor 32. Para permitir la ejecución del tercer programa de aplicación, el servidor 36 puede autentificar las credenciales de usuario del nodo cliente 20, que son obtenidas del servidor 32. El servidor 32 remite los resultados de la interfaz gráfica de usuario al nodo cliente 20 donde son mostrados los resultados. Por consiguiente, los resultados de la ejecución del tercer programa de aplicación pasan entre el nodo cliente 20 y el servidor 36 a través del servidor 32.
De esta ilustración debería entenderse que el nodo cliente 20 puede ejecutar múltiples programas de aplicación a través de una conexión con el servidor 32, mientras que el servidor 32 mantiene múltiples conexiones (en este ejemplo, una conexión con el servidor 32 y una segunda conexión con el servidor 36). También, el servidor 32 combina la información recibida del servidor 34 con la información recibida del servidor 36 en una única corriente de datos para la transmisión al nodo cliente 20.
La Fig. 3C muestra un procedimiento de comunicación ejemplar entre el nodo cliente 20, el nodo servidor maestro, en este ejemplo el servidor 30, y los servidores 32 y 34. El nodo cliente 20 tiene una conexión activa 76 con el servidor 32. El nodo cliente 20 y el servidor 32 pueden usar la conexión activa 76 para intercambiar información concerniente a la ejecución de un primer programa de aplicación. El nodo cliente 20 puede almacenar las credenciales de usuario en memoria caché o en un almacenamiento persistente.
En esta realización, la aplicación de Entorno de Programas se ejecuta en el servidor 32. La visualización del nodo cliente 20 tiene una ventana 58 de Entorno de Programas en la que aparece un icono gráfico 57 que representa un segundo programa de aplicación. Un usuario del nodo cliente 20 puede iniciar el segundo programa de aplicación pinchando dos veces en el icono 57. La petición de iniciar el segundo programa de aplicación pasa al servidor 32. El servidor 32 responde (es decir "vuelve a llamar") al nodo cliente 20 devolviendo la información relativa a la aplicación tal como el nombre de la aplicación y las capacidades que necesita el nodo cliente 20 para ejecutar la segunda aplicación.
Con la información proporcionada por el servidor 32, el nodo cliente comunica entonces con el nodo servidor maestro 30 vía la conexión 77 para determinar el servidor para ejecutar el segundo programa de aplicación. En este ejemplo, dicho servidor es el servidor 34. El nodo cliente 20 establece entonces una conexión 78 con el servidor 34. El servidor 34 solicita las credenciales de usuario del nodo cliente 20 para autentificar el usuario del nodo cliente 20. El segundo programa de aplicación se ejecuta en el servidor 34, y el servidor 34 devuelve la interfaz gráfica de usuario al nodo cliente 20 vía la conexión 78 establecida. Por consiguiente, el nodo cliente 20 puede tener múltiples conexiones activas entre los múltiples servidores.
La Fig. 3D muestra un proceso de comunicación ejemplar entre el nodo cliente 20, un servidor 30 que en este ejemplo actúa como servidor web, y el servidor 32. El nodo cliente 20 se autentifica a sí mismo al servidor 30 como se describió anteriormente con relación a la Fig. 2C. En una realización, el servidor 30 accede a una plantilla de visualización de salida 90, tal como un archivo SGML, HTML o XML, para usarlo como base para la construcción de la ventana de Entorno de Programas para transmitir al nodo cliente 20. La plantilla puede ser almacenada en memoria volátil o persistente asociada al servidor 30 o puede ser almacenada en memoria masiva 92, tal como una unidad de disco o dispositivo óptico, como se muestra en la Fig. 3D.
En esta realización, la plantilla 90 es un documento SGML, HTML o XML estándar que contiene los marcadores específicos de Entorno de Programas que son reemplazados por información dinámica. Los marcadores indican al servidor 30 donde en la visualización de salida insertar la información correspondiente a las aplicaciones disponibles, tal como imágenes de iconos. En una realización particular, los marcadores específicos de Entorno de Programas son incrustados dentro de comentarios en el interior de un archivo, permitiendo al archivo permanecer compatible con los intérpretes estándar. En otra realización, los marcadores específicos de Entorno de Programas son extensiones del idioma de composición usado como base para la plantilla.
Ejemplos de marcadores HTML que pueden ser usados en una plantilla de acuerdo con la presente invención están indicados a continuación en la tabla 1:
TABLA 1
Marcador Descripción
Campocontrolvalorcampo \begin{minipage}[t]{110mm} Este marcador es usado para establecer el valor de los datos que o bien persisten entre páginas web de Entorno de Programas, son establecidos por el usuario, o son usados para ayudar en la navegación a través de la página, tales como nombre de usuario, dominio, contraseña, plantilla y aplicación \end{minipage}
DibujarEntornoProgramas \begin{minipage}[t]{110mm} Este marcador es usado para dibujar una visualización de Entorno de Programas en esta localización en una visualización de salida. \end{minipage}
NombreAplic \begin{minipage}[t]{110mm} Este marcador es sustituido por el nombre de la aplicación publicada en el contexto actual. \end{minipage}
TipoVentana \begin{minipage}[t]{110mm} Este marcador es sustituido por el tipo de ventana de la aplicación publicada en el contexto actual. \end{minipage}
AlturaVentana \begin{minipage}[t]{110mm} Este marcador es substituido por la altura de ventana de la aplicación publicada en el contexto actual. \end{minipage}
AnchoVentana \begin{minipage}[t]{110mm} Este marcador es substituido por el ancho de ventana de la aplicación publicada en el contexto actual. \end{minipage}
EscalaVentana \begin{minipage}[t]{110mm} Este marcador es substituido por la escala de ventana de la aplicación publicada en el contexto actual. \end{minipage}
NúmColoresVentana \begin{minipage}[t]{110mm} Este marcador es substituido por la profundidad de color de la aplicación publicada en el contexto actual. \end{minipage}
TipoSonido \begin{minipage}[t]{110mm} Este marcador es substituido por el ajuste de sonido de la aplicación publicada en el contexto actual. \end{minipage}
TipoVídeo \begin{minipage}[t]{110mm} Este marcador es substituido por el ajuste de vídeo de la aplicación publicada en el contexto actual. \end{minipage}
NivelEncriptación \begin{minipage}[t]{110mm} Este marcador es substituido por el nivel de encriptación de la aplicación publicada en el contexto actual. \end{minipage}
Icono \begin{minipage}[t]{110mm} Este marcador es substituido por el icono de la aplicación publicada en el contexto actual. \end{minipage}
Pueden ser previstos otros marcadores para ajustar los campos de control y proporcionar procesamiento condicional relativo a la aplicación de Entorno de Programas.
En una realización, el modelo es construido dinámicamente usando, por ejemplo, COLD FUSION, desarrollado por Allaire Corp. de Cambridge, Massachusetts o ACTIVE SERVER PAGES desarrollado por Microsoft Corporation de Redmond, Washington. Alternativamente, la plantilla puede ser estática. La aplicación de Entorno de Programas analiza sintácticamente la plantilla, sustituyendo los marcadores específicos de Entorno de Programas como se indicó anteriormente. Los marcadores que no son específicos de Entorno de Programas son abandonados en el archivo para ser analizados sintácticamente por el programa explorador 80 que se ejecuta en el cliente 20.
En una realización, está previsto un objeto analizador sintáctico de plantillas que acepta una plantilla HTML como entrada, interpreta los marcadores específicos de Entorno de Programas presentes en la plantilla y da como salida la plantilla original con todos los marcadores de Entorno de programas sustituidos por el texto apropiado. El objeto analizador sintáctico de plantillas puede ser pasado a una cookie, una cadena de consultas URL, o un campo de control de una interfaz de servidor web para proporcionar la información con la que los marcadores específicos de Entorno de Programas deberían ser sustituidos.
En otra realización, la aplicación de Entorno de Programas permite aceptar scripts (secuencias de comandos) como información vía la interfaz de programación de aplicación. Los scripts pueden ser escritos, por ejemplo, VBScript o Jscript. En esta realización, el lenguaje de scripts es usado para generar dinámicamente una visualización de salida que usa la información devuelta por la aplicación en respuesta a consultas planteadas por el script. Una vez que la visualización de salida es generada, es transmitida al nodo cliente 20 para su visualización por el programa explorador 80.
Un usuario del nodo cliente 20 puede iniciar una aplicación pinchando dos veces con un ratón en el icono 57, 57' mostrado en la página web del Entorno de Programas. En algunas realizaciones, cada icono 57, 57' es una URL codificada que especifica: la localización de la aplicación (es decir, en qué servidores está albergada o, alternativamente, la dirección de un servidor maestro), un comando de inicio asociado a la aplicación, y una plantilla que identifica cómo la salida de la aplicación debería ser visualizada (es decir, en una ventana "incrustada" en el explorador o en una ventana separada). En algunas realizaciones, la URL incluye un archivo, o una referencia a un archivo que contiene la información necesaria para que el cliente cree una conexión con el servidor que alberga la aplicación. Este archivo puede ser creado por la aplicación de Entorno de Programas dinámicamente. El nodo cliente 20 establece una conexión (flecha 94) con el servidor identificado como que alberga la aplicación solicitada (en este ejemplo, servidor 32) e intercambia información concerniente a la ejecución de la aplicación deseada. En algunas realizaciones, la conexión 94 se hace usando el protocolo Arquitectura de Computación Independiente (ICA), desarrollado por Citrix Systems, Inc. de Fort Lauderdale, Florida. Así, el nodo cliente 20 puede visualizar la salida de la aplicación en una ventana separada del explorador web 60 o puede "incrustar" la salida de la aplicación dentro del explorador web.
La Fig. 4 ilustra una disposición ejemplar de los componentes de programa para una implementación basada en el cliente de la aplicación de Entorno de Programas. Una implementación basada en el cliente de la aplicación de Entorno de Programas puede ser usada en una red empleando el modelo informático basado en el servidor, en el que los servidores ejecutan la aplicación de Entorno de Programas, o el modelo informático basado en el cliente, en el que el nodo cliente 10 ejecuta la aplicación de Entorno de Programas localmente. La aplicación de Entorno de Programas incluye un componente 44 de Servicio de Entorno de Programas (PNSVC), un componente 48 de Base de Datos de Aplicación, un componente 52 de Interfaz de Programa de Aplicación de Entorno de Programas (PNAPI), un componente 56 de Interfaz de usuario de Entorno de Programas y un caché local 60.
El servidor de aplicación 30, por ejemplo, incluye el componente 44 de servicio (PNSVC) y la base de datos de aplicación 48. El nodo cliente 10, que es un ejemplo representativo de un nodo cliente que puede soportar una implementación basada en el cliente de la aplicación de Entorno de Programas, incluye la interfaz de programa de aplicación PNAPI 52, el componente 56 de la interfaz de usuario y el caché local 60. El PNSVC 44 comunica con la base de datos de la aplicación 48 y con la PNAPI 52 en el nodo cliente 10 vía el enlace de comunicaciones 62.
El enlace de comunicaciones 62 puede ser establecido, por ejemplo, usando el protocolo ICA. ICA es un protocolo de servicios de presentación de propósito general diseñado para ejecutarse a través de protocolos de red estándar en la industria, tal como TCP/IP, IPX/SPX, NetBEUI, que usa protocolos de transporte estándar en la industria, tales como ISDN, retransmisión de tramas y modo de transferencia asíncrono (ATM). El protocolo ICA proporciona canales virtuales, que son conexiones de transmisión orientados a la sesión que pueden ser usadas por un código de capa de aplicación para producir comandos para intercambiar datos. Los comandos de canal virtual están diseñados para estar íntimamente integrados con las funciones de los nodos cliente. Un tipo de conexión de canal virtual soportado por el protocolo ICA es un canal virtual de Entorno de Programas.
El protocolo de canal virtual de Entorno de Programas puede incluir cuatro grupos de comandos:
(1) comandos relativos a la inicialización;
(2) comandos relativos a la autentificación única que puede ser soportada por cada nodo cliente que quiere una copia de las credenciales de usuario;
(3) comandos referidos a los datos de aplicación para implementar la interfaz de usuario de Entorno de Programas; y
(4) comandos relativos a la devolución de llamada de inicio de aplicación para ejecutar la interfaz de usuario en un servidor de aplicación.
Base de datos de aplicación
La base de datos de aplicación 48 es un caché del usuario autorizado e información de grupo para todas las aplicaciones públicas (es decir, publicadas) en una granja de servidores o en un grupo de dominios confiados. Cada servidor en una granja de servidores puede mantener su propia información relativa a la aplicación en almacenamiento persistente y constituir la base de datos 48 en almacenamiento volátil. En otra realización, toda la información relativa a la aplicación recogida en la base de datos 48 puede ser almacenada en almacenamiento persistente y hacerse accesible para cada uno de los otros servidores en la granja de servidores. La base de datos 48 puede ser implementada en un formato propietario (por ejemplo, como una lista enlazada en memoria) o usando Servicios de Directorio de Novell (NDS) o cualquier servicio de directorios que se adhiera al estándar X.500 definido por la Unión Internacional de Telecomunicaciones (UIT) para directorios electrónicos distribuidos.
La base de datos de aplicación 48 incluye una lista de los servidores de aplicación. Cada servidor en la lista tiene un conjunto de aplicaciones asociado. Asociada a cada aplicación está una información relativa a la aplicación que puede incluir el nombre de la aplicación, una lista de servidores, y usuarios del cliente que están autorizados a usar dicha aplicación. Un ejemplo muy simplificado de la información relativa a la aplicación mantenida en la base de datos está ilustrada por la siguiente tabla 2. Los usuarios A y B son usuarios de los nodos cliente 10, 20, "n/a" indica que la aplicación es albergada, pero no está disponible para los usuarios del nodo cliente, y "-" indica que la aplicación no está albergada.
TABLA 2
Aplicaciones
Nombre de Servidor Hoja de Cálculo Base de Datos del Cliente Procesador de texto Calculador
Servidor 30 Usuario A Usuario B n/a -
Servidor 32 Usuario B n/a Usuario A -
Servidor 34 - - - Usuario A
Usuario B
La Tabla 2 muestra una lista de servidores 30, 32, 34, las aplicaciones albergadas por los servidores, (Hoja de Cálculo, Base de datos de cliente, Procesador de texto y Calculador), y aquellos usuarios que están autorizados a usar las aplicaciones. Por ejemplo, el servidor 30 alberga el programa de Hoja de Cálculo, la base de datos de cliente y el procesador de texto. El usuario A está autorizado a usar la hoja de cálculo, el usuario B está autorizado a usar la base de datos del cliente, y ningún usuario está autorizado a usar el procesador de texto. Hay que entender que puede ser usadas otras técnicas para indicar quienes están autorizados a usar una aplicación particular. Por ejemplo, la información de usuario almacenada en la base de datos puede ser usada para indicar aquellos usuarios que no están autorizados a usar una aplicación particular en lugar de aquellos que sí están autorizados.
Para obtener la información que está almacenada en la base de datos 48, el servidor 30 obtiene la información relativa a la aplicación de cada uno de los otros servidores de la granja de servidores considerando las aplicaciones en aquellos servidores, incluyendo la información de control que indica a qué usuarios del cliente y servidores se les permite acceder a cada aplicación particular. La información relativa a la aplicación mantenida en la base de datos puede persistir o no a través de rebotes del servidor 30.
La base de datos de aplicación 48 puede ser una base de datos central que está almacenada en los servidores de aplicación 30, 32 y 34, y es accesible a todos los servidores de la granja de servidores. Por consiguiente, la información relativa a la aplicación puede estar disponible para su uso por otros servidores tales como aquellos servidores que realizan la autentificación de la aplicación publicada durante la entrada en la sesión y el inicio de la aplicación. En otra realización, la base de datos de aplicación 48 puede ser mantenida en cada uno de los servidores de aplicación 30, 32 y 34 basándose en la información que cada servidor obtiene de las comunicaciones con cada uno de los otros servidores de la granja de servidores.
Programa de servicio de entorno de programas (PNSVC)
Cada servidor 30, 32, 34 y 36 que tiene la aplicación de Entorno de Programas instalada en él ejecuta el software PNSVC 44. El software PNSVC 44 que opera en cada servidor 30, 32, 34 y 36 establece un enlace de comunicaciones (por ejemplo, una tubería con nombre) con cada uno de los otros servidores. Los servidores 30, 32, 34 y 36 intercambian la información relativa a la aplicación en las tuberías con nombre. En otra realización, el software PNSVC 44 recoge la información relativa a la aplicación de los otros servidores de la granja de servidores a través de llamadas de registro remoto (por ejemplo, el componente de servicio 44 transmite un datagrama a otros servidores en la pluralidad solicitando la información relativa a la aplicación correspondiente a los programas de aplicación albergados por aquellos servidores). El software PNSVC 44 también mantiene las relaciones de grupos y usuarios para las aplicaciones publicadas en la base de datos de aplicación 48 y accede a la información cuando autentifica un usuario del cliente. Un administrador del servidor 30 puede usar una interfaz de usuario para configurar el PNSVC 44.
Otras funciones del software PNSVC 44 incluyen implementar los servicios y funciones requeridos por la PNAPI 52 y comunicar con la PNAPI 52 en el nodo cliente 10 usando un controlador de dispositivo virtual de Entorno de Programas (VDPN). El VDPN opera de acuerdo con el protocolo de canal virtual de Entorno de Programas descrito anteriormente para establecer y mantener una conexión ICA.
Interfaz de programa de aplicación de entorno de programas (PNAPI)
La PNAPI 52 es un conjunto de funciones de software o servicios que son usados por la aplicación de Entorno de Programas para realizar varias aplicaciones (por ejemplo, abrir ventanas en una pantalla de visualización, abrir archivos, y visualizar cajas de mensajes). La PNAPI 52 proporciona un mecanismo genérico para iniciar objetos de aplicación (por ejemplo, iconos) producidos por la ejecución de la aplicación de Entorno de Programas y objetos de aplicación en una interfaz de usuario del cliente heredada (es decir, predecesora o existente durante algún tiempo). Cuando el nodo cliente 10 inicia una aplicación disponible, el mecanismo de inicio puede iniciar la aplicación en el servidor 30, si es necesario (por ejemplo, cuando un nodo cliente 10 no tiene los recursos para ejecutar localmente la aplicación).
La PNAPI 52 proporciona toda la información de aplicación publicada al componente 56 de interfaz de usuario para su visualización en la pantalla 12 (Fig. 1) del nodo cliente 10. La PNAPI 52 también gestiona las entradas de la granja de servidores en una base de datos local de credenciales de entrada (por ejemplo, contraseñas) por usuarios del nodo cliente 10 que soportan la característica de autentificación simple. Las credenciales pueden ser persistentes o no a través de botados (ciclos de conexión y desconexión) del nodo cliente 10.
La PNAPI 52 proporciona gestión automática y manual para los objetos de la aplicación de Entorno de Programas almacenados en el caché local 60. El caché local 60 puede ser refrescado manualmente por el usuario del nodo cliente 10 o a una velocidad de refresco definible por el usuario, o por el servidor en cualquier momento durante una conexión. En una implementación Windows, la PNAPI 52 puede crear asociaciones de archivos de aplicación remotos y gestionar el menú "Inicio" y los iconos del escritorio para atajos de objetos de aplicación.
Interfaz de usuario de entorno de programas
El módulo de interfaz de usuario 56 interactúa con la PNAPI 52 y puede ser un superconjunto funcional de una interfaz cliente-usuario existente (por ejemplo, Gestor de Aplicaciones Remotas). El módulo de interfaz de usuario 56 accede a la información almacenada en el cache local 60 a través de la PNAPI 52 y presenta visualmente dicha información al usuario en la pantalla de visualización 12 (Fig. 1) del nodo cliente 10. La información visualizada es una mezcla de información generada por un usuario del nodo cliente 10 e información obtenida por la aplicación de Entorno de Programas. El módulo de interfaz de usuario 56 puede también mostrar al usuario todas las aplicaciones que el usuario está ejecutando actualmente y todas las sesiones activas y desconectadas.
En una realización basada en ventanas, el módulo de interfaz de usuario 56 puede presentar una variedad de componentes gráficos, tales como menús de ventanas y desplegables, para ser visualizados en la pantalla de visualización 12 (Fig. 1). A una visualización de una combinación de tales componentes de interfaz gráfica de usuario se hace referencia generalmente como un "escritorio". Un escritorio producido por el módulo de interfaz de usuario 56 puede incluir una ventana de Entorno de Programas que muestre el entorno de programas de aplicación disponibles al usuario del nodo cliente 10 para su uso. Estos programas de aplicación son una combinación filtrada de las aplicaciones publicadas albergadas por una granja de servidores en la red. El módulo de interfaz de usuario 56 puede generar una ventana de Entorno de Programas para cada granja de servidores o combinar las aplicaciones de diferentes granjas de servidores bajo una única ventana de Entono de Programas.
A un nivel superior, la ventana de Entorno de Programas incluye una carpeta para cada granja de servidores. Pinchar en una de las carpetas con el ratón 18 (Fig. 1) produce una ventana que contiene una representación (por ejemplo, un icono) de cada aplicación albergada disponible para el usuario, por ejemplo, véanse las figuras 6A y 6B. La ventana de Entorno de Programas se convierte en el foco para el inicio de las aplicaciones publicadas, y el módulo de interfaz de usuario 56 puede ser usado para iniciar las aplicaciones a través de la PNAPI 52. Por ejemplo, el usuario del nodo cliente 10 puede usar el ratón 18 para seleccionar uno de los iconos mostrados e iniciar la aplicación asociada.
Una característica de una implementación basada en el cliente es que el usuario puede explorar los objetos mostrados en la ventana de Entorno de Programas aunque el nodo cliente esté desconectado, es decir, la conexión ICA 62 esté inactiva. También, un usuario del nodo cliente 10 puede arrastrar objetos de aplicación y carpetas fuera de la ventana de Entorno de Programas y dentro de otros componentes gráficos (por ejemplo, otras ventanas, carpetas, etc.) del escritorio.
La Fig. 5 muestra una disposición ejemplar de componentes de programa para una implementación basada en el servidor de la aplicación de Entorno de Programas. Los componentes incluyen un componente de Servicio (PNSVC) 44', un componente de Base de Datos de Aplicación 48', un componente 52' de interfaz de Programa de Aplicación (PNAPI), un componente de Interfaz de Usuario 56' y un cache local 60'. Cada componente de software 44', 48', 52', 56' y 60' está instalado en el servidor de aplicación 30'. Los componentes de software para la implementación basada en el servidor corresponden a los componentes de software para la implementación basada en el cliente de la Fig. 4. La funcionalidad de cada componente de software basado en el servidor es similar a la homóloga basada en el cliente, con las diferencias o capacidades añadidas descritas a continuación. El PNSVC 44' comunica con la base de datos de la aplicación 48' y con la PNAPI 52' usando llamadas de procedimiento locales. La PNAPI 52' comunica también con el módulo de interfaz de usuario 56' y el caché local 60'.
De forma similar a la descrita en la Fig. 4 para el nodo cliente 10, el nodo cliente 20 entra en la red 40 (Fig. 1), el servidor 30' desarrolla y mantiene una base de datos que contiene la información relativa a la aplicación recogida de los otros servidores 32, 34 en la granja de servidores y un enlace de comunicación se establece entre el servidor 30' y el nodo cliente 20. El servidor de aplicación 30' está en comunicación con el nodo cliente 20 vía una conexión de canal ICA 62'. La conexión de canal 62' puede ser establecida por medio de un protocolo de canal virtual ICA (por ejemplo, cableado fino). El protocolo de cableado fino puede ser usado para transmitir comandos de presentación desde aplicaciones basada en Windows que se están ejecutando en el servidor de aplicación 30' al nodo cliente 20. Para un usuario del nodo cliente 20, la aplicación parece estar ejecutándose en el nodo cliente 20. El nodo cliente 20 puede incluir un programa de aplicación de Gestor de Aplicaciones Remotas 64 que comunica con el servidor de aplicación 30' vía la conexión de canal ICA 62'.
Para ejecutar la aplicación de Entorno de Programas en una implementación basada en el servidor, el usuario del nodo cliente 20 se conecta a un escritorio inicial (en el servidor 30') e inicia la aplicación de Entorno de Programas desde dentro del entorno del escritorio. La conexión al escritorio inicial puede producirse automáticamente, por ejemplo, vía un script de entrada del nodo cliente 20, vía una entrada en el grupo INICIO en Windows 95, o por medio de otro mecanismo específico del servidor gestionado centralmente. Toda la gestión de aplicaciones remotas e inicio es realizada a través de este escritorio inicial.
De forma similar a la descrita en la Fig. 4 para el servidor 30, el servidor 30' utiliza las credenciales de usuario para determinar aquellos programas de aplicación que están autorizados para el uso por parte del usuario del nodo cliente 20. Una ventana gráfica de Entorno de Programas es devuelta al nodo cliente 20 y visualizada en la pantalla 22 del cliente (Fig. 1). Esta ventana puede contener iconos que representen los programas de aplicación disponibles y posiblemente los no disponibles que están en el entorno de programas del nodo cliente 20.
El usuario del nodo cliente 20 puede seleccionar e iniciar uno de los programas de aplicación mostrados en la ventana de Entorno de Programas. Cuando se inicia una aplicación, la aplicación de Entorno de Programas puede ejecutar la aplicación en el mismo servidor 30', donde sea aplicable, teniendo en cuenta los requisitos de equilibrio de carga entre los servidores y la disponibilidad de la aplicación en dicho servidor 30'. La PNAPI 52' puede incluir un mecanismo de inicio para iniciar una aplicación remota localmente en el servidor 30' cuando el servidor 30' es nominado para iniciar la aplicación. Cuando es necesario un servidor diferente para ejecutar la aplicación, la aplicación de Entorno de Programas puede iniciar la aplicación vía el servidor 30' (es decir, cliente basado en el servidor) usando ventanas para presentar la aplicación en el escritorio del nodo cliente 20 como se describió antes en la Fig. 3B.
En una realización, la aplicación de Entorno de Programas basada en la web incluye un grupo de objetos que gestionan diversos aspectos de la aplicación. En una realización, la aplicación incluye tres clases de objetos primarios que "se conectan" a un servidor web; una clase de objetos de pasarela, una clase de objetos de credenciales; y una clase de objetos de aplicaciones. En algunas realizaciones específicas, las clases de objetos son proporcionadas como JavaBeans. Las tres clases de objetos primarias facilitan: la validación de las credenciales de usuario dentro de una granja de servidores; la generación de listas de aplicaciones publicadas a las que un usuario especificado puede acceder; la provisión de información detallada acerca de una aplicación publicada específica, y la conversión de la información de la aplicación publicada en un formato compatible ICA.
Cuando se proporciona como JavaBeans, a los objetos se puede acceder de varias formas diferentes. Por ejemplo, pueden estar compilados como objetos COM y puestos a disposición del servidor web como componentes ActivoX. En otra realización, las JavaBeans pueden ser usadas en su forma nativa tal como cuando el servidor utiliza tecnología de páginas de servidor Java. En todavía otra realización, las JavaBeans pueden ser lanzadas y usadas directamente en un servlet Java. En todavía otra realización, el servidor 30 puede lanzar las JavaBeans directamente como objetos COM.
Una clase de objetos de credenciales gestiona la información necesaria para autentificar un usuario en una granja de servidores objetivo. Un objeto de credenciales pasa las credenciales de usuario almacenadas a otros objetos del Entorno de Programas. En algunas realizaciones, el objeto de credenciales es una clase abstracta que no puede ser lanzada y representa unas credenciales de usuario. Varias extensiones de clase puede ser previstas para permitir que puedan usarse diferentes mecanismos de autentificación, incluyendo biométricos, tarjetas inteligentes, mecanismos basados en testigos, tales como generación de contraseñas pregunta-respuesta y basadas en el tiempo, u otros. Por ejemplo, puede ser prevista una extensión de "credenciales sin codificar" que almacene el dominio del nombre de usuario y contraseña en texto plano.
Una clase de objetos de pasarela se encarga de las comunicaciones con una granja de servidores objetivo. En una realización, la clase de objetos de pasarela está prevista como una clase Java abstracta que no puede ser lanzada. Un objeto de pasarela particular puede recuperar información de la aplicación mediante la comunicación con una granja de servidores usando un protocolo particular, leyendo la información de la aplicación almacenada en caché, una combinación de estos dos métodos u otros diversos métodos.
Como se advirtió antes, la clase de objetos de pasarela almacena en caché información para minimizar la comunicación con una granja de servidores objetivo. Las extensiones al objeto de pasarela pueden ser previstas para comunicar con la granja de servidores sobre protocolos específicos, tales como HTTP. En una realización está prevista una clase de extensión que permite que el objeto de pasarela comunique con la granja de servidores vía tuberías con nombre WINDOWS NT. El objeto de pasarela puede proporcionar un enganche de interfaz de programación de aplicación que permita que otros objetos del Entorno de Programas consulten al objeto acerca de información de la aplicación.
Una clase de objetos de aplicación contiene información acerca de aplicaciones publicadas y devuelve la información acerca de las aplicaciones albergadas por la granja de servidores para crear la página web de Entorno de Programas. La clase de objetos de aplicaciones crea objetos que representan aplicaciones recuperando la información relativa a las aplicaciones, ya sea de un objeto creado por el objeto pasarela o directamente de los servidores en la granja de servidores. Un objeto de aplicación actúa como un recipiente para ciertas propiedades de la aplicación, algunas ajustables y algunas no ajustables, tales como: el nombre de la aplicación (no ajustable); el porcentaje del escritorio del cliente que debería ocupar la ventana de cliente (ajustable); el ancho de la ventana de cliente, en pixels, para esta aplicación (ajustable); la altura de la ventana de cliente, en pixels, para esta aplicación (ajustable); el número de colores a usar cuando se conecta a la aplicación (ajustable); la severidad de la restricción de ancho de banda de audio (ajustable); el nivel de encriptación a usar cuando se conecta la aplicación (ajustable); el nivel de vídeo a usar cuando se conecta a esta aplicación (ajustable); si la aplicación debiera ser colocada en el menú de inicio del cliente (ajustable); si la aplicación debiera estar colocada en el escritorio de cliente (ajustable); la identidad de la carpeta del Entorno de Programas a la que pertenece la aplicación (ajustable); la descripción de la aplicación (ajustable); la fuente del archivo de iconos de gráficas para la aplicación (ajustable); el tipo de ventana que debería usarse cuando se conecta a la aplicación (no ajustable); y si hacer caso omiso de los parámetros por defecto para el objeto.
La clase base de aplicaciones contiene información acerca de las aplicaciones publicadas y es usada por la clase base de pasarela para devolver información acerca de aplicaciones albergadas por la granja de servidores para crear la página web de Entorno de Programas.
La Fig. 6A es un cuadro de pantalla de una ventana 120 de Entorno de Programas ejemplar que puede ser mostrada en la pantalla 12, 22 (Fig. 1) del cualquier nodo cliente 10, 20 después de que la aplicación Entorno de Programas se ha ejecutado. La ventana 120 incluye iconos gráficos 122. Cada icono 122 representa un programa de aplicación que es albergado por uno de los servidores 30, 32, 34 y 36 en la red 40 (Fig. 1). Cada aplicación representada está disponible al usuario del nodo cliente para su ejecución. El usuario puede seleccionar e iniciar una de las aplicaciones usando el ratón 18, 28 o el teclado 14, 24.
La Fig. 6B es un cuadro de pantalla de otra ventana 124 de Entorno de Programas ejemplar que puede ser mostrada en la pantalla 18, 22 de cualquier nodo cliente 10, 20 después de que se ha ejecutado la aplicación de Entorno de Programas. La ventana 124 incluye iconos gráficos 126, 128. Cada icono 126, 128 representa un programa de aplicación que es albergado por uno de los servidores 30, 32, 34 y 36 en la red 40. Cada programa de aplicación representado por uno de los iconos 126 está disponible al usuario del nodo cliente 10, 20 para su ejecución. El usuario puede seleccionar e iniciar una de las aplicaciones usando el ratón 18, 28 o el teclado 14, 24. Para contextos de entorno de programas basados en la web, los cuadros de pantalla de las figuras 6A y 6B son similares, excepto en que los iconos 122, 166, 128 se muestran dentro de una ventana de explorador.
Cada programa de aplicación representado por uno de los iconos 128 no está disponible para el usuario del nodo cliente 10, 20, aunque tales aplicaciones están presentes en la granja de servidores. La no disponibilidad de estos programas de aplicación puede ser advertida en la pantalla de visualización (por ejemplo, puede ser trazada una "X" a través de los iconos 128). Un intento de iniciar tal programa de aplicación puede activar un mensaje que indique que el usuario no está autorizado a usar la aplicación.
La Fig. 7 muestra un procedimiento ejemplar por medio del cual un usuario de cualquier nodo cliente 10, 20 puede ser informado acerca de la disponibilidad de las aplicaciones albergadas por los servidores de aplicación 30, 32, 34 y 36 en la red. En la etapa 80, el nodo cliente 10, 20 requiere un servicio de entrada de uno de los servidores, por ejemplo, el servidor 32. El servidor 32 requiere credenciales de usuario válidas para establecer la conexión. El servidor 32 recibe las credenciales de usuario del nodo cliente 10 (etapa 82), y autentifica al usuario para la entrada (etapa 84). Un escritorio es visualizado en el nodo cliente 10, 20 (etapa 85). El escritorio puede incluir un icono gráfico que represente el programa de aplicación de Entorno de Programas.
En la etapa 86, el servidor 32 de la aplicación establece una conexión con cada uno de los otros servidores 30, 34 y 36 para intercambiar información relativa a la aplicación, como se describió antes, correspondiente a los programas de aplicación albergados en dichos servidores (etapa 88). En la etapa 90, el servidor de aplicación 32 desarrolla y mantiene una base de datos de la información relativa a la aplicación recogida. Cada uno de los otros servidores 30, 34, 36 en la granja de servidores puede desarrollar una base de datos equivalente a la base de datos del servidor 32 y de forma similar al servidor 32. En otra realización, la base de datos del servidor 32 puede ser una base de datos centralizada que sea accesible a cada uno de los otros servidores de aplicación 30, 34, 36 en la granja de servidores. La recogida de información relativa a la aplicación puede producirse independientemente o ser activada por la petición del nodo cliente 10, 20 para entrar a la granja de servidores 38.
En la etapa 92, el nodo cliente 10, 20 puede solicitar la ejecución de un programa de aplicación desde la visualización del escritorio. El nodo servidor maestro puede procesar la petición y, usando una evaluación de equilibrio de cargas y disponibilidad de la aplicación como se describió antes, determinar el servidor de aplicación para proporcionar el servicio al nodo cliente 10, 20 (etapa 94). Por ejemplo, el servidor de aplicación 32 puede ser seleccionado para servir a la petición con el nodo cliente 10, 20. En la etapa 96, el nodo cliente 10, 20 establece un enlace de comunicaciones con el servidor 32. El servidor 32 y el nodo cliente 10, 20 puede comunicarse según el protocolo ICA apropiado para dicho nodo cliente como se describió antes.
También en respuesta a esta petición de ejecutar el programa de aplicación, el nodo servidor maestro 30 o el servidor 32 puede ejecutar la aplicación de Entorno de Programas (etapa 93) y pasar los resultados al nodo cliente 10, 20, aunque el nodo cliente 10, 20 pueda no haber solicitado el programa de aplicación PN. Cuando se ejecuta el programa de aplicación PN, el nodo servidor maestro 30 o el servidor 32 filtra la información relativa a la aplicación en la base de datos usando las credenciales de usuario (etapa 100). El resultado del filtrado de la base de datos determina aquellos programas de aplicación que son entorno del nodo cliente 10, 20. Este entorno de programas de la información de la aplicación disponible es pasado al nodo cliente 10, 20 (etapa 102) y visualizado en la pantalla 12, 22 del cliente en una ventana gráfica de Entorno de Programas (etapa 104).
En otras realizaciones, la ventana de Entorno de Programas puede incluir aplicaciones que están en la granja de servidores pero no disponibles para su uso por parte del nodo cliente 10, 20. En una implementación basada en Windows, los programas de aplicación disponibles (y no disponibles) pueden ser representados mediante iconos. El usuario del nodo cliente 10, 20 puede seleccionar e iniciar uno de los programas de aplicación mostrados en la ventana de Entorno de Programas.
La presente invención puede ser prevista como uno o más programas legibles por el ordenador realizados en uno o más artículos manufacturados. El artículo manufacturado puede ser un disquete, un disco duro, un CD ROM, una tarjeta de memoria flash, una PROM, una RAM, una ROM o una cinta magnética. En general, los programas legibles por el ordenador pueden ser implementados en cualquier lenguaje de programación. Algunos ejemplos de lenguajes que pueden ser usados incluyen C, C++ o JAVA. Los programas de software pueden ser almacenados en uno o más artículos de manufactura como código objeto.
Aunque la invención se ha mostrado y descrito con referencia a realizaciones preferidas específicas, debería ser entendido por aquellos expertos en la técnica que pueden hacerse varios cambios en forma y detalle en la misma sin salirse del alcance de la invención según está definida en las siguientes reivindicaciones.

Claims (14)

1. Método para visualizar cada programa de aplicación de programas de aplicación albergados en una pluralidad de servidores (30, 32, 34) de una red que está disponible para su uso por parte de un sistema cliente, comprendiendo el método las etapas de:
(a) recibir credenciales de usuario asociadas a la identidad del usuario del sistema cliente (10, 20);
(b) mantener la información relativa a la aplicación correspondiente a cada programa de aplicación que está albergado por cada servidor (30, 32, 34);
(c) determinar si el usuario del sistema cliente (10, 20) está autorizado a usar cada programa de aplicación albergado por los servidores (30, 32, 34) basándose en las credenciales de usuario; y
(d) transmitir información al sistema cliente (10, 20) en respuesta a la información relativa a la aplicación, describiendo la información transmitida cada programa de aplicación que el usuario del sistema cliente (10, 20) está autorizado a usar.
2. Método según la reivindicación 1, en el que al menos uno de la pluralidad de servidores es un servidor principal, y en el que la información relativa a la aplicación es recibida por el servidor principal y el servidor principal transmite al sistema cliente la información que describe cada aplicación disponible que el usuario del sistema cliente está autorizado a usar.
3. Método según la reivindicación 2, que comprende además la etapa de establecer una conexión entre el sistema cliente (10, 20) y el servidor principal usando un protocolo de Arquitectura de Computación Independiente (ICA).
4. Método según la reivindicación 3, en el que el protocolo ICA establece un canal virtual para transmitir la información al sistema cliente (10, 20) indicando cada programa de aplicación albergado que está disponible para el sistema cliente.
5. Método según la reivindicación 2, que comprende además las etapas de: establecer una conexión entre el sistema cliente (10) y el servidor principal (30); recibir una petición para ejecutar uno de los programas de aplicación albergados disponibles; y establecer en respuesta a la petición una segunda conexión entre el sistema cliente (10) y el servidor principal (30) para intercambiar información asociada a la ejecución del programa de aplicación solicitado.
6. Método según la reivindicación 2, que comprende además las etapas de: establecer una primera conexión entre el sistema cliente (20) y el servidor principal (32); recibir una petición para ejecutar uno de los programas de aplicación albergados disponibles; establecer en respuesta a la petición una segunda conexión entre el servidor principal (32) y un segundo servidor (34) que alberga la aplicación solicitada; e intercambiar información asociada a una ejecución del programa de aplicación solicitado entre el segundo servidor (34) y el sistema cliente (20) vía el servidor principal (32), y opcionalmente, comprende además las etapas de: recibir una segunda petición para ejecutar un segundo de los programas de aplicación albergados disponibles; establecer en respuesta a la segunda petición una tercera conexión entre el servidor principal (32) y un tercer servidor (36) que alberga la segunda aplicación solicitada; e intercambiar información asociada a la ejecución del segundo programa de aplicación solicitado entre el tercer servidor (36) y el sistema cliente (20) vía el servidor principal (32), y, también opcionalmente, comprende además la etapa de combinar la información recibida del segundo servidor (34) y el tercer servidor (36) para la transmisión al sistema cliente vía la primera conexión.
7. Método según la reivindicación 2 y o bien:
a)
que comprende además las etapas de: establecer una primera conexión entre el sistema cliente (20) y el servidor principal (32); recibir una petición para ejecutar uno de los programas de aplicación albergados disponibles; y en el que la etapa de transmitir información al sistema cliente es en respuesta a la petición de ejecutar el programa de aplicación;
b)
en el que la información transmitida se muestra en los iconos (122) del sistema cliente que representan los programas de aplicación disponibles en una ventana de interfaz gráfica de usuario;
c)
que comprende además la etapa de comunicar, por medio del servidor principal (32), con cada uno de los otros servidores (34; 36) en la pluralidad para determinar qué programas de aplicación están albergados por aquellos otros servidores;
d)
que comprende además la etapa de establecer un enlace de comunicaciones entre el servidor principal (32) y el sistema cliente (20), en el que el enlace de comunicaciones incluye al menos un canal virtual;
e)
en el que el servidor en el que el programa de aplicación iniciado está ejecutándose en uno de una pluralidad de servidores distinto del servidor principal y que comprende además las etapas de: autentificar en el servidor principal al usuario del sistema cliente (20) basándose en las credenciales de usuario recibidas; y ejecutar el programa de aplicación iniciado sin requerir otra entrada de credenciales de usuario por parte del usuario del sistema cliente;
f)
en el que el servidor principal (32) transmite la información de la aplicación disponible en respuesta a una petición de información de aplicación disponible por parte del sistema cliente (20);
g)
que comprende además la etapa de mantener una base de datos (48) en el servidor principal (30) para almacenar la información relativa a la aplicación, en el que la base de datos (48) es accesible para cada uno de los otros servidores de la pluralidad;
h)
que comprende además la etapa de mantener una base de datos (48) en cada uno de la pluralidad de servidores para almacenar la información relativa a la aplicación; o
i)
en el que la información transmitida describe además al usuario del sistema cliente (10) cada programa de aplicación albergado que el usuario del sistema cliente no está autorizado a usar.
8. Método según la reivindicación 2, en el que la etapa (d) comprende:
(d-a) crear una visualización de salida que indica cada programa de aplicación albergado que está disponible para su ejecución por el sistema cliente; y
(d-b) transmitir la visualización de salida creada al sistema cliente (10, 20), y, o bien:
a)
en el que la etapa (a) comprende además recibir por un servidor web información relativa a la aplicación correspondiente a los programas de aplicación albergados por al menos uno de una pluralidad de servidores (30, 32, 34), y, opcionalmente, comprende además las etapas de:
(e) analizar sintácticamente un documento SGML;
(f) recuperar, en respuesta al documento SGML analizado sintácticamente, información relativa a la aplicación correspondiente a programas de aplicación albergados por al menos uno de la pluralidad de servidores (30, 32, 34),
b)
en el que la etapa (b) comprende recibir por el sistema principal credenciales de usuario biométricas de un sistema cliente (10, 20),
c)
en el que la etapa (b) comprende recibir por el sistema servidor principal credenciales de usuario encriptadas desde un sistema cliente (10, 20),
d)
en el que la etapa (d-a) comprende además
(a) recibir por el sistema principal credenciales de usuario desde un sistema cliente (10, 20)
(b) autentificar en el servidor principal al usuario al usuario del sistema cliente (10, 20) basándose en las credenciales de usuario recibidas; y
(c) ejecutar uno seleccionado de los programas de aplicación disponibles albergados por uno de la pluralidad de servidores (30, 32, 34) sin requerir otra recepción de credenciales de usuario del sistema cliente (10, 20);
e)
en el que la etapa (d-a) comprende crear una visualización de salida SGML que indique cada programa de aplicación albergado que está disponible para su ejecución por parte del sistema cliente (10, 20);
f)
en el que la etapa (d-a) comprende crear una visualización de salida HTML que indica cada programa de aplicación albergado que está disponible para su ejecución por parte del sistema cliente (10, 20);
g)
en el que la etapa (d-a) comprende crear una visualización de salida que represente los programas de aplicación disponibles como iconos en una ventana de interfaz gráfica de usuario.
h)
en el que la etapa (d-b) comprende transmitir la visualización de salida creada al sistema cliente (10, 20) usando HTTP;
i)
que comprende además la etapa de:
(e) recibir una petición para ejecutar uno de los programas de aplicación albergados disponibles; y
(f) ejecutar el programa de aplicación solicitado, y, opcionalmente, en el que la etapa (f) comprende además ejecutar la aplicación solicitada en una ventana contenida en la página de visualización de salida o que comprende además la etapa de establecer una conexión entre el sistema cliente (10, 20) y el servidor (30, 32, 34) que alberga la aplicación solicitada, o
j)
que comprende además la etapa de comunicación, por parte del servidor principal, con una pluralidad de servidores para determinar los programas de aplicación albergados por la pluralidad de servidores.
9. Método según cualquier reivindicación precedente, en el que la etapa (d) comprende:
(d-a) crear, en respuesta a la determinación, una visualización de salida que indica cada programa de aplicación albergado que está disponible para su ejecución por parte del sistema cliente (10); y
(d-b) transmitir la visualización de salida creada al sistema cliente (10).
10. Método según la reivindicación 7, que comprende además establecer, en respuesta a la recepción de la petición de ejecución de uno de los programas de aplicación albergados disponibles, una segunda conexión entre el sistema cliente (10) y un servidor (30, 32, 34) que alberga la aplicación solicitada.
11. Método según la reivindicación 2, y, o bien:
a)
en el que el servidor principal (30, 32, 34) usa las credenciales de usuario para determinar si el usuario del sistema cliente (10, 20) está autorizado a acceder al servidor principal y determinar aquellos programas de aplicación que el usuario del sistema cliente está autorizado a ejecutar;
b)
que comprende además transmitir por cada servidor (30, 32, 34) información relativa a la aplicación asociada a cada programa de aplicación albergado por dicho servidor a una base de datos (48) centralizada; o
c)
que comprende además transmitir por cada servidor (30, 32, 34) información relativa a la aplicación asociada a cada programa de aplicación albergado por dicho servidor a cada uno de los otros servidores.
12. Servidor que comprende: un módulo de servicio que recoge la información relativa a la aplicación correspondiente a programas de aplicación que están albergados por la pluralidad de servidores (30, 32, 34) y que son ejecutados en uno de la pluralidad de servidores cuando son iniciados para ejecución; un receptor que recibe credenciales de usuario asociadas a la identidad del usuario del sistema cliente; una base de datos (48) que almacena la información relativa a la aplicación recogida en la que el módulo de servicio determina para cada programa de aplicación albergado por la pluralidad de servidores si dicho programa de aplicación albergado está disponible para su ejecución por parte del sistema cliente basándose en las credenciales de usuario y en la información relativa a la aplicación almacenada en la base de datos (48); y un transmisor que transmite información al sistema cliente (10, 20) que indica al sistema cliente cada programa de aplicación albergado al que se le permite acceder al usuario del mismo para su ejecución en un servidor que alberga dicho programa de aplicación.
13. Servidor según la reivindicación 12, y, o bien:
a)
en el que dicho módulo de servicio transmite un datagrama a otros servidores en la pluralidad para recoger la información relativa a la aplicación correspondiente a los programas de aplicación albergados por dichos servidores;
b)
en el que la base de datos (48) incluye información del cliente;
c)
en el que dicho transmisor transmite información de la aplicación disponible usando un protocolo de comunicaciones de canal virtual.
14. Servidor según la reivindicación 12, que comprende una máquina de creación de visualización de salida que crea visualizaciones de salida que indican cada programa albergado disponible para su ejecución por el sistema cliente; y un transmisor que transmite visualizaciones de salida creadas al sistema cliente (10, 20), y, opcionalmente, en el que dicho módulo de servicio transmite un datagrama a la pluralidad de servidores para recoger la información relativa a la aplicación correspondiente a los programas de aplicación albergados por dichos servidores (30, 32, 34), o en el que dicha máquina de creación de visualización de salida analiza sintácticamente plantillas de documentos SGML, en cuyo último caso, opcionalmente, dicho transmisor transmite la información de la aplicación disponible usando HTTP.
ES99966622T 1998-12-29 1999-12-27 Un aparato y procedimiento para determinar un programa cercano en un nodo cliente de una red cliente-servidor. Expired - Lifetime ES2209549T3 (es)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US11409998P 1998-12-29 1998-12-29
US114099P 1998-12-29
US252391 1999-02-18
US09/252,391 US6643690B2 (en) 1998-12-29 1999-02-18 Apparatus and method for determining a program neighborhood for a client node in a client-server network
US390928 1999-09-07
US09/390,928 US6928469B1 (en) 1998-12-29 1999-09-07 Apparatus and method for determining a program neighborhood for a client node in a client-server network using markup language techniques

Publications (1)

Publication Number Publication Date
ES2209549T3 true ES2209549T3 (es) 2004-06-16

Family

ID=27381447

Family Applications (1)

Application Number Title Priority Date Filing Date
ES99966622T Expired - Lifetime ES2209549T3 (es) 1998-12-29 1999-12-27 Un aparato y procedimiento para determinar un programa cercano en un nodo cliente de una red cliente-servidor.

Country Status (15)

Country Link
US (2) US6928469B1 (es)
EP (1) EP1141828B1 (es)
JP (1) JP2002533830A (es)
KR (1) KR100630212B1 (es)
AT (1) ATE252744T1 (es)
AU (2) AU2212900A (es)
CA (1) CA2293127C (es)
DE (1) DE69912317T2 (es)
DK (1) DK1141828T3 (es)
ES (1) ES2209549T3 (es)
GB (1) GB2349488A (es)
HK (1) HK1040124B (es)
IL (1) IL143762A0 (es)
PT (1) PT1141828E (es)
WO (1) WO2000039678A1 (es)

Families Citing this family (111)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1305687B1 (en) * 2000-05-24 2008-07-30 Voltaire Ltd. Filtered application-to-application communication
US7117239B1 (en) 2000-07-28 2006-10-03 Axeda Corporation Reporting the state of an apparatus to a remote computer
WO2002025460A1 (en) * 2000-09-19 2002-03-28 Phatnoise, Inc. Device-to-device network
US8108543B2 (en) 2000-09-22 2012-01-31 Axeda Corporation Retrieving data from a server
US7185014B1 (en) 2000-09-22 2007-02-27 Axeda Corporation Retrieving data from a server
US7401125B1 (en) 2000-10-10 2008-07-15 Ricoh Corporation System, computer program product and method for managing documents
AU2002215210A1 (en) 2000-11-16 2002-05-27 Telefonaktiebolaget Lm Ericsson (Publ) User authentication apparatus, controlling method thereof, and network system
US8095624B2 (en) * 2000-12-28 2012-01-10 CenterBeam Inc. Architecture for serving and managing independent access devices
JP2002278903A (ja) * 2001-03-15 2002-09-27 Sony Corp 情報処理装置および方法、記録媒体、並びにプログラム
US9836424B2 (en) 2001-08-24 2017-12-05 Intel Corporation General input/output architecture, protocol and related methods to implement flow control
WO2003019393A1 (en) 2001-08-24 2003-03-06 Intel Corporation A general intput/output architecture, protocol and related methods to implement flow control
JP2003067274A (ja) * 2001-08-27 2003-03-07 Murata Mach Ltd クライアント装置及び処理サーバ
US20030088714A1 (en) * 2001-10-15 2003-05-08 Scott Madlener User internet interface
US7254601B2 (en) 2001-12-20 2007-08-07 Questra Corporation Method and apparatus for managing intelligent assets in a distributed environment
US6996620B2 (en) * 2002-01-09 2006-02-07 International Business Machines Corporation System and method for concurrent security connections
US8135843B2 (en) 2002-03-22 2012-03-13 Citrix Systems, Inc. Methods and systems for providing access to an application
AU2002321294A1 (en) * 2002-03-28 2003-10-13 Siemens Aktiengesellschaft Methods and devices for informing the user of a mobile radio terminal about data services that are currently available to said user via the server of a mobile radio network service
US7178149B2 (en) 2002-04-17 2007-02-13 Axeda Corporation XML scripting of soap commands
GB2388002B (en) * 2002-04-26 2004-05-12 Oracle Int Corp Graphical modelling system
US9171049B2 (en) * 2002-06-13 2015-10-27 Salesforce.Com, Inc. Offline simulation of online session between client and server
US20080313282A1 (en) 2002-09-10 2008-12-18 Warila Bruce W User interface, operating system and architecture
US20040103438A1 (en) * 2002-11-27 2004-05-27 Yong Yan Methods and systems for transferring events including multimedia data
US7966418B2 (en) 2003-02-21 2011-06-21 Axeda Corporation Establishing a virtual tunnel between two computer programs
US8082339B2 (en) * 2003-02-28 2011-12-20 Hewlett-Packard Development Company, L.P. Electronic device network having graceful denial of service
US7287083B1 (en) * 2003-03-20 2007-10-23 Novell, Inc. Computing environment failover in a branch office environment
US7698435B1 (en) * 2003-04-15 2010-04-13 Sprint Spectrum L.P. Distributed interactive media system and method
US7305375B2 (en) * 2003-04-23 2007-12-04 Hewlett-Packard Development Company, L.P. Method and system for distributed remote resources
US7702668B2 (en) * 2003-06-16 2010-04-20 Microsoft Corporation Asset composition
US7562154B2 (en) * 2003-06-30 2009-07-14 International Business Machines Corporation System and method for filtering stale messages resulting from membership changes in a distributed computing environment
US7475125B2 (en) * 2003-11-24 2009-01-06 Microsoft Corporation Seamless discovery of workstation-installed remote applications from an extranet
US7823192B1 (en) * 2004-04-01 2010-10-26 Sprint Communications Company L.P. Application-to-application security in enterprise security services
FR2870022B1 (fr) * 2004-05-07 2007-02-02 Canon Kk Procede et dispositif de distribution de donnees numeriques notamment pour reseau pair-a-pair
US8117559B2 (en) 2004-09-30 2012-02-14 Citrix Systems, Inc. Method and apparatus for virtualizing window information
US7680758B2 (en) 2004-09-30 2010-03-16 Citrix Systems, Inc. Method and apparatus for isolating execution of software applications
US7853947B2 (en) * 2004-09-30 2010-12-14 Citrix Systems, Inc. System for virtualizing access to named system objects using rule action associated with request
US7752600B2 (en) * 2004-09-30 2010-07-06 Citrix Systems, Inc. Method and apparatus for providing file-type associations to multiple applications
US8171479B2 (en) 2004-09-30 2012-05-01 Citrix Systems, Inc. Method and apparatus for providing an aggregate view of enumerated system resources from various isolation layers
US8095940B2 (en) 2005-09-19 2012-01-10 Citrix Systems, Inc. Method and system for locating and accessing resources
US9356938B2 (en) 2005-02-04 2016-05-31 Koninklijke Philips N.V. Method, device, system, token creating authorized domains
US7779034B2 (en) 2005-10-07 2010-08-17 Citrix Systems, Inc. Method and system for accessing a remote file in a directory structure associated with an application program executing locally
EP2527978A3 (en) * 2005-10-07 2013-01-09 Citrix Systems, Inc. Methods for selecting between a predetermined number of execution methods for an application program
US20070083620A1 (en) * 2005-10-07 2007-04-12 Pedersen Bradley J Methods for selecting between a predetermined number of execution methods for an application program
US8131825B2 (en) 2005-10-07 2012-03-06 Citrix Systems, Inc. Method and a system for responding locally to requests for file metadata associated with files stored remotely
EP2541430A2 (en) * 2005-12-22 2013-01-02 Catalog.Com, Inc. Social network-enabled interactive media player
US8732284B2 (en) * 2006-01-06 2014-05-20 Apple Inc. Data serialization in a user switching environment
US7802243B1 (en) * 2006-04-20 2010-09-21 Open Invention Network Llc System and method for server customization
US20070274314A1 (en) * 2006-05-23 2007-11-29 Werber Ryan A System and method for creating application groups
US8555350B1 (en) * 2006-06-23 2013-10-08 Cisco Technology, Inc. System and method for ensuring persistent communications between a client and an authentication server
US8370479B2 (en) 2006-10-03 2013-02-05 Axeda Acquisition Corporation System and method for dynamically grouping devices based on present device conditions
US8065397B2 (en) 2006-12-26 2011-11-22 Axeda Acquisition Corporation Managing configurations of distributed devices
US8341651B2 (en) 2007-01-10 2012-12-25 Microsoft Corporation Integrating enterprise search systems with custom access control application programming interfaces
GB0707492D0 (en) * 2007-04-18 2007-05-23 Canon Europa Nv A print apparatus, a method of controlling printing, and a program
US8024407B2 (en) * 2007-10-17 2011-09-20 Citrix Systems, Inc. Methods and systems for providing access, from within a virtual world, to an external resource
US7925694B2 (en) 2007-10-19 2011-04-12 Citrix Systems, Inc. Systems and methods for managing cookies via HTTP content layer
US8171483B2 (en) 2007-10-20 2012-05-01 Citrix Systems, Inc. Method and system for communicating between isolation environments
US7792934B2 (en) * 2008-01-02 2010-09-07 Citrix Systems International Gmbh Loading of server-stored user profile data
CN101984778B (zh) 2008-01-26 2014-08-13 思杰系统有限公司 用于细粒度策略驱动的cookie代理的系统和方法
US8169958B2 (en) * 2008-03-27 2012-05-01 Cisco Technology, Inc. Obtaining information regarding services available from a wireless local area network
AU2009231676B2 (en) 2008-04-02 2013-10-03 Twilio Inc. System and method for processing telephony sessions
US8837465B2 (en) 2008-04-02 2014-09-16 Twilio, Inc. System and method for processing telephony sessions
CN102227904A (zh) 2008-10-01 2011-10-26 特维里奥公司 电话网络事件的系统和方法
US9270785B2 (en) 2008-12-18 2016-02-23 Citrix Systems, Inc. System and method for a distributed virtual desktop infrastructure
EP2404412B1 (en) 2009-03-02 2019-05-01 Twilio Inc. Method and system for a multitenancy telephone network
US9152401B2 (en) * 2009-05-02 2015-10-06 Citrix Systems, Inc. Methods and systems for generating and delivering an interactive application delivery store
US8090797B2 (en) 2009-05-02 2012-01-03 Citrix Systems, Inc. Methods and systems for launching applications into existing isolation environments
US9210275B2 (en) 2009-10-07 2015-12-08 Twilio, Inc. System and method for running a multi-module telephony application
US9054913B1 (en) 2009-11-30 2015-06-09 Dell Software Inc. Network protocol proxy
KR101633366B1 (ko) * 2010-04-09 2016-06-24 삼성전자주식회사 앱스토어 서비스 제공 방법 및 시스템
US9590849B2 (en) 2010-06-23 2017-03-07 Twilio, Inc. System and method for managing a computing cluster
US20120208495A1 (en) 2010-06-23 2012-08-16 Twilio, Inc. System and method for monitoring account usage on a platform
US8838707B2 (en) 2010-06-25 2014-09-16 Twilio, Inc. System and method for enabling real-time eventing
KR101662660B1 (ko) * 2010-09-30 2016-10-06 삼성전자주식회사 서버 및 그 서비스 제공 방법
US20120117490A1 (en) * 2010-11-10 2012-05-10 Harwood William T Methods and systems for providing access, from within a virtual world, to an external resource
US8649268B2 (en) 2011-02-04 2014-02-11 Twilio, Inc. Method for processing telephony sessions of a network
US9398622B2 (en) 2011-05-23 2016-07-19 Twilio, Inc. System and method for connecting a communication to a client
US20140044123A1 (en) 2011-05-23 2014-02-13 Twilio, Inc. System and method for real time communicating with a client application
US9648006B2 (en) 2011-05-23 2017-05-09 Twilio, Inc. System and method for communicating with a client application
JP2013025671A (ja) * 2011-07-25 2013-02-04 Fujitsu Ltd サーバ装置、サーバ装置の制御方法、サーバ装置の制御プログラム及びコンピュータ
US10182147B2 (en) 2011-09-21 2019-01-15 Twilio Inc. System and method for determining and communicating presence information
JP5733136B2 (ja) 2011-09-26 2015-06-10 富士通株式会社 情報処理装置の制御方法、制御プログラム及び情報処理装置
EP2766820B1 (en) * 2011-10-13 2021-07-07 Citrix Systems Inc. System and method for a distributed virtual desktop infrastructure
US9495227B2 (en) 2012-02-10 2016-11-15 Twilio, Inc. System and method for managing concurrent events
US9602586B2 (en) 2012-05-09 2017-03-21 Twilio, Inc. System and method for managing media in a distributed communication network
US9247062B2 (en) 2012-06-19 2016-01-26 Twilio, Inc. System and method for queuing a communication session
US8737962B2 (en) 2012-07-24 2014-05-27 Twilio, Inc. Method and system for preventing illicit use of a telephony platform
US8948356B2 (en) 2012-10-15 2015-02-03 Twilio, Inc. System and method for routing communications
US8938053B2 (en) 2012-10-15 2015-01-20 Twilio, Inc. System and method for triggering on platform usage
US9282124B2 (en) 2013-03-14 2016-03-08 Twilio, Inc. System and method for integrating session initiation protocol communication in a telecommunications platform
US9160696B2 (en) 2013-06-19 2015-10-13 Twilio, Inc. System for transforming media resource into destination device compatible messaging format
US9225840B2 (en) 2013-06-19 2015-12-29 Twilio, Inc. System and method for providing a communication endpoint information service
US9380040B1 (en) * 2013-07-11 2016-06-28 Parallels IP Holdings GmbH Method for downloading preauthorized applications to desktop computer using secure connection
US9137127B2 (en) 2013-09-17 2015-09-15 Twilio, Inc. System and method for providing communication platform metadata
US9274858B2 (en) 2013-09-17 2016-03-01 Twilio, Inc. System and method for tagging and tracking events of an application platform
US9325624B2 (en) 2013-11-12 2016-04-26 Twilio, Inc. System and method for enabling dynamic multi-modal communication
US9553799B2 (en) 2013-11-12 2017-01-24 Twilio, Inc. System and method for client communication in a distributed telephony network
US10044787B1 (en) * 2013-11-20 2018-08-07 Simon Frazier File transfer in a multi-node network
US9344573B2 (en) 2014-03-14 2016-05-17 Twilio, Inc. System and method for a work distribution service
US9226217B2 (en) 2014-04-17 2015-12-29 Twilio, Inc. System and method for enabling multi-modal communication
US9774687B2 (en) 2014-07-07 2017-09-26 Twilio, Inc. System and method for managing media and signaling in a communication platform
US9516101B2 (en) 2014-07-07 2016-12-06 Twilio, Inc. System and method for collecting feedback in a multi-tenant communication platform
US9251371B2 (en) 2014-07-07 2016-02-02 Twilio, Inc. Method and system for applying data retention policies in a computing platform
US11283866B2 (en) 2014-07-07 2022-03-22 Citrix Systems, Inc. Providing remote access to applications through interface hooks
US11310312B2 (en) * 2014-07-07 2022-04-19 Citrix Systems, Inc. Peer to peer remote application discovery
US9246694B1 (en) 2014-07-07 2016-01-26 Twilio, Inc. System and method for managing conferencing in a distributed communication network
WO2016065080A1 (en) 2014-10-21 2016-04-28 Twilio, Inc. System and method for providing a miro-services communication platform
US9477975B2 (en) * 2015-02-03 2016-10-25 Twilio, Inc. System and method for a media intelligence platform
US10419891B2 (en) 2015-05-14 2019-09-17 Twilio, Inc. System and method for communicating through multiple endpoints
US9948703B2 (en) 2015-05-14 2018-04-17 Twilio, Inc. System and method for signaling through data storage
US10659349B2 (en) 2016-02-04 2020-05-19 Twilio Inc. Systems and methods for providing secure network exchanged for a multitenant virtual private cloud
US10063713B2 (en) 2016-05-23 2018-08-28 Twilio Inc. System and method for programmatic device connectivity
US10686902B2 (en) 2016-05-23 2020-06-16 Twilio Inc. System and method for a multi-channel notification service

Family Cites Families (266)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4387425A (en) * 1980-05-19 1983-06-07 Data General Corporation Masterless and contentionless computer network
USRE32632E (en) * 1982-07-19 1988-03-29 Apple Computer, Inc. Display system
US4499499A (en) * 1982-12-29 1985-02-12 International Business Machines Corporation Method for identification and compression of facsimile symbols in text processing systems
US4779189A (en) 1985-06-28 1988-10-18 International Business Machines Corporation Peripheral subsystem initialization method and apparatus
JPS62282328A (ja) 1986-02-21 1987-12-08 Hitachi Ltd 多重画面制御方式
US4937036A (en) * 1986-04-28 1990-06-26 Xerox Corporation Concurrent display of data from two different display processors and user interface therefore
JP2585535B2 (ja) * 1986-06-02 1997-02-26 株式会社日立製作所 複合計算機システムにおけるプロセス結合方法
US5062060A (en) 1987-01-05 1991-10-29 Motorola Inc. Computer human interface comprising user-adjustable window for displaying or printing information
US4887204A (en) 1987-02-13 1989-12-12 International Business Machines Corporation System and method for accessing remote files in a distributed networking environment
US5202971A (en) * 1987-02-13 1993-04-13 International Business Machines Corporation System for file and record locking between nodes in a distributed data processing environment maintaining one copy of each file lock
US5175852A (en) 1987-02-13 1992-12-29 International Business Machines Corporation Distributed file access structure lock
US5072412A (en) 1987-03-25 1991-12-10 Xerox Corporation User interface with multiple workspaces for sharing display system objects
US4949281A (en) 1987-04-23 1990-08-14 H. Berthold Ag Method and apparatus for generating and producing two-dimensional graphic object by polynominal parametric curves
US4903218A (en) * 1987-08-13 1990-02-20 Digital Equipment Corporation Console emulation for a graphics workstation
US5367688A (en) 1987-09-04 1994-11-22 Digital Equipment Corporation Boot system for distributed digital data processing system
US4974173A (en) 1987-12-02 1990-11-27 Xerox Corporation Small-scale workspace representations indicating activities by other users
US5014221A (en) * 1988-01-29 1991-05-07 Digital Equipment Corporation Mechanism for arbitrating client access to a networked print server
JPH01246656A (ja) 1988-03-29 1989-10-02 Nec Corp プロセッサ間共有メモリ管理方式
US5103303A (en) * 1988-04-19 1992-04-07 Konica Corporation Multicolor imaging forming apparatus
US4958303A (en) 1988-05-12 1990-09-18 Digital Equipment Corporation Apparatus for exchanging pixel data among pixel processors
US4949248A (en) 1988-07-15 1990-08-14 Caro Marshall A System for shared remote access of multiple application programs executing in one or more computers
US5155847A (en) 1988-08-03 1992-10-13 Minicom Data Corporation Method and apparatus for updating software at remote locations
US5255361A (en) 1988-12-19 1993-10-19 International Business Machines Corporation Method of and system for updating a display unit
US5031089A (en) 1988-12-30 1991-07-09 United States Of America As Represented By The Administrator, National Aeronautics And Space Administration Dynamic resource allocation scheme for distributed heterogeneous computer systems
EP0381645A3 (en) 1989-01-18 1992-08-05 International Business Machines Corporation System and method for communicating between a plurality of processors
US5349678A (en) * 1991-08-21 1994-09-20 Norand Corporation Versatile RF data capture system
ATE151183T1 (de) 1989-02-24 1997-04-15 Digital Equipment Corp Makler für die auswahl von rechnernetzwerkservern
US5341477A (en) 1989-02-24 1994-08-23 Digital Equipment Corporation Broker for computer network server selection
KR930003126B1 (ko) 1989-04-20 1993-04-19 가부시기가이샤 도시바 곡선정합에 있어서 형상을 표시하는 직선쇼트벡터의 접속상태를 판정하는 방법 및 시스템
US5305440A (en) * 1989-05-15 1994-04-19 International Business Machines Corporation File extension by clients in a distributed data processing system
US5187790A (en) * 1989-06-29 1993-02-16 Digital Equipment Corporation Server impersonation of client processes in an object based computer operating system
DE69029441T2 (de) 1989-08-24 1997-06-12 Ibm System für den Aufruf von Prozeduren von einem Fernnetzwerkknotenpunkt
US5119319A (en) * 1989-12-14 1992-06-02 Options Unlimited Research Corp. Full-duplex video communication system
US5301270A (en) * 1989-12-18 1994-04-05 Anderson Consulting Computer-assisted software engineering system for cooperative processing environments
US5309555A (en) * 1990-05-15 1994-05-03 International Business Machines Corporation Realtime communication of hand drawn images in a multiprogramming window environment
CA2041992A1 (en) 1990-05-18 1991-11-19 Yeshayahu Artsy Routing objects on action paths in a distributed computing system
EP0463251A1 (en) 1990-06-28 1992-01-02 International Business Machines Corporation Software installation
AU639802B2 (en) 1990-08-14 1993-08-05 Oracle International Corporation Methods and apparatus for providing dynamic invocation of applications in a distributed heterogeneous environment
EP0475581A3 (en) 1990-08-30 1993-06-23 Hewlett-Packard Company Method and apparatus for window sharing between computer displays
US5583992A (en) 1990-09-14 1996-12-10 Kabushiki Kaisha Toshiba Computer network system for detecting global deadlock
US5303198A (en) * 1990-09-28 1994-04-12 Fuji Photo Film Co., Ltd. Method of recording data in memory card having EEPROM and memory card system using the same
US5204947A (en) 1990-10-31 1993-04-20 International Business Machines Corporation Application independent (open) hypermedia enablement services
US5241625A (en) 1990-11-27 1993-08-31 Farallon Computing, Inc. Screen image sharing among heterogeneous computers
EP0773685B1 (en) * 1990-12-26 2002-06-05 Canon Kabushiki Kaisha Multi-media communication apparatus
US5249290A (en) 1991-02-22 1993-09-28 At&T Bell Laboratories Method of and apparatus for operating a client/server computer network
JPH04271454A (ja) * 1991-02-27 1992-09-28 Toshiba Corp 疎結合計算機システム
JPH04311252A (ja) * 1991-04-10 1992-11-04 Hitachi Ltd ネットワークを利用した情報処理方法
JPH04342055A (ja) * 1991-05-20 1992-11-27 Nec Corp 複数コンピュータシステムの利用者認証方法
CA2069355C (en) 1991-06-07 1998-10-06 Robert C. Pike Global user interface
US5559958A (en) * 1991-06-24 1996-09-24 Compaq Computer Corporation Graphical user interface for computer management system and an associated management information base
US5204897A (en) * 1991-06-28 1993-04-20 Digital Equipment Corporation Management interface for license management system
JPH0546568A (ja) 1991-08-08 1993-02-26 Internatl Business Mach Corp <Ibm> 分散アプリケーシヨン実行装置および方法
IL99923A0 (en) 1991-10-31 1992-08-18 Ibm Israel Method of operating a computer in a network
US5315711A (en) * 1991-11-01 1994-05-24 Unisys Corporation Method and apparatus for remotely and centrally controlling a plurality of host processors
US5619716A (en) * 1991-11-05 1997-04-08 Hitachi, Ltd. Information processing system having a configuration management system for managing the software of the information processing system
US5351129A (en) 1992-03-24 1994-09-27 Rgb Technology D/B/A Rgb Spectrum Video multiplexor-encoder and decoder-converter
WO1993020511A1 (en) * 1992-03-31 1993-10-14 Aggregate Computing, Inc. An integrated remote execution system for a heterogenous computer network environment
FR2690260B1 (fr) 1992-04-17 1997-01-03 Bull Sa Utilisation d'un protocole bidirectionnel de tres haut niveau pour la communication entre un systeme hypermedia et une pluralite d'editeurs.
DE69220093T2 (de) * 1992-06-18 1997-12-04 Ibm Verarbeitungsnetzwerk für verteilte anwendungsprogramme.
US5440719A (en) 1992-10-27 1995-08-08 Cadence Design Systems, Inc. Method simulating data traffic on network in accordance with a client/sewer paradigm
US5329619A (en) 1992-10-30 1994-07-12 Software Ag Cooperative processing interface and communication broker for heterogeneous computing environments
JP3553987B2 (ja) * 1992-11-13 2004-08-11 株式会社日立製作所 クライアント・サーバシステム
JP2505974B2 (ja) 1992-12-08 1996-06-12 インターナショナル・ビジネス・マシーンズ・コーポレイション 複数の適用業務プログラムを統合化グラフィカル・ユ―ザ・インタフェ―ス処理環境へ統合化するための方法
US5566302A (en) 1992-12-21 1996-10-15 Sun Microsystems, Inc. Method for executing operation call from client application using shared memory region and establishing shared memory region when the shared memory region does not exist
US5572674A (en) 1993-01-07 1996-11-05 Bmc Software, Inc. Method of dynamically adjusting SNA network control program parameters
US5325527A (en) * 1993-01-19 1994-06-28 Canon Information Systems, Inc. Client/server communication system utilizing a self-generating nodal network
US5469540A (en) 1993-01-27 1995-11-21 Apple Computer, Inc. Method and apparatus for generating and displaying multiple simultaneously-active windows
US5671379A (en) 1993-01-29 1997-09-23 International Business Machines Corporation System and method for managing windows
US5459837A (en) * 1993-04-21 1995-10-17 Digital Equipment Corporation System to facilitate efficient utilization of network resources in a computer network
US5930473A (en) * 1993-06-24 1999-07-27 Teng; Peter Video application server for mediating live video services
US5794207A (en) * 1996-09-04 1998-08-11 Walker Asset Management Limited Partnership Method and apparatus for a cryptographically assisted commercial network system designed to facilitate buyer-driven conditional purchase offers
JP2576762B2 (ja) 1993-06-30 1997-01-29 日本電気株式会社 リング網のノード間情報収集方式
CA2168762C (en) 1993-08-03 2000-06-27 Paul Butterworth Flexible multi-platform partitioning for computer applications
US5359593A (en) 1993-08-26 1994-10-25 International Business Machines Corporation Dynamic bandwidth estimation and adaptation for packet communications networks
DE4417588A1 (de) * 1993-08-30 1995-03-02 Hewlett Packard Co Verfahren und Vorrichtung zum Erfassen und Weiterleiten von Fensterereignissen zu einer Mehrzahl von bestehenden Anwendungen zur gleichzeitigen Ausführung
US5844553A (en) 1993-08-30 1998-12-01 Hewlett-Packard Company Mechanism to control and use window events among applications in concurrent computing
GB2281793A (en) 1993-09-11 1995-03-15 Ibm A data processing system for providing user load levelling in a network
US5553242A (en) 1993-11-03 1996-09-03 Wang Laboratories, Inc. Client/server connection sharing
US5574934A (en) 1993-11-24 1996-11-12 Intel Corporation Preemptive priority-based transmission of signals using virtual channels
US5499343A (en) * 1993-12-17 1996-03-12 Taligent, Inc. Object-oriented networking system with dynamically configurable communication links
US5548726A (en) 1993-12-17 1996-08-20 Taligeni, Inc. System for activating new service in client server network by reconfiguring the multilayer network protocol stack dynamically within the server node
US5515508A (en) * 1993-12-17 1996-05-07 Taligent, Inc. Client server system and method of operation including a dynamically configurable protocol stack
US5495411A (en) * 1993-12-22 1996-02-27 Ananda; Mohan Secure software rental system using continuous asynchronous password verification
US5592626A (en) * 1994-02-07 1997-01-07 The Regents Of The University Of California System and method for selecting cache server based on transmission and storage factors for efficient delivery of multimedia information in a hierarchical network of servers
JP3454285B2 (ja) * 1994-02-15 2003-10-06 富士ゼロックス株式会社 データ処理装置およびデータ処理方法
US5473599A (en) 1994-04-22 1995-12-05 Cisco Systems, Incorporated Standby router protocol
CA2145921A1 (en) 1994-05-10 1995-11-11 Vijay Pochampalli Kumar Method and apparatus for executing a distributed algorithm or service on a simple network management protocol based computer network
US5596745A (en) * 1994-05-16 1997-01-21 International Business Machines Corporation System and procedure for concurrent database access by multiple user applications through shared connection processes
US5594490A (en) * 1994-05-23 1997-01-14 Cable Services Technologies, Inc. System for distributing video/audio files from central location to a plurality of cable headends
US5517617A (en) * 1994-06-29 1996-05-14 Digital Equipment Corporation Automatic assignment of addresses in a computer communications network
EP0692891A1 (fr) 1994-07-12 1996-01-17 T.R.T. Telecommunications Radioelectriques Et Telephoniques Système d'interconnexion de réseaux locaux utilisant un protocole de routage de type "routage depuis la source" et équipement d'interconnexion destiné à être utilisé dans un tel système
US5655218A (en) 1994-07-29 1997-08-05 Motorola, Inc. Radiotelephone communication unit displaying chronological information
JP3160830B2 (ja) * 1994-08-02 2001-04-25 日本電信電話株式会社 マルチメディアシステムアクセス方式、アクセス方法及び接続制御装置
US5557732A (en) 1994-08-11 1996-09-17 International Business Machines Corporation Method and apparatus for protecting software executing on a demonstration computer
US5485460A (en) * 1994-08-19 1996-01-16 Microsoft Corporation System and method for running multiple incompatible network protocol stacks
TW252248B (en) * 1994-08-23 1995-07-21 Ibm A semiconductor memory based server for providing multimedia information on demand over wide area networks
US5541927A (en) 1994-08-24 1996-07-30 At&T Corp. Method of multicasting
AUPM813394A0 (en) 1994-09-14 1994-10-06 Dolphin Software Pty Ltd A method and apparatus for preparation of a database document in a local processing apparatus and loading of the database document with data from remote sources
US5586312A (en) 1994-10-11 1996-12-17 Unisys Corporation Method and apparatus for using an independent transaction processing application as a service routine
US5838906A (en) 1994-10-17 1998-11-17 The Regents Of The University Of California Distributed hypermedia method for automatically invoking external application providing interaction and display of embedded objects within a hypermedia document
US5913920A (en) 1994-12-13 1999-06-22 International Business Machines Corporation Indicating updates from a remote display
US5623656A (en) * 1994-12-15 1997-04-22 Lucent Technologies Inc. Script-based data communication system and method utilizing state memory
JPH0926970A (ja) 1994-12-20 1997-01-28 Sun Microsyst Inc 情報を検索するコンピュータによる実行方法及び装置
US5530852A (en) * 1994-12-20 1996-06-25 Sun Microsystems, Inc. Method for extracting profiles and topics from a first file written in a first markup language and generating files in different markup languages containing the profiles and topics for use in accessing data described by the profiles and topics
US5680549A (en) 1994-12-30 1997-10-21 Compuserve Incorporated System for transferring network connections from first to second program where the first enters an inactive state and resumes control of connections when second terminates
US5583563A (en) 1995-01-12 1996-12-10 Us West Marketing Resources Group, Inc. Method and system for delivering an application in an interactive television network
US5682478A (en) 1995-01-19 1997-10-28 Microsoft Corporation Method and apparatus for supporting multiple, simultaneous services over multiple, simultaneous connections between a client and network server
US5557748A (en) 1995-02-03 1996-09-17 Intel Corporation Dynamic network configuration
JPH08235114A (ja) * 1995-02-28 1996-09-13 Hitachi Ltd サーバアクセス方法と課金情報管理方法
US5819093A (en) 1995-03-03 1998-10-06 Sun Microsystems, Inc. System and method for a distributed debugger for debugging distributed application programs
US5655081A (en) * 1995-03-08 1997-08-05 Bmc Software, Inc. System for monitoring and managing computer resources and applications across a distributed computing environment using an intelligent autonomous agent architecture
US5857102A (en) 1995-03-14 1999-01-05 Sun Microsystems, Inc. System and method for determining and manipulating configuration information of servers in a distributed object environment
US5870552A (en) * 1995-03-28 1999-02-09 America Online, Inc. Method and apparatus for publishing hypermedia documents over wide area networks
US5721876A (en) * 1995-03-30 1998-02-24 Bull Hn Information Systems Inc. Sockets application program mechanism for proprietary based application programs running in an emulation environment
US5666501A (en) 1995-03-30 1997-09-09 International Business Machines Corporation Method and apparatus for installing software
US5689708A (en) * 1995-03-31 1997-11-18 Showcase Corporation Client/server computer systems having control of client-based application programs, and application-program control means therefor
US5692183A (en) 1995-03-31 1997-11-25 Sun Microsystems, Inc. Methods and apparatus for providing transparent persistence in a distributed object operating environment
US5710918A (en) * 1995-06-07 1998-01-20 International Business Machines Corporation Method for distributed task fulfillment of web browser requests
US5734865A (en) * 1995-06-07 1998-03-31 Bull Hn Information Systems Inc. Virtual local area network well-known port routing mechanism for mult--emulators in an open system environment
US5774668A (en) 1995-06-07 1998-06-30 Microsoft Corporation System for on-line service in which gateway computer uses service map which includes loading condition of servers broadcasted by application servers for load balancing
US5701451A (en) 1995-06-07 1997-12-23 International Business Machines Corporation Method for fulfilling requests of a web browser
US5737592A (en) 1995-06-19 1998-04-07 International Business Machines Corporation Accessing a relational database over the Internet using macro language files
JP3535267B2 (ja) * 1995-07-03 2004-06-07 富士通株式会社 監視システムの監視状態表示装置
US5874960A (en) * 1995-07-05 1999-02-23 Microsoft Corporation Method and system for sharing applications between computer systems
JP3137173B2 (ja) * 1995-07-20 2001-02-19 富士ゼロックス株式会社 認証情報管理装置
US5644720A (en) * 1995-07-31 1997-07-01 West Publishing Company Interprocess communications interface for managing transaction requests
US5767849A (en) * 1995-08-18 1998-06-16 International Business Machines Corporation Personality neutral window management subsystem
US5657390A (en) 1995-08-25 1997-08-12 Netscape Communications Corporation Secure socket layer application program apparatus and method
JPH0997227A (ja) * 1995-09-29 1997-04-08 Fujitsu Ltd クライアント/サーバスタイルにおける業務運用システム
US5758186A (en) 1995-10-06 1998-05-26 Sun Microsystems, Inc. Method and apparatus for generically handling diverse protocol method calls in a client/server computer system
US5913060A (en) 1995-10-11 1999-06-15 Citrix Systems, Inc. Method for deadlock avoidance in a distributed process system using a synchronous procedure call
US5826027A (en) 1995-10-11 1998-10-20 Citrix Systems, Inc. Method for supporting an extensible and dynamically bindable protocol stack in a distrubited process system
JPH09114783A (ja) * 1995-10-13 1997-05-02 Sony Corp 情報処理装置および方法
US5572643A (en) 1995-10-19 1996-11-05 Judson; David H. Web browser with dynamic display of information objects during linking
US5802306A (en) 1995-10-31 1998-09-01 International Business Machines Corporation Supporting multiple client-server sessions from a protocol stack associated with a single physical adapter through use of a plurality of logical adapters
US5729734A (en) 1995-11-03 1998-03-17 Apple Computer, Inc. File privilege administration apparatus and methods
US7555529B2 (en) * 1995-11-13 2009-06-30 Citrix Systems, Inc. Interacting with software applications displayed in a web page
US6950991B2 (en) 1995-11-13 2005-09-27 Citrix Systems, Inc. Interacting with software applications displayed in a web page
US6088515A (en) * 1995-11-13 2000-07-11 Citrix Systems Inc Method and apparatus for making a hypermedium interactive
PL326670A1 (en) 1995-11-14 1998-10-12 Ibm Information processing system enabling a versatile worldwide www network scanning program to get access to servers of many different protocols
US5684861A (en) 1995-12-04 1997-11-04 Lewis; Walter F. Apparatus and method for monitoring cellular telephone usage
US6161126A (en) 1995-12-13 2000-12-12 Immersion Corporation Implementing force feedback over the World Wide Web and other computer networks
US6101531A (en) 1995-12-19 2000-08-08 Motorola, Inc. System for communicating user-selected criteria filter prepared at wireless client to communication server for filtering data transferred from host to said wireless client
US5748896A (en) * 1995-12-27 1998-05-05 Apple Computer, Inc. Remote network administration methods and apparatus
US5706437A (en) * 1995-12-29 1998-01-06 Mci Communications Corporation System and method for accessing a service on a services network
DE19602718B4 (de) 1996-01-26 2004-03-25 Loewe Opta Gmbh Verfahren zur Beeinflussung mindestens des Verbindungsaufbaus einer Telekommunikationsendeinrichtung an ein Telefonnetz und Schaltungsanordnung hierfür
US5862348A (en) * 1996-02-09 1999-01-19 Citrix Systems, Inc. Method and apparatus for connecting a client node to a server node based on load levels
JPH09233467A (ja) 1996-02-21 1997-09-05 Fujitsu Ltd 画像データ通信装置及び画像データ通信システムにおける通信データ量調整方法
US5961588A (en) 1996-02-22 1999-10-05 Alcatel Usa Sourcing, L.P. Handling of commands passed between the server and client stations of a telecommunications system
US6167432A (en) 1996-02-29 2000-12-26 Webex Communications, Inc., Method for creating peer-to-peer connections over an interconnected network to facilitate conferencing among users
US5761507A (en) * 1996-03-05 1998-06-02 International Business Machines Corporation Client/server architecture supporting concurrent servers within a server with a transaction manager providing server/connection decoupling
US5938733A (en) 1996-03-08 1999-08-17 International Business Machines Corporation Object oriented representation of network requests in a client server model
US5764915A (en) * 1996-03-08 1998-06-09 International Business Machines Corporation Object-oriented communication interface for network protocol access using the selected newly created protocol interface object and newly created protocol layer objects in the protocol stack
US5838910A (en) * 1996-03-14 1998-11-17 Domenikos; Steven D. Systems and methods for executing application programs from a memory device linked to a server at an internet site
US5748892A (en) * 1996-03-25 1998-05-05 Citrix Systems, Inc. Method and apparatus for client managed flow control on a limited memory computer system
US5625683A (en) * 1996-03-25 1997-04-29 Motorola, Inc. Method of and telephone with call-reminding and auto-dialing
US6101528A (en) * 1996-03-27 2000-08-08 Intel Corporation Method and apparatus for discovering server applications by a client application in a network of computer systems
US5754830A (en) * 1996-04-01 1998-05-19 Openconnect Systems, Incorporated Server and web browser terminal emulator for persistent connection to a legacy host system and method of operation
US5905866A (en) * 1996-04-30 1999-05-18 A.I. Soft Corporation Data-update monitoring in communications network
US5802258A (en) 1996-05-03 1998-09-01 International Business Machines Corporation Loosely coupled system environment designed to handle a non-disruptive host connection switch after detection of an error condition or during a host outage or failure
US5864678A (en) * 1996-05-08 1999-01-26 Apple Computer, Inc. System for detecting and reporting data flow imbalance between computers using grab rate outflow rate arrival rate and play rate
JP4086340B2 (ja) * 1996-05-17 2008-05-14 富士通株式会社 ネットワーク認証システム
US5918013A (en) * 1996-06-03 1999-06-29 Webtv Networks, Inc. Method of transcoding documents in a network environment using a proxy server
US6034689A (en) * 1996-06-03 2000-03-07 Webtv Networks, Inc. Web browser allowing navigation between hypertext objects using remote control
US6175854B1 (en) 1996-06-11 2001-01-16 Ameritech Services, Inc. Computer system architecture and method for multi-user, real-time applications
US6014133A (en) * 1996-06-14 2000-01-11 Seiko Epson Corporation Data transmitter/receiver apparatus, data transmitter, data receiver, and data compression method
US5881241A (en) * 1996-06-19 1999-03-09 Sun Microsystems, Inc. System for transmitting data packet after matching data packet's routing pattern with predetermined data routes stored in a route table
US6272556B1 (en) 1996-07-01 2001-08-07 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for migrating a client-server application (#5)
US6031533A (en) * 1996-07-03 2000-02-29 Sun Microsystems, Inc. Graphical user interface for use in a de-centralized network environment
KR100203266B1 (ko) 1996-07-09 1999-06-15 윤종용 윤곽선복호화장치
US5764908A (en) * 1996-07-12 1998-06-09 Sofmap Future Design, Inc. Network system containing program modules residing in different computers and executing commands without return results to calling modules
US5757925A (en) * 1996-07-23 1998-05-26 Faybishenko; Yaroslav Secure platform independent cross-platform remote execution computer system and method
US6115744A (en) * 1996-07-30 2000-09-05 Bea Systems, Inc. Client object API and gateway to enable OLTP via the internet
US5828840A (en) 1996-08-06 1998-10-27 Verifone, Inc. Server for starting client application on client if client is network terminal and initiating client application on server if client is non network terminal
US5973696A (en) 1996-08-08 1999-10-26 Agranat Systems, Inc. Embedded web server
US5898835A (en) * 1996-08-16 1999-04-27 Electronic Data Systems Corporation System and method for remotely executing a command
US5842206A (en) 1996-08-20 1998-11-24 Iconovex Corporation Computerized method and system for qualified searching of electronically stored documents
US5805166A (en) * 1996-08-23 1998-09-08 Intenational Business Machines Corp. Segmented status area for dynamically reporting status in a data processing system
US6195678B1 (en) * 1996-09-03 2001-02-27 Fujitsu Limited Remote resource management system for automatically downloading required files from application server depending on contents of selected files on requesting computer
US5979757A (en) 1996-09-05 1999-11-09 Symbol Technologies, Inc. Method and system for presenting item information using a portable data terminal
US5944791A (en) 1996-10-04 1999-08-31 Contigo Software Llc Collaborative web browser
US5960409A (en) 1996-10-11 1999-09-28 Wexler; Daniel D. Third-party on-line accounting system and method therefor
US5884046A (en) * 1996-10-23 1999-03-16 Pluris, Inc. Apparatus and method for sharing data and routing messages between a plurality of workstations in a local area network
GB9623298D0 (en) 1996-11-08 1997-01-08 Int Computers Ltd Updating mechanism for software
US5870545A (en) * 1996-12-05 1999-02-09 Hewlett-Packard Company System and method for performing flexible workflow process compensation in a distributed workflow management system
US6061695A (en) * 1996-12-06 2000-05-09 Microsoft Corporation Operating system shell having a windowing graphical user interface with a desktop displayed as a hypertext multimedia document
US6067568A (en) * 1996-12-10 2000-05-23 International Business Machines Corporation Automatic setup of services for computer system users
US6065059A (en) * 1996-12-10 2000-05-16 International Business Machines Corporation Filtered utilization of internet data transfers to reduce delay and increase user control
US6131116A (en) 1996-12-13 2000-10-10 Visto Corporation System and method for globally accessing computer services
US5889942A (en) 1996-12-18 1999-03-30 Orenshteyn; Alexander S. Secured system for accessing application services from a remote station
US6374237B1 (en) * 1996-12-24 2002-04-16 Intel Corporation Data set selection based upon user profile
US5978847A (en) 1996-12-26 1999-11-02 Intel Corporation Attribute pre-fetch of web pages
US5941988A (en) 1997-01-27 1999-08-24 International Business Machines Corporation Session and transport layer proxies via TCP glue
GB2321729B (en) 1997-02-04 2001-06-13 Ibm Data processing system, method, and server
US5790977A (en) 1997-02-06 1998-08-04 Hewlett-Packard Company Data acquisition from a remote instrument via the internet
AU740007B2 (en) 1997-02-21 2001-10-25 Dudley John Mills Network-based classified information systems
US5923842A (en) 1997-03-06 1999-07-13 Citrix Systems, Inc. Method and apparatus for simultaneously providing anonymous user login for multiple users
US6067580A (en) * 1997-03-11 2000-05-23 International Business Machines Corporation Integrating distributed computing environment remote procedure calls with an advisory work load manager
JP3884123B2 (ja) * 1997-03-11 2007-02-21 富士通株式会社 ネットワークを利用した各種サービスへのアクセス方式
US5949975A (en) 1997-03-12 1999-09-07 Microsoft Corp. Method and system for negotiating capabilities when sharing an application program with multiple computer systems
US5978848A (en) 1997-03-14 1999-11-02 International Business Machines Corporation Web browser method and system for backgrounding a link access during slow link access time periods
US6023507A (en) * 1997-03-17 2000-02-08 Sun Microsystems, Inc. Automatic remote computer monitoring system
US6263377B1 (en) 1997-03-28 2001-07-17 International Business Machines Corporation Method for managing distributed applications and distributed application manager
GB2323946B (en) 1997-04-04 2002-04-17 Sony Uk Ltd Database accessing method and apparatus
JPH10301874A (ja) 1997-04-22 1998-11-13 Internatl Business Mach Corp <Ibm> 遠隔操作方法、ネットワークを介して端末から遠隔操作されるサーバ及びhtmlファイルを格納する記憶媒体
US6038599A (en) * 1997-04-23 2000-03-14 Mpath Interactive, Inc. Latency server and matchmaker
US6161145A (en) * 1997-05-08 2000-12-12 International Business Machines Corporation Updating server-related data at a client
US6157944A (en) 1997-05-14 2000-12-05 Citrix Systems, Inc. System and method for replicating a client/server data exchange to additional client notes connecting to the server
US5941949A (en) 1997-05-14 1999-08-24 Citrix Systems, Inc. System and method for transmitting data from a server application to more than one client node
US5961586A (en) 1997-05-14 1999-10-05 Citrix Systems, Inc. System and method for remotely executing an interpretive language application
US6023721A (en) * 1997-05-14 2000-02-08 Citrix Systems, Inc. Method and system for allowing a single-user application executing in a multi-user environment to create objects having both user-global and system global visibility
US5983190A (en) 1997-05-19 1999-11-09 Microsoft Corporation Client server animation system for managing interactive user interface characters
US6038596A (en) * 1997-05-23 2000-03-14 International Business Machines Corporation Method and system in a network for decreasing performance degradation triggered by multiple user redundant input events
US5877757A (en) * 1997-05-23 1999-03-02 International Business Machines Corporation Method and system for providing user help information in network applications
US6035337A (en) * 1997-05-30 2000-03-07 International Business Machines Corp. Method and system for managing data flow within a collaboration system using proximity determination modules
US5930804A (en) * 1997-06-09 1999-07-27 Philips Electronics North America Corporation Web-based biometric authentication system and method
US6292827B1 (en) 1997-06-20 2001-09-18 Shore Technologies (1999) Inc. Information transfer systems and method with dynamic distribution of data, control and management of information
US5999950A (en) 1997-08-11 1999-12-07 Webtv Networks, Inc. Japanese text input method using a keyboard with only base kana characters
US6078956A (en) * 1997-09-08 2000-06-20 International Business Machines Corporation World wide web end user response time monitor
US6393015B1 (en) * 1997-09-12 2002-05-21 Genesys Telecommunications Laboratories, Inc. Method and apparatus for automatic network connection between a small business and a client
US5940075A (en) 1997-09-30 1999-08-17 Unisys Corp. Method for extending the hypertext markup language (HTML) to support enterprise application data binding
US6125387A (en) 1997-09-30 2000-09-26 The United States Of America Represented By The Secretary Of The Navy Operating methods for robust computer systems permitting autonomously switching between alternative/redundant
US5848410A (en) 1997-10-08 1998-12-08 Hewlett Packard Company System and method for selective and continuous index generation
US6009410A (en) 1997-10-16 1999-12-28 At&T Corporation Method and system for presenting customized advertising to a user on the world wide web
US6185609B1 (en) * 1997-10-24 2001-02-06 Sun Microsystems, Inc. Method, apparatus and program to provide client access to a management information service residing on a server in a computer network system
DE19747583B4 (de) * 1997-10-28 2006-04-20 Telefonaktiebolaget Lm Ericsson (Publ) Kommunikationssystem und Verfahren
US6104392A (en) * 1997-11-13 2000-08-15 The Santa Cruz Operation, Inc. Method of displaying an application on a variety of client devices in a client/server network
US5999179A (en) 1997-11-17 1999-12-07 Fujitsu Limited Platform independent computer network management client
US5860068A (en) * 1997-12-04 1999-01-12 Petabyte Corporation Method and system for custom manufacture and delivery of a data product
US6157705A (en) * 1997-12-05 2000-12-05 E*Trade Group, Inc. Voice control of a server
US6141759A (en) * 1997-12-10 2000-10-31 Bmc Software, Inc. System and architecture for distributing, monitoring, and managing information requests on a computer network
US6154749A (en) * 1998-01-15 2000-11-28 At&T Corp. Distributed caching scheme for database systems
US6339826B2 (en) * 1998-05-05 2002-01-15 International Business Machines Corp. Client-server system for maintaining a user desktop consistent with server application user access permissions
US6108712A (en) 1998-05-05 2000-08-22 International Business Machines Corp. Client-server system with central application management and providing export agent capability for retrofitting existing hardware and applications into the system
US6023572A (en) * 1998-05-12 2000-02-08 Unisys Corporation Computer based system and method for modeling activities of people in an organization
US6308212B1 (en) * 1998-05-29 2001-10-23 Hewlett-Packard Company Web user interface session and sharing of session environment information
US6289461B1 (en) 1998-06-09 2001-09-11 Placeware, Inc. Bi-directional process-to-process byte stream protocol
US6338086B1 (en) * 1998-06-11 2002-01-08 Placeware, Inc. Collaborative object architecture
US6446109B2 (en) 1998-06-29 2002-09-03 Sun Microsystems, Inc. Application computing environment
US6256666B1 (en) 1998-07-14 2001-07-03 International Business Machines Corp. Method and system for remotely managing electronic mail attachments
US6266781B1 (en) 1998-07-20 2001-07-24 Academia Sinica Method and apparatus for providing failure detection and recovery with predetermined replication style for distributed applications in a network
US6157953A (en) * 1998-07-28 2000-12-05 Sun Microsystems, Inc. Authentication and access control in a management console program for managing services in a computer network
US6738809B1 (en) * 1998-08-21 2004-05-18 Nortel Networks Limited Network presence indicator for communications management
US6336138B1 (en) * 1998-08-25 2002-01-01 Hewlett-Packard Company Template-driven approach for generating models on network services
US6311205B1 (en) * 1998-10-19 2001-10-30 International Business Machines Corporation Persistent user groups on servers managed by central servers
US6409602B1 (en) 1998-11-06 2002-06-25 New Millenium Gaming Limited Slim terminal gaming system
US6510466B1 (en) * 1998-12-14 2003-01-21 International Business Machines Corporation Methods, systems and computer program products for centralized management of application programs on a network
US6272493B1 (en) 1999-01-21 2001-08-07 Wired Solutions, Llc System and method for facilitating a windows based content manifestation environment within a WWW browser
US6263363B1 (en) 1999-01-28 2001-07-17 Skydesk, Inc. System and method for creating an internet-accessible working replica of a home computer on a host server controllable by a user operating a remote access client computer
US6792605B1 (en) 1999-06-10 2004-09-14 Bow Street Software, Inc. Method and apparatus for providing web based services using an XML Runtime model to store state session data
WO2000079460A1 (en) * 1999-06-23 2000-12-28 Webango, Inc. Method for buy-side bid management
US20010052932A1 (en) 1999-12-30 2001-12-20 Young Robert S. Digital film processing method and system
JP2001195465A (ja) 2000-01-11 2001-07-19 Fuji Photo Film Co Ltd 出力サービスシステム
US6654784B1 (en) 2000-01-14 2003-11-25 Nexaweb Technologies, Inc Computing architecture
US6271418B1 (en) * 2000-02-22 2001-08-07 Nippon Kayaku Co., Ltd. Process for preparing (hetero) aromatic substituted benzene derivatives
US7237114B1 (en) 2000-04-26 2007-06-26 Pronvest, Inc. Method and system for signing and authenticating electronic documents
US7127525B2 (en) * 2000-05-26 2006-10-24 Citrix Systems, Inc. Reducing the amount of graphical line data transmitted via a low bandwidth transport protocol mechanism
US7958185B2 (en) * 2000-09-18 2011-06-07 Bentley Systems, Inc. Spatial data enabled engineering, construction, and operations computer-aided design (CAD) project system, method and computer program product
GB2368930B (en) * 2000-10-17 2005-04-06 Hewlett Packard Co Establishment of a deferred network communication session
US6986040B1 (en) * 2000-11-03 2006-01-10 Citrix Systems, Inc. System and method of exploiting the security of a secure communication channel to secure a non-secure communication channel
US6912582B2 (en) 2001-03-30 2005-06-28 Microsoft Corporation Service routing and web integration in a distributed multi-site user authentication system
US20050198379A1 (en) 2001-06-13 2005-09-08 Citrix Systems, Inc. Automatically reconnecting a client across reliable and persistent communication sessions
EP1321853A3 (en) 2001-12-10 2009-12-23 Sap Ag Dynamic component transfer based on resource negotiations between computer systems
US7984157B2 (en) 2002-02-26 2011-07-19 Citrix Systems, Inc. Persistent and reliable session securely traversing network components using an encapsulating protocol
US7266582B2 (en) 2002-08-09 2007-09-04 Sun Microsystems, Inc. Method and system for automating generation of web services from existing service components
US7296022B2 (en) 2003-07-14 2007-11-13 Microsoft Corporation Method and system for accessing a network database as a web service

Also Published As

Publication number Publication date
EP1141828A1 (en) 2001-10-10
GB2349488A (en) 2000-11-01
ATE252744T1 (de) 2003-11-15
US6928469B1 (en) 2005-08-09
DE69912317D1 (de) 2003-11-27
DK1141828T3 (da) 2004-02-23
CA2293127A1 (en) 2000-06-29
EP1141828B1 (en) 2003-10-22
HK1040124A1 (en) 2002-05-24
AU6555299A (en) 2000-07-06
IL143762A0 (en) 2002-04-21
KR20060096474A (ko) 2006-09-11
HK1040124B (zh) 2004-05-14
PT1141828E (pt) 2004-03-31
KR100630212B1 (ko) 2006-10-02
US8527615B2 (en) 2013-09-03
CA2293127C (en) 2011-03-01
GB9930782D0 (en) 2000-02-16
WO2000039678A1 (en) 2000-07-06
AU765088B2 (en) 2003-09-11
AU2212900A (en) 2000-07-31
DE69912317T2 (de) 2004-07-29
JP2002533830A (ja) 2002-10-08
US20050198292A1 (en) 2005-09-08

Similar Documents

Publication Publication Date Title
ES2209549T3 (es) Un aparato y procedimiento para determinar un programa cercano en un nodo cliente de una red cliente-servidor.
US11637828B2 (en) Hybrid authentication systems and methods
KR100998515B1 (ko) 클라이언트-서버 네트워크에서 파일-유형 연관성을 이용한분산 프로그램 실행 방법
TWI400922B (zh) 在聯盟中主用者之認證
US8244837B2 (en) Central administration of one or more resources
US6643690B2 (en) Apparatus and method for determining a program neighborhood for a client node in a client-server network
US8006098B2 (en) Integrating legacy application/data access with single sign-on in a distributed computing environment
US7334039B1 (en) Techniques for generating rules for a dynamic rule-based system that responds to requests for a resource on a network
US20010013096A1 (en) Trusted services broker for web page fine-grained security labeling
US20040073666A1 (en) Secure resource access
RU2237275C2 (ru) Сервер и способ (варианты) определения программного окружения клиентского узла в сети с архитектурой клиент/сервер
US20150058930A1 (en) Method and apparatus for enabling authorised users to access computer resources
US20180183782A1 (en) Single Sign-On for Interconnected Computer Systems
KR100678252B1 (ko) 클라이언트-서버 네트워크에서 클라이언트 노드에 대해 근접지대 프로그램을 판별하기 위한 장치 및 방법
EP1411429A2 (en) An apparatus and method for determining a program neighbourhood for a client node in a client-server network
Al-Sinani et al. A universal client-based identity management tool