ES2263707T3 - Gestion de eventos a distancia en una red por paquetes. - Google Patents
Gestion de eventos a distancia en una red por paquetes.Info
- Publication number
- ES2263707T3 ES2263707T3 ES02013186T ES02013186T ES2263707T3 ES 2263707 T3 ES2263707 T3 ES 2263707T3 ES 02013186 T ES02013186 T ES 02013186T ES 02013186 T ES02013186 T ES 02013186T ES 2263707 T3 ES2263707 T3 ES 2263707T3
- Authority
- ES
- Spain
- Prior art keywords
- request
- event
- events
- http
- application
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Communication Control (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
Un sistema en tiempo de ejecución de manejo de petición de Protocolo de Transferencia de Hipertextos, HTTP, que comprende: un objeto de contexto que representa lógicamente una petición HTTP que es recibida en una aplicación de un ordenador principal desde una aplicación de cliente, encapsulando el objeto de contexto al menos una propiedad asociada con la petición HTTP recibida; y una línea canalizada de sucesos que se corresponden al objeto de contexto, teniendo la línea canalizada de sucesos una pluralidad de sucesos de petición (301 - 303), teniendo cada suceso de petición (301 - 303) un suceso correspondiente y generando una rellamada cuando el suceso correspondiente al suceso de petición es levantado y cuando al menos uno de una aplicación y un módulo (304 - 306) está en registro asociado con el suceso de petición (301 303), iniciando cada rellamada cada aplicación y cada módulo (304 - 306) que está en registro asociado con el suceso de petición (301 - 303) para procesar el objeto de contexto, en el que la pluralidad de sucesos de petición (301-303) tienen un orden determinista.
Description
Gestión de eventos a distancia en una red por
paquetes.
Una porción de la exposición de este documento
de patente contiene material que está sometido a la protección de
copyright. El propietario del copyright no tiene objeciones a la
reproducción por facsímil del documento de patente o de la
exposición de la patente por cualquier persona, tal como aparece en
los registros o ficheros de patente de la Oficina de Patentes y
Marcas, pero en todo lo demás se reserva todos los derechos del
copyright.
La invención se refiere al proceso de petición
de Protocolo de Transferencia de Hipertexto (HTTP). Más en
particular, la presente invención se refiere a un sistema y
procedimiento para procesar una petición HTTP.
La figura 2 muestra un diagrama funcional de
bloques de una aplicación de sitio web que procesa una petición HTTP
de una manera convencional. Un buscador 201 de web situado en el
ordenador cliente 202 envía una petición HTTP en una red 203 de
ordenadores, tal como el Internet, de una manera bien conocida, a un
ordenador servidor principal 204 para una URL seleccionada 205. El
ordenador servidor principal 204, que ejecuta una aplicación 206 que
es particular del ordenador servidor central 204, recibe la petición
HTTP y, en base a los contenidos de la petición y al procesamiento
de la aplicación 206, accede al contenido de la página web 205
requerida. Antes de que se envíe la respuesta a la petición HTTP al
buscador 201 de web por medio del servidor 207 de web, la
aplicación 206 produce la página web 205 requerida utilizando
software que ejecuta programas en el ordenador servidor principal
204, y, dependiendo del contenido de la página web 205, un servicio
web 208, tal como un servicio proxy de web.
La aplicación 206 también puede procesar la
petición de una manera seleccionada antes y/o después de que el
software que ejecuta programas en el ordenador servidor principal
204 cree la página requerida utilizando módulos funcionales 209, por
ejemplo, para autentificar al usuario peticionario, determinar si el
usuario peticionario está autorizado para acceder a la página web
requerida, encriptar la respuesta, etc. Los módulos funcionales 209,
tal como los "servlets" JAVA procesan una petición HTTP de una
manera secuencial. Esto es, se selecciona el módulo funcional 209a
para procesar la petición antes de que el módulo funcional 209b
procese la petición, y a su vez, se selecciona el módulo funcional
209c para procesar la petición después del módulo funcional 209b.
Por ejemplo, el módulo funcional 209a podría proporcionar la
autentificación del usuario para la aplicación 206. Una vez que el
usuario ha sido autentificado, el módulo funcional 209b podría
proporcionar autorización al usuario. Posteriormente, el módulo
funcional 209c podría proporcionar una funcionalidad de anuncio que
está basada en la identificación autentificada del usuario
peticionario.
Cuando un desarrollador de aplicaciones HTTP
necesita cambiar la funcionalidad de la aplicación 206 cambiando la
funcionalidad de los módulos 209 para incluir características a
medida, tales como el registro de clientes, seguridad a escala
Internet o depósito de datos, el desarrollador necesitaría generar a
medida el módulo funcional y/o utilizar un módulo funcional adecuado
que fuese desarrollado por una tercera persona.
Un problema con este enfoque convencional es que
un desarrollador de aplicaciones debe comprender completamente el
procesamiento de todos los otros módulos funcionales, de manera que
un nuevo módulo funcional entre en conflicto con los otros módulos
funcionales que ya se encuentran en su lugar. Además, es difícil que
el desarrollador de aplicaciones conozca exactamente donde debe
insertar, en la secuencia de procesamiento, un módulo funcional
nuevo o actualizado. Además, hay situaciones en las que el módulo
funcional pre-envía contenido y/o encabezamientos a
un usuario peticionario antes de que el software que está
ejecutándose en un ordenador servidor principal 204 cree la página
web requerida, de manera que el sitio web le parece al usuario un
lugar web relativamente rápido. Cualquier procesamiento de petición
que ha sido efectuado por un módulo funcional que después se
encuentra en la secuencia de procesamiento convencional ya no podrá
ser ejecutado debido a que el contenido y/o los encabezamientos ya
no se encontrarán disponibles para el procesamiento.
Lo que se necesita es una manera para que un
desarrollador de aplicaciones HTTP añada fácilmente funcionalidad a
una aplicación HTTP. Además, lo que se necesita es una forma de
crear una funcionalidad reutilizable entre aplicaciones, de manera
que los módulos HTTP desarrollados por diferentes desarrolladores de
módulos puedan coexistir conjuntamente en muchas aplicaciones HTTP.
Además, lo que se necesita es una forma de proporcionar el
procesamiento de una petición HTTP que evite una disposición
secuencial de módulos funcionales que, posiblemente, puedan entrar
en conflicto con otros módulos funcionales.
El documento EP 1 156 429 A2 es un documento de
publicación posterior que describe una cogeneración del lado del
servidor del fichero de contenido de una página web dinámica.
El documento de M. M. Moore et al.,
"Emigración del Legado de interfaces de usuario al Internet:
Alternancia de iniciativas de diálogo", IEEE, 23 de noviembre de
2000, páginas 52 - 58, describe un proceso de reingeniería orientada
a modelo para técnicas de interfaz persona - ordenador y un juego de
herramientas que se ha desarrollado para las aplicaciones orientadas
al carácter del legado de reingeniería a interfaces gráficas de
usuario. La técnica efectúa la reingeniería de interfaz de usuario
en una serie de tres pasos: detectar, transformar y generar. El paso
de transformar es formar cartografías entre las abstracciones de
interfaz del usuario detectadas en el código de legado y su
reemplazo sugerido en un conjunto de herramientas específicas GUI.
El paso de generar es reemplazar el código orientado a caracteres en
el sistema original con las implementaciones de sus contrapartidas
de juego de herramientas GUI sugeridas en el paso de transformación.
Se describe que un programa activado por sucesos consiste en un
juego de manejadores de sucesos que son invocados por los sucesos
que se producen en la interfaz del usuario.
Es el objetivo de la invención proporcionar un
sistema en tiempo de ejecución de manejo de peticiones HTTP y un
procedimiento para procesar una petición HTTP, permitiendo que un
desarrollador de aplicaciones HTTP añada fácilmente funcionalidad a
una aplicación HTTP.
Este objetivo se consigue por la invención, como
se reivindica en las reivindicaciones independientes.
Realizaciones preferentes se especifica en las
reivindicaciones dependientes.
La presente invención proporciona una manera
para que un desarrollador de aplicaciones HTTP añada fácilmente
funcionalidad a una aplicación HTTP. Adicionalmente, la presente
invención proporciona una manera para crear funcionalidad
reutilizable entre aplicaciones de manera que los módulos HTTP
desarrollados por diferentes desarrolladores de módulos puedan
coexistir conjuntamente en muchas aplicaciones HTTP. La presente
invención también proporciona una manera para proporcionar el
proceso de una petición HTTP que evite una disposición secuencial de
módulos funcionales que puedan entrar posiblemente en conflicto con
otros módulos funcionales.
Para conseguir estas ventajas, la presente
invención proporciona un tiempo de ejecución de aplicaciones para
responder a una petición HTTP exponiendo una infraestructura
orientada al objeto, activada por los sucesos, de manera que las
aplicaciones HTTP y los módulos HTTP puedan participar durante las
diferentes etapas del ciclo de petición/respuesta. Esto es, los
procedimientos se registran para una rellamada cuando se levante un
suceso de petición síncrono o asíncrono se produce durante la vida
útil de una petición HTTP.
De acuerdo con la invención, un tiempo de
activación de manejo de petición HTTP incluye un objeto de contexto
y una línea canalizada de sucesos. El objeto de contexto está creado
analizando una petición HTTP que es recibida en una aplicación
principal desde la aplicación de un cliente y representa lógicamente
la petición HTTP. El objeto de contexto preferiblemente encapsula
las propiedades asociadas con la petición HTTP recibida. El objeto
de contexto es procesado por una línea canalizada de sucesos, que
incluye una pluralidad de sucesos de petición. La línea canalizada
procesa una petición HTTP de una vez, y cuando la línea canalizada
ha terminado el proceso de una petición HTTP, se procesa otra
petición HTTP. Cada suceso de petición tiene un suceso
correspondiente y genera una rellamada cuando el suceso
correspondiente al suceso de petición es levantado y cuando al menos
una aplicación o módulo está en registro asociado con el suceso de
petición. Cada rellamada realiza la instancia de cada módulo que
está en registro asociado con el suceso pedido para procesar el
objeto de contexto. Preferiblemente, la pluralidad de sucesos de
petición incluye sucesos que son síncronos y/o asíncronos en un
orden determinista. Además, la pluralidad de sucesos de petición
puede incluir, al menos, un suceso de petición que tenga un orden no
determinista, tal como un suceso de error. De acuerdo con la
invención, un módulo puede estar en registro con una pluralidad de
sucesos de petición.
La presente invención se ilustra, a título de
ejemplo y no de limitación, en las figuras que se acompañan, en las
cuales los números de referencia indican elementos similares y en
las cuales:
La figura 1 muestra un diagrama esquemático de
un ambiente de ordenadores digitales convencionales de propósito
general, que se puede utilizar para implementar distintos aspectos
de la presente invención;
La figura 2 muestra un diagrama de bloque
funcional de una aplicación de sitio web que procesa una petición
HTTP en una manera convencional; y
La figura 3 muestra un diagrama funcional de
bloques de una aplicación de sitio web que procesa una petición HTTP
utilizando un tiempo de activación HTTP ASP.NET, de acuerdo con la
presente invención.
La presente invención puede estar más fácilmente
descrita con referencia a las figuras 1 y 3. La figura 1 ilustra un
diagrama esquemático de un ambiente de ordenadores digitales
convencionales de propósito general que se puede utilizar para
implementar varios aspectos de la presente invención. En la figura
1, un ordenador 100 incluye una unidad de proceso 110, una memoria
120 de sistema, y un bus 130 de sistema que acopla varios
componentes del sistema, incluyendo la memoria del sistema a la
unidad de proceso 110. El bus 130 de sistema puede ser uno
cualquiera de distintos tipos de estructuras de bus, incluyendo un
bus de memoria o un controlador de memoria, un bus periférico, y un
bus local que utiliza una cualquiera de una variedad de
arquitecturas de bus. La memoria 120 del sistema incluye memoria de
solo lectura (ROM) 140 y memoria de acceso aleatorio (RAM) 150.
Un sistema básico de entrada/salida 160 (BIOS)
que contiene las rutinas básicas que ayudan a transferir información
entre los elementos en el interior del ordenador 100, por ejemplo
durante el arranque, se almacena en la ROM 140. El ordenador 100
también incluye un controlador 170 de disco duro para leer y para
escribir en un disco duro (no mostrado), un controlador 180 de disco
magnético para leer o escribir en un disco magnético 190 retirable,
y un controlador 191 de disco óptico para leer o escribir en un
disco óptico 192 retirable, tal como un CD-ROM u
otro medio óptico. El controlador 170 de disco duro, controlador 180
de disco magnético y controlador 191 de disco óptico están
conectados al bus 130 del sistema por medio de una interfaz 192 de
controlador de disco duro, una interfaz 193 de controlador de disco
magnético y una interfaz 194 de controlador de disco óptico,
respectivamente. Los controladores y sus medios legibles de
ordenador asociados proporcionan almacenamiento no volátil de las
instrucciones legibles del ordenador, estructuras de datos, módulos
de programa y otros datos del ordenador personal 100. Los
especialistas en la técnica apreciarán que otros tipos de medios
legibles de ordenador que pueden almacenar datos que son accesibles
por un ordenador, tal como casetes magnéticas, tarjetas de memoria
flash, videodiscos digitales, cartuchos Bernoulli, memorias de
acceso aleatorio (RAM), memorias de solo lectura (ROM), y
similares, también se pueden utilizar en el ambiente de operación
ejemplar.
Se puede almacenar un número de módulos de
programa en el controlador 170 del disco duro, disco magnético 190,
disco óptico 192, ROM 140 o RAM 150, incluyendo un sistema operativo
195, uno o más programas de aplicaciones 196, otros módulos de
programa 197, y datos de programa 198. Un usuario puede introducir
órdenes e información en el ordenador 100 por medio de dispositivos
de entrada, tales como un teclado 101 y un dispositivo 102 de
señalamiento. Otros dispositivos de entrada (no mostrados) pueden
incluir un micrófono, palanca de control, almohadilla de juegos,
disco satélite, explorador o similares. A menudo, estos y otros
dispositivos de entrada están conectados a la unidad de proceso 110
por medio de una interfaz 106 de puerto serie que está acoplada al
bus del sistema, pero pueden estar conectadas por otras interfaces
tales como un puerto paralelo, un puerto de juegos o un bus serie
universal (USB). Todavía más, estos dispositivos pueden estar
acoplados directamente al bus 130 de sistema por medio de una
interfaz apropiada (no mostrada). Un monitor 107 u otro tipo de
dispositivo de pantalla también está conectado al bus 130 del
sistema por medio de una interfaz, tal como un adaptador 108 de
vídeo. Además del monitor, los ordenadores personales típicamente
incluyen otros dispositivos periféricos de salida (no mostrados)
tales como altavoces e impresoras.
El ordenador 100 puede funcionar en un ambiente
de red utilizando conexiones lógicas con uno o más ordenadores
remotos, tales como un ordenador remoto 109. El ordenador remoto 109
puede ser un servidor, un encaminador, un PC de red, un dispositivo
igual u otro nodo de red común, y típicamente incluyen muchos o
todos los elementos que se han descrito más arriba relativos al
ordenador 100, aunque solamente se ha ilustrado en la figura 1 un
dispositivo 111 de almacenamiento de memoria. Las conexiones lógicas
mostradas en la figura 1 incluyen una red de área local (LAN) 112 y
una red de área amplia (WAN) 113. Tales ambientes de red son comunes
en oficinas, redes de ordenadores a nivel de empresa, intranets y el
Internet.
Cuando se utiliza un ambiente de red LAN, un
ordenador 100 está conectado a una red de área local 112 por medio
de una interfaz de red o adaptador 114. Cuando se usa en un ambiente
de red WAN, los ordenadores personales 100 típicamente incluyen un
módem 115 u otro dispositivo para establecer comunicaciones en un
área de trabajo amplia 113, tal como el Internet. El módem 115, que
puede ser interno o externo, está conectado al bus 130 del sistema
por medio de la interfaz 106 de puerto serie. En un ambiente en red,
los módulos de programas mostrados relativos al ordenador personal
100, o porciones de los mismos, pueden estar almacenados en un
dispositivo de almacenamiento de memoria remoto.
Se apreciará que las conexiones de red que se
muestran son ejemplares y que se pueden utilizar otras técnicas para
establecer un enlace de comunicaciones entre los ordenadores. Se
supone la existencia de cualquiera de distintos protocolos bien
conocidos tales como TCP/IP, Ethernet, FTP, HTTP y similares, y el
sistema puede funcionar con una configuración de
cliente-servidor para permitir que un usuario
recupere páginas web de un servidor basado en web. Se puede utilizar
cualquiera de distintos buscadores web convencionales para mostrar y
manipular datos en las páginas web.
Un aspecto primario de la invención proporciona
un tiempo de activación de aplicación en base a suceso para
responder a una petición HTTP. Más específicamente, el tiempo de
activación HTTP ASP.NET de la presente invención expone una
infraestructura orientada al objeto, controlada por sucesos, a los
desarrolladores de aplicaciones para crear aplicaciones avanzadas
que participan durante las diferentes etapas del ciclo de
petición/respuesta. Por ejemplo, el tiempo de activación HTTP
ASP.NET de la presente invención permite que un desarrollador de
aplicaciones desarrolle una aplicación HTTP y/o un desarrollador de
módulos desarrolle un módulo HTTP reutilizable para interceptar,
participar y/o modificar cada petición HTTP individual utilizando
aplicaciones escritas en cualquiera de los lenguajes .NET. Para
conseguir esto, la presente invención permite que un desarrollador
de aplicaciones HTTP y/o un desarrollador de módulos HTTP registre
procedimientos que requieren en etapas específicas durante el tiempo
de vida de una petición HTTP en una aplicación. La infraestructura
en la cual se registran los procedimientos es el reemplazo lógico
.NET de un filtro de Interfaz de Programa de Aplicación (API) del
servidor de web. Además, la presente invención permite que se cambie
la funcionalidad de ASP.NET. Por ejemplo, cuando ASP.NET no
proporciona suficiente funcionalidad en un área particular, un
desarrollador puede cambiar la infraestructura de aplicación
subyacente en un nivel que antes estaba reservado para un
subconjunto de desarrolladores que tenían más conocimiento de la
infraestructura subyacente.
La figura 3 muestra un diagrama de bloques
funcional de una aplicación de un sitio web que procesa una petición
HTTP utilizando un tiempo de activación ASP.NET HTTP de acuerdo con
la presente invención. La arquitectura del tiempo de activación de
proceso de petición ASP.NET HTTP proporciona una aplicación que crea
un objeto de Contexto HTTP de una petición HTTP y una línea
canalizada de sucesos que genera rellamadas durante el tiempo de
vida del objeto de Contexto HTTP (es decir, el tiempo de vida de la
petición HTTP). El objeto de Contexto HTTP representa lógicamente
una petición HTTP recibida encapsulando todas las propiedades que
están asociadas con la petición HTTP recibida y que son necesarias
para procesar la petición. Se utilizan las rellamadas por las
aplicaciones HTTP y por los Módulos HTTP que registran sucesos
cuando se inicializan los módulos. No se necesita un GLOBAL.ASAX
para registrar sucesos debido a que GLOBAL.ASAX contiene un código
de aplicación que está compilado al vuelo que puede incluir
manejadores de sucesos de cualquier suceso de línea canalizada. Los
manejadores de sucesos son automáticamente enganchados por
convenciones de nombre. Por ejemplo, cuando el código de aplicación
(que podría estar en GLOBAL.ASAX o precompilado) contiene un
procedimiento denominado Aplication_BeginRequest, el código de
aplicación se enganchará automáticamente a un suceso de petición
Begin. Estos sucesos podrían ser manejados, ya sea en módulos o en
código de aplicación. Preferiblemente, se utilizan módulos debido a
que los módulos son reutilizables entre varias aplicaciones. La
presente invención genera una instancia de la línea canalizada de
sucesos para procesar la pluralidad de peticiones HTTP que se
reciben.
La línea canalizada de sucesos proporciona una
arquitectura basada en sucesos que incluye una pluralidad de sucesos
de petición para generar una rellamada cuando se eleva el suceso de
petición. Cada módulo HTTP que está en registro con uno más sucesos
de petición realiza la instancia cuando se realiza la instancia de
la línea canalizada. De esta manera, un desarrollador de
aplicaciones puede desarrollar una aplicación que intercepta,
participa o modifica una petición como un suceso seleccionado
durante el tiempo de vida de la petición. De manera similar, un
desarrollador de módulos HTTP puede desarrollar un módulo HTTP que
intercepte, participe o modifique una petición en un suceso
seleccionado durante el tiempo de vida de la petición. Además, una
aplicación puede terminar el proceso adicional de la petición
llamando al procedimiento Response.End () dependiendo del suceso de
petición que se ha levantado. El último suceso ejecutado es siempre
un suceso EndRequest de manera que un módulo pueda efectuar una
operación de limpieza.
Haciendo referencia de nuevo a la figura 3, un
ordenador principal, que está ejecutando un programa, por ejemplo,
IIS (Servidor de Información Internet) 5 o IIS6, recibe una petición
HTTP (no mostrada en la figura 3). La petición recibida pasa al
tiempo de activación ASP.NET de la presente invención en donde la
petición es analizada de una manera bien conocida para crear una
encapsulación de objeto de Contexto HTTP encapsulando todas las
propiedades que están asociadas con la petición HTTP recibida y que
son necesarias para procesar la petición. Se realiza la instancia de
una y continua el proceso de la petición "hacia" el manejador
HTTP por medio de la línea canalizada del suceso (representada por
Request Events 301 y 302). Puesto que el tiempo de vida de la
petición avanza a través de la línea canalizada de sucesos, cada una
de las peticiones deterministas de sucesos es levantada. Los módulos
HTTP que se registran con un suceso de petición particular, o tienen
simas de sucesos contenidas en el Global.asax, son llamados cuando
se eleva el suceso de petición particular. Después de que el
manejador HTTP genere la página web requerida, el proceso continúa a
través de la línea canalizada de sucesos. Cuando todos los sucesos
pedidos se han levantado y todos los módulos HTTP han procesado la
petición, el ordenador principal responde a la petición enviando la
página web requerida (y procesada).
Se debe entender que, aunque solamente se
muestran en la figura 3 tres sucesos de petición 301, 302 y 303 y
tres módulos HTTP 304, 305 y 306, se podrían utilizar menos o más
sucesos de petición o menos o más módulos HTTP. Se debe entender que
más de un módulo HTTP podría registrarse con un suceso de petición
particular. La figura 3 muestra un registro ejemplar de módulos HTTP
304 - 306 con sucesos de petición 301 - 303. Una línea que se
extiende entre un módulo HTTP y un suceso de petición representa un
registro. En la figura 3, tres módulos ejemplares HTTP 304, 305 y
306 están en registros, cada uno de ellos con el suceso de petición
302, de manera que los tres módulos 304 - 306 procesan una petición
HTTP en base a la misma rellamada que es levantada por el suceso de
petición 302. Se muestra el módulo HTTP 305 estando en registro con
solamente un suceso de petición. Un módulo HTTP también podría estar
en registro con más de un suceso de petición, de manera que el
módulo HTTP reciba tantas rellamadas como módulos con los que está
en registro. Por ejemplo, la figura 3 muestra que el módulo HTTP 304
está en registro con los sucesos de petición 301 y 302. De manera
similar, el módulo HTTP 306 está en registro con los sucesos de
petición 302 y 303.
De acuerdo con la invención, la línea canalizada
de sucesos preferiblemente incluye diez sucesos de petición
deterministas y tres sucesos de petición no deterministas. Además,
los sucesos de petición deterministas pueden ser sucesos de petición
síncronos o asíncronos. Los sucesos deterministas (síncronos), en
orden preferido, incluyen:
Por supuesto, el orden de los sucesos de
petición deterministas puede ser reorganizado dependiendo de los
requisitos de la aplicación. Los sucesos de petición no
deterministas incluyen:
Se debe entender que pueden estar incluidos
menos, más y/o otros sucesos de petición deterministas y no
deterministas en la línea canalizada de sucesos para generar
rellamadas.
El suceso BeginRequest se eleva cuando se inicia
el procedimiento de una petición HTTP. El suceso
AuntheticatedRequest se eleva hasta un punto durante el tiempo de
vida de la petición HTTP en el cual la petición debe autentificar un
usuario. El suceso AuthorizeRequest se eleva cuando la aplicación
precisa determinar si un usuario está autorizado para recibir una
respuesta a una petición particular. El suceso ResolveRequestCache
se eleva cuando se requiere que la aplicación determine si todas las
respuestas a la petición han sido depositadas, con lo cual
posiblemente se reduzca el tiempo requerido para crear la página
requerida y devolver una respuesta al usuario peticionario. En este
punto, se crea el manejador HTTP. El suceso AcquireRequestState se
eleva para adquirir un estado adicional que está asociado con la
conexión del cliente, el listado del estado de la sesión ASP.NET.
Los módulos de personalización pueden, por ejemplo, utilizar el
suceso AcquireRequestState. El suceso AcquireRequestState se eleva
después de que el manejador HTTP se haya creado, de manera que el
módulo pueda examinar el manejador HTTP y decidir el tipo de estado
que se precisa. El suceso PreRequestHandlerExecute se eleva antes de
que el manejador de peticiones cree la página web requerida. De
manera similar, el suceso PostRequetHandlerExecute se eleva cuando
el manejador de peticiones ha completado la creación de la página
web requerida. El suceso ReleaseRequestState se eleva para
proporcionar a un módulo una oportunidad para guardar cualquier
cambio de estado adquirido en AcquireRequestState. Por ejemplo, un
módulo de estado de sesión puede utilizar el suceso
ReleaseRequestState para guardar los datos de la sesión. El suceso
UpdateRequestCache se eleva cuando, durante el proceso de la
petición, el caché debe ser actualizado para guardar la respuesta de
manera que la respuesta pueda encontrarse más tarde (por peticiones
HTTP posteriores de la misma página) que se encuentra en
ResolveRequestCache, si la respuesta puede ser en caché. Por ultimo,
el suceso EndRequest se eleva cuando el proceso de la petición se ha
completado.
El suceso Error no determinista se eleva cuando
se produce una condición de error, tal como cuando se genera una
condición de excepción que no es aceptada, por ejemplo, por el
código de aplicación. El suceso PreSendRequestContent se eleva
cuando el contenido empieza a ser enviado al cliente peticionario
antes de que el manejador HTTP procese la petición. De manera
similar, el suceso PreSendRequestHeader se eleva cuando se empiezan
a enviar los encabezamientos al cliente peticionario antes de que el
manejador HTTP procese la petición. El propósito de los sucesos de
petición PreSendRequestContent y PreSendRequestHeader es que otros
procedimientos puedan procesar el contenido y/o los encabezamientos
antes de que el contenido y/o los encabezamientos se envíen a la
aplicación del cliente peticionario. Como se ha indicado
previamente, en situaciones en las que un módulo funcional preenvía
el contenido y/o los encabezamientos antes de que el manejador HTTP
cree la página web requerida, no se ejecuta ningún proceso que se
efectúe por un módulo funcional que se encuentre posteriormente en
una secuencia de proceso convencional, debido a que el contenido y/o
los encabezamientos ya no se encontrarán disponibles para el
proceso.
Los sucesos de intercepción pueden utilizarse
efectivamente para envolver una aplicación con un código de manejo
de errores inteligente. En las situaciones en las que se produce
algo inesperado en una aplicación y se eleva el suceso de error, la
presente invención proporciona a un desarrollador la flexibilidad
para decidir como manejar la condición inesperada. Por ejemplo, el
estado actual de todos los usuarios en registros actualmente podría
registrarse en un fichero XML.file, además de registrar el error y
notificar al administrador del sistema. Cuando se rectifica la
condición de error y la aplicación empieza a ejecutarse normalmente,
la aplicación se puede diseñar para que entre en contacto con
cualquier usuario final caído debido a la condición de error
utilizando el fichero XML.file.
Los sucesos de intercepción se pueden
desarrollar utilizando ya sea el fichero de aplicaciones Global.asax
o pueden ser componentes precompilados que implementan la interfaz
IHTTPModule. El siguiente pseudo código, basado en el lenguaje de
programación de Microsoft VISUAL. BASIC establece un Global.asax
ejemplar:
Los módulos HTTP se crean como clases que
implementan la interfaz System.Web.IHttoModule y utilizan el
procedimiento INIT() para sincronizarse a cualquier suceso de
aplicación HTTP. El siguiente pseudo código es un ejemplo de un
módulo HTTP:
Un HTTPModule se compila y se despliega un .Net
Library DLL con el directorio "bin" bajo la aplicación vroot.
El httpModule se registra en config.web utilizando el pseudo código
ejemplar que sigue:
En el interior del proceso que está ejecutando
el proceso ASP.NET, se utilizan cadenas para ejecutar el código. Una
cadena es un recurso, y hay un número finito de cadenas que podrán
utilizar ASP.NET.
De acuerdo con la invención, ASP.NET crea y
gestiona un depósito de cadenas que expande y contrae el número de
cadenas a lo largo de la vida de una aplicación bajo el control de
un desarrollador de aplicaciones.
En algunos casos, el código de aplicación, tal
como la red I/O, potencialmente puede parar una cadena en un proceso
debido a que la cadena debe esperar (es decir, el proceso está
bloqueado) hasta que se complete esta operación de red I/O
relativamente más lenta. Cuando se bloquea una cadena, la cadena no
se puede utilizar para servir una petición, con lo cual se produce
una cola de peticiones y ejecuciones degradadas de una aplicación
debido a que todas las cadenas están bloqueadas mientras está
esperando, en lugar de estar realizando un trabajo. Para evitar una
situación de este tipo, la presente invención proporciona soporte
para los sucesos asíncronos, y soporte para los sucesos síncronos.
Como consecuencia, la presente invención soporta una aplicación que
efectúa una operación en una red en la cual la clase de red soporta
los puertos de finalización I/O, tal como un servicio de web proxy,
para facilitar I/O asíncrono.
La presente invención también soporta diez
sucesos de petición asíncronos que se corresponden respectivamente a
cada uno de los sucesos de petición deterministas síncronos. Los
sucesos de petición asíncronos se elevan en el siguiente orden:
\vskip1.000000\baselineskip
Para utilizar los sucesos asíncronos dentro de
global.asax, el prototipo de sucesos se debe crear manualmente, o
conectarse, en la línea canalizada de sucesos venciendo el
procedimiento INIT(), marcado como virtual en una aplicación HTTP,
con código dedicado. Por ejemplo, para conectarse con el suceso
AddOnBeginRequestAsync que es la versión asíncrona del suceso
OnBeginRequest, el procedimiento ASddOnBeginRequestAsync de
ApplicationInstance podría llamarse para que pasase en dos
manejadores de sucesos. El pseudo código ejemplar que sigue ilustra
esto:
\vskip1.000000\baselineskip
En el pseudo código ejemplar anterior, se crean
un nuevo BeginEvenHandler y un nuevo EndEventHandler pasando en dos
procedimientos de miembro (Bejín y End) que se llaman cuando se
ejecuta el suceso. Un desarrollador de aplicaciones también
necesitaría implementar ambos manejadores de sucesos. Por ejemplo,
el manejador Bejín() utiliza un caso de una clase a medida que se
define como SimpleAsyncResult, como se muestra en el pseudo código
ejemplar que sigue que se realizaría en otra cadena:
\vskip1.000000\baselineskip
\newpage
Una implantación ejemplar de una implantación de
clase de interfaz IAsyncResult se muestra en el siguiente pseudo
código:
El suceso End se puede utilizar para limpiar
cualquier fuente abierta, en caso necesario, como se ilustra por el
siguiente pseudo código ejemplar:
Debido a que ASP.NET soporta ambos sucesos de
aplicación síncronos y asíncronos, un desarrollador de aplicaciones
tiene más opciones para construir una aplicación. Codificando un
suceso para que sea asíncrono se libera la cadena de trabajador
ASP.NET para que sirva otras peticiones hasta que el código
ejecutado en la cadena asíncrona se complete, con lo cual se produce
una mejor capacidad de escalado debido a que las cadenas ASP.NET que
se utilizan para servir peticiones no están bloqueadas.
Aunque esta invención se ha descrito con
respecto a ejemplos específicos incluyendo preferiblemente modos
preferentes de realizar la invención, los especialistas en la
técnica apreciarán que hay numerosas variaciones y permutaciones de
los sistemas que se han descrito más arriba y de las técnicas que se
encuentran en el alcance de la invención, como se establece en las
reivindicaciones del apéndice.
Claims (20)
1. Un sistema en tiempo de ejecución de manejo
de petición de Protocolo de Transferencia de Hipertextos, HTTP, que
comprende:
un objeto de contexto que representa lógicamente
una petición HTTP que es recibida en una aplicación de un ordenador
principal desde una aplicación de cliente, encapsulando el objeto de
contexto al menos una propiedad asociada con la petición HTTP
recibida; y
una línea canalizada de sucesos que se
corresponden al objeto de contexto, teniendo la línea canalizada de
sucesos una pluralidad de sucesos de petición (301 - 303), teniendo
cada suceso de petición (301 - 303) un suceso correspondiente y
generando una rellamada cuando el suceso correspondiente al suceso
de petición es levantado y cuando al menos uno de una aplicación y
un módulo (304 - 306) está en registro asociado con el suceso de
petición (301 - 303), iniciando cada rellamada cada aplicación y
cada módulo (304 - 306) que está en registro asociado con el suceso
de petición (301 - 303) para procesar el objeto de contexto, en el
que la pluralidad de sucesos de petición (301-303)
tienen un orden determinista.
2. El sistema en tiempo de ejecución de manejo
de petición HTTP de acuerdo con la reivindicación 1, en el que al
menos uno de la pluralidad de sucesos de petición (301 - 303) es un
suceso de petición síncrono.
3. El sistema en tiempo de ejecución de manejo
de petición HTTP de acuerdo con la reivindicación 1, en el que al
menos uno de la pluralidad de sucesos de petición (301 - 303) es un
suceso de petición asíncrono.
4. El sistema en tiempo de ejecución de manejo
de peticiones HTTP de acuerdo con la reivindicación 1, en el que la
pluralidad de sucesos de petición (301 -303) incluye, además al
menos un suceso de petición que tiene un orden no determinista.
5. Un sistema en tiempo de ejecución de manejo
de petición de Protocolo de Transferencia de Hipertexto, HTTP, que
comprende:
Un objeto de contexto que representa lógicamente
una petición HTTP que es recibida en una aplicación principal desde
una aplicación cliente, encapsulando el objeto de contexto al menos
una propiedad asociada con la petición HTTP recibida; y
un línea canalizada de sucesos que se
corresponden al objeto de contexto, teniendo la línea canalizada de
sucesos una pluralidad de sucesos (301 - 303) de petición, teniendo
cada suceso (301 - 303) de petición un suceso correspondiente y
generando una rellamada cuando el suceso correspondiente al suceso
requerido (301 - 303) es levantado y cuando al menos una de entre
una aplicación y un módulo (304 - 306) está en registro asociado con
el suceso requerido (301 - 303), iniciando cada rellamada cada
aplicación y cada módulo (304 - 306) que está en registro asociado
con el suceso de petición (301 - 303), para procesar el objeto de
contexto, en el que la pluralidad de sucesos de petición (301 - 303)
tienen un orden no determinista.
6. El sistema en tiempo de ejecución de manejo
de petición HTTP de acuerdo con la reivindicación 5, en el que la
pluralidad de sucesos (301 - 303) de petición de orden no
determinista incluye un suceso de error.
7. El sistema en tiempo de ejecución de manejo
de peticiones HTTP de acuerdo con las reivindicaciones 1 ó 5, en el
que un módulo (304 - 306) está en registro asociado con una
pluralidad de sucesos de petición (301 - 303).
8. El sistema en tiempo de ejecución de manejo
de peticiones HTTP de acuerdo con las reivindicaciones 1 ó 5, en el
que la línea canalizada de sucesos es una ocasión separada de la
línea canalizada de sucesos de cada petición HTTP que se recibe en
la aplicación principal desde una aplicación cliente.
9. El sistema en tiempo de ejecución de manejo
de peticiones HTTP de acuerdo con las reivindicaciones 1 ó 5, en el
que el tiempo de ejecución de las peticiones HTTP analiza la
petición HTTP recibida para formar el objeto de contexto que
representa lógicamente la petición HTTP.
10. Un procedimiento para procesar una petición
de Protocolo de Transferencia de Hipertexto, HTTP, que comprende los
pasos de:
formar un objeto de contexto que representa
lógicamente una petición HTTP que es recibida en una aplicación
principal desde una aplicación de cliente, encapsulando el objeto de
contexto al menos una propiedad asociada con la petición
recibida;
formar una línea canalizada de sucesos
correspondientes al objeto de contexto, teniendo la línea canalizada
de sucesos una pluralidad de sucesos (301 - 303) de petición, y
teniendo cada suceso de petición un suceso correspondiente;
\newpage
generar una rellamada cuando el suceso
correspondiente a un suceso (301 - 303) de petición es levantado y
cuando al menos uno de entre una aplicación y un módulo (304 - 306)
está en registro asociado con el suceso (301 - 303) de petición;
e
iniciar cada aplicación y cada módulo (304 -
306) que está en registro asociado con el suceso (301 - 303) de
petición como respuesta a la rellamada para procesar el objeto de
contexto, en el que la pluralidad de sucesos de petición tiene un
orden determinista.
11. El procedimiento de acuerdo con la
reivindicación 10, que comprende, además, un paso de registrar un
módulo (304 - 306) asociado con al menos un suceso (301 - 303) de
petición seleccionado.
12. El procedimiento de acuerdo con la
reivindicación 10, que comprende, además, un paso de registrar una
pluralidad de módulos (304 - 306) asociados con un suceso (301 -
303) de petición seleccionado.
13. El procedimiento de acuerdo con la
reivindicación 10, en el que al menos uno de la pluralidad de
sucesos de petición (301 - 303) es un suceso (301 - 303) de petición
síncrono.
14. El procedimiento de acuerdo con la
reivindicación 10, en el que al menos uno de la pluralidad de
sucesos de petición (301 - 303) es un suceso (301 - 303) de petición
asíncrono.
15. El procedimiento de acuerdo con la
reivindicación 14, en el que la pluralidad de sucesos de petición
(301 - 303) incluye además al menos un suceso (301 - 303) de
petición que tiene un orden no determinista.
16. Un procedimiento para procesar una petición
de protocolo de transferencia de hipertexto, HHTP, que comprende los
pasos de:
formar un objeto de contexto que representa
lógicamente una petición HTTP que se recibe en una aplicación
principal desde una aplicación de cliente, encapsulando el objeto de
contexto al menos una propiedad asociada con la petición
recibida;
formar una línea canalizada de sucesos que se
corresponde al objeto de Contexto, teniendo la línea canalizada una
pluralidad de suceso (301 - 303) de petición, y teniendo cada uno de
los sucesos (301 - 303) de petición un suceso correspondiente;
generar una rellamada cuando el suceso que se
corresponde a un suceso (301 - 303) de petición es levantado y
cuando al menos uno de una aplicación y un módulo (304 - 306) está
en registro asociado con el suceso (301 - 303) de petición; e
iniciar cada aplicación y cada módulo (304 -
306) que está en registro asociado con el suceso (301 - 303) de
petición como respuesta a la rellamada para procesar el objeto de
contexto, en el que la pluralidad de sucesos (301 - 303) de petición
tienen un orden no determinista.
17. El procedimiento de acuerdo con la
reivindicación 16, en el que la pluralidad de sucesos de petición
(301 - 303) de orden no determinista incluye un suceso de error.
18. El procedimiento de acuerdo con la
reivindicación 10 ó 16, en el que el paso de formar la línea
canalizada de sucesos correspondiente al objeto de contexto forma la
línea canalizada de sucesos como una instancia separada de cada
petición HTTP recibida en la aplicación principal desde una
aplicación de cliente.
19. El procedimiento de acuerdo con la
reivindicación 10 ó 16, en el que el paso de formar el objeto de
contexto incluye un paso de analizar la petición HTTP recibida para
formar el objeto de contexto.
20. Un medio que es legible por un ordenador que
tiene instrucciones ejecutables por el ordenador, para ejecutar el
procedimiento de una de las reivindicaciones 10 a 19.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US894828 | 2001-06-29 | ||
US09/894,828 US7162723B2 (en) | 2001-06-29 | 2001-06-29 | ASP.NET HTTP runtime |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2263707T3 true ES2263707T3 (es) | 2006-12-16 |
Family
ID=25403577
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES02013186T Expired - Lifetime ES2263707T3 (es) | 2001-06-29 | 2002-06-14 | Gestion de eventos a distancia en una red por paquetes. |
Country Status (8)
Country | Link |
---|---|
US (2) | US7162723B2 (es) |
EP (1) | EP1271883B1 (es) |
JP (1) | JP4302942B2 (es) |
AT (1) | ATE326106T1 (es) |
DE (1) | DE60211254T2 (es) |
DK (1) | DK1271883T3 (es) |
ES (1) | ES2263707T3 (es) |
PT (1) | PT1271883E (es) |
Families Citing this family (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6985946B1 (en) * | 2000-05-12 | 2006-01-10 | Microsoft Corporation | Authentication and authorization pipeline architecture for use in a web server |
US6792607B1 (en) | 2000-05-18 | 2004-09-14 | Microsoft Corporation | Databinding using server-side control objects |
US6961750B1 (en) | 2000-05-18 | 2005-11-01 | Microsoft Corp. | Server-side control objects for processing client-side user interface elements |
US6757900B1 (en) | 2000-05-18 | 2004-06-29 | Microsoft Corporation | State management of server-side control objects |
US7013340B1 (en) * | 2000-05-18 | 2006-03-14 | Microsoft Corporation | Postback input handling by server-side control objects |
US6990653B1 (en) | 2000-05-18 | 2006-01-24 | Microsoft Corporation | Server-side code generation from a dynamic web page content file |
US7380250B2 (en) * | 2001-03-16 | 2008-05-27 | Microsoft Corporation | Method and system for interacting with devices having different capabilities |
US7493397B1 (en) * | 2001-06-06 | 2009-02-17 | Microsoft Corporation | Providing remote processing services over a distributed communications network |
US6898604B1 (en) | 2001-06-29 | 2005-05-24 | Microsoft Corporation | XML serialization and deserialization |
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 |
US7103810B2 (en) * | 2002-04-18 | 2006-09-05 | International Business Machines Corporation | System for the tracking of errors in a communication network enabling users to selectively bypass system error logs and make real-time responses to detected errors |
US20030233477A1 (en) * | 2002-06-17 | 2003-12-18 | Microsoft Corporation | Extensible infrastructure for manipulating messages communicated over a distributed network |
US7603430B1 (en) | 2002-07-09 | 2009-10-13 | Vignette Corporation | System and method of associating events with requests |
US7461120B1 (en) | 2002-07-09 | 2008-12-02 | Vignette Corporation | Method and system for identifying a visitor at a website server by requesting additional characteristic of a visitor computer from a visitor server |
US8117264B1 (en) | 2002-10-07 | 2012-02-14 | Yahoo! Inc. | Email system |
US7574653B2 (en) * | 2002-10-11 | 2009-08-11 | Microsoft Corporation | Adaptive image formatting control |
US9614772B1 (en) | 2003-10-20 | 2017-04-04 | F5 Networks, Inc. | System and method for directing network traffic in tunneling applications |
US7596782B2 (en) * | 2003-10-24 | 2009-09-29 | Microsoft Corporation | Software build extensibility |
US7890604B2 (en) * | 2004-05-07 | 2011-02-15 | Microsoft Corproation | Client-side callbacks to server events |
US20050251380A1 (en) * | 2004-05-10 | 2005-11-10 | Simon Calvert | Designer regions and Interactive control designers |
US9026578B2 (en) * | 2004-05-14 | 2015-05-05 | Microsoft Corporation | Systems and methods for persisting data between web pages |
US8065600B2 (en) | 2004-05-14 | 2011-11-22 | Microsoft Corporation | Systems and methods for defining web content navigation |
US7464386B2 (en) * | 2004-05-17 | 2008-12-09 | Microsoft Corporation | Data controls architecture |
US20060020883A1 (en) * | 2004-05-28 | 2006-01-26 | Microsoft Corporation | Web page personalization |
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 |
US7657618B1 (en) * | 2004-10-15 | 2010-02-02 | F5 Networks, Inc. | Management of multiple client requests |
US8429655B2 (en) * | 2005-04-29 | 2013-04-23 | Microsoft Corporation | System and method for asynchronous processing in page lifecycle |
US7721278B2 (en) * | 2005-05-27 | 2010-05-18 | Microsoft Corporation | Modular server architecture for multi-environment HTTP request processing |
US7971198B2 (en) * | 2005-06-08 | 2011-06-28 | Unoweb Inc. | Method for global resource sharing having logically linked means and integrated functionality for building solutions |
JP4852906B2 (ja) * | 2005-06-24 | 2012-01-11 | 富士ゼロックス株式会社 | 連携処理システム及び装置 |
US8418233B1 (en) | 2005-07-29 | 2013-04-09 | F5 Networks, Inc. | Rule based extensible authentication |
US8533308B1 (en) | 2005-08-12 | 2013-09-10 | F5 Networks, Inc. | Network traffic management through protocol-configurable transaction processing |
US8565088B1 (en) | 2006-02-01 | 2013-10-22 | F5 Networks, Inc. | Selectively enabling packet concatenation based on a transaction boundary |
US7962922B2 (en) * | 2006-08-28 | 2011-06-14 | Microsoft Corporation | Delivering callbacks into secure application areas |
US9106606B1 (en) | 2007-02-05 | 2015-08-11 | F5 Networks, Inc. | Method, intermediate device and computer program code for maintaining persistency |
US8230052B2 (en) * | 2007-02-14 | 2012-07-24 | Microsoft Corporation | Module diagnostic toolkit for client-server based protocols |
US20090276791A1 (en) * | 2008-05-01 | 2009-11-05 | Microsoft Corporation | Techniques for facilitating server callbacks |
US9832069B1 (en) | 2008-05-30 | 2017-11-28 | F5 Networks, Inc. | Persistence based on server response in an IP multimedia subsystem (IMS) |
US9130846B1 (en) | 2008-08-27 | 2015-09-08 | F5 Networks, Inc. | Exposed control components for customizable load balancing and persistence |
US9356991B2 (en) | 2010-05-10 | 2016-05-31 | Litera Technology Llc | Systems and methods for a bidirectional multi-function communication module |
US8645490B2 (en) | 2010-06-08 | 2014-02-04 | Microsoft Corporation | Web site implementation by mapping expression evaluation |
US8938721B2 (en) | 2010-07-21 | 2015-01-20 | Microsoft Corporation | Measuring actual end user performance and availability of web applications |
US9420022B2 (en) | 2010-12-17 | 2016-08-16 | Microsoft Technology Licensing, Llc | Media requests to counter latency and minimize network bursts |
US9946581B2 (en) | 2010-12-17 | 2018-04-17 | Microsoft Technology Licensing, Llc | Exposing server functions to browser code |
CN103179173B (zh) * | 2011-12-26 | 2018-03-02 | 腾讯科技(深圳)有限公司 | 超文本传输系统、客户端和超文本传输方法 |
US10025689B2 (en) | 2016-01-22 | 2018-07-17 | International Business Machines Corporation | Enhanced policy editor with completion support and on demand validation |
US10191911B2 (en) * | 2017-05-27 | 2019-01-29 | Plesk International Gmbh | Permanent website hosting on mobile devices |
CN111600920B (zh) * | 2019-02-21 | 2024-03-05 | 北京京东尚科信息技术有限公司 | 基于js的数据请求代理方法、装置、设备及可读存储介质 |
Family Cites Families (107)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US279151A (en) * | 1883-06-12 | Thill loop or tug | ||
US286133A (en) * | 1883-10-02 | Systems | ||
US3937925A (en) * | 1974-06-25 | 1976-02-10 | Ibm Corporation | Modular transaction terminal with microprocessor control |
US3956615A (en) * | 1974-06-25 | 1976-05-11 | Ibm Corporation | Transaction execution system with secure data storage and communications |
US4186871A (en) * | 1978-03-01 | 1980-02-05 | International Business Machines Corporation | Transaction execution system with secure encryption key storage and communications |
US4847785A (en) * | 1985-01-22 | 1989-07-11 | International Business Machines Corp. | Interactive display for trend or bar graph |
US4807154A (en) * | 1987-01-29 | 1989-02-21 | International Business Machines Corporation | Method for developing automatic replies in an interactive electronic calendaring system |
US4949300A (en) * | 1988-01-07 | 1990-08-14 | International Business Machines Corporation | Sharing word-processing functions among multiple processors |
US4979148A (en) * | 1988-12-09 | 1990-12-18 | International Business Machines Corporation | Increasing options in mapping ROM in computer memory space |
JPH0778728B2 (ja) * | 1990-12-21 | 1995-08-23 | インターナショナル・ビジネス・マシーンズ・コーポレイション | ヘルプ・パネルのアップロード処理自動化方法 |
US5517655A (en) * | 1991-04-26 | 1996-05-14 | Hewlett-Packard Company | Method for monitoring transactions in an object-oriented environment |
CA2061298C (en) * | 1992-02-17 | 1996-12-03 | Douglas J. Mortson | Method for detecting critical failures during the building of complex computer programs from source code parts |
US5388156A (en) * | 1992-02-26 | 1995-02-07 | International Business Machines Corp. | Personal computer system with security features and method |
US5918007A (en) * | 1992-05-27 | 1999-06-29 | International Business Machines Corporation | Trusted personal computer system with limited accessibility |
GB2269722A (en) * | 1992-08-14 | 1994-02-16 | Ibm | Communications device |
US5299315A (en) * | 1992-09-17 | 1994-03-29 | International Business Machines Corp. | Personal computer with programmable threshold FIFO registers for data transfer |
US5465332A (en) * | 1992-09-21 | 1995-11-07 | International Business Machines Corporation | Selectable 8/16 bit DMA channels for "ISA" bus |
JP2511233B2 (ja) | 1993-02-12 | 1996-06-26 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 画像表示装置 |
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 |
US5675520A (en) * | 1995-03-30 | 1997-10-07 | Microsoft Corporation | Method for extending a common user interface |
US5911068A (en) * | 1995-03-30 | 1999-06-08 | Microsoft Corporation | Container independent control architecture |
US5548340A (en) * | 1995-05-31 | 1996-08-20 | International Business Machines Corporation | Intelligent television receivers combinations including video displays, and methods for diversion of television viewers by visual image modification |
US5940847A (en) * | 1995-06-07 | 1999-08-17 | Microsoft Corporation | System and method for automatically correcting multi-word data entry errors |
US5956489A (en) * | 1995-06-07 | 1999-09-21 | Microsoft Corporation | Transaction replication system and method for supporting replicated transaction-based services |
US5745103A (en) * | 1995-08-02 | 1998-04-28 | Microsoft Corporation | Real-time palette negotiations in multimedia presentations |
US5732267A (en) * | 1995-08-02 | 1998-03-24 | Microsoft Corporation | Caching/prewarming data loaded from CD-ROM |
US5664228A (en) * | 1995-08-09 | 1997-09-02 | Microsoft Corporation | Portable information device and system and method for downloading executable instructions from a computer to the portable information device |
US5878141A (en) * | 1995-08-25 | 1999-03-02 | Microsoft Corporation | Computerized purchasing system and method for mediating purchase transactions over an interactive network |
US5732256A (en) * | 1995-08-30 | 1998-03-24 | Microsoft Corporation | CD-ROM optimization and stream splitting |
DE69621197T2 (de) | 1995-09-06 | 2002-11-07 | Seiko Epson Corp | Peripheriegerätsteuerungssystem mit einer Mehrheit von Objekten |
US5774670A (en) * | 1995-10-06 | 1998-06-30 | Netscape Communications Corporation | Persistent client state in a hypertext transfer protocol based client-server system |
US5793982A (en) * | 1995-12-07 | 1998-08-11 | International Business Machine Corporation | Validating an installation plan containing multiple transports and redirectors by adding data structure of the modules to the plan if the indicated transport and redirector modules are unavailable |
US5855020A (en) * | 1996-02-21 | 1998-12-29 | Infoseek Corporation | Web scan process |
DE19607971C2 (de) * | 1996-03-01 | 1998-01-02 | Gore W L & Ass Gmbh | Leitungskoppler |
US6038551A (en) * | 1996-03-11 | 2000-03-14 | Microsoft Corporation | System and method for configuring and managing resources on a multi-purpose integrated circuit card using a personal computer |
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 |
US5638176A (en) * | 1996-06-25 | 1997-06-10 | International Business Machines Corporation | Inexpensive interferometric eye tracking system |
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 |
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 |
CA2198189C (en) * | 1997-02-21 | 2001-05-29 | Ibm Canada Limited-Ibm Canada Limitee | Internet browser based data entry architecture |
US6334157B1 (en) * | 1997-03-11 | 2001-12-25 | Microsoft Corporation | Programmatically providing direct access to user interface elements of an application program |
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 |
JP3155489B2 (ja) * | 1997-04-16 | 2001-04-09 | インターナショナル・ビジネス・マシーンズ・コーポレ−ション | サスペンション・アセンブリ及びディスク・ドライブ装置 |
US6014637A (en) * | 1997-04-30 | 2000-01-11 | International Business Machines Corporation | Object oriented framework mechanism for fulfillment requirements management |
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 |
GB2327786B (en) | 1997-07-31 | 2002-04-03 | Ibm | Method and apparatus for strategic compilation of source programs into two or more target languages |
US6138150A (en) * | 1997-09-03 | 2000-10-24 | International Business Machines Corporation | Method for remotely controlling computer resources via the internet with a web browser |
US5940075A (en) | 1997-09-30 | 1999-08-17 | Unisys Corp. | Method for extending the hypertext markup language (HTML) to support enterprise application data binding |
US6253234B1 (en) * | 1997-10-17 | 2001-06-26 | International Business Machines Corporation | Shared web page caching at browsers for an intranet |
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 |
US6279151B1 (en) | 1998-01-20 | 2001-08-21 | International Business Machines Corporation | Method and apparatus for remote source code inclusion |
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 |
JPH11301049A (ja) * | 1998-03-27 | 1999-11-02 | Internatl Business Mach Corp <Ibm> | プリンタ、プリンタ・システム、印字属性を変更して印字をおこなう方法、プリンタを制御するプログラムを格納した記録媒体 |
US6167524A (en) * | 1998-04-06 | 2000-12-26 | International Business Machines Corporation | Apparatus and method for efficient battery utilization in portable personal computers |
US6101607A (en) * | 1998-04-24 | 2000-08-08 | International Business Machines Corporation | Limit access to program function |
US6185608B1 (en) | 1998-06-12 | 2001-02-06 | International Business Machines Corporation | Caching dynamic web pages |
US6121968A (en) * | 1998-06-17 | 2000-09-19 | Microsoft Corporation | Adaptive menus |
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 |
US6343148B2 (en) * | 1998-07-22 | 2002-01-29 | International Business Machines Corporation | Process for utilizing external handwriting recognition for personal data assistants |
US6205480B1 (en) | 1998-08-19 | 2001-03-20 | Computer Associates Think, Inc. | System and method for web server user authentication |
US6246422B1 (en) * | 1998-09-01 | 2001-06-12 | Sun Microsystems, Inc. | Efficient method for storing texture maps in multi-bank memory |
US6389414B1 (en) * | 1998-09-21 | 2002-05-14 | Microsoft Corporation | Internal database validation |
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 |
US6218958B1 (en) * | 1998-10-08 | 2001-04-17 | International Business Machines Corporation | Integrated touch-skin notification system for wearable computing devices |
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 |
US6487590B1 (en) * | 1998-10-30 | 2002-11-26 | Lucent Technologies Inc. | Method for controlling a network element from a remote workstation |
US6363352B1 (en) * | 1998-11-13 | 2002-03-26 | Microsoft Corporation | Automatic scheduling and formation of a virtual meeting over a computer network |
US6487665B1 (en) | 1998-11-30 | 2002-11-26 | Microsoft Corporation | Object security boundaries |
US6564251B2 (en) * | 1998-12-03 | 2003-05-13 | Microsoft Corporation | Scalable computing system for presenting customized aggregation of information |
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 |
US6353447B1 (en) * | 1999-01-26 | 2002-03-05 | Microsoft Corporation | Study planner system and method |
US6412008B1 (en) * | 1999-01-28 | 2002-06-25 | International Business Machines Corporation | System and method for cooperative client/server customization of web pages |
US6326957B1 (en) * | 1999-01-29 | 2001-12-04 | International Business Machines Corporation | System and method for displaying page information in a personal digital notepad |
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 |
US6354477B1 (en) * | 1999-06-08 | 2002-03-12 | International Business Machines Corporation | Mobile computing bag |
US6557038B1 (en) | 1999-06-30 | 2003-04-29 | International Business Machines Corporation | Method and apparatus for maintaining session states |
US6505238B1 (en) * | 1999-08-19 | 2003-01-07 | International Business Machines Corporation | Method and system for implementing universal login via web browser |
US7206805B1 (en) * | 1999-09-09 | 2007-04-17 | Oracle International Corporation | Asynchronous transcription object management system |
US6430575B1 (en) * | 1999-09-10 | 2002-08-06 | Xerox Corporation | Collaborative document management system with customizable filing structures that are mutually intelligible |
US6546516B1 (en) * | 1999-11-22 | 2003-04-08 | International Business Machines Corporation | Method and apparatus for measuring timing characteristics of message-oriented transports |
US6633416B1 (en) * | 2000-01-10 | 2003-10-14 | International Business Machines Corporation | Computer scanner for three-dimensional objects |
US6560618B1 (en) * | 2000-03-22 | 2003-05-06 | International Business Machines Corporation | On-demand generation, packaging, and delivery of archive files |
US6687735B1 (en) * | 2000-05-30 | 2004-02-03 | Tranceive Technologies, Inc. | Method and apparatus for balancing distributed applications |
US6622168B1 (en) | 2000-04-10 | 2003-09-16 | Chutney Technologies, Inc. | Dynamic page generation acceleration using component-level caching |
US7228346B1 (en) * | 2000-04-21 | 2007-06-05 | Sun Microsystems, Inc. | IDL event and request formatting for corba gateway |
US6990653B1 (en) * | 2000-05-18 | 2006-01-24 | Microsoft Corporation | Server-side code generation from a dynamic web page content file |
US6996809B2 (en) * | 2000-07-10 | 2006-02-07 | Microsoft Corporation | Method and apparatus for providing instrumentation data to an instrumentation data source from within a managed code environment |
US6732364B1 (en) * | 2000-07-14 | 2004-05-04 | International Business Machines Corporation | Mechanism for developing and dynamically deploying awarelets |
US6772408B1 (en) * | 2000-11-22 | 2004-08-03 | Hyperion Solutions Corporation | Event model using fixed-format text strings to express event actions |
US6606418B2 (en) * | 2001-01-16 | 2003-08-12 | International Business Machines Corporation | Enhanced compression of documents |
US20020120677A1 (en) * | 2001-02-23 | 2002-08-29 | Goward Philip J. | Method and apparatus for using a servlet to interoperate with server pages |
US6725219B2 (en) * | 2001-03-13 | 2004-04-20 | Seiko Epson Corporation | Internet presentation system |
CN100389428C (zh) * | 2001-10-24 | 2008-05-21 | Nik软件公司 | 用于利用图像基准点处理数字图像的方法和设备 |
-
2001
- 2001-06-29 US US09/894,828 patent/US7162723B2/en not_active Expired - Fee Related
-
2002
- 2002-06-14 EP EP02013186A patent/EP1271883B1/en not_active Expired - Lifetime
- 2002-06-14 AT AT02013186T patent/ATE326106T1/de active
- 2002-06-14 DK DK02013186T patent/DK1271883T3/da active
- 2002-06-14 PT PT02013186T patent/PT1271883E/pt unknown
- 2002-06-14 DE DE60211254T patent/DE60211254T2/de not_active Expired - Lifetime
- 2002-06-14 ES ES02013186T patent/ES2263707T3/es not_active Expired - Lifetime
- 2002-07-01 JP JP2002192640A patent/JP4302942B2/ja not_active Expired - Fee Related
-
2007
- 2007-01-09 US US11/621,435 patent/US7603676B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20070174845A1 (en) | 2007-07-26 |
ATE326106T1 (de) | 2006-06-15 |
EP1271883A2 (en) | 2003-01-02 |
DE60211254D1 (de) | 2006-06-14 |
EP1271883B1 (en) | 2006-05-10 |
DE60211254T2 (de) | 2006-09-14 |
US7162723B2 (en) | 2007-01-09 |
PT1271883E (pt) | 2006-09-29 |
JP2003076560A (ja) | 2003-03-14 |
EP1271883A3 (en) | 2004-03-24 |
US7603676B2 (en) | 2009-10-13 |
US20030018827A1 (en) | 2003-01-23 |
JP4302942B2 (ja) | 2009-07-29 |
DK1271883T3 (da) | 2006-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2263707T3 (es) | Gestion de eventos a distancia en una red por paquetes. | |
JP6092249B2 (ja) | 埋込まれたプロセス通信のための仮想チャネル | |
Schmidt et al. | Pattern-oriented software architecture, patterns for concurrent and networked objects | |
US8661407B2 (en) | Framework for programming embedded system applications | |
US8627269B2 (en) | Runtime library including a virtual file system | |
CN106663002B (zh) | Rest服务源代码生成 | |
JP2005504455A (ja) | 適応マルチプロトコル通信システム | |
EP2989539B1 (en) | Controlling runtime access to application programming interfaces | |
CN1659539A (zh) | 一种具有虚拟服务模块的网络系统 | |
US20210382846A1 (en) | Remote direct memory access for container-enabled networks | |
Goethals et al. | Fledge: Kubernetes compatible container orchestration on low-resource edge devices | |
TW200901039A (en) | Resource manager and method | |
EP3451341A1 (en) | Uploading a data record to a cloud repository | |
CN112256278A (zh) | 编译方法、装置、设备及存储介质 | |
Jansen et al. | The vendor-agnostic EMPAIA platform for integrating AI applications into digital pathology infrastructures | |
Shinde et al. | Modeling NICs with Unicorn | |
US10326648B2 (en) | Virtual use of electronic design automation tools | |
Svensson et al. | Pervasive applications through scripted assemblies of services | |
JP5371613B2 (ja) | サービス連携装置 | |
Röwekamp et al. | RenewKube: Reference net simulation scaling with Renew and Kubernetes | |
JP4979881B2 (ja) | 実行時多態性 | |
Czarnul | Integration of Services into Workflow Applications | |
US9692807B2 (en) | Mobile itinerant software agent carrying itinerary and data within | |
Cushing et al. | Towards a new paradigm for programming scientific workflows | |
Martins et al. | A full‐stack model proposal to remotely help the development of IoT sensor devices |