ES2301863T3 - Sistema y metodo para el procesamiento de mensajes optimizado dinamicamente. - Google Patents
Sistema y metodo para el procesamiento de mensajes optimizado dinamicamente. Download PDFInfo
- Publication number
- ES2301863T3 ES2301863T3 ES03785858T ES03785858T ES2301863T3 ES 2301863 T3 ES2301863 T3 ES 2301863T3 ES 03785858 T ES03785858 T ES 03785858T ES 03785858 T ES03785858 T ES 03785858T ES 2301863 T3 ES2301863 T3 ES 2301863T3
- Authority
- ES
- Spain
- Prior art keywords
- message
- manipulator
- optimized
- type
- messages
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- 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
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/30—Profiles
-
- 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]
-
- 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/2866—Architectures; Arrangements
- H04L67/30—Profiles
- H04L67/306—User profiles
-
- 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/12—Protocol engines
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
Un método para un procesamiento de mensajes optimizado que comprende los pasos de: recibir un mensaje (110); identificar el tipo de mensaje del mensaje recibido (120); determinar si se debería usar un manipulador optimizado para procesar mensajes del tipo de mensaje identificado (130); generar un manipulador optimizado para el tipo de mensaje identificado (140) si se ha determinado que se debería usar un manipulador optimizado, y no se dispone de un manipulador optimizado para el tipo de mensaje identificado; y procesar mensajes del tipo de mensaje identificado con el manipulador optimizado asociado con él (150) si se ha determinado que se debería utilizar un manipulador optimizado; caracterizado por el método que además comprende estadísticas registradas de evaluación del tipo de mensaje identificado para determinar si se debería generar un manipulador optimizado y/o usar para procesar mensajes del tipo de mensaje identificado.
Description
Sistema y método para el procesamiento de
mensajes optimizado dinámicamente.
El campo del invento se refiere a las
comunicaciones. Más específicamente, el invento se refiere a una
técnica para optimizar dinámicamente el procesamiento de
mensajes.
Se está haciendo cada vez más común para los
sistemas de servidores el interactuar uno con otro en redes, tales
como Internet y redes de área locales, para proporcionar soluciones
de cálculo distribuidas y flexibles. Tales sistemas de servidores
utilizan una variedad de lenguajes de programación diferentes,
algunos tienen un formato de mensaje de bajo nivel (por ejemplo,
representación binaria), en tanto que otros lenguajes usan formatos
de mensaje de alto nivel y más complejos (por ejemplo, formatos de
mensajes basados en XML y SOAP).
Mientras que los lenguajes de alto nivel pueden
proporcionar técnicas más flexibles para transportar el contenido y
la estructura de los mensajes, tales formatos tienden a necesitar
mensajes largos y complejos (éste es especialmente el caso de las
normas basadas en XML). A medida que aumenta la longitud y la
complejidad del mensaje también aumenta el tiempo de procesamiento
necesario para tratar tales mensajes (lo que incluye, entre otras
cosas, el tiempo necesario para convertir el mensaje en un formato
adecuado para uso por la aplicación propuesta). Por lo tanto, los
formatos de mensaje complejos y largos aumentan las limitaciones
(por ejemplo costes, necesidades de ancho de banda y de tráfico,
etc) asociadas con los despliegues a amplia escala de estructuras
basadas en tales formatos. Estas limitaciones son especialmente
problemáticas en despliegues amplios con base en Internet, en donde
es necesario procesar millones de mensajes en cortos períodos de
tiempo.
Actualmente existen varios paquetes de soporte
lógico que pueden usarse para tratamiento de mensajes que pueden
procesar óptimamente un número limitado de tipos de mensajes
especiales siempre que, sin embargo, estos casos especiales sean
identificados por adelantado al procesamiento. La mayor parte de los
programas de manipulación incluyen típicamente un conjunto de
funciones dentro de una biblioteca de programas que convierte los
mensajes de entrada del formato del mensaje en las representaciones
internas que son usadas por una aplicación. Estas bibliotecas de
programas contienen manipuladores que están optimizados para
realizar el análisis de ciertos tipos de mensajes y construir la
representación interna en un formato útil para la aplicación. Con
tales técnicas convencionales de manipulación de mensajes las
bibliotecas de programas están preparadas por adelantado, de forma
que típicamente cubren solamente un número limitado de casos
especiales con respecto a los diferentes formatos de mensajes. Sin
embargo, cuando se recibe un mensaje para el que no existe un
manipulador optimizado (tal como es el caso de un servidor de
aplicaciones que actúa como una plataforma genérica para diferentes
tipos de aplicación, que tienen una funcionalidad común compartida)
se utiliza un manipulador genérico que típicamente no es tan
eficiente como un manipulador optimizado. Como consecuencia, tales
sistemas utilizan un conjunto de manipuladores optimizados que se
estima que corresponden con ciertos tipos de tráfico de mensajes
esperado, y estas estimaciones no siempre reflejan de forma exacta
los tipos de mensajes recibidos más a menudo. Por lo tanto, las
técnicas convencionales son incapaces de maximizar el número de
mensajes que son procesados con manipuladores optimizados antes que
con manipuladores genéricos, lo que conduce a un procesamiento
ineficaz.
Con los protocolos de los Servicios Web de XML
se pueden usar manipuladores genéricos, o analizadores para
procesar cualquier tipo de documento XML y también obtener e
interpretar típicamente el XML Schema de un mensaje durante el
tiempo de ejecución. Más específicamente, hay dos tipos principales
de analizadores genéricos que están incorporados frecuentemente en
las bibliotecas de programas. Manipuladores genéricos condicionados
por eventos (por ejemplo, manipuladores basados en Simple API para
XML usados para configurar **** Java) procesan el documento y
llaman a algunas funciones en la aplicación cada vez que encuentran
un nuevo elemento, un nuevo atributo u otra característica de
identificación dentro de un mensaje. La aplicación es responsable de
interpretar cada evento y decidir cómo procesarlo. Con esta
disposición la mayoría del procesamiento y análisis de los mensajes
entrantes son manipulados por la aplicación debido a que el
manipulador genérico solamente hace poco más que un análisis del
léxico. Con el fin de que esta situación sea eficiente, el
conocimiento sobre el formato del mensaje tiene que ser incorporado
en el diseño de la aplicación subyacente. Este requerimiento reduce
en gran medida la flexibilidad del tipo de mensajes que van a ser
recibidos por la aplicación subyacente y genera costes de
programación
adicionales.
adicionales.
Otros manipuladores genéricos usados en conexión
con documentos XML construyen una representación interna del
documento XML usando una estructura libre tal como un Modelo de
Objetos de Documento (DOM). Se puede entonces acceder a esta
representación interna mediante la aplicación que recibe el
contenido del mensaje que utiliza peticiones de búsqueda de
elementos específicos o atraviesa el árbol obteniendo la lista de
vástagos para cada nodo del árbol.
En este caso, la aplicación no necesita ser
recopilada para reflejar toda la estructura del documento sino más
bien sólo accede a los elementos de interés.
Además de los manipuladores genéricos, una
típica biblioteca de programas de documentos XML incorporará también
analizadores específicos que están designados para XML Schema
específicos y son típicamente generados en o alrededor del tiempo
de recopilación de la aplicación subyacente (que están supuestamente
optimizados para el tipo de mensajes que se espera recibir). Estos
manipuladores solamente pueden analizar y validar los documentos
que incorporan un XML Schema específico. Al igual que los
manipuladores genéricos, un manipulador optimizado puede o no puede
construir una representación interna como un árbol DOM (que a menudo
está oculto al programador de la aplicación debido a que se espera
que la aplicación use algunas funciones específicas del esquema
generadas juntamente con el analizador para acceder a partes de los
datos). Un enfoque que utiliza un árbol DOM es útil para acelerar
el procesamiento de cierto tipo de documentos ya que la aplicación
solamente tiene que pedir el árbol DOM para partes de los
documentos de interés. Mientras que esto simplifica el trabajo al
programador de la aplicación, es relativamente ineficaz, ya que el
XML Schema tiene que ser interpretado en el tiempo de ejecución.
Esto especialmente consume tiempo si el manipulador tiene que
validar un árbol DOM de datos XML. Además, la asignación de
representaciones internas proporcionadas en tal árbol DOM no es
necesariamente eficiente debido a que la mayoría de los
manipuladores asignan dinámicamente los vástagos de cada nodo como
un documento regular.
Se puede apreciar que un uso más eficaz del XML
Schema podría asignar más eficazmente las estructuras de los datos
internos, basado en limitaciones que especifican el número y tipo de
vástagos de cada nodo. Además, si la representación interna no es
óptima, entonces es probable que las funciones que piden el árbol no
sean necesariamente óptimas. Tales ineficiencias pueden ser
evitadas o reducidas generando un manipulador nuevo optimizado en
tiempo de ejecución para el esquema específico usado por los
documentos, sin embargo, las tecnologías convencionales no
proporcionan sobre la marcha tal generación de manipuladores
optimizados. Las limitaciones impuestas por el Schema en el
documento pueden ser entonces recopiladas directamente en el código
del analizador específico en vez de tener que ser interpretadas
cada vez. Además, la representación interna puede ser optimizada de
acuerdo con la estructura esperada del documento definido por el
Schema.
El documento WO 01/46837 A2 se refiere a un
enfoque de transformación de alto nivel para convertir formatos de
datos en el contexto de aplicaciones de red. En este contexto, se
genera dinámicamente un traductor mediante un dispositivo
recopilador traductor.
Basado en lo anterior se puede observar que
sigue existiendo una necesidad de una disposición en la que los
manipuladores de procesamiento de mensajes estén optimizados para el
tipo actual de tráfico dentro de un flujo de mensajes dinámicamente
cambiante.
Esta necesidad se satisface de acuerdo con el
invento mediante un método de acuerdo con la reivindicación 1, un
sistema de procesamiento de acuerdo con la reivindicación 14 y un
producto de programa de ordenador de acuerdo con la reivindicación
18.
El presente invento proporciona, en una
realización, un método para la optimización del procesamiento de
mensajes que comprende los pasos de recibir un mensaje, identificar
el tipo de mensaje del mensaje recibido, determinar si se debería
usar un manipulador optimizado para procesar los mensajes del tipo
de mensaje identificado, generar un manipulador optimizado para el
tipo de mensaje identificado si se ha determinado que se debería
usar un manipulador optimizado, y si un manipulador optimizado no
está disponible para el tipo de mensaje identificado, y procesar
los mensajes del tipo de mensaje identificado con el manipulador
optimizado con él si se ha determinado que se debería utilizar un
manipulador optimizado.
El presente invento está también incorporado en
un método para optimizar el procesamiento de mensajes. El método
comienza con la recepción de un mensaje (por ejemplo, a través de
una red o una aplicación interna). El mensaje recibido es analizado
a continuación para identificar su tipo de mensaje (analizando
indicadores tales como identificadores dentro del mensaje tal como
encabezamientos y espacios de nombres, o analizando otros criterios
tales como la semántica de los datos contenidos dentro del mensaje).
Una vez que se ha determinado el tipo de mensaje, el método decide
si se debería usar un manipulador optimizado para procesar mensajes
del tipo de mensaje identificado. El manipulador optimizado puede
ser seleccionado de entre uno del conjunto preexistente de
manipuladores optimizados para el tipo de mensaje identificado, o si
previamente no se ha generado un manipulador optimizado adecuado
(o, por el contrario, no está disponible) para el tipo de mensaje
identificado, entonces se genera un manipulador optimizado para el
tipo de mensaje identificado (usando, por ejemplo, métodos similares
al Apache AXIS o Castor XML, dependiendo del formato del mensaje).
El método concluye con el procesamiento de mensajes del tipo de
mensaje identificado con un manipulador optimizado asociado con él.
Este procesamiento puede comprender analizar el mensaje o, por el
contrario, convertirlo o validarlo en un formato o representación
interna que pueda ser usado por una aplicación prevista para recibir
los mensajes.
Se registran las estadísticas en cada mensaje.
Esta información registrada se utiliza para determinar si se
debería generar y/o usar un manipulador optimizado para procesar
mensajes del tipo de mensaje identificado. Esta determinación puede
basarse en las estadísticas de ocurrencia de los diferentes tipos de
mensajes o en una comparación entre las estadísticas de
procesamiento de los diferentes tipos de mensajes identificados que
usan un manipulador optimizado en comparación con un manipulador
genérico. Como puede no haber datos estadísticos para cualquiera de
los dos, el manipulador optimizado o el manipulador genérico, las
estadísticas de procesamiento pueden ser estimadas como basadas en
las estadísticas de procesamiento esperadas (aunque preferiblemente
están basadas en las estadísticas de procesamiento medidas
reales).
Las estadísticas que incluyen las estadísticas
de ocurrencia, las estadísticas de procesamiento u otras
estadísticas pueden estar basadas en una variedad de métricas
relacionadas con el funcionamiento y el uso u otros criterios
definidos por el usuario. Por ejemplo, un manipulador optimizado
puede ser seleccionado para procesar un cierto tipo de mensaje si
el paso de comparación determina que el manipulador genérico
requiere un cincuenta por ciento más de tiempo que el manipulador
optimizado para procesar ciertos tipos de mensajes. La determinación
de si usar un manipulador optimizado (y de generar uno si uno no ha
sido generado todavía) para un tipo de mensaje particular podría
estar basada en estadísticas relacionadas con qué frecuencia es
procesado un tipo de mensaje o el intervalo de tiempo, ya que el
último mensaje del mismo tipo fue procesado.
El método puede también incluir el paso de
determinar si se debería usar un manipulador genérico para procesar
mensajes del tipo de mensaje identificado. En algunos casos, el
método puede determinar que un manipulador genérico es más
apropiado para procesar un cierto tipo de mensaje (en un momento
determinado), por lo que los mensajes de tal tipo son procesados
con un procesador genérico.
A pesar de que la generación de un
manipulador/analizador consume tiempo en algunos recursos,
generalmente tiene un efecto menor sobre los tiempos de
procesamiento. Para verificar que los manipuladores optimizados son
más eficaces que un manipulador genérico el sistema puede
simplemente reunir estadísticas sobre los tiempos de
análisis/procesamiento para un tipo dado de documentos. Si las
estadísticas muestran que el analizador/procesador optimizado para
un tipo de datos funciona peor que un analizador o manipulador
genérico, el analizador optimizado puede simplemente ser abandonado
y se usará un analizador genérico para este tipo de mensajes. Esta
comprobación asegura que el sistema funcionará, como mínimo, al
menos tan efectivamente como un analizador o manipulador
genérico.
Si los recursos del ordenador no fueran un
factor limitativo, el caso óptimo sería generar un manipulador de
mensajes especial para cada tipo de mensaje que pudiera ser
recibido.
Sin embargo, con la mayoría de los sistemas de
ordenadores los recursos siguen siendo un factor limitativo y por
lo tanto el presente invento en algunas realizaciones genera
manipuladores optimizados solamente para aquellos casos que están
designados como de máxima prioridad o, en caso contrario, tipos de
mensajes frecuentemente usados. Esta designación de prioridad puede
estar basada en varios criterios de usuario tales como los más
recientemente usados, los más recientemente usados, etc.
En una realización específica el método puede
incluir además el paso de determinar si un tipo de mensaje similar
ya ha sido procesado y, basándose en esta determinación, el método
además determina si no existe un manipulador optimizado, entonces
el método puede determinar si generar un manipulador optimizado para
el tipo de mensaje identificado. Sin embargo, si un mensaje similar
no ha sido previamente procesado por el método, y por tanto no
existen medidas reales con respecto a las características del tipo
de mensaje identificado (y el método no ha estimado las
estadísticas de procesamiento), entonces se puede seleccionar un
manipulador genérico para procesar los mensajes del tipo de mensaje
identificado (y los datos característicos del tipo de mensaje
identificado que está siendo procesado por un manipulador genérico
serán registrados en la base de datos de estadísticas o biblioteca
de programas para uso en posteriores decisiones con respecto al tipo
de manipulador usado para procesar futuros mensajes del mismo
tipo). Por el contrario, se puede seleccionar un manipulador
optimizado para procesar los mensajes del tipo de mensaje
identificado.
Si se ha determinado generar un manipulador
optimizado durante el tiempo de ejecución, el método puede también
realizar una determinación sobre si hay suficiente espacio de
almacenamiento o capacidades de procesamiento para generar un nuevo
manipulador optimizado. Si no hay espacio suficiente, se pueden
borrar uno o más manipuladores optimizados, siempre que su borrado
tenga como resultado un espacio o unas capacidades de procesamiento
adecuados. La decisión de qué manipulador borrar puede estar basada
en una variedad de criterios, tales como las estadísticas de uso
general de manipuladores particulares, último manipulador usado, etc
(y en algunas disposiciones, los manipuladores tienen prioridad de
acuerdo con estos u otros criterios, de forma que solamente se
borran los manipuladores con baja prioridad).
El método puede también incorporar el paso de
asociar ciertos tipos de mensajes con tipos específicos de
manipuladores optimizados. Esta asociación puede resultar de llenar
una biblioteca de programas o base de datos asociando los tipos de
mensajes con los manipuladores específicos. La base de datos puede
ser actualizada a intervalos predeterminados tales como después de
cada mensaje o cada diez minutos, de forma que el paso que
determina si usar un manipulador optimizado o un manipulador
genérico está provisto de datos de características de procesamiento
actuales para cada tipo de manipulador para cada tipo de
mensaje.
En algunas realizaciones el método puede también
incluir los pasos de monitorizar el uso de los mensajes por la
aplicación que recibe los mensajes y procesar selectivamente partes
de los mensajes basándose en el uso monitorizado por la aplicación.
Con esta disposición, solamente las partes identificadas como usadas
por encima de un cierto umbral (y por lo tanto priorizadas) son
seleccionadas para procesamiento. Esta técnica de procesamiento
selectivo es particularmente útil para manipular mensajes largos, en
los que solamente se utilizan partes por la aplicación.
Alternativamente, se pueden utilizar criterios diferentes para
determinar qué partes del mensaje hay que procesar basándose en
otros criterios de usuario tales como la longitud del mensaje, etc.
Si una parte de un mensaje recibido no es seleccionada para
procesamiento, el procesamiento de tal parte se retrasa hasta que
la aplicación posteriormente requiera la parte del mensaje (lo que
no necesariamente puede ocurrir). Los pasos de monitorización y
procesamiento selectivo pueden usarse también en un método
independiente de la selección de un manipulador optimizado o
genérico ya que puede apreciarse que el procesamiento selectivo
puede aumentar mucho la eficacia del procesamiento del mensaje
independientemente del tipo de manipulador de mensajes usado.
El presente invento puede también ser
incorporado en un sistema que está configurado para realizar
algunos, si no todos los pasos de los métodos descritos
anteriormente. Una realización del sistema para optimizar el
procesamiento de mensajes incluye un módulo de recepción de mensajes
para recibir un mensaje, y un módulo de identificación del tipo de
mensaje para identificar el tipo de mensaje del mensaje recibido. Un
módulo de selección de manipulador determina si un manipulador
optimizado debería ser usado para procesar mensajes del tipo de
mensaje identificado. Una vez que se ha determinado que se debería
utilizar un manipulador optimizado, un módulo generador de
manipulador optimizado genera un manipulador optimizado para el tipo
de mensaje identificado si todavía no se ha generado un manipulador
optimizado apropiado. El sistema también incluye un primer módulo
del procesador para procesar mensajes del tipo de mensaje
identificado con el manipulador optimizado asociado con el tipo del
mensaje (si ha sido generado durante el tiempo de ejecución o ha
sido generado previamente) si se ha determinado que se debería
utilizar un manipulador optimizado.
Las realizaciones del sistema del presente
invento pueden también hacer que el módulo de selección del
manipulador sea configurado para determinar que un manipulador
genérico debería procesar mensajes del tipo de mensaje identificado
si no se ha utilizado un manipulador optimizado. En tales
disposiciones el sistema debería incluir también un segundo módulo
procesador para procesar mensajes del tipo de mensaje identificado
con un manipulador genérico si se ha determinado que se debería
utilizar un manipulador genérico.
El sistema incluye un módulo de registro que
registra estadísticas (tales como estadísticas de uso y de
procesamiento, etc) para cada tipo de mensaje. Las características
pueden ser usadas en conexión con un módulo de comparación que
compara estadísticas de procesamiento reales o estimadas de mensajes
similares manipulados con un manipulador genérico para estadísticas
de procesamiento reales o estimadas de mensajes del mismo tipo
manipulados con un manipulador optimizado. Esta comparación puede
ser usada posteriormente por el módulo de selección del manipulador
para determinar si usar un manipulador genérico o uno
optimizado.
El sistema puede también facilitar el
procesamiento selectivo de mensajes basado en el uso u otras
estadísticas relativas a cómo interactúan los mensajes con la
aplicación que reciben. Tal sistema podría usarse en conexión con
las otras variantes del presente invento, o independientemente como
un filtro para determinar selectivamente qué partes de los mensajes
procesar. El sistema incluiría una unidad de monitorización para
monitorizar el uso de los mensajes por la aplicación que recibe los
mensajes, y un módulo de selección de procesamiento para procesar
selectivamente las partes del mensaje basadas en el uso monitorizado
por la aplicación (o requerimientos de uso estimados o esperados de
la aplicación). El módulo de procesamiento puede ser configurado
para retrasar el procesamiento de ciertos mensajes durante períodos
predefinidos de tiempo o cuando exista un requerimiento para
aquellas partes de los mensajes que no hayan sido previamente
procesadas. También se puede observar que el módulo de
monitorización y el módulo de procesamiento selectivo pueden
proporcionar características de procesamiento mejoradas
independientemente de si los manipuladores son generados durante el
tiempo de ejecución o son generados en el momento de recopilación
de la aplicación.
El presente invento puede también ser realizado
en un producto de programa de ordenador que puede ser almacenado en
un medio registrado utilizable por un ordenador que tiene
incorporado en él un código legible por un ordenador para
procesamiento de mensajes optimizado. El producto de código de
ordenador que incluye partes de código de programa legibles por
ordenador para recibir un mensaje de una red o de una aplicación
interna, partes de código de programa legibles por ordenador para
identificar el tipo de mensaje del mensaje recibido, partes de
código de programa legibles por ordenador para determinar si se
debería usar un manipulador optimizado para procesar los mensajes
del tipo de mensaje identificado, partes de código de programa
legibles por ordenador para generar un manipulador optimizado para
mensajes del tipo de mensaje identificado si se ha determinado que
se debería usar un manipulador optimizado para procesar mensajes del
tipo de mensaje identificado, y si no se hubiera generado
previamente un manipulador optimizado para mensajes del tipo de
mensaje identificado, y partes del código de programa legibles por
ordenador para procesar mensajes del tipo de mensaje identificado
con el manipulador optimizado asociado con él si se ha determinado
que se debería utilizar un manipulador optimizado.
Otra variante del presente invento facilita que
un sistema comprenda un procesador de ordenador y una memoria
acoplada al procesador, en el que la memoria está codificada con uno
o más programas que pueden realizar un método para optimizar el
procesamiento de mensajes. El método puede incluir todas o partes
selectivas del invento descrito aquí.
El presente invento puede ser utilizado con una
variedad de formatos de mensaje. Los mensajes pueden contener
varios identificadores únicos dentro de su cuerpo, por ejemplo, la
declaración de esquema o de espacio de nombre de un documento XML.
En otros casos, puede haber información contenida dentro de un
formato de un mensaje que identifica el tipo de mensaje subyacente.
Por ejemplo, con mensajes HTTP, el encabezamiento de un mensaje
podría identificar el tipo de mensaje. Además, si un mensaje
comienza con una solicitud POST, entonces se identifica un mensaje
como que tiene una codificación que pertenece a una solicitud POST.
El invento puede también determinar qué tipo de formato está dentro
de un mensaje basado en una estadística de consumo de recursos. Sin
embargo, en algunas disposiciones se pueden consumir más recursos
del sistema para identificar el formato como un mensaje que después
son recuperados mediante la manipulación optimizada.
En lo que sigue el invento se describirá
haciendo referencia a realizaciones ejemplares ilustradas en las
Figuras, en las que:
la Figura 1 es un diagrama de flujos del proceso
de acuerdo con una primera realización del invento;
la Figura 2 es un diagrama de flujos del proceso
de acuerdo con una segunda realización del invento;
la Figura 3 es un diagrama de flujos del proceso
de acuerdo con una tercera realización del invento;
la Figura 4 es un diagrama de flujos del proceso
de acuerdo con una cuarta realización del invento;
la Figura 5 es una ilustración esquemática de
una quinta realización del invento; y
la Figura 6 es una ilustración esquemática de
una sexta realización del invento.
En la descripción que sigue, con fines
explicativos y no limitativos, se exponen detalles específicos tales
como secuencias particulares de pasos y varias configuraciones, etc
con el fin de proporcionar una comprensión total del presente
invento. Será evidente a un experto en la materia que el presente
invento puede ser puesto en práctica en otras realizaciones que se
apartan de estos detalles específicos que incluyen una disposición
amplia de tecnologías de mensajería. Además, estos expertos en la
materia apreciarán que las funciones explicadas aquí más adelante
pueden ser aplicadas usando un soporte lógico que funciona en
conjunción con un microprocesador programado u ordenador de uso
general, y/o usando un circuito integrado de aplicación específica
(ASIC). También se observará que mientras el presente invento está
principalmente descrito como un método, también puede ser
incorporado en un producto de programa de ordenador así como un
sistema que comprende un procesador de ordenador y una memoria
acoplada al procesador, en el que la memoria está codificada con uno
o más programas que pueden realizar los métodos explicados
aquí.
Como se describirá posteriormente con más
detalle, el presente invento puede ser más útil en conexión con la
manipulación (procesamiento, análisis, validación, conversión, etc)
de formatos de mensaje complejos tales como el SOAP u otros
formatos basados en XML, si por una plataforma o servidor de
aplicaciones u otro, así como otros formatos en los que el tipo de
documento o al menos una parte del documento puede ser identificado
fácilmente. El presente invento también proporciona ventajas
significativas en relación con el procesamiento de mensajes o
sistemas de manipulación que usan un manipulador o procesador
genérico que es independiente de la aplicación que usa el contenido
del mensaje y que adquiere conocimiento sobre el formato, tipo, y
estructura de los mensajes durante el tiempo de ejecución.
Con referencia a la Figura 1, se ilustra un
método 100, que comienza en el paso 110, con la recepción de un
mensaje por una unidad de procesamiento de mensaje de una aplicación
acoplada a la unidad de procesamiento a través de una red o
internamente. El mensaje recibido puede entonces ser examinado, en
el paso 120, para determinar su tipo de mensaje mediante
indicadores dentro del mensaje tal como el XML Schema (de forma que
posteriores determinaciones puedan estar basadas en este tipo de
mensaje). Preferiblemente, la identificación del tipo de mensaje se
realiza de forma rápida y eficiente usando técnicas conocidas en la
materia. Basándose en el tipo de mensaje, en el paso 130, el método
determina entonces si es apropiado usar un manipulador optimizado
para procesar el mensaje. Esto podría basarse en factores tales como
el tiempo de procesamiento previsto si se usara un manipulador
optimizado en comparación con un manipulador no optimizado. Si no
existe un manipulador optimizado para el tipo de mensaje, el paso
140 facilita la generación de un manipulador optimizado durante el
tiempo de ejecución (esto es, a medida que se están recibiendo los
mensajes). El método concluye, en el paso 150, con el procesamiento
del mensaje usando un manipulador optimizado asociado con el tipo de
documento (éste puede ser el manipulador optimizado generado
nuevamente o un manipulador optimizado generado previamente
accesible a través de una biblioteca de programas o base de datos).
El paso de procesamiento puede incluir el análisis y validación de
un mensaje u otras acciones, de forma que el mensaje esté en un
formato accesible y entendible por la aplicación que se recibe.
El manipulador optimizado puede ser generado 140
durante el tiempo de ejecución usando conjuntos de programas
usualmente disponibles tales como el Apache AXIS de código abierto o
un marco de unión de bases de datos tal como el Castor XML. Por
ejemplo, los manipuladores optimizados pueden ser aplicados en
lenguajes de ordenador tales como Java, C#, C, C++. Se pueden
utilizar otros programas o rutinas dependiendo de la puesta en
práctica de la aplicación, de los tipos de mensajes que se
procesan, etc.
La Figura 2 ilustra un método 200 que, igual que
el método de la Figura 1, comienza, en el paso 210, con la
recepción de un mensaje 210 por una unidad de procesamiento de
mensajes, y una determinación, en el paso 220, del tipo de mensaje
recibido. En el paso 230, el método se aparta del método anterior en
que determina si usar un manipulador optimizado o un manipulador
genérico para procesar el mensaje recibido. Esta determinación
puede estar basada en una variedad de factores que incluyen
características de procesamiento para tipos de mensajes similares
(como se describe más adelante) o puede ser el resultado de un
agente de predicción inteligente (por ejemplo, una red neural,
etc). Si se selecciona un manipulador optimizado, en el paso 240, se
genera un manipulador optimizado si todavía no existe ninguno para
tal tipo de mensaje, y en el paso 250, se procesa el mensaje usando
el manipulador optimizado. Por el contrario, si el método en el paso
230 determina que se ha de utilizar un manipulador genérico, el
mensaje se procesa con uno o más manipuladores genéricos en el paso
260 (que típicamente da lugar a un procesamiento menos eficaz para
un determinado tipo de mensaje).
Opcionalmente, la realización de la Figura 2
puede también incluir el paso de registrar las características de
procesamiento para cada tipo de mensaje en el paso 270 (en una
biblioteca de programas u otra base de datos).
La información de las características de
procesamiento es recogida para manipuladores genéricos y optimizados
de todos los tipos de mensajes y puede proporcionar una fuente útil
de datos cuantitativos con respecto al funcionamiento y otras
características de los diversos tipos de mensajes procesados de
acuerdo con el presente invento. Estas relaciones están ilustradas
en la Figura 2 en una línea de puntos, ya que no es esencial para
el presente invento, sino que más bien, proporciona una fuente de
datos útil para la realización de la determinación, en el paso 230,
de qué tipo de manipulador usar para procesar un cierto tipo de
mensaje.
La biblioteca de programas recoge información
sobre los mensajes que ya han sido procesados basándose en su tipo
o formato. Estos datos pueden incluir el número de mensajes de un
cierto tipo que han sido procesados hasta ahora o durante un
intervalo de tiempo predefinido u otras estadísticas tales como los
porcentajes totales de los tipos de mensajes manipulados. Basándose
en los tipos de mensajes previamente procesados y en otras
estadísticas de procesamiento relacionadas el invento genera
manipuladores especiales optimizados de mensajes.
Además, los parámetros de entrada y de salida de
estos manipuladores optimizados de mensajes son compatibles con los
de los manipuladores genéricos, de forma que un manipulador
optimizado puede usarse en lugar del manipulador genérico en
cualquier momento sin la necesidad de cambiar la aplicación o
biblioteca de programas. Algunas realizaciones facilitan también
que si durante el procesamiento de un mensaje que tiene un cierto
tipo de mensaje por un manipulador optimizado, se produce un
formato sin soporte o si otros datos aconsejan que el manipulador
genérico es más eficaz, la manipulación de los mensajes actuales y
posteriores de ese tipo puede ser realizada usando un manipulador
genérico.
Al contrario que otros sistemas tales como el
Java Virtual Machines (JVMs) con recopiladores justo a tiempo (JIT)
u otros dispositivos de interpretación capaces de ejecutar un
programa escrito en el correspondiente lenguaje, la base de datos
de estadísticas o biblioteca de programas utiliza la semántica de
alto nivel del programa con fines de optimización. Por lo tanto, la
base de datos de estadísticas a la vez que utiliza información
convencional tal como la frecuencia de la ejecución del fragmento
codificado, el consumo de recursos por un fragmento dado, etc,
también utiliza información referente a la funcionalidad requerida
para procesar el tipo de mensaje. Además, el presente invento
utilizando los formatos de entrada y los formatos de composición de
mensaje permite que los mensajes sean procesados de acuerdo con sus
descripciones. Como el presente invento correlaciona las bases de
datos estadísticas con la semántica de alto nivel del
analizador/manipulador y sobre los datos que se procesan, es mucho
más eficaz que las técnicas convencionales. En otras palabras, el
presente invento es una técnica para optimización en tiempo de
ejecución activada por los datos en tiempo de ejecución basada en
unos optimizadores más inteligentes que están basados de forma
integral en la semántica de operaciones y en datos recibidos por la
aplicación.
En la Figura 3 se ilustra otra realización más
del presente invento como un método para procesamiento de mensajes
300. El método comienza, en el paso 310, con la recepción de un
mensaje para procesamiento 305 por una unidad de procesamiento de
mensajes. En el paso 315 el método determina si se ha procesado un
mensaje similar accediendo a una base de datos o biblioteca de
programas externa que mantiene estadísticas sobre las
características de procesamiento del sistema subyacente que aplica
el método. Si se ha procesado un tipo de mensaje similar, en el
paso 320, se determina entonces si existe un manipulador optimizado.
Por el contrario, si no se ha procesado un tipo de mensaje similar,
entonces se genera una nueva entrada, en el paso 325, para el tipo
de mensaje. Esta entrada se usará posteriormente para generar y
registrar características de procesamiento con respecto a estos
tipos de mensajes después de que el mensaje haya sido procesado, en
el paso 355, usando un manipulador genérico, y las estadísticas de
procesamiento con respecto al procesamiento del mensaje que usan el
manipulador genérico son actualizadas en el paso 360.
Volviendo al paso 320, si se ha determinado usar
un manipulador optimizado, entonces el mensaje es procesado usando
un manipulador optimizado en el paso 350. Al igual que con un
mensaje procesado con un manipulador genérico, las estadísticas con
respecto al procesamiento del mensaje se actualizan en 360. Si, en
el paso 320, se determina que no existe un manipulador optimizado,
entonces se determina más adelante, en el paso 330, si generar un
manipulador optimizado. Si no se ha generado un manipulador
optimizado, entonces el mensaje es procesado con un manipulador
genérico en el paso 355. Sin embargo, si se genera un manipulador
optimizado, entonces se debe determinar más adelante, en el paso
335, si existe suficiente espacio de almacenamiento para generar un
nuevo manipulador optimizado. Si hay espacio suficiente de
almacenamiento, entonces, en el paso 345, se genera inmediatamente
un manipulador optimizado, por el contrario, se selecciona y borra
un manipulador optimizado (que puede ser seleccionado por criterios
tales como el último usado frecuentemente, el último usado, etc) y
a continuación se genera el manipulador optimizado.
Una vez que se ha determinado que un mensaje
debería ser procesado con un manipulador optimizado, y existe
actualmente un manipulador (si ha sido generado previamente o
generado durante el tiempo de ejecución en el paso 345), el
manipulador optimizado procesa el mensaje en el paso 350, que es
seguido por el paso 360 que comprende la actualización de
estadísticas con respecto al procesamiento del tipo de mensaje.
La Figura 4 ilustra otra realización de un
método 400 en el que las estadísticas referentes al uso de datos
contenidos dentro de los mensajes por la aplicación que usa los
datos de mensajes están monitorizadas para determinar qué partes de
los mensajes necesitan ser procesadas y qué partes de los mensajes
no necesitan ser procesadas (en ese momento). El método comienza en
el paso 400, en el que una unidad de procesamiento de mensaje
recibe un mensaje para procesar. A continuación, en el paso 410, se
determina el tipo de mensaje, de forma que en el paso 420, puede
determinarse qué partes del mensaje tienen que ser procesadas, y qué
partes del mensaje deben posponerse o, en caso contrario, diferirse
hasta pasado algún tiempo para ser procesados (si de algún modo)
están basados en requerimientos de uso de la aplicación. Como se
explica más adelante con más detalle, los requerimientos de uso
están basados en el uso monitorizado de los datos dentro de los
mensajes por la aplicación recibida (que recibe mensajes de la
unidad de procesamiento de mensajes). En otras palabras, si el uso
monitorizado de los datos refleja que solamente ciertas partes de
los mensajes que tienen un contenido similar han sido previamente
usados, entonces se procesarán las únicas partes similares (y las
partes restantes se dejarán o diferirán hasta que sean
posteriormente necesitadas por la aplicación, caso de que ocurra).
Sin embargo, si un mensaje que tiene partes similares no ha sido
procesado previamente, entonces la determinación puede estar basada
en una estimación de qué partes del mensaje serán posteriormente
usadas por la aplicación. Como puede apreciarse, el método
determina qué partes del mensaje procesar basándose en los
requerimientos de uso estimados, si están basados en la anterior
historia de uso o en otros criterios (que no necesariamente se
refieren al uso de la aplicación).
Igual que en los métodos anteriores, después de
haber determinado qué partes del mensaje procesar, en el paso 430,
se puede determinar entonces qué tipo de manipulador utilizar, es
decir un manipulador optimizado o un manipulador genérico. Esta
determinación puede estar basada en el tipo de mensaje solamente, o
puede estar basada en las partes seleccionadas del mensaje para
procesar o en una combinación de ambos factores. En el paso 440, si
se ha seleccionado un manipulador optimizado, si no existe todavía
se genera un manipulador optimizado para procesar las partes
seleccionadas del mensaje, y después se procesan las partes
seleccionadas del mensaje, en el paso 460, con un manipulador
optimizado. Por el contrario, en el paso 450, un manipulador
genérico procesa las partes seleccionadas del mensaje.
El paso siguiente puede ser el paso 470, en el
que las estadísticas de procesamiento para el tipo de mensaje (y/o
el tipo de partes del mensaje) son registradas para uso posterior en
el paso 430 cuando se ha determinado qué tipo de manipulador
utilizar, o el paso siguiente puede ser el paso 480, en el que el
contenido del mensaje es entregado a la aplicación. Posteriormente,
las estadísticas referentes al uso de las partes de los mensajes se
registran de tal forma que la información puede ser posteriormente
usada en el paso 420 para determinar a qué partes de los mensajes
se les ha dado prioridad (basándose en métricas tales como las más
usualmente usadas, las de mayor importancia para la funcionalidad
de la aplicación, etc).
La monitorización de las partes de los
documentos que son usados (o a los que se accede) más a menudo por
la aplicación que recibe el mensaje procesado, identifica a la
inversa las partes de los mensajes que han sido utilizadas
raramente, si se da el caso. Si se está utilizando una estructura en
árbol DOM, la monitorización puede llevarse a cabo interceptando el
DOM y accediendo a su interfaz programador de la aplicación. Esta
realización es particularmente útil cuando una aplicación recibe
documentos largos y/o complejos, en los que el programa solamente
accede o usa una parte. Por ejemplo, una aplicación puede solicitar
un perfil usando un User Agent Profile (UAProf) pero solamente
requiere una pequeña parte de tal perfil tal como un tamaño de
pantalla, etc.
Con referencia a la Figura 5, se ilustra una
realización del sistema del presente invento 500. El sistema
comprende una unidad 510 de procesamiento de mensajes que incluye un
módulo 520 de recepción de mensajes, un módulo 530 de
identificación de mensajes, un módulo 540 de selección de
manipulador, un módulo 550 de generación de manipulador optimizado,
y un módulo de procesador. Los módulos individuales dentro de la
unidad 510 procesadora de mensajes pueden estar usualmente
conectados con fines de comunicación como se muestra, o pueden estar
acoplados individualmente a los módulos que reciben o entregan
datos (por ejemplo, el módulo 520 de recepción de mensajes y el
módulo 530 de identificación del tipo de mensaje). La unidad de
procesamiento de mensajes puede recibir (e intercambiar) mensajes
procesados a través de (i) un camino de aplicación interna 570 de
aplicaciones que pueden ser internas al sistema que alberga la
unidad 510 de procesamiento de mensajes, y (ii) una red de ordenador
tal como una LAN o Internet.
En funcionamiento, un mensaje es recibido por el
módulo 520 de recepción de mensajes de la unidad 510 de
procesamiento de mensajes, que se origina del camino 570 de
aplicación interna o de la red 580. El módulo 520 de recepción de
mensajes proporciona el mensaje al módulo 530 de identificación del
tipo de mensaje que a continuación analiza el mensaje para
determinar el tipo del mensaje. El módulo 530 de identificación de
tipo del mensaje lleva entonces el tipo del mensaje al módulo 540
de selección de manipulador, de forma que puede determinarse si se
va a utilizar un manipulador optimizado para procesar el mensaje. Si
se ha determinado que se debería usar un manipulador optimizado, el
módulo 550 de selección de manipulador notifica o, por el contrario,
activa el módulo 550 generador de manipulador optimizado para
generar un manipulador optimizado para el tipo de mensaje (que
puede ser recibido del módulo 530 de identificación de tipo de
mensaje o del módulo 540 de selección de manipulador), si un
manipulador optimizado no ha sido todavía generado por el tipo de
mensaje. Finalmente, el módulo 560 del procesador obtiene el
mensaje para ser procesado y lo procesa usando un manipulador
optimizado (obtenido del módulo 550 generador del manipulador
optimizado). Como puede observar un experto, los módulos
individuales pueden ser combinados o usados en conexión con otros
módulos o subsistemas para procesar mensajes de acuerdo con
cualquiera de los métodos descritos aquí.
La Figura 6 ilustra la realización de otro
sistema del presente invento 600. El sistema comprende una unidad
605 de procesamiento de mensajes que incluye un módulo 610 de
recepción de mensajes, un módulo 615 de identificación del tipo de
mensaje, un módulo 620 de selección de procesamiento, un módulo 625
de selección de manipulador, un módulo 630 de generación de
manipulador optimizado, un primer módulo 635 del procesador, un
segundo módulo 640 del procesador, un módulo 645 de comparación, un
módulo 650 de registro, y un módulo 655 de monitorización. Los
módulos individuales dentro de la unidad 605 de procesamiento de
mensajes pueden estar conectados usualmente con fines de
comunicación como se muestra, o pueden estar individualmente
acoplados a aquellos módulos que reciben o entregan datos a (por
ejemplo, el módulo 625 de selección y al módulo 630 de generación de
manipulador). La unidad de procesamiento de mensajes puede recibir
(e intercambiar) mensajes procesados a través de (i) un camino 660
de aplicación interna de aplicaciones que pueden ser internas al
sistema que alberga la unidad 665 de procesamiento de mensajes, y
de (ii) una red de ordenadores tal como una LAN o Internet.
En funcionamiento, un mensaje es recibido por el
módulo 610 de recepción de mensajes de la unidad 605 de
procesamiento de mensajes, que se origina del camino 660 de
aplicación interna o de la red 665. El módulo 610 de recepción de
mensajes proporciona el mensaje al módulo 615 de identificación del
tipo de mensaje que entonces analiza el mensaje para determinar el
tipo de mensaje. El módulo 615 de identificación del tipo de mensaje
lleva el tipo del mensaje al módulo 620 de selección de
procesamiento, que determina si algunas partes del mensaje no
deberían ser procesadas y, en caso afirmativo, identifica tales
partes. Opcionalmente, el módulo 620 de selección de procesamiento
puede estar acoplado directamente al módulo 610 de recepción de
mensajes si el tipo de mensaje no es requerido para el módulo 625
de selección de manipulador. El módulo 620 de selección de
procesamiento identifica las partes del mensaje que van a ser
procesadas por el módulo 625 de selección de manipulador.
El módulo 625 de selección de manipulador
determina (basado en el tipo de mensaje las partes seleccionadas
del mensaje para procesar, o una combinación de ambas) qué tipo de
manipulador (es decir, genérico u optimizado) usar para procesar
los datos. Si se va a utilizar un procesador optimizado, entonces el
módulo 630 generador de manipulador optimizado genera un
manipulador optimizado basándose en el tipo de mensaje, en las
partes seleccionadas del mensaje, o en una combinación de ambas,
siempre que no haya sido generado previamente un manipulador
optimizado apropiado. El mensaje o partes de él son procesados por
el primer módulo 635 del procesador si se usa un manipulador
optimizado, por el contrario se usa el segundo módulo 640 del
procesador para procesar el mensaje o partes de él con un
manipulador genérico.
El módulo 650 de registro registra opcionalmente
estadísticas relacionadas con las características de procesamiento
de los tipos de mensaje o partes de él. El módulo 645 de comparación
compara y analiza las estadísticas registradas del módulo de
registro 650 entre los mensajes de un cierto tipo y las partes de
ellos que son procesadas usando un manipulador genérico frente a
las procesadas usando un manipulador optimizado. Si no están
disponibles ciertos datos característicos que usan un cierto tipo
de manipulador, el módulo 645 de comparación puede utilizar
características de procesamiento estimadas o esperadas para comparar
con las características de procesamiento reales. Además, el módulo
655 de monitorización puede estar acoplado a la aplicación que
recibe los mensajes procesados de la unidad 605 de procesamiento de
mensajes para monitorizar qué partes de los mensajes (o de los
datos contenidos en ellos) son usadas por tal aplicación y
determinar qué partes de los futuros mensajes son más probable que
sean utilizadas por la aplicación. El módulo de monitorización puede
acoplarse posteriormente al módulo 620 de selección de
procesamiento para determinar qué partes de los posteriores tipos de
mensajes van a ser procesadas usando el sistema (y por el
contrario, qué partes de los mensajes van a ser procesadas en un
momento posterior, todavía no definido).
El presente invento proporciona flexibilidad
significativa y ventajas relacionadas a los programadores de
aplicaciones. Una de las principales mejoras es la provisión de una
técnica para manipulación de mensajes en la que los tipos de
mensajes (estructuras de datos) no son conocidos por adelantado.
Aplicado en conexión con XML, el presente invento obtiene
información sobre la estructura del formato de los datos (tipo de
mensaje) solamente en tiempo de ejecución debido a que XML define
no solamente los contenidos de los datos de entrada sino también la
estructura de los datos usando un lenguaje XML Schema o similar.
Esta disposición hace imposible tener predefinido el conjunto de
algoritmos de procesamiento que comparen los tipos de mensaje de la
forma más eficiente, y por tanto, el procesamiento eficaz de los
tipos de mensaje solamente puede conseguirse mediante el presente
invento.
El funcionamiento mejorado proporcionado por el
presente invento puede dar lugar a una adopción más amplia de
formatos tales como XML (y, por ejemplo, en conexión con
dispositivos móviles de comunicación). El experto apreciará también
que el presente invento puede ser útil para el desarrollo de
servidores de aplicación que manipulan múltiples tipos de
aplicaciones. Esta funcionalidad puede incluir el análisis de los
mensajes entrantes. Usando el presente invento es posible conseguir
mejoras tales como un rendimiento aumentado de las aplicaciones,
eliminación de la exigencia de modificar las aplicaciones,
eliminación de la exigencia de la intervención o participación del
programador en el proceso de optimización para la manipulación de
mensajes, y una mayor flexibilidad que permite que las técnicas de
optimización sean cambiadas, actualizadas o retiradas en el servidor
de la aplicación sin efecto alguno sobre la funcionalidad de las
aplicaciones subyacentes.
En tanto que el presente invento ha sido
descrito con respecto a realizaciones particulares, los expertos en
la materia reconocerán que el presente invento no está limitado a
las realizaciones específicas descritas e ilustradas aquí. Por lo
tanto, mientras que el presente invento ha sido descrito en relación
con sus relaciones preferidas, se ha de entender que esta
exposición es solamente ilustrativa. Por lo tanto, se pretende que
el invento esté limitado solamente por el alcance de las
reivindicaciones anejas.
Claims (19)
1. Un método para un procesamiento de mensajes
optimizado que comprende los pasos de:
recibir un mensaje (110);
identificar el tipo de mensaje del mensaje
recibido (120);
determinar si se debería usar un manipulador
optimizado para procesar mensajes del tipo de mensaje identificado
(130);
generar un manipulador optimizado para el tipo
de mensaje identificado (140) si se ha determinado que se debería
usar un manipulador optimizado, y no se dispone de un manipulador
optimizado para el tipo de mensaje identificado; y
procesar mensajes del tipo de mensaje
identificado con el manipulador optimizado asociado con él (150) si
se ha determinado que se debería utilizar un manipulador
optimizado;
caracterizado por
el método que además comprende estadísticas
registradas de evaluación del tipo de mensaje identificado para
determinar si se debería generar un manipulador optimizado y/o usar
para procesar mensajes del tipo de mensaje identificado.
2. El método de la reivindicación 1, en el que
las estadísticas incluyen estadísticas de ocurrencia de diferentes
tipos de mensajes.
3. El método de las reivindicaciones 1 ó 2, en
el que las estadísticas se basan en métricas relacionadas con el
funcionamiento, en métricas relacionadas con el uso o en criterios
definidos por el usuario.
4. El método de las reivindicaciones 2 ó 3, que
además comprende el paso de generar y/o comparar estadísticas de
procesamiento del tipo de mensaje identificado.
5. El método de la reivindicación 4, en el que
las estadísticas de procesamiento del tipo de mensaje identificado
procesado usando un manipulador genérico son estadísticas de
procesamiento reales o estimadas; y/o
en el que las estadísticas de procesamiento del
tipo de mensaje identificado procesado usando un manipulador
optimizado son características de procesamiento reales o
estimadas.
6. El método de cualquiera de las anteriores
reivindicaciones, que además comprende los pasos de:
determinar si se debería usar un manipulador
genérico para procesar mensajes del tipo de mensaje identificado
(230); y
procesar el mensaje con un manipulador genérico
(260) si se ha determinado que se debería utilizar un manipulador
genérico.
7. El método de la reivindicación 6, en el que
los pasos de determinar si se debería usar un manipulador optimizado
o uno genérico (230) comprende los pasos de:
determinar si un mensaje del tipo de mensaje
identificado ha sido ya procesado (315);
determinar si un mensaje del tipo de mensaje
identificado existe para el tipo de mensaje identificado (320);
determinar si generar un manipulador optimizado
para el tipo de mensaje identificado (330);
seleccionar un manipulador genérico si el tipo
de mensaje identificado no ha sido procesado, o si se ha determinado
no generar un manipulador optimizado para el tipo de mensaje
identificado; y
seleccionar un manipulador optimizado si existe
un manipulador optimizado para el tipo de mensaje identificado o si
se ha determinado que se debería generar un manipulador
optimizado.
8. El método de cualquiera de las anteriores
reivindicaciones, que además comprende el paso de determinar si
existe espacio de almacenamiento suficiente para generar un nuevo
manipulador optimizado.
9. El método de la reivindicación 8, que además
comprende el paso de borrar un manipulador optimizado (340) si no
existe espacio suficiente para generar un nuevo manipulador
optimizado.
10. El método de cualquiera de las anteriores
reivindicaciones, que además comprende los pasos de:
monitorizar el uso de los mensajes por la
aplicación que recibe los mensajes (490); y
procesar selectivamente partes de los mensajes
basándose en el uso monitorizado por la aplicación (420).
11. El método de la reivindicación 10, en el que
el paso de procesar selectivamente los mensajes comprende los pasos
de:
priorizar partes de los mensajes para
procesamiento basándose en el uso por la aplicación; y
procesar las partes priorizadas de los mensajes
(450, 460).
12. El método de la reivindicación 11, que
además comprende los pasos de:
retrasar el procesamiento de las partes de los
mensajes que no están priorizadas; y
procesar las partes retrasadas del mensaje (450,
460) si la aplicación requiere posteriormente las partes retrasadas
del mensaje.
13. El método de cualquiera de las anteriores
reivindicaciones, en el que los mensajes se procesan analizando el
mensaje en un formato compatible con una aplicación que recibe los
mensajes procesados.
14. Un sistema para optimizar el procesamiento
del mensaje, comprendiendo el sistema:
un módulo (520) de recepción de mensajes para
recibir un mensaje;
un módulo (530) de identificación del tipo de
mensaje para identificar el tipo de mensaje del mensaje
recibido;
un módulo (540) de selección de manipulador para
determinar si se debería usar un manipulador optimizado para
procesar mensajes del tipo de mensaje identificado;
un módulo (550) generador del manipulador
optimizado para generar un manipulador optimizado para el tipo de
mensaje identificado si se ha determinado que se debería usar un
manipulador optimizado y no se hubiera generado previamente un
manipulador optimizado para el tipo de mensaje identificado;
un primer módulo (560) de procesador para
procesar mensajes del tipo de mensaje identificado con el
manipulador optimizado asociado con él si se ha determinado que se
debería utilizar un manipulador optimizado; y
caracterizado por
un módulo para evaluar las estadísticas
registradas del tipo de mensaje identificado para determinar si se
debería generar un manipulador optimizado y/o usar para procesar
mensajes del tipo de mensaje identificado.
15. El sistema de la reivindicación 14, en el
que el módulo (540) de selección del manipulador está configurado
para determinar que un manipulador genérico debería procesar los
mensajes recibidos del tipo de mensaje identificado si no se
utilizase un manipulador optimizado; y que además comprende:
un segundo módulo (640) de procesador para
procesar los mensajes recibidos del tipo identificado con un
manipulador genérico si se ha determinado que se debería utilizar
un manipulador genérico.
16. El sistema de las reivindicaciones 14 ó 15,
que además comprende:
un módulo (650) de registro para registrar
estadísticas de cada tipo de mensaje identificado;
un módulo (645) de comparación para comparar
estadísticas de mensajes del mismo tipo manipulados con un
manipulador genérico con estadísticas del mismo tipo de mensajes
manipulados con un manipulador optimizado; y en el que el módulo
(625) de selección de manipulador determina utilizar un manipulador
genérico o un manipulador optimizado basándose en la comparación de
estadísticas de procesamiento del tipo de mensaje identificado.
17. El sistema de cualquiera de las
reivindicaciones 14-16, que además comprende:
un módulo (655) de monitorización para
monitorizar el uso de mensajes recibidos por la aplicación que
recibe los mensajes; y
un módulo (620) de selección de procesamiento
para procesar selectivamente partes de los mensajes basándose en el
uso monitorizado por la aplicación.
18. Un producto de programa de ordenador para
optimizar el procesamiento de mensajes, comprendiendo el producto
de programa de ordenador:
partes de códigos de programa legibles para
recibir un mensaje;
partes de códigos de programa legibles por un
ordenador para identificar el tipo de mensaje del mensaje
recibido;
partes de códigos de programa legibles por un
ordenador para determinar si se debería usar un manipulador
optimizado para procesar mensajes del tipo de mensaje
identificado;
partes de códigos de programa legibles por un
ordenador para generar un manipulador optimizado para el tipo de
mensaje identificado si se ha determinado que se debería usar un
manipulador optimizado y no se hubiera generado previamente un
manipulador optimizado para el tipo de mensaje identificado; y
partes de códigos de programa legibles por un
ordenador para procesar mensajes del tipo identificado con el
manipulador optimizado asociado con él si se ha determinado que se
debería utilizar un manipulador optimizado; y
caracterizado por
partes de códigos de programa legibles por
ordenador para evaluar estadísticas registradas del tipo de mensaje
identificado para determinar si se debería generar y/o usar un
manipulador optimizado para procesar mensajes del tipo de mensaje
identificado.
19. El producto de programa de ordenador de la
reivindicación 18, en el que el producto de programa de ordenador
se almacena en un medio de registro legible por ordenador.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/EP2003/014410 WO2005059746A1 (en) | 2003-12-17 | 2003-12-17 | System and method for dynamically optimized message processing |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2301863T3 true ES2301863T3 (es) | 2008-07-01 |
Family
ID=34684498
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES03785858T Expired - Lifetime ES2301863T3 (es) | 2003-12-17 | 2003-12-17 | Sistema y metodo para el procesamiento de mensajes optimizado dinamicamente. |
Country Status (7)
| Country | Link |
|---|---|
| US (1) | US7746773B2 (es) |
| EP (1) | EP1704475B1 (es) |
| AT (1) | ATE389205T1 (es) |
| AU (1) | AU2003294884A1 (es) |
| DE (1) | DE60319753T2 (es) |
| ES (1) | ES2301863T3 (es) |
| WO (1) | WO2005059746A1 (es) |
Families Citing this family (15)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20060112130A1 (en) * | 2004-11-24 | 2006-05-25 | Linda Lowson | System and method for resource management |
| KR100716169B1 (ko) * | 2005-05-06 | 2007-05-10 | 삼성전자주식회사 | 네트워크 관리 시스템에서의 메시지 처리 장치 및 방법 |
| US7694287B2 (en) * | 2005-06-29 | 2010-04-06 | Visa U.S.A. | Schema-based dynamic parse/build engine for parsing multi-format messages |
| US20070064603A1 (en) * | 2005-09-19 | 2007-03-22 | Sean Chen | Method of provisioning network elements to perform a service |
| US7548926B2 (en) * | 2005-10-05 | 2009-06-16 | Microsoft Corporation | High performance navigator for parsing inputs of a message |
| WO2007070591A2 (en) * | 2005-12-13 | 2007-06-21 | Siemens Medical Solutions Usa, Inc. | A system for configuring a data exchange and format conversion system |
| US7904457B2 (en) * | 2007-05-30 | 2011-03-08 | International Business Machines Corporation | Semantic correlation for flow analysis in messaging systems |
| FR2919141A1 (fr) * | 2007-07-19 | 2009-01-23 | France Telecom | Procede d'obtention de donnees applicatives |
| JP5719349B2 (ja) * | 2009-04-27 | 2015-05-20 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | メッセージ交換 |
| US8893210B2 (en) * | 2010-08-20 | 2014-11-18 | Sony Corporation | Server load balancing for interactive television |
| US8918801B2 (en) | 2010-08-30 | 2014-12-23 | Sony Corporation | Transmission apparatus, transmission method, reception apparatus, reception method, program, and broadcasting system |
| CN104980515B (zh) * | 2015-06-26 | 2018-08-03 | 浪潮(北京)电子信息产业有限公司 | 一种云存储系统中消息分发处理方法和装置 |
| US9843550B2 (en) * | 2015-11-29 | 2017-12-12 | International Business Machines Corporation | Processing messages in a data messaging system using constructed resource models |
| CN109286643A (zh) * | 2017-07-20 | 2019-01-29 | 西门子公司 | 读取一个应用实例的配置参数的方法和装置 |
| CN114928663B (zh) * | 2022-06-02 | 2024-08-16 | 蜂助手股份有限公司 | 一种识别回调报文的方法及装置 |
Family Cites Families (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6772413B2 (en) | 1999-12-21 | 2004-08-03 | Datapower Technology, Inc. | Method and apparatus of data exchange using runtime code generator and translator |
| US6775728B2 (en) * | 2001-11-15 | 2004-08-10 | Intel Corporation | Method and system for concurrent handler execution in an SMI and PMI-based dispatch-execution framework |
| US7379959B2 (en) * | 2002-09-07 | 2008-05-27 | Appistry, Inc. | Processing information using a hive of computing engines including request handlers and process handlers |
| US7190955B2 (en) * | 2003-05-07 | 2007-03-13 | M-Stack Limited | Apparatus and methods of handling simultaneous universal terrestrial radio access network radio resource control procedures with activation times in universal mobile telecommunications system user equipment |
| US8045564B2 (en) * | 2005-09-12 | 2011-10-25 | Microsoft Corporation | Protocol-level filtering |
| US20080155024A1 (en) * | 2006-12-20 | 2008-06-26 | Morris Robert P | Methods And Systems For Providing For Responding To Messages Without Non-Accepted Elements Of Accepted MIME Types Based On Specifications In A Message Header |
-
2003
- 2003-12-17 DE DE60319753T patent/DE60319753T2/de not_active Expired - Lifetime
- 2003-12-17 EP EP03785858A patent/EP1704475B1/en not_active Expired - Lifetime
- 2003-12-17 WO PCT/EP2003/014410 patent/WO2005059746A1/en not_active Ceased
- 2003-12-17 AT AT03785858T patent/ATE389205T1/de not_active IP Right Cessation
- 2003-12-17 AU AU2003294884A patent/AU2003294884A1/en not_active Abandoned
- 2003-12-17 ES ES03785858T patent/ES2301863T3/es not_active Expired - Lifetime
- 2003-12-17 US US10/596,525 patent/US7746773B2/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| ATE389205T1 (de) | 2008-03-15 |
| WO2005059746A1 (en) | 2005-06-30 |
| EP1704475A1 (en) | 2006-09-27 |
| EP1704475B1 (en) | 2008-03-12 |
| DE60319753T2 (de) | 2009-04-02 |
| DE60319753D1 (de) | 2008-04-24 |
| AU2003294884A1 (en) | 2005-07-05 |
| US20070189159A1 (en) | 2007-08-16 |
| US7746773B2 (en) | 2010-06-29 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| Gheorghita et al. | System-scenario-based design of dynamic embedded systems | |
| US20220137936A1 (en) | Efficient State Machines for Real-Time Dataflow Programming | |
| US8261275B2 (en) | Method and system for heuristics-based task scheduling | |
| Quan et al. | A hybrid task mapping algorithm for heterogeneous MPSoCs | |
| US9122513B2 (en) | Method and apparatus for efficient execution of concurrent processes on a multithreaded message passing system | |
| US8112755B2 (en) | Reducing latencies in computing systems using probabilistic and/or decision-theoretic reasoning under scarce memory resources | |
| US7069396B2 (en) | Deferred memory allocation for application threads | |
| US11055155B2 (en) | Virtual programming in a microservice architecture | |
| US20210042172A1 (en) | Normalizing messaging flows in a microservice architecture | |
| US10891176B1 (en) | Optimizing messaging flows in a microservice architecture | |
| US20040078779A1 (en) | Inducing concurrency in software code | |
| US20090276765A1 (en) | Compiler driven mechanism for registration and deregistration of memory pages | |
| US20170322955A1 (en) | Conservative Garbage Collecting and Tagged Integers For Memory Management | |
| EP1704475B1 (en) | System and method for dynamically optimized message processing | |
| US7401329B2 (en) | Compiling computer programs to exploit parallelism without exceeding available processing resources | |
| US9507637B1 (en) | Computer platform where tasks can optionally share per task resources | |
| US7421592B1 (en) | High performance counter for realistic measurement of computer system load | |
| US10339533B2 (en) | Methods and systems for scalable session emulation | |
| US8918767B2 (en) | Pattern-based compilation of asynchronous consumption | |
| US8904370B2 (en) | Optimization of meta-template instantiations | |
| CN110647527B (zh) | 基于大数据的无效标签清除方法及装置、设备与可读介质 | |
| US20110247007A1 (en) | Operators with request-response interfaces for data stream processing applications | |
| US7039772B1 (en) | System, method, and computer program product for processing reflective state machines | |
| Smith et al. | Decoupled Fallback: A Portable Single-Pass GPU Scan | |
| CN111782426B (zh) | 一种处理客户端任务的方法、装置和电子设备 |