ES2301863T3 - Sistema y metodo para el procesamiento de mensajes optimizado dinamicamente. - Google Patents

Sistema y metodo para el procesamiento de mensajes optimizado dinamicamente. Download PDF

Info

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
Application number
ES03785858T
Other languages
English (en)
Inventor
Martin Gerdes
Raphael Quinet
Roman Levenshteyn
Torsten Dinsing
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.)
Telefonaktiebolaget LM Ericsson AB
Original Assignee
Telefonaktiebolaget LM Ericsson AB
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 Telefonaktiebolaget LM Ericsson AB filed Critical Telefonaktiebolaget LM Ericsson AB
Application granted granted Critical
Publication of ES2301863T3 publication Critical patent/ES2301863T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • 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
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/306User profiles
    • 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/12Protocol 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.
Campo del invento
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.
Antecedentes del invento
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.
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.
Resumen del invento
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.
Breve descripción de los dibujos
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.
Descripción detallada de las realizaciones preferidas
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.
ES03785858T 2003-12-17 2003-12-17 Sistema y metodo para el procesamiento de mensajes optimizado dinamicamente. Expired - Lifetime ES2301863T3 (es)

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)

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

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

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) 一种处理客户端任务的方法、装置和电子设备