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
Application number
ES02013186T
Other languages
English (en)
Inventor
Scott D. Guthrie
Dmitry Robsman
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Application granted granted Critical
Publication of ES2263707T3 publication Critical patent/ES2263707T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

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.
Antecedentes de la invención
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.
Campo de la invención
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.
Antecedentes de la técnica anterior
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.
Breve sumario de la invención
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.
Breve descripción de los dibujos
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.
Descripción detallada de la 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:
1
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:
2
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:
3
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:
4
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:
5
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
6
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
7
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
8
\newpage
Una implantación ejemplar de una implantación de clase de interfaz IAsyncResult se muestra en el siguiente pseudo código:
9
El suceso End se puede utilizar para limpiar cualquier fuente abierta, en caso necesario, como se ilustra por el siguiente pseudo código ejemplar:
10
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.
ES02013186T 2001-06-29 2002-06-14 Gestion de eventos a distancia en una red por paquetes. Expired - Lifetime ES2263707T3 (es)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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软件公司 用于利用图像基准点处理数字图像的方法和设备

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