ES2280283T3 - Objetos de control del lado del servidor para el procesamiento de elementos de la interfaz de usuario del lado del cliente. - Google Patents

Objetos de control del lado del servidor para el procesamiento de elementos de la interfaz de usuario del lado del cliente. Download PDF

Info

Publication number
ES2280283T3
ES2280283T3 ES01111681T ES01111681T ES2280283T3 ES 2280283 T3 ES2280283 T3 ES 2280283T3 ES 01111681 T ES01111681 T ES 01111681T ES 01111681 T ES01111681 T ES 01111681T ES 2280283 T3 ES2280283 T3 ES 2280283T3
Authority
ES
Spain
Prior art keywords
server
control
client
objects
user interface
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
ES01111681T
Other languages
English (en)
Inventor
Gary S. Burd
Kenneth B. Cooper
Scott D. Guthrie
David S. Ebbo
Mark T. Anders
Ted A. Peters
Stephen J. Millet
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.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Application granted granted Critical
Publication of ES2280283T3 publication Critical patent/ES2280283T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Transfer Between Computers (AREA)
  • User Interface Of Digital Computer (AREA)
  • Stored Programmes (AREA)
  • Communication Control (AREA)
  • Document Processing Apparatus (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

Un método para el procesamiento del lado del servidor de al menos un elemento de interfaz de usuario del lado del cliente (106, 108, 110) incorporado en una página web (104) visualizada en un cliente (100), comprendiendo el método: lectura (203) de una declaración de un recurso (310, 400); generación (204) de una pluralidad de objetos de control del lado del servidor existentes de manera simultánea (318, 320, 322) que se corresponden de manera lógica con el elemento de la interfaz de usuario del lado del cliente, basada en la declaración; procesamiento (206) de eventos del elemento de la interfaz de usuario del lado del cliente usando los objetos de control del lado del servidor existentes de manera simultánea; y generación (208) de datos de lenguaje de creación a partir de los objetos de control del lado del servidor existentes de manera simultánea para incorporar el elemento de la interfaz de usuario del lado del cliente en la página web, con posterioridad a la operación de procesamiento.

Description

Objetos de control del lado del servidor para el procesamiento de elementos de la interfaz de usuario del lado del cliente.
Campo técnico
La invención se refiere en general a una estructura de servidor web y, más en particular, a objetos de control del lado del servidor que procesan elementos de interfaz de usuario del lado del cliente de una página web.
Antecedentes de la invención
Un navegador web típico recibe datos desde un servidor web que define la apariencia y el comportamiento elemental de una página web para la visualización en un sistema de cliente. En un escenario típico, un usuario especifica un localizador uniforme de recursos ("URL"), una dirección global de un recurso de la Red Mundial, para acceder a un sitio web deseado. Por lo general, el término "recurso" se refiere a datos o rutinas a los que se puede acceder mediante un programa. Un ejemplo de URL es "http://www.microsoft.com/ms.htm". La primera parte del ejemplo de URL indica un protocolo dado (es decir, "http") para ser usado en la comunicación. La segunda parte especifica el nombre de dominio (es decir,"www.microsoft.com") donde está ubicado el recurso. La tercera parte especifica el recurso (es decir, un fichero llamado "ms.htm") dentro del dominio. De forma correspondiente, un navegador genera una petición HTTP (protocolo de transporte de hipertexto) asociada al ejemplo de URL para obtener los datos asociados al fichero ms.htm dentro del dominio www.microsoft.com. Un servidor web que aloje el sitio www.microsoft.com recibe la petición HTTP y devuelve el recurso o página web solicitada en una respuesta HTTP al sistema de cliente para la visualización en el navegador.
El fichero "ms.htm" del ejemplo de arriba incluye código HTML estático (lenguaje de marcado de hipertexto). EL HTML es un lenguaje de creación de texto plano usado para crear documentos (por ejemplo, páginas web) en la Red Mundial. Como tal, un fichero HTLM puede ser recuperado desde un servidor web y visualizado como página web en un navegador para presentar la rica experiencia gráfica que los usuarios vienen a esperar mientras ven información de Internet. Usando HTML, un desarrollador puede, por ejemplo, especificar texto formateado, listas, formularios, tablas, enlaces de hipertexto, imágenes y sonidos incorporados, y gráficos de fondo para la visualización en el navegador. No obstante, un fichero HTML, es un fichero estático que no soporta inherentemente la generación dinámica de contenido de página web.
En algunas circunstancias, una página web puede necesitar visualizar contenido dinámico en un navegador, tal como un precio de productos cambiante o información de tráfico. En tales situaciones, un programa de aplicación del lado del servidor es desarrollado normalmente para obtener los datos dinámicos y formatearlos en HTML que es enviado al navegador para la visualización en una página web cuando la página web es actualizada.
De forma adicional, estos mismos programas de aplicaciones del lado del servidor pueden ser usados en situaciones donde los datos no son estrictamente dinámicos pero donde hay tantos valores diferentes que pueden ser visualizados en una página web estática que sería poco viable crear el número requerido de páginas web estáticas. Por ejemplo, una página de planificación de viajes puede visualizar dos calendarios: un calendario para la fecha de salida y un calendario para la fecha de regreso. Más que desarrollar cientos de páginas estáticas con cada posible par de combinaciones de calendarios, un programa de aplicación del lado del servidor puede generar de manera dinámica la página estática apropiada con los calendarios apropiados visualizados.
Muchas páginas web permiten que el usuario interactúe con la página visualizada en el navegador mediante la selección de elementos visuales de la página. Por ejemplo, en la página de planificación de viajes mencionada arriba, el calendario puede permitir al usuario interactuar con ella, haciendo clic sobre un día para seleccionar esa fecha, o haciendo clic sobre un icono para ir un mes hacia delante o hacia detrás. En las soluciones existentes, un navegador presentará una petición HTTP de vuelta al programa de aplicación del lado del servidor. La petición HTTP puede incluir parámetros codificados en la secuencia de consultas, como variables de correo de forma, o algún otro formato de datos para describir eventos o datos del lado del cliente (por ejemplo, sobre cuyo control hizo clic el usuario). Por ejemplo, los parámetros pueden incluir los datos que el usuario seleccionó en un calendario, junto con la fecha visualizada actualmente en el otro calendario.
La comunicación de eventos y datos de vuelta al servidor se llama un "post back", puesto que el navegador envía normalmente la petición usando una petición HTTP POST. El programa de aplicación del lado del servidor puede procesar la petición HTTP y generar el código HTLM apropiado para página web con un calendario calculado recientemente para reflejar la acción del usuario para la transmisión al cliente en una respuesta HTTP. Después de esto, el documento resultante es transmitido a un sistema de cliente en una respuesta HTTP, donde es visualizado en el navegador como una página web que muestra los calendarios actualizados.
El desarrollo de un programa de aplicación del lado del servidor puede ser una tarea compleja que requiera no sólo la familiaridad con la codificación HTML normal que se usa para configurar una página web, sino además con las nociones elementales de programación, incluidos uno o más lenguajes de programación (por ejemplo, C++, Perl, Visual Basic, or Jscript), y el protocolo HTTP, incluido cómo los datos son enviados entre el navegador y el servidor. Los diseñadores de páginas web, por otra parte, son frecuentemente diseñadores gráficos y editores, quienes pueden carecer de experiencia en programación. Asimismo, la simplificación del complejo desarrollo de una página web puede acelerar el desarrollo de nuevo contenido web mediante cualquier desarrollador.
Por lo general, el desarrollo de un programa de aplicación del lado del servidor habitual también requiere un gran esfuerzo, tanto, de hecho, que los desarrolladores son frecuentemente reacios a intentarlo. El desarrollador no sólo debe entender el código HTML que debe ser generado para visualizar una página web deseada, sino que el desarrollador debe entender cómo la interacción del usuario y los datos del cliente de la página web tendrán como resultado operaciones de post back. En consecuencia, es deseable proporcionar una estructura de desarrollo que permita a un desarrollador crear y procesar dinámicamente una página web con la programación mínima.
Un enfoque para minimizar los requisitos de programación de generación de páginas web dinámicas ha sido la estructura de página de servidor activo (ASP), proporcionada por Microsoft Corporation. Un recurso ASP incluye normalmente código Visual Basic o Jscript, por ejemplo, para procesar una petición HTTP que especifique el recurso ASP como el recurso deseado y, tras ello, para generar el código HTML resultante en una respuesta HTTP al cliente. Asimismo, un recurso ASP puede hacer referencia a componentes de biblioteca del lado del cliente de terceras partes o predesarrollados (por ejemplo, controles ACTIVEX del lado del cliente) para facilitar un esfuerzo de una programación de aplicación dada. Sin embargo, en las estructuras actuales de aplicación del lado del servidor, la programación requerida para gestionar de manera dinámica los elementos de interfaz de usuario del lado del cliente (por ejemplo, cuadros de texto, cuadros de lista, botones, enlaces de hipertexto, imágenes, sonidos, etc.) dentro de las aplicaciones del lado del servidor todavía pueden requerir capacidades de programación sofisticadas y un esfuerzo considerable. Existe un problema sin respuesta en el encapsulamiento adecuado de la programación requerida para procesar elementos de interfaz de usuario, incluido el manejo de eventos de postback, de manera que se permita al desarrollador de páginas web centrarse en otros aspectos de la página web.
Más información perteneciente a la técnica anterior se puede encontrar en la patente estadounidense 5.991.802 que expone un método y sistema para invocar mediante un sistema informático del cliente una función de un objeto de una clase de objetos proporcionada por un sistema informático del servidor. El cliente envía una petición a un servidor que comprende un localizador universal de recursos ("URL") que identifica un script, una clase de objetos, y una función de la clase de objetos que han de invocarse. En respuesta a la recepción de la petición, el servidor comienza el script y transfiere control al script. El script instancia un objeto de la clase de objetos identificada en el URL de la petición recibida e invoca la función identificada en el URL de la petición recibida. La función invocada lleva a cabo el comportamiento de la función, crea una respuesta que ha de ser enviada al cliente, y envía la respuesta al cliente. La respuesta contiene información del estado describiendo un estado del objeto después de que se realice el comportamiento de la función. Cuando el cliente envía posteriormente una petición para invocar una función de la clase de objetos, la información del estado se incluye en la petición de forma que la función puede realizar su comportamiento basándose en la información del estado.
La WO 98/21651 enseña una máquina de estado de software genérico para implementar una aplicación de software en un entorno orientado al objeto que incluye un conjunto de objetos de entidad definidos para elementos de software de la aplicación de software, un conjunto de objetos de estado definidos para cada representante de objetos de entidad de estados en los que el elemento de software puede introducirse, y un conjunto de objetos de evento definidos para cada representante de objetos de estado de entradas que el elemento de software puede recibir o acciones con las que el elemento de software puede encontrarse mientras está en el estado representado por el objeto de estado. Un método y sistema de construcción de objetos dinámicos para una aplicación de software incluye los pasos de lectura y análisis de un fichero de la configuración principal mediante un objeto maestro, obteniendo un ID de objeto para cada objeto dinámico especificado en el fichero de la configuración principal, creando, mediante un objeto de fábrica, una instancia de cada objeto dinámico especificado en el fichero de la configuración principal y obtiene una dirección física para cada objeto creado, almacenando los ID de objeto y las direcciones físicas de las instancias de objetos creados en un diccionario de objetos, invocando el método de inicio de cada objeto almacenado en el diccionario de objetos, e iniciando cada objeto creado.
La "Chapter 6 Session Management Service", guía de JavaScript del lado del servidor, [en línea]1999, páginas 125-126; XP002193608, recuperado de Internet el 19 de marzo de 2002 del URL: http: //developer.netscape.com/docs/
manuals/ssjs/1_4/ssjs.pdf describe los objetos del servicio de gestión de la sesión disponibles en JavaScript del lado del servidor para compartir datos entre peticiones de cliente múltiples para una aplicación, entre usuarios múltiples de una única aplicación, o incluso entre aplicaciones múltiples en un servidor.
Resumen de la invención
Conforme a la presente invención, el problema de arriba y otros son resueltos mediante la provisión de una estructura de objetos de control del lado del servidor para gestionar el procesamiento y la generación de elementos de interfaz de usuario del lado del cliente. Asimismo, una jerarquía de objetos de control del lado del servidor puede cooperar para generar el código de lenguaje de creación resultante, tal como el estándar HTML, para la visualización de una página web en un cliente. El cliente puede ser, por ejemplo, cualquier navegador que soporte el estándar HTML u otro lenguaje de creación. La operación de procesar el elemento de la interfaz de usuario del lado del cliente puede incluir una o más de una operación de manejo de eventos postback, una operación de manejo de datos postback, una operación de enlace de datos, o una operación de gestión de estado relacionada con el estado de un objeto de control del lado del servidor.
Una gran utilidad de una forma de realización de la presente invención se encuentra en la encapsulación mejorada del procesamiento del lado del servidor de elementos de la interfaz de usuario del lado del cliente (por ejemplo, entrada recibida de elementos de la interfaz de usuario y salida usada para generar elementos de la interfaz de usuario) y la funcionalidad relacionada. Uno o más objetos de control del lado del servidor pueden ser generados para corresponderse de manera lógica con uno o más elementos de la interfaz de usuario. Por ejemplo, dado un elemento de la interfaz de usuario que represente un mes en la visualización de un calendario, se puede generar una jerarquía de objetos de control del lado del servidor correspondiente a la visualización del calendario y sus diversos subelementos. En una configuración, un objeto de control "month" puede contener jerárquicamente múltiples objetos de control "week", donde cada objeto de control "week" contiene jerárquicamente siete objetos de control "day".
Además, en una forma de realización de la presente invención, los objetos de control del lado del servidor pueden cooperar para procesar los elementos de la interfaz de usuario correspondientes de manera lógica. Esta ventaja resulta, en parte, de la existencia concurrente de múltiples objetos de control del lado del servidor durante el procesamiento de una petición del cliente y la generación de una respuesta. Por ejemplo, al detectar un primer evento postback recibido del cliente (por ejemplo, un clic sobre un elemento de botón "next month" en la visualización de un calendario), un objeto de control puede hacer levantar un segundo evento (por ejemplo, la selección del mes siguiente para la visualización mediante el objeto de control "month") que es detectado tras ello y procesado mediante uno o más objetos de control existentes de manera simultánea. Esta cooperación proporciona la encapsulación de la interacción de control complejo dentro de los mismos objetos de control del lado del servidor, minimizando de esta forma el manejo de eventos habitual requerido del desarrollador de páginas web.
Se prevén un método y un producto de programa informático que procesan un elemento de interfaz de usuario del lado del cliente incorporado en una página web visualizada en un cliente. Se recibe una petición que hace referencia a una memoria de datos de declaración del lado del servidor. Una declaración es introducida desde la memoria de datos de la declaración del lado del servidor. Se genera y se programa un objeto de control del lado del servidor para proporcionar la funcionalidad del elemento de interfaz de usuario basándose en la declaración. El elemento de interfaz de usuario es procesado usándose el objeto de control del lado del servidor. Los datos de lenguaje de creación se generan a partir del objeto de control del lado del servidor para visualizar el elemento de interfaz de usuario en la página web.
Se prevé una jerarquía de objetos de control del lado del servidor, ejecutables por un ordenador, para procesar uno o más elementos de interfaz de usuario del lado del cliente incorporados en una página web visualizada en un cliente. Uno o más objetos hijo del lado del servidor se corresponden con el o más elementos de interfaz de usuario del lado del cliente. Cada objeto hijo del lado del servidor trata la entrada recibida del cliente y genera datos de lenguaje de creación para la visualización del elemento de interfaz de usuario del lado del cliente en el cliente. Se recibe al menos un identificador jerárquico del cliente en asociación con la entrada que especifica uno de los objetos hijo del lado del servidor. Un objeto de página del lado del servidor contiene los objetos hijo del lado del servidor y recibe la entrada para la distribución a uno de los objetos hijo del lado del servidor de acuerdo con el identificador jerárquico.
Breve descripción de los dibujos
Fig. 1 ilustra un servidor web para generar de forma dinámica contenido do página web para la visualización en una forma de realización de la presente invención.
Fig. 2 ilustra un diagrama de flujo de operaciones para procesar y renderizar elementos de interfaz de usuario del lado del cliente usando objetos de control del lado del servidor en una forma de realización de la presente invención.
Fig. 3 ilustra módulos de ejemplo en un servidor de web usado en una forma de realización de la presente invención.
Fig. 4 ilustra un ejemplo de recurso de contenido dinámico (por ejemplo, un recurso ASP+) en una forma de realización de la presente invención.
Fig. 5 ilustra un ejemplo de sistema útil para implementar una forma de realización de la presente invención.
Fig. 6 ilustra un diagrama de flujo de proceso que representa el procesamiento de un objeto de página en una forma de realización de la presente invención.
Fig. 7 ilustra un ejemplo de clase Control del lado del servidor en una forma de realización de la presente invención.
Fig. 8 ilustra un ejemplo de clase ContainerControl del lado del servidor en una forma de realización de la presente invención.
Fig. 9 ilustra un ejemplo de clase ControlCollection del lado del servidor en una forma de realización de la presente invención.
Fig. 10 ilustra un ejemplo de clase Page del lado del servidor en una forma de realización de la presente invención.
Descripción detallada de la invención
Una forma de realización de la presente invención incluye un objeto de control del lado del servidor para procesar y generar un elemento de la interfaz de usuario del lado del cliente para la visualización en una página web. Asimismo, una jerarquía de objetos de control del lado del servidor puede cooperar para generar el código del lenguaje de creación resultante, tal como el estándar HTML, para la visualización de una página web en un cliente. El cliente puede ser, por ejemplo, cualquier navegador que soporte HTML estándar u otro lenguaje de creación. En una forma de realización de la presente invención, los objetos de control del lado del servidor se corresponden de forma lógica con elementos de la interfaz de usuario del lado del cliente y generan en un servidor el código del lenguaje de creación que ha de ser usado por el navegador del lado del cliente para visualizar y procesar una página web. La operación de procesamiento del elemento de la interfaz de usuario del lado del cliente puede incluir una o más de una operación de manejo de eventos postback, una operación de manejo de datos postback, una operación de enlace de datos, y un operación de gestión del estado. La operación de gestión del estado se refiere al estado de un objeto de control del lado del servidor.
La figura 1 ilustra un servidor web para generar de forma dinámica contenido de página web para la visualización en un cliente en una forma de realización de la presente invención. Un cliente 100 ejecuta un navegador 102 que visualiza una página web 104 en un dispositivo de visualización del cliente 100. El cliente 100 puede incluir un sistema informático del cliente que tenga un dispositivo de visualización, tal como un monitor de video. Un navegador "INTERNET EXPLORER", comercializado por Microsoft Corporation, es un ejemplo de un navegador 102 en una forma de realización de la presente invención. Otros ejemplos de navegadores incluyen sin limitación "NETSCAPE NAVIGATOR" y "MOSAIC". El ejemplo de página web 104 incorpora un control de cuadro de texto 106 y dos controles de botón 108 y 110. El navegador 102 puede recibir código HTML en la respuesta HTTP 112 desde un servidor web 116 y visualiza la página web como se describe mediante el código HTML. Aunque el HTML es descrito con referencia a una forma de realización, otros lenguajes de creación, incluidos sin limitación el SGML (lenguaje estandarizado de marcado generalizado, el XML (lenguaje extensible de marcado), y el WML (lenguaje de marcado inalámbrico), el cual es un lenguaje de marcado basado en XML, diseñado para especificar el contenido y las interfaces de usuario de dispositivos inalámbricos de banda estrecha, tales como buscapersonas y teléfonos móviles, se consideran dentro del ámbito de la presente invención. Asimismo, aunque aquí es expuesto principalmente el HTML 3.2 estándar, se puede considerar cualquier versión de HTML dentro del ámbito de la presente invención.
Las comunicaciones entre el cliente 100 y el servidor web 116 pueden ser dirigidas usando una secuencia de peticiones HTTP 114 y respuestas HTTP 112. Aunque el HTTP es descrito con referencia a una forma de realización, otros protocolos de transporte, incluido el S-HTTP sin limitarse al mismo, se consideran dentro del ámbito de la presente invención. En el servidor web 116, un módulo del canal de HTTP 118 recibe una petición HTTP 114, resuelve el URL, e invoca un manejador apropiado 120 para el procesamiento de la petición. En una forma de realización de la presente invención, se prevé una pluralidad de manejadores 120 para manejar diferentes tipos de recursos en el servidor web 116.
Por ejemplo, si el URL especifica un recurso de contenido estático 122, tal como un fichero HTML, un manejador 120 accede al recurso de contenido estático 122 y devuelve el recurso de contenido estático 122 a través del canal de HTTP 118 para la comunicación con el cliente 100 en una respuesta HTTP 112. De forma alternativa, en una forma de realización de la presente invención, si el URL especifica un recurso de contenido dinámico 124, tal como un recurso ASP+, un manejador 120 accede al recurso de contenido dinámico 124, procesa los contenidos del recurso de contenido dinámico 124, y genera el código HTML resultante para la página web 104. En una forma de realización de la presente invención, el código HTML resultante incluye el código estándar HTML 3.2. Por lo general, un recurso de contenido dinámico es una memoria de datos de declaraciones del lado del servidor (por ejemplo, un recurso ASP+) que puede usarse para generar dinámicamente el código de lenguaje de creación que describe una página web para ser visualizada en un cliente. El código HTML para la página web es pasado entonces a través del canal de HTTP 118 para la comunicación al cliente 100 en una respuesta HTTP 112.
Durante su procesamiento, un manejador 120 también puede acceder a bibliotecas de código de terceras partes o predesarrollado para simplificar el esfuerzo de desarrollo. Una biblioteca tal es una biblioteca de control de clases del lado del servidor 126, desde la cual el manejador 120 puede instanciar objetos de control del lado del servidor para procesar elementos de la interfaz de usuario y generar los datos HTML resultantes para la visualización de una página web. En una forma de realización de la presente invención, uno o más objetos de control del lado del servidor mapean a uno o más elementos de la interfaz de usuario, visibles u ocultos, en la página web descrita en el recurso de contenido dinámico 124.
Una segunda biblioteca, por el contrario, es una biblioteca de clases de control del lado del cliente 128, tal como una biblioteca que incluya componentes "ACTIVEX" de Microsoft Corporation. Un control "ACTIVEX" es un objeto COM ("Component Object Model") que sigue ciertos estándares en cómo interactúa con su cliente y otros componentes. Un control "ACTIVEX" del lado del cliente, por ejemplo, es un componente basado en COM que puede ser descargado automáticamente a un cliente y ejecutado por un navegador web en el cliente. Los componentes ACTIVEX del lado del servidor (no mostrados) son componentes basados en COM que pueden ser implementados en un servidor para realizar una variedad de funciones del lado del servidor, tales como la provisión de la funcionalidad del lado del servidor de una aplicación de búsqueda de precio de productos o componente de base de datos. Se puede encontrar una discusión más detallada de ACTIVEX en "Understanding ACTIVEX and OLE", David Chappell, Microsoft Press, 1996.
A diferencia de los controles "ACTIVEX", un objeto de control del lado del servidor en una forma de realización de la presente invención, siendo especificado en un recurso de contenido dinámico 124, se corresponde lógicamente con un elemento de la interfaz de usuario que es visualizado en el cliente. El objeto de control del lado del servidor también puede generar código HTML válido que puede incluir, por ejemplo, una marca HTML y un localizador que haga referencia a un control "ACTIVEX" del lado del cliente dado. Si el navegador ya tiene el código para el control "ACTIVEX" del lado del cliente dentro de su sistema de almacenamiento, el navegador ejecuta el control "ACTIVEX" dentro de la página web en el cliente. De lo contrario, el navegador descarga el código para el control "ACTIVEX" del recurso especificado por el localizador y entonces ejecuta el control "ACTIVEX" dentro de la página web en el cliente. Un objeto de control del lado del servidor en una forma de realización de la presente invención también puede levantar eventos a un objeto "ACTIVEX" del lado del servidor usado para implementar una aplicación de búsqueda de productos en el servidor.
Un manejador 120 también tiene acceso a uno o más componentes del servidor de la interfaz de no usuario 130 que ejecutan en el servidor web 116 o en otro servidor web accesible. Se puede hacer referencia a un componente del servidor de la interfaz de no usuario 130, tal como una aplicación de búsqueda del precio de productos o componente de base de datos, en o asociado a un recurso de contenido dinámico 124 que es procesado por un manejador 120. Los eventos del lado del servidor levantados por los objetos de control declarados en el recurso de contenido dinámico 124 pueden ser procesados por el código del lado del servidor, el cual llama a métodos apropiados en el componente del servidor de la interfaz de no usuario 130. Como resultado, el procesamiento previsto por los objetos de control del lado del servidor simplifica la programación del componente del servidor de la interfaz de no usuario 130 mediante el encapsulamiento del procesamiento y la generación de los elementos de la interfaz de usuario de una página web, lo cual permite al desarrollador del componente del servidor de la interfaz de no usuario 130 concentrarse en la funcionalidad específica de la aplicación, más que en cuestiones de la interfaz de usuario.
La figura 2 ilustra un diagrama de flujo de operaciones para procesar y generar elementos de la interfaz de usuario del lado del cliente usando objetos de control del lado del servidor en una forma de realización de la presente invención. En la operación 200, el cliente transmite una petición HTTP al servidor. La petición HTTP incluye un URL que especifica un recurso, tal como un recurso ASP+. En la operación 202, el servidor recibe la petición HTTP e invoca el manejador apropiado para procesar el recurso especifico. El recurso ASP+ es leído en la operación 203. La operación 204 genera una jerarquía de los objetos de control del lado del servidor basada en los contenidos del recurso de contenido dinámico especifico (por ejemplo, el recurso ASP+).
En la operación 206, los objetos de control del lado del servidor de la jerarquía de objetos de control llevan a cabo una o más de las siguientes operaciones: el manejo de eventos postback, el manejo de datos postback, la gestión del estado, y el enlace de datos. Los eventos y datos postback (en conjunto "entrada de postback") de los elementos de interfaz de usuario están comunicados desde el cliente al servidor para el procesamiento. Un evento postback, por ejemplo, puede incluir sin limitación un evento de "clic de ratón" desde un elemento de botón del lado del cliente o un evento de "cambio de datos" desde un elemento de cuadro de texto del lado del cliente que está comunicado con el servidor. Los datos postback, por ejemplo, pueden incluir sin limitación texto introducido por un usuario en un elemento de cuadro de texto o un índice de un elemento seleccionado de un cuadro desplegable. Una operación postback, no obstante, puede resultar de otros eventos, y no simplemente de la interacción del usuario.
En la operación 208, se llama a cada objeto de control del lado del servidor en la jerarquía para generar (o renderizar) datos, tales como código HTML, para la visualización de elementos de la interfaz de usuario del lado del cliente en la página web. Observe que, aunque el término "renderizar" puede ser usado para describir la operación de visualizar gráficos en una interfaz de usuario, el término "renderizar" también es usado aquí para describir la operación de generar datos de lenguaje de creación que pueden ser interpretados por la aplicación del cliente, tal como un navegador, para la visualización y la funcionalidad del lado del cliente. Se proporciona una discusión más detallada de la operación de procesamiento 206 y la operación de renderización 208 en relación con la figura 6. En una forma de realización, las llamadas a métodos de renderización () en objetos de control individuales son realizadas usando una secuencia de recorrido de árbol. Eso es, una llamada al método de renderización () de un objeto de página resulta en un recorrido recursivo a través de objetos de control del lado del servidor apropiados en la jerarquía. También se pueden emplear métodos alternativos para llamar a los métodos de renderización () para objetos de control apropiados, incluidos una señalización de eventos o enfoque de registro de objetos. Los paréntesis designan la etiqueta "render ()" como indicador de un método, comparada con un valor de datos.
En una forma de realización de la presente invención, la creación real de los objetos de control del lado del servidor individuales puede ser diferida hasta que se acceda al objeto de control del lado del servidor (tal como cuando se maneja entrada de postback, se carga un estado, se renderiza código HTML a partir del objeto de control, etc.) en las operaciones 206 ó 208. Si nunca se accede a un objeto de control del lado del servidor para una petición dada, la creación de objetos de control deferida optimiza el procesamiento del servidor mediante la eliminación de una operación de creación de objetos innecesaria.
La operación 210 transmite el código HTML al cliente en una respuesta HTTP. En la operación 214, el cliente recibe el código HTML asociado a una nueva página web para ser visualizada. En la operación 216, el sistema del cliente incorpora (por ejemplo, dispositivos visualizadores) los elementos de la interfaz de usuario de la nueva página de acuerdo con el código HTML recibido a partir de la respuesta HTTP. Debería entenderse, no obstante, que la incorporación de un elemento de interfaz de usuario puede incluir operaciones que no sean de visualización, tales como la provisión de salida táctil o audio, la lectura y escritura a la memoria, el control de la operación de scripts, etc. En la operación 212, se termina la jerarquía de objetos de control del lado del servidor. En una forma de realización de la presente invención, los objetos de control del lado del servidor en la jerarquía son creados en respuesta a una petición HTTP que haga referencia a un recurso ASP+ asociado, y destruidos después de la renderización de datos de lenguaje de creación (por ejemplo, datos HTML). En una forma de realización alternativa, la operación 212 puede ser realizada después de la operación 208 y antes de la operación 210.
La figura 3 ilustra un ejemplo de módulos en un servidor de web usados en una forma de realización de la presente invención. El servidor web 300 recibe una petición HTTP 302 en el canal de HTTP 304. El canal de HTTP 304 puede incluir diversos módulos, tales como módulos para el registro de estadísticas de página web, la autenticación del usuario, y el caché de salida de páginas web. Cada petición HTTP entrante 302 recibida por el servidor web 300 es procesada en último lugar por una instancia específica de una clase de IHTTPHandler (mostrado como manejador 306). El manejador 306 resuelve la petición de URL e invoca una fábrica de manejadores apropiada (por ejemplo, un módulo de fábrica de páginas 308).
En la figura 3, un módulo de la fábrica del página 308 en relación con el ASP+ recurso 310 es invocado para manejar la instanciación y configuración del ASP+ recurso 310. En una forma de realización, un recurso ASP+ puede ser identificado mediante la designación de un sufijo particular (o una extensión de archivo tal como ".aspx") con el recurso. Cuando una petición para un recurso ASP+ dado es recibido en primer lugar por el módulo de fábrica de páginas 308, el módulo de fábrica de páginas busca el sistema de ficheros para el fichero apropiado (por ejemplo, el fichero .aspx 310). El fichero puede contener texto (por ejemplo, datos de lenguaje de creación) u otro formato de datos (por ejemplo, datos en código byte o datos codificados) que el servidor puede interpretar o al que puede acceder más tarde para atender la petición. Si el archivo físico existe, el módulo de fábrica de páginas 308 abre el archivo y lee el archivo a la memoria. Si no se puede encontrar el archivo, el módulo de fábrica de páginas 308 devuelve un mensaje de error apropiado "fichero no encontrado".
Después de leer el recurso ASP+ 310 a la memoria, el módulo de fábrica de páginas 308 procesa el contenido del fichero para construir un modelo de datos de la página (por ejemplo, listas de bloques de script, directivas, zonas de texto estático, objetos de control jerárquicos del lado del servidor, propiedades de control del lado del servidor, etc.). El modelo de datos es usado para generar un recurso que liste una nueva clase de objetos, tal como una clase COM+ ("Component Object Model+"), que extiende la clase base de páginas. La clase base de páginas incluye el código que define la estructura, propiedades, y la funcionalidad de un objeto de página básico. En una forma de realización de la presente invención, el recurso que lista es entonces compilado de manera dinámica a un lenguaje intermedio y, más tarde, justo a tiempo, compilado a las instrucciones nativas de plataforma (por ejemplo, X86, Alpha, etc.). Un lenguaje intermedio puede incluir código de lenguaje general o realizado según la costumbre, tal como un código COM+ IL, códigos byte Java, código Modula 3, código SmallTalk, y código Visual Code. En una forma de realización alternativa, se pueden omitir las operaciones de lenguaje intermedias, de forma que las instrucciones nativas son generadas directamente a partir del recurso que lista o el fichero del recurso (por ejemplo, el recurso ASP+ 310). Se puede acceder a una biblioteca de clases de control 312 mediante el módulo de fábrica de páginas 308 para obtener clases predefinidas de control del lado del servidor usadas en la generación de la jerarquía de objetos de control.
El módulo de fábrica de páginas 308 produce un objeto de página 314, el cual es un objeto de control del lado del servidor que se corresponde con la página web 104 de la figura 1. El objeto de página 314 y sus hijos (es decir, un objeto de cuadro de texto 318, un objeto de botón 320, y otro objeto de botón 322) comprenden un ejemplo de jerarquía de objetos de control 316. También se considera de conformidad con la presente invención otro ejemplo de objetos de control, incluidos sin limitación objetos correspondientes a los controles HTML de la tabla 1, así como objetos de control habituales. El objeto de página 314 se corresponde con la página web 104 de la figura 1. El objeto de cuadro de texto 318 se corresponde con el cuadro de texto 106 de la figura 1. Asimismo, el objeto de botón 320 se corresponde con el botón de adición 108 de la figura 1, y el objeto de botón 322 se corresponde con el botón de borrado 110 de la figura 1. El objeto de página 314 está relacionado jerárquicamente con otros objetos de control en el servidor. En una forma de realización, un objeto de página es un objeto de contenedor que contiene jerárquicamente sus objetos de control hijo. En una forma de realización alternativa, se pueden emplear otras formas de relación jerárquica, incluida una relación de dependencia. En una jerarquía de objetos de control más compleja con múltiples niveles de hijos, un objeto hijo puede ser un objeto de contenedor para otros objetos hijo.
En la forma de realización ilustrada, los objetos de control en la jerarquía de objetos de control 316 son creados y ejecutados en el servidor 300, y cada objeto de control del lado del servidor se corresponde de forma lógica con un elemento de la interfaz de usuario correspondiente del cliente. Los objetos de control del lado del servidor también cooperan para manejar la entrada de postback a partir de la petición HTTP 302, para gestionar los estados de objetos de control del lado del servidor, para realizar el enlace de datos con bases de datos del lado del servidor, y para generar datos de lenguaje de creación (por ejemplo, código HTML) usados para visualizar una página web resultante en el cliente. Los datos de lenguaje de creación resultantes son generados (por ejemplo, renderizados) a partir de la jerarquía de objetos de control del lado del servidor 316 y transmitidos al cliente en una respuesta HTTP 324. Por ejemplo, el código HTML resultante puede plasmar cualquier construcción HTML válida y puede hacer referencia a controles tipo ACTIVEX, miniaplicaciones JAVA, scripts, y otros recursos web cualesquiera que den como resultado elementos de la interfaz de usuario del lado del cliente (por ejemplo, botones de control, cuadros de texto, etc.) cuando son procesados por un navegador.
En virtud de declaraciones hechas en el recurso ASP+ 310, los objetos de control del lado del servidor también pueden acceder a uno o más componentes del servidor de la interfaz de no usuario 330 para proporcionar interacción entre el componente del servidor de interfaz de no usuario 330 y elementos de la interfaz de usuario del lado del cliente. Por ejemplo, en respuesta a la entrada de postback, los objetos de control del lado del servidor pueden levantar eventos del lado del servidor a los componentes del servidor de la interfaz de no usuario registrados para esos eventos. De este modo, el componente del servidor de la interfaz de no usuario 330 puede interactuar con el usuario a través de elementos de la interfaz del usuario sin programar el código requerido para visualizar y procesar estos elementos.
La figura 4 ilustra contenidos de un ejemplo de recurso de contenido dinámico en una forma de realización de la presente invención. En la forma de realización ilustrada, el fichero 400 contiene declaraciones en texto plano en un ejemplo de formato del recurso de contenido dinámico (por ejemplo, ASP+). Cada declaración proporciona instrucciones a un compilador de páginas que lee el fichero 400, crea e invoca los objetos de control del lado del servidor apropiados para procesar el elemento de la interfaz de usuario del lado del cliente y, en último lugar, combina el código HTML renderizado para la transmisión al cliente en una respuesta HTTP. Como tal, una declaración describe o hace referencia a la funcionalidad de un elemento de la interfaz de usuario del lado del cliente, el cual es implementado por un objeto de control del lado del servidor. El objeto de control del lado del servidor genera entonces el código HTML usado para definir una nueva versión de la página web en el cliente.
La primera línea del fichero 400 incluye una directiva en el formato:
<%@directive{attribute=value}%>
donde la directiva puede incluir sin limitación "page", "cache", o "import". Las directivas son usadas por el compilador de páginas cuando se procesa un recurso de contenido dinámico para determinar tales características como semánticas de búfer, requisitos del estado de la sesión, esquemas de manejo de error, lenguajes de script, semánticas de transacción, y direcciones de importación. Las directivas puede estar situadas en cualquier lugar dentro de un fichero de páginas.
En la segunda línea, <html> es una etiqueta de inicio HTML estándar, la cual es pasada a través al código HTML resultante como un literal (es decir, sin procesamiento adicional para renderizar el código HTML resultante). En HTML, la <html> indica el comienzo del fichero HTML y está emparejada con la etiqueta de cierre en la línea 21, </html>, la cual también es un literal.
Un bloque de declaraciones del código está situado en las líneas 3 a 10 del fichero 400. Por lo general, los bloques de declaraciones del código del lado del servidor definen el objeto de página y controlan variables y métodos del elemento de objeto de control que son ejecutados en el servidor. En el formato:
<script runat="server"[lanquage="language"][src="extemalfile"]>
.........................
</script>
donde el lenguaje y los parámetros src son opcionales. En una forma de realización de la presente invención, los bloques de declaraciones del código son definidos usando etiquetas <script> que contienen un atributo "runat" con un valor fijado en "server". De manera opcional, se puede usar un atributo "language" para especificar la sintaxis del código interno. El lenguaje por defecto puede representar la configuración del lenguaje de la página total; no obstante, el atributo "language" en el bloque de declaración del código permite a un desarrollador usar diferentes lenguajes dentro de la misma implementación de página web incluidos, por ejemplo, Jscript y PERL (lenguaje práctico de extracción e informe). De manera opcional, la etiqueta <script> también puede especificar un fichero "src", el cual es un fichero externo a partir del cual se inserta el código en el recurso de contenido dinámico para el procesamiento mediante el compilador de páginas. Debería entenderse que la sintaxis expuesta se usa en una forma de realización, no obstante,
las formas de realización alternativas pueden emplear sintaxis diferentes dentro del ámbito de la presente invención.
En la figura 4, están declaradas dos subrutinas en formato Visual Basic dentro del bloque de declaraciones del código: AddButton_Click y DeleteButton_Click. Las dos subrutinas toman dos parámetros de entrada, "Source" y "E", y son ejecutadas en el servidor en respuesta a la petición HTTP cuando un evento de clic del lado del cliente es detectado en el botón correspondiente. En la subrutina AddButton_Click, el texto en un cuadro de texto UserName está concatenado sobre la palabra "Add" y cargado en el elemento de datos Text de Message. En la subrutina DeleteButton_Click, el texto en el cuadro de texto UserName está concatenado sobre la palabra "Delete" y cargado en el elemento de datos Text de Message. En la subrutina DeleteButton_Click, el texto en el cuadro de texto UserName está concatenado sobre la palabra "Delete" y cargado en el elemento de datos Text de Message. Aunque no mostrados en la figura 4, las variables del elemento de objetos de control del lado del servidor pueden estar declaradas en el bloque de declaraciones de código del fichero 400. Por ejemplo, usando una sintaxis Visual Basic, el espacio de la palabra clave "DIM" declara una variable de datos de un objeto de control del lado del servidor.
Un "bloque de renderización de código" (no mostrado) también puede ser incluido en un recurso de contenido dinámico. En una forma de realización de la presente invención, un bloque de renderización de código ejecuta en un única método "de renderización" que ejecuta en el tiempo de renderización de página. Un bloque de renderización de código satisface el siguiente formato (aunque se contemplan otros formatos en formas de realización alterna-
tivas):
<%InlineCode%>
donde InlineCode incluye bloques de código completos e independientes o bloques de flujo de control que ejecutan en el servidor en el tiempo de renderización de página.
Las expresiones Inline también pueden ser usadas dentro de un bloque de renderización de código, usando la sintaxis del ejemplo:
<%=InlineExpression%>
donde la expresión contenida en un bloque InlineExpression está comprendida en último lugar por una llamada a "Response.Write (InlineExpression)" en un objeto de página, la cual escribe el valor resultante de InlineExpression en un retenedor de lugar apropiado en la declaración. Por ejemplo, InlineExpressions puede estar incluido en un bloque de renderización de código como sigue a continuación:
<font size="<%=x%>">Hola<%=Name%>, usted tiene <%=Age%>!<font>
lo cual produce un saludo y una afirmación sobre la edad de una persona en una fuente almacenada en el valor "x". El nombre y edad de la persona están definidos como secuencias en un bloque de declaración de código (no mostrado). El código HTML resultante es renderizado en el servidor para la transmisión al cliente en la respuesta HTTP para incluir los valores de las InlineExpressions en lugares apropiados:
<font size="12">Hola Bob, ¡tiene 35 años!
En la línea 11 del fichero 400, <body> es una etiqueta HTML estándar para definir el comienzo del cuerpo del documento HTML. En la línea 20 del fichero 400, también se muestra la etiqueta de cierre </body>. Tanto la <body> como </body> son literales en una forma de realización de la presente invención.
Dentro de la sección del cuerpo del fichero HTML 400, en la línea 12, la etiqueta de inicio, <form>, de un bloque de forma HTML se encuentra en la figura 4. La etiqueta de fin, </foral>, del bloque de forma se encuentra en la línea 19 del fichero HTML 400. También se puede incluir un parámetro adicional "id" en la etiqueta de control HTML,<form>, para asociar un identificador dado con el bloque de forma, permitiendo de esta forma que se incluyan múltiples bloques de forma en un único fichero HTML.
En la línea 18 del fichero 400 se declara una etiqueta del lado del servidor, identificada mediante "Message". La etiqueta "Message" es usada en el código declarado en las líneas 5 y 8 del fichero 400 para visualizar una etiqueta en la página web.
Dentro de un bloque de forma, se muestran tres ejemplos de etiquetas de control HTML, correspondientes a los elementos de interfaz de usuario 106, 108, y 110 de la figura 1. El primer elemento de interfaz de usuario es declarado en la línea 13 del fichero 400 correspondiente a un cuadro de texto. El literal del texto "User Name:" declara una etiqueta posicionada a la izquierda del cuadro de texto. La etiqueta de entrada con type="Text" declara un objeto de control del lado del servidor del cuadro de texto con un id igual a "UserName" como un objeto de control del lado del servidor que renderiza un elemento de la interfaz de usuario del lado del cliente del cuadro de texto. Las líneas 15 y 16 del fichero 400 declaran los elementos de la interfaz de usuario del lado del cliente mostrados como los botones 108 y 110 de la figura 1, respectivamente. Observe que el parámetro "OnServerClick" especifica la subrutina apropiada declarada en el bloque de declaraciones de código del fichero 400. Como tales, los objetos de control de botón del lado del servidor generados en respuesta a las declaraciones del fichero 400 renderizan el código HTML para los botones del lado del cliente y un código del lado del servidor asociado para implementar los eventos de clic de
botón.
El cuadro de texto y botones declarados en el fichero 400 son ejemplos de declaraciones de control de servidor HTML. Por defecto, todas las etiquetas HTML dentro del recurso ASP+ son tratadas como contenido de texto literal y son inaccesibles programáticamente para los desarrolladores de páginas. No obstante, los creadores de páginas pueden indicar que una etiqueta HTML debería ser analizada y tratada como una declaración de control de servidor inaccesible marcándola con un atributo "runat" con un valor fijado en "server". Cada objeto de control del lado del servidor puede ser asociado opcionalmente con un atributo "id" único para posibilitar la referencia programática del objeto de control correspondiente. Los argumentos de propiedad y enlaces de eventos sobre objetos de control del lado del servidor también pueden ser especificados usando pares de atributos declarativos name/value sobre el elemento de etiqueta (por ejemplo, el par OnServerClick igual a "MyButton_Click").
\newpage
En una forma de realización de la presente invención, una sintaxis general para declarar objetos de control HTML es como sigue a continuación:
<HTMLTag id=”Optional Name” runat=server>
.........................
</HTMLTag>
donde el OptionalName es un identificador único para el objeto de control del lado del servidor. En la Tabla 1 se ilustra una lista de etiquetas HTML soportadas actualmente y la sintaxis asociada y la clase COM+, aunque otras etiquetas HTML se consideran dentro del ámbito de la presente invención.
TABLA 1
1
2
Además de las etiquetas de control HTML estándar, una forma de realización de la presente invención permite a los desarrolladores crear componentes reutilizables que encapsulan la funcionalidad programática común fuera del conjunto de etiquetas HTML estándar. Estos objetos de control del lado del servidor habituales son especificados usando etiquetas declarativas dentro del fichero de páginas. Las declaraciones de objeto de control del lado del servidor habituales incluyen un atributo "runat" con un valor fijado en "server". De manera opcional, el atributo único "id" puede ser especificado para permitir la referencia programática del objeto de control habitual. Asimismo, los pares de atributos declarativos name/value sobre un elemento de etiqueta especifican argumentos de propiedad y enlaces de eventos sobre un objeto de control del lado del servidor. También se pueden enlazar parámetros modelo en línea a un objeto de control del lado del servidor mediante la provisión de un elemento hijo del prefijo "template" apropiado al objeto de control del servidor padre. Un formato para una declaración de objeto de control del lado del servidor habitual es:
<servercntrlclassname id="OptionalName"[propertyname="propval"]runat=server/>
donde servercntrlclassname es un nombre de una clase de control de servidor accesible, OptionalName es un identificador único del objeto de control del lado del servidor, y propval representa un valor de propiedad opcional en el objeto de control.
A través del uso de una sintaxis de declaración alternativa, se pueden usar prefijos de etiqueta XML para proporcionar una notación más precisa para especificar objetos de control del lado del servidor dentro de una página, usando el siguiente formato:
<tagprefix:calssname id = "OptionalName" runat = server/>
donde tagprefix está asociado a una biblioteca de espacio de nombres de control dada y classname representa un nombre de un control en la biblioteca de espacio de nombres asociados. También se soporta un propertyvalue opcional.
En resumen, una forma de realización de la presente invención incluye objetos de control del lado del servidor que son creados y ejecutados en el servidor para generar código HTML que es enviado a un cliente. El código HTML puede representar cualquier construcción HTML válida y puede, por ejemplo, hacer referencia a controles tipo ACTIVEX, miniaplicaciones JAVA, scripts, y cualesquiera otros recursos web para producir botones de la interfaz de usuario y otros elementos de la interfaz en el cliente. Un usuario en el cliente puede interactuar con estos elementos de la interfaz de usuario, los cuales se corresponden de manera lógica con los objetos de control del lado del servidor, y envían una petición de vuelta al servidor. Los objetos de control del lado del servidor son recreados en el servidor para procesar los datos, eventos, y otras características de los elementos de la interfaz de usuario para generar la siguiente ronda de código HTLM que ha de transmitirse en una respuesta al cliente.
Haciendo referencia a la figura 5, un ejemplo de sistema informático para formas de realización de la invención incluye un dispositivo informático de aplicaciones generales en la forma de un sistema informático 500, incluida una unidad procesadora 502, una memoria del sistema 504, y un bus del sistema 506 que une diversos componentes del sistema incluida la memoria del sistema 504 a la unidad procesadora 500. El bus del sistema 506 puede ser cualquiera de distintos tipos de estructuras de bus incluido un bus de memoria o controlador de memoria, un bus periférico y un bus local usando cualquiera de una variedad de arquitecturas de bus. La memoria del sistema incluye memoria de sólo lectura (ROM) 508 y memoria de acceso aleatorio (RAM) 510. Un sistema básico de entrada/salida 512 (BIOS), el cual contiene rutinas básicas que ayudan a transferir información entre elementos dentro del sistema informático 500, es almacenado en la ROM 508.
El sistema informático 500 incluye además una unidad de disco duro 512 para leer desde ella y escribir a un disco duro, una unidad de disco magnético 514 para leer desde ella o escribir a un disco magnético extraíble 516, y una unidad de disco óptico 518 para leer desde ella o escribir a un disco óptico extraíble 519 tal como un CD ROM, DVD, u otros medios ópticos. La unidad de disco duro 512, la unidad de disco magnético 514, y la unidad de disco óptico 518 son conectadas al bus del sistema 506 mediante una interfaz de la unidad de disco duro 520, una interfaz de la unidad de disco magnético 522, y una interfaz de la unidad óptica 524, respectivamente. Las unidades y sus medios asociados legibles por ordenador proporcionan almacenamiento no volátil de instrucciones legibles por ordenador, estructuras de datos, programas, y otros datos para la sistema informático 500.
Aunque el entorno del ejemplo descrito aquí emplea un disco duro, un disco magnético extraíble 516, y un disco óptico extraíble 519, se pueden usar otros tipos de medios legibles por ordenador que pueden almacenar datos en el sistema del ejemplo. Ejemplos de estos otros tipos de medios legibles por ordenador que pueden ser usados en el ejemplo de entorno operativo incluyen cintas magnéticas, tarjetas de memoria flash, discos digitales de video, cartuchos Bernoulli, memorias de acceso aleatorio (RAMs), y memorias de sólo lectura (ROMs).
Un número de módulos de programa puede ser almacenado en el disco duro, el disco magnético 516, el disco óptico 519, la ROM 508 o la RAM 510, incluido un sistema operativo 526, uno o más programas de aplicación 528, otros módulos de programa 530, y datos del programa 532. Un usuario puede introducir órdenes e información en el sistema informático 500 a través de dispositivos de entrada tales como un teclado 534 y un ratón 536 u otro dispositivo de puntero. Ejemplos de otros dispositivos de entrada pueden incluir un micrófono, una palanca de mando, un tablero de juego, un plato parabólico, y un escáner. Éstos y otros dispositivos de entrada están conectados frecuentemente a la unidad de procesamiento 502 a través de una interfaz de puerto serie 540 que está acoplada al bus del sistema 506. No obstante, estos dispositivos de entrada también pueden estar conectados mediante otras interfaces, tales como un puerto paralelo, un puerto de juego, o un bus de serie universal (USB). Un monitor 542 u otro tipo de dispositivo de visualización también está conectado al bus del sistema 506 por medio de una interfaz, tal como un adaptador de video 544. Además del monitor 542, los sistemas informáticos incluyen normalmente otros dispositivos periféricos de salida (no mostrados), tales como altavoces e impresoras.
El sistema informático 500 puede operar en un entorno en red usando conexiones lógicas a uno o más ordenadores remotos, tales como un ordenador remoto 546. El ordenador remoto 546 puede ser un sistema informático, un servidor, un router, un ordenador personal de red, un dispositivo entre iguales u otro nodo de red común, y normalmente incluye muchos de o todos los elementos descritos arriba relativos al sistema informático 500. Las conexiones de la red incluyen una red de área local (LAN) 548 y una red de área ancha (WAN) 550. Tales entornos de trabajo en red son habituales en oficinas, redes informáticas a nivel empresarial, intranets e Internet.
Cuando se usa en un entorno de trabajo en red LAN, el sistema informático 500 está conectado a la red local 548 a través de una interfaz de red o adaptador 552. Cuando se usa en un entorno de trabajo en red WAN, el sistema informático 500 incluye normalmente un módem 554 u otros medios para establecer comunicaciones por la red de área ancha 550, tales como Internet. El módem 554, el cual puede ser interno o externo, está conectado al bus del sistema 506 por medio de la interfaz de puerto serie 540. En un entorno de red, los módulos de programa representados relativos al sistema informático 500, o partes del mismo, pueden estar almacenados en el dispositivo remoto de almacenamiento de memoria. Se considerará que las conexiones de la red mostradas son ejemplos, y que se pueden usar otros medios de establecimiento de un enlace de comunicación entre los ordenadores.
En una forma de realización de la presente invención, el ordenador 500 representa un servidor web, donde el procesador 502 ejecuta un módulo de fábrica de páginas en un recurso ASP+ almacenado en al menos uno de medios de almacenamiento 516, 512, 514, 518, 519, o la memoria 504. Las respuestas y las peticiones HTTP son comunicadas por la LAN, 548, la cual está conectada al ordenador del cliente 546.
La figura 6 ilustra un diagrama de flujo del proceso que representa el procesamiento del lado del servidor de un objeto de página y otros objetos de control en una forma de realización de la presente invención. En la operación 600, se llama a un constructor de objetos de página mediante el módulo de fábrica de páginas 308 (ver la figura 3). Como resultado, se crea un objeto de página (ver, por ejemplo, el objeto de página 314 en la figura 3) para que se corresponda de manera lógica con el elemento de interfaz de usuario de página web en el cliente. En la operación 602, el módulo de fábrica de páginas llama a la función del elemento ProcessRequest() del objeto de página, el cual inicia las operaciones por fases para el procesamiento de la petición HTTP recibida de un cliente. En una primera fase de una forma de realización de la presente invención, una operación Crear del lado del servidor (no mostrada) crea los objetos de control del lado del servidor descendiente contenidos en la jerarquía de objetos de control del objeto de página, es decir, se llama a los constructores para objetos de control hijo de manera recurrente para crear los objetos de control durante la duración del procesamiento de la petición HTTP.
En una forma de realización alternativa, no obstante, la creación de objetos de control hijo es deferida hasta que el objeto de control es requerido para un paso de procesamiento dado (por ejemplo, el manejo de un evento postback, el manejo de datos postback, la carga o guardado de un estado de vista, la resolución de enlace de datos, o la renderización de código HTML para el elemento de la interfaz de usuario correspondiente). La última forma de realización, la cual se dice que implementa "la creación deferida de objetos de control", es una optimización que puede aliviar la UCP y utilización de memoria innecesarias. Por ejemplo, un evento de entrada de usuario recibido del cliente puede tener como resultado la creación de una página web completamente diferente. En este caso, no es necesario instanciar una jerarquía completa de objetos de control de la página anterior sólo para procesar un evento que tiene como resultado inmediatamente la terminación de la jerarquía de objetos de control y la instanciación de una nueva y diferente jerarquía de objetos de control para una nueva página.
En respuesta a la llamada del servidor al método ProcessRequest del objeto de página, el objeto de página y objetos de control descendientes individuales pueden ejecutar las operaciones 604 a 620, dependiendo en parte de los datos de una petición HTTP dada. En una forma de realización de la presente invención, las operaciones 604 a 620 son realizadas para cada objeto individual en el orden ilustrado en la figura 6; no obstante, una operación dada para un objeto puede producirse fuera del orden o no con respecto a una operación dada de otro objeto, dependiendo de la petición HTTP. Por ejemplo, un primer objeto puede realizar su operación Init 604 y su operación Init 606, y comenzar la operación de procesamiento de datos postback 608, antes de que un objeto de control descendiente realice su propia operación Init 604 y la operación Cargar 606 en virtud de la creación deferida de objetos de control. El orden de procesamiento de operaciones mediante el objeto de página y objetos de control descendientes depende de diversos factores, incluidos sin limitarse a los mismos la naturaleza de los datos en la petición HTTP, la configuración de la jerarquía de objetos de control, el estado actual de los objetos de control, y si la creación diferida de objetos de control está implementada.
La operación Init 604 inicializa un objeto de control después de que éste sea creado mediante la ejecución de cualquier código del lado del servidor asociado a la inicialización en el recurso de contenido dinámico. De esta forma, cada objeto de control del lado del servidor puede ser adaptado con la funcionalidad del lado del servidor específica que es declarada en el recurso de contenido dinámico. En una forma de realización de la presente invención, el código de contenido dinámico destinado a adaptar o extender las clases base de control de página como se declara mediante el desarrollador de páginas en el recurso ASP+ en el servidor. Cuando el recurso ASP+ es compilado, el código declarado es incluido en el código de inicialización apropiado (por ejemplo, los métodos Init() del objeto do página y los objetos de control descendentes). La operación Init 604 ejecuta este código para adaptar o extender la clase base de página y las clases base para objetos de control descendentes.
En una forma de realización de la presente invención, la gestión del estado de los objetos de control del lado del servidor es soportada en una operación Cargar 606 y una operación Guardar 616, las cuales usan una estructura de estado transportable para alojar el modelo sin estado para sistemas cliente-servidor mediante la restauración de objetos de control del lado del servidor para sus estados previos. En una forma de realización, el estado es comunicado a y desde servidor en un o más campos HTML ocultos de un par petición/respuesta HTTP, aunque otras estructuras de estado transportables se consideran dentro del ámbito de la presente invención.
En una secuencia dada de peticiones y respuestas relacionadas con la página actual entre un cliente y un servidor, los estados de uno o más objetos de control son registrados en una estructura de estado transportable por la operación Guardar 616 después del procesamiento de una petición previa. En una forma de realización de la presente invención, también se incluye información adicional del estado en la estructura de estado transportable, incluida información jerárquica o identificadores de objetos de control para permitir al servidor asociarse a un estado dado con el objeto de control apropiado. En una petición HTTP posterior, la información del estado es devuelta al servidor en la estructura de estado transportable. El servidor extrae la información del estado de la estructura de estado transportable recibida y carga los datos del estado en los objetos de control apropiados dentro de la jerarquía de objetos de control para restaurar cada objeto de control a su estado como existía antes de una respuesta HTTP previa. Después de que la petición actual sea procesada, los estados de uno o más objetos de control del lado del servidor son registrados otra vez en la estructura de estado transportable por la operación Guardar 616, y la estructura de estado transportable es devuelta al cliente en la siguiente respuesta HTTP.
Como resultado de la operación Cargar 606, cada objeto de control del lado del servidor es colocado en un estado concordante con su estado antes de una respuesta HTTP anterior. Por ejemplo, si un objeto de control de cuadro de texto incluye un valor de propiedad igual a "JDoe" antes de una respuesta HTTP anterior, la operación Cargar 606 restaura el mismo objeto de control a su estado anterior, en parte cargando la secuencia de texto "JDoe" en el valor de propiedad. Además, si el estado de un objeto dado es almacenado y restaurado es configurable.
Resumiendo una forma de realización de la presente invención, el estado de uno o más objetos de control del lado del servidor es "guardado" después del procesamiento. La información del estado guardada es transmitida al cliente en una respuesta. El cliente devuelve la información del estado guardada al servidor en una respuesta siguiente. El servidor carga la información del estado en una jerarquía de objetos de control del lado del servidor recién instanciados, tales que el estado de la jerarquía es restaurado a su estado previo.
Una forma de realización alternativa puede mantener la información del estado en el servidor o en alguna otra ubicación web accesible por el servidor durante el viaje de ida y vuelta del servidor al cliente, y luego de vuelta al servidor. Después de que la petición del cliente sea recibida por el servidor, esta información del estado puede ser recuperada por el servidor y cargada en el/los objeto(s) de control del lado del servidor apropiado(s) en la jerarquía de objetos de control.
En la operación 608, se procesan datos postback recibidos de la petición HTTP. Se pueden incluir datos postback en la carga útil de la petición HTTP en pares de valores de tecla, en una representación jerárquica (por ejemplo, XML), o en otras representaciones de datos, tales como RDF ("Marco de Descripción de Recursos"). La operación 608 analiza la carga útil para identificar un identificador único de un objeto de control del lado del servidor. Si se encuentra el identificador (por ejemplo "page1:text1") y el objeto de control del lado del servidor identificado existe en la jerarquía de objetos de control, los datos postback correspondientes son pasados al objeto de control. Por ejemplo, haciendo referencia a la figura 1, un identificador único asociado con el cuadro de texto 106 y el texto "JDoe" son comunicados en la carga útil de la petición HTTP 114 al servidor web 116. La operación 608 analiza la carga útil de la petición HTTP y obtiene el identificador único del cuadro de texto 106 y su valor asociado (es decir, "JDoe"). La operación 608 resuelve entonces el identificador único del cuadro de texto 106 para identificar el objeto de control del lado del servidor correspondiente y pasa el valor "JDoe" al objeto objetivo para el procesamiento.
Como se ha discutido con respecto a la operación Cargar 606, los valores de propiedad de objetos de control del lado del servidor pueden ser restaurados a sus estados previos. En respuesta a la recepción de datos postback, el objeto de control del lado del servidor determina si el valor del postback pasado causa un cambio a partir del valor anterior de la propiedad correspondiente. Si es así, el cambio es registrado en una lista de cambios para indicar un cambio de datos para el objeto de control asociado. Después de que todos los datos postback hayan sido procesados dentro de la jerarquía de objetos de control, se puede hacer una llamada a un método de objetos de control para levantar uno o más eventos cambiados de datos postback a uno o más componentes del servidor de la interfaz de no usuario, tales como una aplicación de búsqueda de precios de productos que se ejecuta en el servidor. Un ejemplo de un evento cambiado de datos postback es un evento que indique que esos datos postback han causado que cambie una propiedad de un objeto de control del lado del servidor. En un ejemplo de forma de realización, un evento de tales características puede ser enviado a una cola de eventos provista por el sistema, para que el código del lado del servidor, el cual puede ser registrado para procesar el evento, pueda ser invocado. El código del lado del servidor puede llamar entonces a un método del componente del servidor de la interfaz de no usuario. De esta forma, un componente del servidor de la interfaz de no usuario del lado del servidor puede responder a eventos activados por un cambio en los datos de un objeto de control del lado del servidor. También se consideran dentro del ámbito de la presente invención métodos alternativos de implementación de eventos, incluidos el uso de colas de eventos provistas por la aplicación, sondeo, e interrupciones del procesamiento.
En la operación 610, se manejan los eventos postback. Los eventos postback pueden ser comunicados en la carga útil de la petición HTTP. La operación 610 analiza un objetivo de evento especificado (por ejemplo, "_EVENTTARGET" etiquetado en una forma de realización de la presente invención) que identifica el objeto de control del lado del servidor al cual se dirige el evento. Asimismo, la operación 610 analiza los argumentos del evento localizados, si los hubiera, y proporciona el argumento del evento (por ejemplo, "_EVENTARGUMENT" etiquetado en una forma de realización de la presente invención) al objeto de control del lado del servidor especificado. El objeto de control levanta sus eventos para el procesamiento mediante el código del lado del servidor, el cual llama a un método de un componente del servidor de la interfaz de no usuario (por ejemplo, una aplicación de búsqueda de precios de productos del lado del servidor) asociado al recurso de contenido dinámico.
La operación 612 resuelve las relaciones de enlace de datos entre los objetos de control del lado del servidor y una o más bases de datos accesibles por el servidor, actualizando de este modo en las propiedades de los objetos de control con los valores de las bases de datos y/o actualizando los campos de las bases de datos con los valores de las propiedades de los objetos de control. En una forma de realización de la presente invención, se pueden asociar (o enlazar a los datos) las propiedades de los objetos de control del lado del servidor a propiedades de un contenedor de enlace de datos padre, tales como una tabla en una base de datos de la aplicación del lado del servidor. Durante la operación de enlace de datos 612, la estructura de la página puede actualizar una propiedad de objetos de control enlazada a datos con el valor de la propiedad del contenedor de enlace de datos padre correspondiente. De esta forma, los elementos de la interfaz de usuario en la página web de la siguiente respuesta reflejan con exactitud valores de las propiedades actualizados, puesto que las propiedades de objetos de control a las cuales corresponden los elementos de la interfaz de usuario han sido actualizadas automáticamente durante la operación de enlace de datos 612. Asimismo, las propiedades de los objetos de control también pueden ser actualizadas a los campos del contenedor de enlace de datos padre, actualizando de esta forma una base de datos de la aplicación del lado del servidor con entrada de postback de un objeto de control del lado del servidor.
La operación 614 realiza diversas operaciones de actualización que pueden ser ejecutadas antes de que se guarde el estado del objeto de control y se renderice la salida. La operación 616 solicita información del estado (es decir, estado de la vista) de uno o más objetos de control en la jerarquía de objetos de control y almacena la información del estado para la inserción en una estructura del estado transportable que está comunicada con el cliente en la carga útil de la respuesta HTTP. Por ejemplo, un objeto de control de "retícula" puede guardar una página de índice actual de una lista de valores, de manera que el objeto de control de "retícula" pueda ser restaurado a su estado después de una petición HTTP posterior (es decir, en la operación 606). Como se describe arriba, la información del estado de la vista representa el estado de la jerarquía de objetos de control antes de cualquier acción posterior del cliente. Cuando la información del estado de la vista es devuelta, será usada para colocar la jerarquía de objetos de control en ese estado anterior antes del procesamiento de cualquier entrada de postback del cliente o enlace de datos.
La operación de renderización 618 genera la salida de lenguaje de creación apropiada (por ejemplo, datos HTML) para la comunicación al cliente en una respuesta HTTP. La renderización se efectúa a través de un recorrido de árbol jerárquico descendente de todos los objetos de control del lado del servidor y del código de renderización empotrado. La operación 620 realiza cualquier trabajo de limpieza final (por ejemplo, el cierre de ficheros o de conexiones de bases de datos) antes de que se finalice la jerarquía de objetos de control. El procesamiento vuelve entonces a la operación 602 y procede a la operación 622 donde el objeto de página es terminado llamando a su destructor.
La figura 7 ilustra una representación de un ejemplo de clase de control del lado del servidor en una forma de realización de la presente invención. La clase de control del lado del servidor define los métodos, propiedades y eventos comunes a todos los objetos de control del lado del servidor en una forma de realización de la presente invención. Las clases de control más específicas (por ejemplo, un objeto de control de botón del lado del servidor que se corresponda con un botón del lado del cliente en una página web) derivan de la clase de control. Una clase de control 700 está ilustrada incluyendo memoria que almacena las propiedades 702 y los métodos 704. Otras formas de realización de clase de control con una combinación diferente de elementos y métodos de datos también se consideran dentro del ámbito de la presente invención.
En la forma de realización ilustrada, las propiedades 702 son públicas. La propiedad "ID" es un valor de secuencia legible y escribible que indica un identificador de objetos de control. La propiedad "Visible" es un valor boleano legible y escribible que indica si los datos del lenguaje de creación para un elemento de la interfaz de usuario del lado del cliente correspondiente debería ser renderizado. La propiedad "MaintainState" es un valor boleano legible y escribible que indica si el objeto de control debería guardar su estado de vista (y el estado de vista de sus hijos) al final de la petición de página actual (es decir, en respuesta a una operación de guardado 616 de la figura 6). La propiedad "Parent" es una referencia legible a un ControlContainer (ver la figura 8) asociado al objeto de control actual en la jerarquía de objetos de control. La propiedad "Page" es una referencia legible al objeto de página raíz en el cual está hospedado el objeto de control actual. La propiedad "Form" es una referencia legible a un objeto FormControl en el cual está hospedado el objeto de control actual. La propiedad "Trace" es una referencia legible que permite a un desarrollador escribir un registro de rastro. PropertyBindingContainer es una referencia legible al contenedor de enlace de datos inmediato del objeto de control. "Bindings" es una referencia legible a una colección de las asociaciones de enlaces de datos del objeto de control.
Los métodos 704 incluyen métodos para procesar peticiones y elementos de datos de acceso del objeto de control. En una forma de realización, se hace referencia a los métodos mediante punteros almacenados en el espacio de memoria del objeto de control. Estos medios de referencia también se emplean en formas de realización de otros objetos del lado del servidor, incluido un objeto de control del contenedor, un objeto de colección de controles, y un objeto de página. El método "Init()" es usado para inicializar objetos de control hijo después de que sean creados (ver la operación 604 de la figura 6). El método "Load()" es usado para restaurar la información del estado de vista a partir de una petición HTTP anterior (ver la operación 606 de la figura 6). El método "Save()" es usado para guardar información del estado de vista para uso con una petición HTTP posterior (ver la operación 616 de la figura 6). El método "PreRender()" es usado para realizar cualesquiera pasos de prerrenderización necesarios antes de guardar el estado de vista y renderizar el contenido (ver la operación 614 de la figura 6). El método "Render (TextWriter output)" es usado para la salida del código del lenguaje de creación para el elemento de la interfaz de usuario correspondiente al objeto de control actual (ver la operación 618 de la figura 6). El código es comunicado a través de la corriente de salida (pasado a ella en el parámetro "output") para almacenar el código en la respuesta al cliente. El método "Dispose()" es usado para realizar el trabajo de limpieza final antes de finalizar el objeto de control (ver la operación 620 de la
figura 6).
El método "GetUniqueID()" obtiene un identificador de secuencias único, calificado jerárquicamente para el objeto de control actual. El método "GetControlWithID(String id)" devuelve una referencia a un objeto de control hijo inmediato con el identificador provisto ("id"). El método "GetControlWithUniqueID(String id)" devuelve una referencia a un objeto de control hijo con un identificador jerárquico único ("id").
El método "PushControlPropertyTwoBindingContainer (String prop Name)" es usado para actualizar un contenedor de enlace para el enlace de datos de dos caminos a partir de datos postback cuando el valor de los datos postback cambia dentro del objeto de control del lado del servidor. El método "PushBindingContainerPropertyTwoControl(String prop Name)" es usado para actualizar una propiedad del objeto de control del lado del servidor con un valor del contenedor de enlace actual. El método "HasBindings()" devuelve del valor boleano indicando si un objeto de control tiene alguna asociación de enlace. Estas tres funciones son usadas para resolver relaciones de enlace entre propiedades de objetos y atributos de control del lado del servidor en memorias de datos del lado del servidor (ver la operación de enlace de datos 612 de la figura 6).
La figura 8 ilustra un ejemplo de clase de ContainerControl del lado del servidor en una forma de realización de la presente invención. La clase ContainerControl proporciona una implementación que soporta objetos de control hijo anidados, y automáticamente señaliza y deserializa información del estado de vista a la estructura del estado transportable. Una clase ContainerControl 800 incluye memoria que almacena las propiedades 802 y los métodos 804. La propiedad "Controls" es una referencia legible a una "ControlCollection" de los objetos de control hijo en la jerarquía de objetos de control. (Ver la figura 9). La propiedad "StateCollection" es una referencia legible a un diccionario de información del estado de vista usado para mantener el estado de un objeto de control a través de múltiples peticiones de página. El método "HasControls()" devuelve un valor boleano indicando si el objeto de control tiene algún objeto de control hijo.
En una forma de realización alternativa, las propiedades y métodos de los elementos de la clase ContainerControl 800 pueden ser combinados en la clase Control 700 de la figura 7, de tal forma que cada objeto de control puede en y de sí mismo soportar hijos. Si un objeto de control de una forma de realización de estas características no incluye objetos hijo, no obstante, el elemento Controls (de tipo ControlCollection) estaría vacío (es decir, no tiene objetos hijo).
La figura 9 ilustra un ejemplo de clase ControlCollection del lado del servidor en una forma de realización de la' presente invención. Una clase ControlCollection 900 incluye memoria para las propiedades 902 y los métodos de almacenaje 904. La propiedad "All" es una cadena instantánea legible y escribible de todos los objetos de control hijo del objeto de control actual, ordenado mediante un índice. La propiedad "this [index]" es una referencia legible a un objeto de control indexado con números ordinales dentro de la colección de controles. La propiedad "Count" es un valor legible que indica el número de objetos de control hijo de la colección.
El método "Add(Control child)" es usado para añadir un objeto de control especificado a la colección actual. El método "IndexOf(Control child)" devuelve el índice ordinal del objeto de control hijo especificado a la colección. El método "GetEnumerator(bool AllowRemove)" devuelve el enumerador de todos los objetos de control hijo dentro de la colección. El método "Remove(Control value)" quita el objeto de control especificado de la colección actual. El método "Remove(int index)" quita un objeto de control especificado de la colección actual basada en el índice provisto. El método "Clear()" quita todos los objetos de control de la colección actual.
La figura 10 ilustra un ejemplo de objeto de página del lado del servidor en una forma de realización de la presente invención. Un clase base de página define los métodos, las propiedades y los eventos comunes a todas las páginas manipuladas por el servidor dentro de un forma de realización de la presente invención. Un objeto de página 1000 incluye propiedades 1002 y métodos de almacenamiento de memoria 1004. La propiedad "ErrorPage" es una secuencia legible y escribible que es renderizada en el evento de una excepción de página no manejada. De esta forma, un objeto de página devuelve una página de error legible al cliente en una respuesta HTTP. La propiedad "Requests" es una referencia legible a una HTTPRequest, la cual es provista por la estructura del servidor web que proporciona la funcionalidad para acceder a los datos de petición HTTP entrantes. La propiedad "Response" es una referencia legible a una respuesta HTTP, provista por la estructura del servidor web, el cual proporciona la funcionalidad para transmitir datos de respuesta HTTP a un cliente. La propiedad "Application" es una referencia legible a una HTTPApplication, provista por la estructura del servidor web. La propiedad "Session" es una referencia legible a una HTTPSession, provista por la estructura del servidor web. La propiedad "Server" es una referencia legible a un ServerObject, la cual es un objeto de utilidad compatible con la página del servidor de la aplicación. La propiedad "Context" es una referencia legible a todos de los objetos del servidor web provistos por la estructura del servidor web, la cual permite a un desarrollador obtener acceso a objetos expuestos de módulo de canal adicionales. La propiedad "IsFirstLoad" es un valor boleano legible que indica si el objeto de página está siendo cargando y se está accediendo a él por primera vez o en respuesta a una petición postback del cliente.
El método "Load()" es usado para inicializar el objeto de página y restaurar la información del estado de vista a partir de la petición de página previa. El método "Save()" es usado para guardar la información del estado de vista para uso con una petición de página posterior. El método "HandleError(Exception errorInfo)" es usado para manejar un error no manejado producido durante una ejecución de página. En este evento, la implementación de la clase base redirige el cliente a un URL con una página web de error predeterminado. El método "GetPostbackScript(Control target, String name, String arg)" devuelve un método de script del lado del cliente asociado a un objeto de control dado. El método "RegisterClientScriptBlock(String key, String script)" es usado para eliminar bloques duplicados del código de script del lado del cliente que está siendo enviado al cliente. Los bloques duplicados son scripts con el mismo valor de tecla. El método "IHTTPHandler.ProcessRequest(HTTPContext Context)" es usado para procesar peticiones web. El IHTTPHandler.ProcessRequest es llamado para iniciar el procesamiento de una petición HTTP recibida de un cliente (ver la operación 602 de la figura 6). El método "IHTTPHandler.IsReusable()" indica si un objeto de página puede ser reutilizado para atender múltiples peticiones web.
Las formas de realización de la invención descritas aquí son implementadas como pasos lógicos en uno o más sistemas informáticos. Las operaciones lógicas de la presente invención son implementadas (1) como secuencia de pasos implementados por procesador que se ejecutan en uno o más sistemas informáticos y (2) como módulos de máquina interconectados dentro de uno o más sistemas informáticos. La implementación es una cuestión de elección, dependiente de los requisitos de funcionamiento del sistema informático que implementa la invención. De manera correspondiente, se hace referencia a las operaciones lógicas que componen las formas de realización de la invención descritas aquí de manera diversa como operaciones, pasos, objetos o módulos.
La descripción, los ejemplos y los datos de arriba proveen una descripción completa de la fabricación y el uso de la composición de la invención. Además, muchas formas de realización de la invención pueden realizarse sin partir del ámbito de la invención como se define en las reivindicaciones anexas a continuación.

Claims (8)

1. Un método para el procesamiento del lado del servidor de al menos un elemento de interfaz de usuario del lado del cliente (106, 108, 110) incorporado en una página web (104) visualizada en un cliente (100), comprendiendo el método:
lectura (203) de una declaración de un recurso (310, 400);
generación (204) de una pluralidad de objetos de control del lado del servidor existentes de manera simultánea (318, 320, 322) que se corresponden de manera lógica con el elemento de la interfaz de usuario del lado del cliente, basada en la declaración;
procesamiento (206) de eventos del elemento de la interfaz de usuario del lado del cliente usando los objetos de control del lado del servidor existentes de manera simultánea; y
generación (208) de datos de lenguaje de creación a partir de los objetos de control del lado del servidor existentes de manera simultánea para incorporar el elemento de la interfaz de usuario del lado del cliente en la página web, con posterioridad a la operación de procesamiento.
2. El método de la reivindicación 1 donde la operación de generar una pluralidad de objetos de control del lado del servidor existentes de manera simultánea comprende:
generación de un primer objeto de control del lado del servidor que se corresponde con un primer elemento de la interfaz de usuario del lado del cliente; y
generación de un segundo objeto de control del lado del servidor que se corresponde con un primer elemento de la interfaz de usuario del lado del cliente, de tal forma que el primer y el segundo objeto de control del lado del servidor existen de manera simultánea.
3. El método de las reivindicaciones 1 ó 2, donde la operación de procesamiento comprende:
levantamiento de un evento del lado del servidor asociado a un primer objeto de control del lado del servidor.
4. El método de cualquiera de las reivindicaciones 1 a 3, donde la operación de procesamiento comprende además:
manejo del evento del lado del servidor usando un segundo objeto de control del lado del servidor.
5. El método de cualquiera de las reivindicaciones 1 a 4, donde la operación de procesamiento comprende además:
manejo del evento del lado del servidor usando un componente del servidor de la interfaz de no usuario.
6. El método de cualquiera de las reivindicaciones 1 a 5, donde la operación de generar una pluralidad de objetos de control del lado del servidor existentes de manera simultánea comprende:
generación de un primer objeto de control del lado del servidor que se corresponde con un elemento de la interfaz de usuario del lado del cliente; y
generación de un segundo objeto de control del lado del servidor que se corresponde con el elemento de la interfaz de usuario del lado del cliente, de tal forma que el primer y el segundo objeto de control del lado del servidor existen de manera simultánea.
7. Una señal de datos informáticos incorporada en una onda portadora legible por un sistema informático (500) y que codifica un programa informático el cual, cuando es ejecutado en dicho sistema informático, ejecuta todos los pasos del método de la reivindicación 1.
8. Un medio de almacenamiento del programa informático (516) legible por un sistema informático (500) y que codifica un programa informático el cual, cuando es ejecutado en dicho sistema informático, realiza todos los pasos del método según la reivindicación 1.
ES01111681T 2000-05-18 2001-05-14 Objetos de control del lado del servidor para el procesamiento de elementos de la interfaz de usuario del lado del cliente. Expired - Lifetime ES2280283T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/573,769 US6961750B1 (en) 2000-05-18 2000-05-18 Server-side control objects for processing client-side user interface elements
US573769 2000-05-18

Publications (1)

Publication Number Publication Date
ES2280283T3 true ES2280283T3 (es) 2007-09-16

Family

ID=24293324

Family Applications (1)

Application Number Title Priority Date Filing Date
ES01111681T Expired - Lifetime ES2280283T3 (es) 2000-05-18 2001-05-14 Objetos de control del lado del servidor para el procesamiento de elementos de la interfaz de usuario del lado del cliente.

Country Status (7)

Country Link
US (2) US6961750B1 (es)
EP (1) EP1156415B1 (es)
JP (1) JP4015375B2 (es)
AT (1) ATE352061T1 (es)
DE (1) DE60126016T2 (es)
DK (1) DK1156415T3 (es)
ES (1) ES2280283T3 (es)

Families Citing this family (244)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7437725B1 (en) * 1999-01-04 2008-10-14 General Electric Company Processing techniques for servers handling client/server traffic and communications
WO2001057663A2 (en) * 2000-02-04 2001-08-09 America Online Incorporated Optimized delivery of web application code
US7366977B2 (en) * 2000-02-04 2008-04-29 Aol Llc A Delaware Limited Liability Company Method and systems of automated client-server data validation
US7013340B1 (en) * 2000-05-18 2006-03-14 Microsoft Corporation Postback input handling by server-side control objects
US6757900B1 (en) 2000-05-18 2004-06-29 Microsoft Corporation State management of server-side control objects
US7421645B2 (en) 2000-06-06 2008-09-02 Microsoft Corporation Method and system for providing electronic commerce actions based on semantically labeled strings
US7712024B2 (en) 2000-06-06 2010-05-04 Microsoft Corporation Application program interfaces for semantically labeling strings and providing actions based on semantically labeled strings
US7788602B2 (en) * 2000-06-06 2010-08-31 Microsoft Corporation Method and system for providing restricted actions for recognized semantic categories
US7770102B1 (en) 2000-06-06 2010-08-03 Microsoft Corporation Method and system for semantically labeling strings and providing actions based on semantically labeled strings
US7716163B2 (en) 2000-06-06 2010-05-11 Microsoft Corporation Method and system for defining semantic categories and actions
US7089560B1 (en) * 2000-07-24 2006-08-08 Sun Microsystems, Inc. Architecture for building web applications
AU2001215798A1 (en) * 2000-10-31 2002-05-15 Netscape Communications Corporation Click-to-add, jot-it-down, and add banner
GB2372118A (en) * 2001-02-09 2002-08-14 Amino Holdings Ltd System commands carried in tags in markup language documents
US7380250B2 (en) 2001-03-16 2008-05-27 Microsoft Corporation Method and system for interacting with devices having different capabilities
US7778816B2 (en) * 2001-04-24 2010-08-17 Microsoft Corporation Method and system for applying input mode bias
US7480910B1 (en) 2001-05-15 2009-01-20 Adobe Systems Incorporated System and method for providing information and associating information
US7685229B1 (en) 2001-05-15 2010-03-23 Adobe Systems Incorporated System and method for displaying server side code results in an application program
US7493397B1 (en) 2001-06-06 2009-02-17 Microsoft Corporation Providing remote processing services over a distributed communications network
US6944797B1 (en) 2001-06-07 2005-09-13 Microsoft Corporation Method and system for tracing
US6915454B1 (en) 2001-06-12 2005-07-05 Microsoft Corporation Web controls validation
EP1271877B1 (en) * 2001-06-22 2008-11-05 Microsoft Corporation Wireless browser
US7162723B2 (en) 2001-06-29 2007-01-09 Microsoft Corporation ASP.NET HTTP runtime
US7594001B1 (en) 2001-07-06 2009-09-22 Microsoft Corporation Partial page output caching
US7017162B2 (en) 2001-07-10 2006-03-21 Microsoft Corporation Application program interface for network software platform
US7117504B2 (en) * 2001-07-10 2006-10-03 Microsoft Corporation Application program interface that enables communication for a network software platform
US7120897B2 (en) 2001-07-10 2006-10-10 Microsoft Corporation User control objects for providing server-side code generation from a user-defined dynamic web page content file
US7546602B2 (en) 2001-07-10 2009-06-09 Microsoft Corporation Application program interface for network software platform
US7581231B2 (en) * 2001-07-10 2009-08-25 Microsoft Corporation Computing system and method for allowing plurality of applications written in different programming languages to communicate and request resources or services via a common language runtime layer
GB2378781B (en) * 2001-08-16 2005-06-01 Sun Microsystems Inc Message brokering
GB2378782B (en) * 2001-08-16 2005-04-13 Sun Microsystems Inc Message brokering
US20090006543A1 (en) * 2001-08-20 2009-01-01 Masterobjects System and method for asynchronous retrieval of information based on incremental user input
US7216294B2 (en) 2001-09-04 2007-05-08 Microsoft Corporation Method and system for predicting optimal HTML structure without look-ahead
US7428725B2 (en) * 2001-11-20 2008-09-23 Microsoft Corporation Inserting devices specific content
US20030120722A1 (en) * 2001-12-20 2003-06-26 Forkner Damien R. Persistent process software architecture
GB2383505B (en) * 2001-12-21 2004-03-31 Searchspace Ltd System and method for monitoring usage patterns
WO2003065242A1 (en) * 2002-01-25 2003-08-07 Tibco Software, Inc. Single applet to communicate with multiple html elements contained inside of multiple categories on a page
US7325194B2 (en) 2002-05-07 2008-01-29 Microsoft Corporation Method, system, and apparatus for converting numbers between measurement systems based upon semantically labeled strings
US7707496B1 (en) 2002-05-09 2010-04-27 Microsoft Corporation Method, system, and apparatus for converting dates between calendars and languages based upon semantically labeled strings
US7742048B1 (en) 2002-05-23 2010-06-22 Microsoft Corporation Method, system, and apparatus for converting numbers based upon semantically labeled strings
US7707024B2 (en) * 2002-05-23 2010-04-27 Microsoft Corporation Method, system, and apparatus for converting currency values based upon semantically labeled strings
US7827546B1 (en) 2002-06-05 2010-11-02 Microsoft Corporation Mechanism for downloading software components from a remote source for use by a local software application
US7281245B2 (en) * 2002-06-05 2007-10-09 Microsoft Corporation Mechanism for downloading software components from a remote source for use by a local software application
US7356537B2 (en) 2002-06-06 2008-04-08 Microsoft Corporation Providing contextually sensitive tools and help content in computer-generated documents
US7716676B2 (en) 2002-06-25 2010-05-11 Microsoft Corporation System and method for issuing a message to a program
US7392479B2 (en) * 2002-06-27 2008-06-24 Microsoft Corporation System and method for providing namespace related information
US7209915B1 (en) 2002-06-28 2007-04-24 Microsoft Corporation Method, system and apparatus for routing a query to one or more providers
US8635254B2 (en) * 2002-08-08 2014-01-21 Axeda Corporation Maintaining independent states for multiple web browser instances
US7574653B2 (en) 2002-10-11 2009-08-11 Microsoft Corporation Adaptive image formatting control
JP2004164150A (ja) * 2002-11-12 2004-06-10 Yokogawa Electric Corp プラント運転支援装置
EP1570354A4 (en) * 2002-11-19 2008-07-02 Nexaweb Technologies Inc SYSTEM AND METHOD FOR WEB-AIDED STATEFUL DATA PROCESSING
US20040103438A1 (en) * 2002-11-27 2004-05-27 Yong Yan Methods and systems for transferring events including multimedia data
US7392160B2 (en) * 2002-12-18 2008-06-24 Fortent Limited System and method for monitoring usage patterns
US7447747B2 (en) 2003-02-04 2008-11-04 Aol Llc Method for flexible, safe, robust, and efficient generation and serving of multi-source world-wide web content pages
US7783614B2 (en) 2003-02-13 2010-08-24 Microsoft Corporation Linking elements of a document to corresponding fields, queries and/or procedures in a database
US7650572B2 (en) * 2003-02-28 2010-01-19 Bea Systems, Inc. Graphical user interface navigation method
EP1457882B1 (en) * 2003-03-13 2019-06-05 Sap Se Method and computer system for enabling flexible request-response cycles
US7711550B1 (en) 2003-04-29 2010-05-04 Microsoft Corporation Methods and system for recognizing names in a computer-generated document and for providing helpful actions associated with recognized names
US7558841B2 (en) 2003-05-14 2009-07-07 Microsoft Corporation Method, system, and computer-readable medium for communicating results to a data query in a computer network
JP4097263B2 (ja) * 2003-06-11 2008-06-11 インターナショナル・ビジネス・マシーンズ・コーポレーション ウェブアプリケーションモデル生成装置、ウェブアプリケーション生成支援方法及びプログラム
WO2004111843A1 (en) * 2003-06-13 2004-12-23 Sap Ag A method of entering of data into a data processing system
US7739588B2 (en) 2003-06-27 2010-06-15 Microsoft Corporation Leveraging markup language data for semantically labeling text strings and data and for providing actions based on semantically labeled text strings and data
WO2005008480A2 (en) * 2003-07-10 2005-01-27 Computer Associates Think, Inc. System and method for generating a web-enabled graphical user interface plug-in
US7761842B2 (en) * 2003-07-11 2010-07-20 Computer Associates Think, Inc. System and method for generating a graphical user interface (GUI) element
WO2005008477A2 (en) * 2003-07-11 2005-01-27 Computer Associates Think, Inc. System and method for dynamic generation of a graphical user interface
US7200615B2 (en) * 2003-10-16 2007-04-03 Xerox Corporation Viewing tabular data on small handheld displays and mobile phones
US7596782B2 (en) 2003-10-24 2009-09-29 Microsoft Corporation Software build extensibility
US20050102611A1 (en) * 2003-11-06 2005-05-12 Danny Chen Process for creating dynamic web pages driven from the server side
US7404195B1 (en) 2003-12-09 2008-07-22 Microsoft Corporation Programmable object model for extensible markup language markup in an application
US7487515B1 (en) 2003-12-09 2009-02-03 Microsoft Corporation Programmable object model for extensible markup language schema validation
US7178102B1 (en) 2003-12-09 2007-02-13 Microsoft Corporation Representing latent data in an extensible markup language document
US7434157B2 (en) 2003-12-09 2008-10-07 Microsoft Corporation Programmable object model for namespace or schema library support in a software application
WO2005062175A2 (en) * 2003-12-23 2005-07-07 Corizon Limited Method and apparatus for composite user interface creation
US7383531B2 (en) * 2004-01-29 2008-06-03 Microsoft Corporation Extensible productivity tool for exposing common classes in application building
US7509573B1 (en) 2004-02-17 2009-03-24 Microsoft Corporation Anti-virus security information in an extensible markup language document
US20050182617A1 (en) * 2004-02-17 2005-08-18 Microsoft Corporation Methods and systems for providing automated actions on recognized text strings in a computer-generated document
US7890604B2 (en) * 2004-05-07 2011-02-15 Microsoft Corproation Client-side callbacks to server events
US8065600B2 (en) 2004-05-14 2011-11-22 Microsoft Corporation Systems and methods for defining web content navigation
US9026578B2 (en) 2004-05-14 2015-05-05 Microsoft Corporation Systems and methods for persisting data between web pages
US7464386B2 (en) 2004-05-17 2008-12-09 Microsoft Corporation Data controls architecture
US7849412B2 (en) * 2004-05-21 2010-12-07 Computer Associates Think, Inc. System and method for generating a web control in a Windows development environment
US8156448B2 (en) 2004-05-28 2012-04-10 Microsoft Corporation Site navigation and site navigation data source
US7530058B2 (en) 2004-05-28 2009-05-05 Microsoft Corporation Non-compile pages
US20050289450A1 (en) * 2004-06-23 2005-12-29 Microsoft Corporation User interface virtualization
US20060069745A1 (en) * 2004-09-08 2006-03-30 International Business Machines Corporation Method, system and program product for identifying web page dependencies
US7250862B2 (en) * 2004-12-22 2007-07-31 Sap Aktiengesellschaft Dynamic display of RFID and sensor data
US20060224700A1 (en) * 2005-03-15 2006-10-05 Microsoft Corporation Multipart response generation
US7984418B2 (en) * 2005-03-24 2011-07-19 International Business Machines Corporation Method and apparatus for situationally aware delivery of object instances to a client
US8341536B2 (en) 2005-07-08 2012-12-25 International Business Machines Corporation Dynamic interface component control support
US9268867B2 (en) * 2005-08-03 2016-02-23 Aol Inc. Enhanced favorites service for web browsers and web applications
US8739020B2 (en) 2005-08-03 2014-05-27 Aol Inc. Enhanced favorites service for web browsers and web applications
US7831918B2 (en) * 2005-09-12 2010-11-09 Microsoft Corporation Content based user interface design
US7788590B2 (en) * 2005-09-26 2010-08-31 Microsoft Corporation Lightweight reference user interface
US7992085B2 (en) 2005-09-26 2011-08-02 Microsoft Corporation Lightweight reference user interface
US20070106946A1 (en) * 2005-11-07 2007-05-10 Philip Goetz Method and system for developing interactive Web applications in a unified framework
KR20070052645A (ko) * 2005-11-17 2007-05-22 삼성전자주식회사 사용자 인터페이스를 관리하는 장치 및 방법
US8327297B2 (en) * 2005-12-16 2012-12-04 Aol Inc. User interface system for handheld devices
US8812978B2 (en) * 2005-12-22 2014-08-19 Xerox Corporation System and method for dynamic zoom to view documents on small displays
US20070214408A1 (en) * 2006-03-07 2007-09-13 Optimus Corporation Declarative web application for search and retrieval
US7685367B2 (en) * 2006-03-08 2010-03-23 Microsoft Corporation Multi-cache cooperation for response output caching
US20070214210A1 (en) * 2006-03-10 2007-09-13 Mechov Chavdar B Display of web page code
US20070288644A1 (en) * 2006-06-07 2007-12-13 Cesar Augusto Rojas Systems and methods for developing and running applications in a web-based computing environment
US8639782B2 (en) * 2006-08-23 2014-01-28 Ebay, Inc. Method and system for sharing metadata between interfaces
US9201854B1 (en) * 2006-10-25 2015-12-01 Hewlett-Packard Development Company, L.P. Methods and systems for creating, interacting with, and utilizing a superactive document
EP1939759A1 (en) * 2006-12-29 2008-07-02 Vodafone Holding GmbH Method for providing content to a mobile device, gateway for providing content and mobile device
US8230052B2 (en) * 2007-02-14 2012-07-24 Microsoft Corporation Module diagnostic toolkit for client-server based protocols
US8065667B2 (en) * 2007-03-20 2011-11-22 Yahoo! Inc. Injecting content into third party documents for document processing
US8255883B2 (en) * 2007-04-20 2012-08-28 Microsoft Corporation Translating late bound LINQ expressions into database queries
US8037039B2 (en) * 2007-04-20 2011-10-11 Microsoft Corporation Runtime class database operation
US7991910B2 (en) 2008-11-17 2011-08-02 Amazon Technologies, Inc. Updating routing information based on client location
US8028090B2 (en) * 2008-11-17 2011-09-27 Amazon Technologies, Inc. Request routing utilizing client location information
US8818912B2 (en) 2007-12-07 2014-08-26 Z-Firm, LLC Methods and systems for supporting the production of shipping labels
US8126821B2 (en) * 2008-01-04 2012-02-28 Z-Firm, LLC Methods and systems for supporting the production of shipping labels
US8812409B2 (en) 2007-12-07 2014-08-19 Z-Firm, LLC Reducing payload size of machine-readable data blocks in shipment preparation packing lists
US8521656B2 (en) 2007-12-07 2013-08-27 Z-Firm, LLC Systems and methods for providing extended shipping options
US8527429B2 (en) 2007-12-07 2013-09-03 Z-Firm, LLC Shipment preparation using network resource identifiers in packing lists
US8805747B2 (en) 2007-12-07 2014-08-12 Z-Firm, LLC Securing shipment information accessed based on data encoded in machine-readable data blocks
US10417726B2 (en) * 2007-12-07 2019-09-17 The Descartes Systems Group Inc. Methods and systems for producing shipping labels
US8156243B2 (en) 2008-03-31 2012-04-10 Amazon Technologies, Inc. Request routing
US8447831B1 (en) 2008-03-31 2013-05-21 Amazon Technologies, Inc. Incentive driven content delivery
US8533293B1 (en) * 2008-03-31 2013-09-10 Amazon Technologies, Inc. Client side cache management
US7970820B1 (en) 2008-03-31 2011-06-28 Amazon Technologies, Inc. Locality based content distribution
US8601090B1 (en) 2008-03-31 2013-12-03 Amazon Technologies, Inc. Network resource identification
US7962597B2 (en) 2008-03-31 2011-06-14 Amazon Technologies, Inc. Request routing based on class
US8321568B2 (en) 2008-03-31 2012-11-27 Amazon Technologies, Inc. Content management
US8606996B2 (en) * 2008-03-31 2013-12-10 Amazon Technologies, Inc. Cache optimization
WO2009126591A1 (en) * 2008-04-07 2009-10-15 Express Mobile, Inc. Systems and methods for programming mobile devices
WO2009132444A1 (en) 2008-04-28 2009-11-05 Sitemasher Corporation Object-oriented system for creating and managing websites and their content
US9407681B1 (en) 2010-09-28 2016-08-02 Amazon Technologies, Inc. Latency measurement in resource requests
US9912740B2 (en) 2008-06-30 2018-03-06 Amazon Technologies, Inc. Latency measurement in resource requests
US7925782B2 (en) 2008-06-30 2011-04-12 Amazon Technologies, Inc. Request routing using network computing components
US8793339B2 (en) * 2008-08-29 2014-07-29 Red Hat, Inc. Facilitating client server interaction
US8793398B2 (en) * 2008-08-29 2014-07-29 Red Hat, Inc. Facilitating client server interaction
US20110161440A1 (en) * 2008-11-03 2011-06-30 Livechime, Inc. System and method for enhancing digital content
CA2742495A1 (en) * 2008-11-03 2010-06-03 Livechime, Inc. System and method for enhancing digital content
US8521880B1 (en) 2008-11-17 2013-08-27 Amazon Technologies, Inc. Managing content delivery network service providers
US8065417B1 (en) 2008-11-17 2011-11-22 Amazon Technologies, Inc. Service provider registration by a content broker
US8122098B1 (en) 2008-11-17 2012-02-21 Amazon Technologies, Inc. Managing content delivery network service providers by a content broker
US8073940B1 (en) 2008-11-17 2011-12-06 Amazon Technologies, Inc. Managing content delivery network service providers
US8060616B1 (en) 2008-11-17 2011-11-15 Amazon Technologies, Inc. Managing CDN registration by a storage provider
US8732309B1 (en) 2008-11-17 2014-05-20 Amazon Technologies, Inc. Request routing utilizing cost information
US10755287B2 (en) * 2008-11-25 2020-08-25 Microsoft Technology Licensing, Llc Selecting between client-side and server-side market detection
US9009662B2 (en) 2008-12-18 2015-04-14 Adobe Systems Incorporated Platform sensitive application characteristics
US9009661B2 (en) * 2008-12-18 2015-04-14 Adobe Systems Incorporated Platform sensitive application characteristics
US20100217550A1 (en) * 2009-02-26 2010-08-26 Jason Crabtree System and method for electric grid utilization and optimization
US20100217642A1 (en) * 2009-02-26 2010-08-26 Jason Crubtree System and method for single-action energy resource scheduling and participation in energy-related securities
US8521851B1 (en) 2009-03-27 2013-08-27 Amazon Technologies, Inc. DNS query processing using resource identifiers specifying an application broker
US8756341B1 (en) 2009-03-27 2014-06-17 Amazon Technologies, Inc. Request routing utilizing popularity information
US8688837B1 (en) 2009-03-27 2014-04-01 Amazon Technologies, Inc. Dynamically translating resource identifiers for request routing using popularity information
US8412823B1 (en) 2009-03-27 2013-04-02 Amazon Technologies, Inc. Managing tracking information entries in resource cache components
US8108497B2 (en) * 2009-04-16 2012-01-31 Microsoft Corporation Selective enablement of runtime-based application behaviors
US8782236B1 (en) 2009-06-16 2014-07-15 Amazon Technologies, Inc. Managing resources using resource expiration data
US8397073B1 (en) 2009-09-04 2013-03-12 Amazon Technologies, Inc. Managing secure content in a content delivery network
KR101632748B1 (ko) * 2009-09-24 2016-07-04 삼성전자주식회사 맞춤형 원격 사용자 인터페이스 페이지를 제공하기 위한 장치 및 방법
US8433771B1 (en) 2009-10-02 2013-04-30 Amazon Technologies, Inc. Distribution network with forward resource propagation
US10176270B2 (en) * 2009-12-24 2019-01-08 International Business Machines Corporation Performance of template based javascript widgets
US9495338B1 (en) 2010-01-28 2016-11-15 Amazon Technologies, Inc. Content distribution network
US8990499B2 (en) * 2010-03-26 2015-03-24 Amazon Technologies, Inc. Caching of a site model in a hierarchical modeling system for network sites
US9356991B2 (en) * 2010-05-10 2016-05-31 Litera Technology Llc Systems and methods for a bidirectional multi-function communication module
US8756272B1 (en) 2010-08-26 2014-06-17 Amazon Technologies, Inc. Processing encoded content
US8938526B1 (en) 2010-09-28 2015-01-20 Amazon Technologies, Inc. Request routing management based on network components
US10097398B1 (en) 2010-09-28 2018-10-09 Amazon Technologies, Inc. Point of presence management in request routing
US9712484B1 (en) 2010-09-28 2017-07-18 Amazon Technologies, Inc. Managing request routing information utilizing client identifiers
US8819283B2 (en) 2010-09-28 2014-08-26 Amazon Technologies, Inc. Request routing in a networked environment
US9003035B1 (en) 2010-09-28 2015-04-07 Amazon Technologies, Inc. Point of presence management in request routing
US8924528B1 (en) 2010-09-28 2014-12-30 Amazon Technologies, Inc. Latency measurement in resource requests
US10958501B1 (en) 2010-09-28 2021-03-23 Amazon Technologies, Inc. Request routing information based on client IP groupings
US8577992B1 (en) 2010-09-28 2013-11-05 Amazon Technologies, Inc. Request routing management based on network components
US8930513B1 (en) 2010-09-28 2015-01-06 Amazon Technologies, Inc. Latency measurement in resource requests
US8468247B1 (en) 2010-09-28 2013-06-18 Amazon Technologies, Inc. Point of presence management in request routing
US20120084638A1 (en) * 2010-09-30 2012-04-05 Salesforce.Com, Inc. Techniques content modification in an environment that supports dynamic content serving
US9223892B2 (en) 2010-09-30 2015-12-29 Salesforce.Com, Inc. Device abstraction for page generation
US8452874B2 (en) 2010-11-22 2013-05-28 Amazon Technologies, Inc. Request routing processing
US8626950B1 (en) 2010-12-03 2014-01-07 Amazon Technologies, Inc. Request routing processing
US8935360B2 (en) 2010-12-03 2015-01-13 Salesforce.Com, Inc. Techniques for metadata-driven dynamic content serving
US9391949B1 (en) 2010-12-03 2016-07-12 Amazon Technologies, Inc. Request routing processing
EP2485457A1 (en) * 2011-02-04 2012-08-08 Siemens Aktiengesellschaft A method for keeping a web session alive in a web application
US9852401B2 (en) 2011-04-04 2017-12-26 Microsoft Technology Licensing, Llc Providing additional email content in an email client
US10467042B1 (en) 2011-04-27 2019-11-05 Amazon Technologies, Inc. Optimized deployment based upon customer locality
US10540416B2 (en) 2011-06-23 2020-01-21 Microsoft Technology Licensing, Llc Linking source code to running element
US10534830B2 (en) 2011-06-23 2020-01-14 Microsoft Technology Licensing, Llc Dynamically updating a running page
US8396920B1 (en) * 2011-11-30 2013-03-12 Google Inc. Clean URLs in web applications
US9037636B2 (en) * 2012-01-19 2015-05-19 Microsoft Technology Licensing, Llc Managing script file dependencies and load times
US8904009B1 (en) 2012-02-10 2014-12-02 Amazon Technologies, Inc. Dynamic content delivery
US10021179B1 (en) 2012-02-21 2018-07-10 Amazon Technologies, Inc. Local resource delivery network
US20130227397A1 (en) * 2012-02-24 2013-08-29 Microsoft Corporation Forming an instrumented text source document for generating a live web page
US9083743B1 (en) 2012-03-21 2015-07-14 Amazon Technologies, Inc. Managing request routing information utilizing performance information
US10623408B1 (en) 2012-04-02 2020-04-14 Amazon Technologies, Inc. Context sensitive object management
US20130290830A1 (en) * 2012-04-30 2013-10-31 Salesforce.Com, Inc. System and method for managing a viewstate of a web application
US9154551B1 (en) 2012-06-11 2015-10-06 Amazon Technologies, Inc. Processing DNS queries to identify pre-processing information
US9516088B2 (en) * 2012-08-29 2016-12-06 Ebay Inc. Systems and methods to consistently generate web content
US9525659B1 (en) 2012-09-04 2016-12-20 Amazon Technologies, Inc. Request routing utilizing point of presence load information
US9135048B2 (en) 2012-09-20 2015-09-15 Amazon Technologies, Inc. Automated profiling of resource usage
US9323577B2 (en) 2012-09-20 2016-04-26 Amazon Technologies, Inc. Automated profiling of resource usage
US10205698B1 (en) 2012-12-19 2019-02-12 Amazon Technologies, Inc. Source-dependent address resolution
US9294391B1 (en) 2013-06-04 2016-03-22 Amazon Technologies, Inc. Managing network computing components utilizing request routing
US9747010B2 (en) 2014-01-16 2017-08-29 Xerox Corporation Electronic content visual comparison apparatus and method
US10091096B1 (en) 2014-12-18 2018-10-02 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10097448B1 (en) 2014-12-18 2018-10-09 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10033627B1 (en) 2014-12-18 2018-07-24 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10225326B1 (en) 2015-03-23 2019-03-05 Amazon Technologies, Inc. Point of presence based data uploading
US9819567B1 (en) 2015-03-30 2017-11-14 Amazon Technologies, Inc. Traffic surge management for points of presence
US9887932B1 (en) 2015-03-30 2018-02-06 Amazon Technologies, Inc. Traffic surge management for points of presence
US9887931B1 (en) 2015-03-30 2018-02-06 Amazon Technologies, Inc. Traffic surge management for points of presence
US9832141B1 (en) 2015-05-13 2017-11-28 Amazon Technologies, Inc. Routing based request correlation
US9946601B2 (en) 2015-05-21 2018-04-17 Red Hat, Inc. User interface state saving and restoration
US10616179B1 (en) 2015-06-25 2020-04-07 Amazon Technologies, Inc. Selective routing of domain name system (DNS) requests
US10097566B1 (en) 2015-07-31 2018-10-09 Amazon Technologies, Inc. Identifying targets of network attacks
US9794281B1 (en) 2015-09-24 2017-10-17 Amazon Technologies, Inc. Identifying sources of network attacks
US9774619B1 (en) 2015-09-24 2017-09-26 Amazon Technologies, Inc. Mitigating network attacks
US9742795B1 (en) 2015-09-24 2017-08-22 Amazon Technologies, Inc. Mitigating network attacks
US20170126844A1 (en) * 2015-10-30 2017-05-04 Microsoft Technology Licensing, Llc Server architecture and protocol development
US10270878B1 (en) 2015-11-10 2019-04-23 Amazon Technologies, Inc. Routing for origin-facing points of presence
US10257307B1 (en) 2015-12-11 2019-04-09 Amazon Technologies, Inc. Reserved cache space in content delivery networks
US10049051B1 (en) 2015-12-11 2018-08-14 Amazon Technologies, Inc. Reserved cache space in content delivery networks
US10348639B2 (en) 2015-12-18 2019-07-09 Amazon Technologies, Inc. Use of virtual endpoints to improve data transmission rates
US10075551B1 (en) 2016-06-06 2018-09-11 Amazon Technologies, Inc. Request management for hierarchical cache
US10110694B1 (en) 2016-06-29 2018-10-23 Amazon Technologies, Inc. Adaptive transfer rate for retrieving content from a server
US9992086B1 (en) 2016-08-23 2018-06-05 Amazon Technologies, Inc. External health checking of virtual private cloud network environments
US10033691B1 (en) 2016-08-24 2018-07-24 Amazon Technologies, Inc. Adaptive resolution of domain name requests in virtual private cloud network environments
US10469513B2 (en) 2016-10-05 2019-11-05 Amazon Technologies, Inc. Encrypted network addresses
US10831549B1 (en) 2016-12-27 2020-11-10 Amazon Technologies, Inc. Multi-region request-driven code execution system
US10372499B1 (en) 2016-12-27 2019-08-06 Amazon Technologies, Inc. Efficient region selection system for executing request-driven code
US10938884B1 (en) 2017-01-30 2021-03-02 Amazon Technologies, Inc. Origin server cloaking using virtual private cloud network environments
US10503613B1 (en) 2017-04-21 2019-12-10 Amazon Technologies, Inc. Efficient serving of resources during server unavailability
US11075987B1 (en) 2017-06-12 2021-07-27 Amazon Technologies, Inc. Load estimating content delivery network
US10447648B2 (en) 2017-06-19 2019-10-15 Amazon Technologies, Inc. Assignment of a POP to a DNS resolver based on volume of communications over a link between client devices and the POP
US10742593B1 (en) 2017-09-25 2020-08-11 Amazon Technologies, Inc. Hybrid content request routing system
US10592578B1 (en) 2018-03-07 2020-03-17 Amazon Technologies, Inc. Predictive content push-enabled content delivery network
CN108647076B (zh) * 2018-05-14 2020-07-24 阿里巴巴集团控股有限公司 一种页面处理方法、装置及设备
CN110879757B (zh) * 2018-09-05 2024-02-27 广州弘度信息科技有限公司 客户端异常运行时的重启方法、装置和计算机设备
US11227252B1 (en) 2018-09-28 2022-01-18 The Descartes Systems Group Inc. Token-based transport rules
US10862852B1 (en) 2018-11-16 2020-12-08 Amazon Technologies, Inc. Resolution of domain name requests in heterogeneous network environments
US11025747B1 (en) 2018-12-12 2021-06-01 Amazon Technologies, Inc. Content request pattern-based routing system
US10983886B2 (en) 2018-12-18 2021-04-20 Storage Engine, Inc. Methods, apparatuses and systems for cloud-based disaster recovery
US10958720B2 (en) 2018-12-18 2021-03-23 Storage Engine, Inc. Methods, apparatuses and systems for cloud based disaster recovery
US11178221B2 (en) 2018-12-18 2021-11-16 Storage Engine, Inc. Methods, apparatuses and systems for cloud-based disaster recovery
US10887382B2 (en) 2018-12-18 2021-01-05 Storage Engine, Inc. Methods, apparatuses and systems for cloud-based disaster recovery
US11252019B2 (en) 2018-12-18 2022-02-15 Storage Engine, Inc. Methods, apparatuses and systems for cloud-based disaster recovery
US11489730B2 (en) 2018-12-18 2022-11-01 Storage Engine, Inc. Methods, apparatuses and systems for configuring a network environment for a server
US11176002B2 (en) 2018-12-18 2021-11-16 Storage Engine, Inc. Methods, apparatuses and systems for cloud-based disaster recovery
CN110489695A (zh) * 2019-07-30 2019-11-22 广东分利宝金服科技有限公司 模块驱动视图数据的方法及装置
CN113010162B (zh) * 2021-03-02 2024-03-29 中国工商银行股份有限公司 一种页面构建方法、装置及设备
US11882173B1 (en) * 2022-09-12 2024-01-23 Sap Se Capture network communication via client extension
CN119248411B (zh) * 2024-12-02 2025-03-25 天津南大通用数据技术股份有限公司 数据库管理界面操作方法、装置和电子设备

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5517655A (en) 1991-04-26 1996-05-14 Hewlett-Packard Company Method for monitoring transactions in an object-oriented environment
US5812996A (en) 1994-07-12 1998-09-22 Sybase, Inc. Database system with methods for optimizing query performance with a buffer manager
US5706505A (en) 1994-08-19 1998-01-06 Microsoft Corporation Method and system for binding data in a computer system
US5911068A (en) 1995-03-30 1999-06-08 Microsoft Corporation Container independent control architecture
US6651108B2 (en) * 1995-08-14 2003-11-18 Next Software, Inc. Method and apparatus for generating object-oriented world wide web pages
US6108717A (en) 1995-09-06 2000-08-22 Seiko Epson Corporation Control system using plural objects, a programming method therefor, and a peripheral devices control system
US5774670A (en) 1995-10-06 1998-06-30 Netscape Communications Corporation Persistent client state in a hypertext transfer protocol based client-server system
US5928323A (en) 1996-05-30 1999-07-27 Sun Microsystems, Inc. Apparatus and method for dynamically generating information with server-side software objects
US5961601A (en) 1996-06-07 1999-10-05 International Business Machines Corporation Preserving state information in a continuing conversation between a client and server networked via a stateless protocol
US5835724A (en) 1996-07-03 1998-11-10 Electronic Data Systems Corporation System and method for communication information using the internet that receives and maintains information concerning the client and generates and conveys the session data to the client
US6115744A (en) 1996-07-30 2000-09-05 Bea Systems, Inc. Client object API and gateway to enable OLTP via the internet
US5897622A (en) 1996-10-16 1999-04-27 Microsoft Corporation Electronic shopping and merchandising system
ES2207756T3 (es) 1996-11-14 2004-06-01 Alcatel Usa Sourcing, L.P. Maquina generica de estado de software y metodo de construir objetos dinamicos para un programa de aplicacion.
US5953524A (en) 1996-11-22 1999-09-14 Sybase, Inc. Development system with methods for runtime binding of user-defined classes
US5991802A (en) * 1996-11-27 1999-11-23 Microsoft Corporation Method and system for invoking methods of objects over the internet
US6401099B1 (en) 1996-12-06 2002-06-04 Microsoft Corporation Asynchronous binding of named objects
US5748890A (en) 1996-12-23 1998-05-05 U S West, Inc. Method and system for authenticating and auditing access by a user to non-natively secured applications
US6032207A (en) 1996-12-23 2000-02-29 Bull Hn Information Systems Inc. Search mechanism for a queue system
US6006230A (en) 1997-01-15 1999-12-21 Sybase, Inc. Database application development system with improved methods for distributing and executing objects across multiple tiers
US6212192B1 (en) 1997-03-14 2001-04-03 Itxc, Inc. Method and apparatus for synchronizing information browsing among multiple systems
US6253228B1 (en) 1997-03-31 2001-06-26 Apple Computer, Inc. Method and apparatus for updating and synchronizing information between a client and a server
US5983190A (en) 1997-05-19 1999-11-09 Microsoft Corporation Client server animation system for managing interactive user interface characters
US5983227A (en) 1997-06-12 1999-11-09 Yahoo, Inc. Dynamic page generator
CA2210755C (en) 1997-07-17 2003-12-23 Ibm Canada Limited - Ibm Canada Limitee Creating proxies for distribution of beans and event objects
US5940075A (en) 1997-09-30 1999-08-17 Unisys Corp. Method for extending the hypertext markup language (HTML) to support enterprise application data binding
US6014666A (en) 1997-10-28 2000-01-11 Microsoft Corporation Declarative and programmatic access control of component-based server applications using roles
US6460071B1 (en) 1997-11-21 2002-10-01 International Business Machines Corporation System and method for managing client application state in a stateless web browser environment
US6442619B1 (en) 1997-12-31 2002-08-27 Alcatel Usa Sourcing, L.P. Software architecture for message processing in a distributed architecture computing system
US6076108A (en) 1998-03-06 2000-06-13 I2 Technologies, Inc. System and method for maintaining a state for a user session using a web system having a global session server
EP1076871A1 (en) 1998-05-15 2001-02-21 Unicast Communications Corporation A technique for implementing browser-initiated network-distributed advertising and for interstitially displaying an advertisement
US6185608B1 (en) 1998-06-12 2001-02-06 International Business Machines Corporation Caching dynamic web pages
US6373841B1 (en) 1998-06-22 2002-04-16 Agilent Technologies, Inc. Integrated LAN controller and web server chip
US6463442B1 (en) 1998-06-30 2002-10-08 Microsoft Corporation Container independent data binding system
US6205480B1 (en) 1998-08-19 2001-03-20 Computer Associates Think, Inc. System and method for web server user authentication
US6397253B1 (en) 1998-10-06 2002-05-28 Bull Hn Information Systems Inc. Method and system for providing high performance Web browser and server communications
US6460141B1 (en) 1998-10-28 2002-10-01 Rsa Security Inc. Security and access management system for web-enabled and non-web-enabled applications and content on a computer network
US8418131B2 (en) 1998-11-25 2013-04-09 Helmut Emmelmann Interactive server side components
US6487665B1 (en) 1998-11-30 2002-11-26 Microsoft Corporation Object security boundaries
US6178461B1 (en) 1998-12-08 2001-01-23 Lucent Technologies Inc. Cache-based compaction technique for internet browsing using similar objects in client cache as reference objects
US6351767B1 (en) 1999-01-25 2002-02-26 International Business Machines Corporation Method and system for automatically caching dynamic content based on a cacheability determination
US6591272B1 (en) 1999-02-25 2003-07-08 Tricoron Networks, Inc. Method and apparatus to make and transmit objects from a database on a server computer to a client computer
US6557038B1 (en) 1999-06-30 2003-04-29 International Business Machines Corporation Method and apparatus for maintaining session states
DE19961683A1 (de) 1999-12-21 2001-06-28 Philips Corp Intellectual Pty Bauteil mit Dünnschichtschaltkreis
EP1428142A2 (en) 2000-03-22 2004-06-16 Sidestep, Inc. Method and apparatus for dynamic information connection engine
US6622168B1 (en) 2000-04-10 2003-09-16 Chutney Technologies, Inc. Dynamic page generation acceleration using component-level caching
US8010702B2 (en) 2001-06-14 2011-08-30 Nokia Corporation Feature-based device description and content annotation
US7162723B2 (en) 2001-06-29 2007-01-09 Microsoft Corporation ASP.NET HTTP runtime
US6813641B2 (en) 2001-07-05 2004-11-02 Sun Microsystems, Inc. Teamware server working over HTTP/HTTPS connections
US7120897B2 (en) 2001-07-10 2006-10-10 Microsoft Corporation User control objects for providing server-side code generation from a user-defined dynamic web page content file

Also Published As

Publication number Publication date
JP2002049484A (ja) 2002-02-15
JP4015375B2 (ja) 2007-11-28
DE60126016D1 (de) 2007-03-08
EP1156415A3 (en) 2002-05-29
US7321918B2 (en) 2008-01-22
ATE352061T1 (de) 2007-02-15
DK1156415T3 (da) 2007-04-10
US6961750B1 (en) 2005-11-01
DE60126016T2 (de) 2007-07-12
EP1156415B1 (en) 2007-01-17
EP1156415A2 (en) 2001-11-21
US20050050164A1 (en) 2005-03-03

Similar Documents

Publication Publication Date Title
ES2280283T3 (es) Objetos de control del lado del servidor para el procesamiento de elementos de la interfaz de usuario del lado del cliente.
US8527943B1 (en) System and method of application development
US6792607B1 (en) Databinding using server-side control objects
US6651108B2 (en) Method and apparatus for generating object-oriented world wide web pages
US7013340B1 (en) Postback input handling by server-side control objects
US8392877B1 (en) System and method of application development using replaceable self-contained components (RSCCS)
Serrano et al. Hop: a language for programming the web 2. 0
CA2438176C (en) Xml-based multi-format business services design pattern
US7162687B2 (en) JSP tag libraries and web services
US6950981B2 (en) Method and system for providing task information in a place
US7065561B2 (en) Selective parsing of an XML document
US20040226027A1 (en) Application interface wrapper
US8839192B2 (en) System and method for presentation of cross organizational applications
US20020099738A1 (en) Automated web access for back-end enterprise systems
US7480921B1 (en) Method, system, and apparatus for customizing web parts
Hernández et al. OpenACS: robust web development framework
Burns et al. JavaServer™ Faces Specification
CA2592399C (en) Facilitating access to application data at an application server by a wireless communication device
Manola Some Web Object Model Construction Technologies
Lorenz ASP. Net 2.0 Revealed
Cabanová Teaching materials and advanced sample applications for Android platform
Gill Building Web Applications with C# and. NET: A Complete Reference
CN118819610A (zh) web前端标签管理方法、装置、设备、介质及产品
Frawley The Ybox: a front-end processing engine for web community based applications
Jabbour Dynamically driven & generated systems DDGS