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 PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/451—Execution 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.
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.
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.
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.
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.
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.
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.
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):
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.
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.
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).
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.
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)
| 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)
| 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 |
-
2000
- 2000-05-18 US US09/573,769 patent/US6961750B1/en not_active Expired - Lifetime
-
2001
- 2001-04-26 JP JP2001129923A patent/JP4015375B2/ja not_active Expired - Fee Related
- 2001-05-14 AT AT01111681T patent/ATE352061T1/de active
- 2001-05-14 DK DK01111681T patent/DK1156415T3/da active
- 2001-05-14 EP EP01111681A patent/EP1156415B1/en not_active Expired - Lifetime
- 2001-05-14 ES ES01111681T patent/ES2280283T3/es not_active Expired - Lifetime
- 2001-05-14 DE DE60126016T patent/DE60126016T2/de not_active Expired - Lifetime
-
2004
- 2004-10-14 US US10/966,618 patent/US7321918B2/en not_active Expired - Fee Related
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 |