CN102884508B - 分层地分解消息 - Google Patents

分层地分解消息 Download PDF

Info

Publication number
CN102884508B
CN102884508B CN201180020852.1A CN201180020852A CN102884508B CN 102884508 B CN102884508 B CN 102884508B CN 201180020852 A CN201180020852 A CN 201180020852A CN 102884508 B CN102884508 B CN 102884508B
Authority
CN
China
Prior art keywords
assembly
message
resolver
action
session
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.)
Active
Application number
CN201180020852.1A
Other languages
English (en)
Other versions
CN102884508A (zh
Inventor
N·A·艾伦
J·A·泰勒
S·R·巴特雷斯
B·李
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN102884508A publication Critical patent/CN102884508A/zh
Application granted granted Critical
Publication of CN102884508B publication Critical patent/CN102884508B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

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)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)

Abstract

本发明涉及用于分层地分解消息的方法、***和计算机程序产品。分解器和帧调节器的功能被解耦合,以使得不同类型的消息的帧调节器可在分层结构中的同一层处使用,而不必还改变分解器。实质上任何分解层都可能解决任何对应的消息嵌套层。分解可在每一消息的基础上执行或在每一会话的基础上执行。

Description

分层地分解消息
背景
1.背景和相关技术
计算机***和相关技术影响社会的许多方面。的确,计算机***处理信息的能力已转变了人们生活和工作的方式。计算机***现在通常执行在计算机***出现以前手动执行的许多任务(例如,文字处理、日程安排和会计等)。最近,计算机***彼此耦合并耦合到其他电子设备以形成计算机***和其他电子设备可以在其上传输电子数据的有线和无线计算机网络。因此,许多计算任务的执行分布在多个不同的计算机***和/或多个不同的计算环境中。
为了在发送消息时优化带宽,将一组消息一起进行批量处理是普遍的。这一过程有时候被称为消息组合。类似地,取出单个消息并将其转换回一组消息的解析过程有时候被称为分解。在某些环境中,消息的批量处理可进一步被嵌套,以使得较小的批次被包含在较大的批次内。
不幸的是,消息的分层嵌套对于开发分解处理器而言引入了相当大的困难。例如,当多个应用消息已经被分组成单个传输消息时,分解的任务是提取内层的应用消息以使得它们可被呈现给软件栈的较高层。然而,在某些环境中,分组被多层化。电子数据交换(“EDI”)协议是其中消息结构被多次嵌套的一个示例。多次嵌套可极大地使分解过程复杂化。
许多消息模式使用会话,其由一组消息交换构成。从而,消息分解的任务可包括从单个消息(例如,外层消息)中创建出消息会话。此外,循环分解(例如,以获得嵌套的消息)可能要求从现有的会话中创建出较长的会话。然而,许多消息通信模式欠缺关于子会话的任何概念,从而使得这一过程变得困难。
必须按顺序地执行各种独特的功能以构建分布式消息通信***,包括:数据的物理传输、实现消息交换协议的状态机、以及消息的格式化。这些消息通信功能一起常常被称为消息通信栈。许多消息通信***将构成消息通信栈的这些不同的功能耦合在一起。从而,每当一个独特的功能改变,所有其他相关联的功能出于兼容性也必须被重新编写。例如,这种耦合可能要求当传输介质改变时消息格式化代码被重新编写,即使新的传输介质在语义上与旧的传输介质是相同的。
某些软件框架提供了对于考虑消息通信栈的实现以使得离散功能可被有效地实现为独立的组件的抽象。然而,现有的框架几乎(即使有的话)不具有对便于构建会话格式化逻辑的抽象的支持。欠缺会话格式化逻辑抽象对于接收侧的分解而言问题尤其严重。取决于嵌套的消息的格式和安排,会话格式化逻辑可能改变并且在接收消息(例如,外层消息)时可能是未知的。然而,分解过程可能固定于特定的功能集,从而无法处理嵌套的消息。
简要概述
本发明涉及用于分层地分解消息的方法、***和计算机程序产品。本发明的各实施例包括分解一个或多个消息。在消息分解的某些实施例中,从一个或多个分解器组件中选出的分解器组件从组件的分层安排中紧靠所述分解器组件下一层的组件接收消息。所述消息包含在所述消息内的一个或多个嵌套消息。
所述分解器组件向帧调节器厂指示所述消息的消息类型。帧调节器厂向分解器组件提供帧调节器。帧调节器用于解析所述消息。所述分解器组件向所述组件的分层安排中紧靠着所述分解器组件上一层的组件指示会话的开始。所述会话位于所述分解器组件和紧靠着所述分解器组件上一层的组件之间。
对于所述消息中的一个或多个嵌套消息中的每一个消息,帧调节器解析所述消息以从所述消息中包含的一个或多个嵌套消息中标识出下一嵌套的消息。对于所述消息中的一个或多个嵌套消息中的每一个消息,所述分解器组件将被标识的下一嵌套的消息发送给所述会话。所述分解器组件向紧靠着所述分解器组件上一层的组件指示所述会话的结束。
在消息分解的其他实施例中,第一分解器组件从组件的分层安排中紧靠着所述第一分解器组件下一层的组件接收消息。所述消息包含在所述消息内的一个或多个嵌套消息。所述第一分解器组件向所述组件的分层安排中紧靠着所述第一分解器组件上一层的组件指示会话的开始。所述会话位于所述第一分解器组件和紧靠着所述第一分解器组件上一层的组件之间。所述第一分解器组件将所述消息内的一个或多个嵌套消息之一发送给所述会话。
第二分解器组件从所述组件的分层安排中紧靠着所述第二分解器组件下一层的组件接收第一会话开始的指示。所述第一会话位于所述第二分解器组件和紧靠着所述第二分解器组件下一层的组件之间。所述第一会话响应于所述第一分解器组件所指示的会话。
所述第二分解器组件从所述组件的分层安排中紧靠着所述第二分解器组件下一层的组件接收所述第一会话上的消息。所述消息包含在所述消息内的一个或多个嵌套消息。所述消息响应于由所述第一分解器组件发送的嵌套消息。
所述第二分解器组件向所述组件的分层安排中紧靠着所述第二分解器组件上一层的组件指示第二会话的开始。所述第二会话位于所述第二分解器组件和紧靠着所述第二分解器组件上一层的组件之间。
所述第二分解器组件在向紧靠着所述第二分解器组件上一层的组件指示所述第二会话的开始之后,向其发送所述消息中的一个或多个嵌套消息中的每一个(包括最后一个嵌套消息)。发送一个或多个嵌套消息包括,所述第二分解器组件解析所述消息以从所述消息中包含的一个或多个嵌套消息中标识出下一嵌套的消息。发送一个或多个嵌套消息还包括,所述第二分解器组件将被标识的下一嵌套消息发送给所述第二会话。
所述第二分解器组件从所述组件的分层安排中紧靠着所述第二分解器组件下一层的组件接收第一会话结束的指示。所述第二分解器组件在向所述第二会话发送最后嵌套的消息之后,向紧靠着所述第二分解器组件上一层的组件指示所述第二会话的结束。在接收所述第一会话结束的指示之后发送所述第二会话结束的指示。
在另外一些实施例中,创建用于分解应用的消息的消息栈。消息通信运行时接收消息通信栈的声明性规范。声明性规范规定了要被包括在消息通信栈中用于分解应用的消息的组件。声明性规范包括传输组件规范、分解器组件的一个或多个实例的规范、以及一个或多个帧调节器组件规范。
运行时从声明性规范中创建消息栈。创建运行时包括形成执行组件的分层线性集合。执行组件的分层线性集合包括:(a)下层传输组件,(b)一个或多个分解器组件,以及(c)上层应用组件。下层传输组件根据传输组件规范来配置。一个或多个分解器组件根据分解器组件规范来配置。每一个分解器组件分别与分解器组件的实例之一的规范相对应。更新层应用组件对应于应用。
当组件被添加到执行组件的分层线性集合时,消息通信运行时携带共享上下文。对于一个或多个帧调节器组件规范中的每一个,消息运行时将帧调节器组件规范添加到与分解器组件之一相对应的共享上下文的一部分。分解器组件之一是利用根据帧调节器组件规范来配置的帧调节器组件来解析消息的分解器组件。
对于每一个分解器组件,消息通信运行时在与分解器组件之一相对应的共享上下文的一部分中创建帧调节器厂。帧调节器厂被配置成从分解器组件接收消息,并且向分解器组件返回用于所述消息的帧调节器的组件。帧调节器组件用于包含在分解器组件内以解析消息从而标识出所述消息中包含的嵌套消息。帧调节器组件根据添加到与分解器组件相对应的共享上下文的一部分的帧调节器组件规范来配置。
每一个分解器组件被配置成从执行组件的分层线性集合中紧靠着所述分解器组件下一层的组件接收消息。对于每一个接收到的消息,分解器组件用接收到的消息来调用与所述分解器组件相对应的帧调节器厂、从帧调节器厂获得帧调节器组件以解析消息从而标识任何嵌套的消息、以及将任何嵌套的消息发送至执行组件的分层线性集合中紧靠着所述分解器组件上一层的组件。
提供本发明内容以便以简化的形式介绍将在以下的具体实施例中进一步描述的一些概念。本发明内容并非旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
本发明的附加特征和优点将在以下描述中叙述,且其一部分根据本描述将是显而易见的,或可通过对本发明的实践来获知。本发明的特征和优点可通过在所附权利要求书中特别指出的工具和组合来实现和获得。本发明的这些和其他特征将通过以下描述和所附权利要求书变得更加显而易见,或可通过对下文中所述的本发明的实践来领会。
附图简述
为了描述可获得本发明的上述和其他优点和特征的方式,将通过参考附图中示出的本发明的具体实施例来呈现以上简要描述的本发明的更具体描述。可以理解,这些附图仅描述本发明的典型实施例,从而不被认为是对其范围的限制,本发明将通过使用附图用附加特征和细节来描述和说明,在附图中:
图1示出了便于分层地分解消息的示例计算机架构。
图2示出了用于分层地分解消息的示例方法的流程图。
图3示出了便于分层地分解消息的另一示例计算机架构。
图4示出了用于分层地分解消息的另一示例方法的流程图。
图5示出了消息通信流水线规范以及相对应的消息通信组件的分层安排。
详细描述
本发明涉及用于分层地分解消息的方法、***和计算机程序产品。本发明的各实施例包括分解一个或多个消息。在消息分解的某些实施例中,从一个或多个分解器组件中选出的分解器组件从组件的分层安排中紧靠着所述分解器组件下一层的组件接收消息。所述消息包含在所述消息内的一个或多个嵌套消息。
所述分解器组件向帧调节器厂指示所述消息的消息类型。帧调节器厂创建分解器组件内包含的帧调节器。帧调节器用于解析所述消息。所述分解器组件向所述组件的分层安排中紧靠着所述分解器组件上一层的组件指示会话开始。所述会话位于所述分解器组件和紧靠着所述分解器组件上一层的组件之间。
对于所述消息中的一个或多个嵌套消息中的每一个消息,帧调节器解析所述消息以从所述消息中包含的一个或多个嵌套消息中标识出下一嵌套的消息。对于所述消息中的一个或多个嵌套消息中的每一个消息,所述分解器组件将被标识的下一嵌套的消息发送给所述会话。所述分解器组件向紧靠着所述分解器组件上一层的组件指示所述会话的结束。
在消息分解的其他实施例中,第一分解器组件从组件的分层安排中紧靠着所述第一分解器组件下一层的组件接收消息。所述消息包含在所述消息内的一个或多个嵌套消息。所述第一分解器组件向所述组件的分层安排中紧靠着所述第一分解器组件上一层的组件指示会话的开始。所述会话位于所述第一分解器组件和紧靠着所述第一分解器组件上一层的组件之间。所述第一分解器组件将所述消息内的一个或多个嵌套消息之一发送给所述会话。
第二分解器组件从所述组件的分层安排中紧靠着所述第二分解器组件下一层的组件接收第一会话开始的指示。所述第一会话位于所述第二分解器组件和紧靠着所述第二分解器组件下一层的组件之间。所述第一会话响应于所述第一分解器组件所指示的会话。
所述第二分解器组件从所述组件的分层安排中紧靠着所述第二分解器组件下一层的组件接收所述第一会话上的消息。所述消息包含在所述消息内的一个或多个嵌套消息。所述消息响应于由所述第一分解器组件发送的嵌套消息。
所述第二分解器组件向所述组件的分层安排中紧靠着所述第二分解器组件上一层的组件指示第二会话的开始。所述第二会话位于所述第二分解器组件和紧靠着所述第二分解器组件上一层的组件之间。
所述第二分解器组件在向紧靠着所述第二分解器组件上一层的组件指示所述第二会话的开始之后,向其发送所述消息中的一个或多个嵌套消息中的每一个(包括最后一个嵌套消息)。发送一个或多个嵌套消息包括,所述第二分解器组件解析所述消息以从所述消息中包含的一个或多个嵌套消息中标识出下一嵌套的消息。发送一个或多个嵌套消息还包括,所述第二分解器组件将被标识的下一嵌套消息发送给所述第二会话。
所述第二分解器组件从所述组件的分层安排中紧靠着所述第二分解器组件下一层的组件接收第一会话结束的指示。所述第二分解器组件在向所述第二会话发送最后嵌套的消息之后,向紧靠着所述第二分解器组件上一层的组件指示所述第二会话的结束。在接收所述第一会话结束的指示之后发送所述第二会话结束的指示。
在另外一些实施例中,创建用于分解应用的消息的消息栈。消息通信运行时接收消息通信栈的声明性规范。声明性规范规定了要被包括在消息通信栈中用于分解应用的消息的组件。声明性规范包括传输组件规范、分解器组件的一个或多个实例的规范、以及一个或多个帧调节器组件规范。
运行时从声明性规范中创建消息栈。创建运行时包括形成执行组件的分层线性集合。执行组件的分层线性集合包括:(a)下层传输组件,(b)一个或多个分解器组件,以及(c)上层应用组件。下层传输组件根据传输组件规范来配置。一个或多个分解器组件根据分解器组件规范来配置。每一个分解器组件分别与分解器组件的实例之一的规范相对应。更新层应用组件对应于应用。
当组件被添加到执行组件的分层线性集合时,消息通信运行时携带共享上下文。对于一个或多个帧调节器组件规范中的每一个,消息运行时将帧调节器组件规范添加到与分解器组件之一相对应的共享上下文的一部分。分解器组件之一是利用根据帧调节器组件规范来配置的帧调节器组件来解析消息的分解器组件。
对于每一个分解器组件,消息通信运行时在与分解器组件之一相对应的共享上下文的一部分中创建帧调节器厂。帧调节器厂被配置成从分解器组件接收消息,并且向分解器组件返回用于所述消息的帧调节器的组件。帧调节器组件用于包含在分解器组件内以解析消息从而标识出所述消息中包含的嵌套消息。帧调节器组件根据添加到与分解器组件相对应的共享上下文的一部分的帧调节器组件规范来配置。
每一个分解器组件被配置成从执行组件的分层线性集合中紧靠着所述分解器组件下一层的组件接收消息。对于每一个接收到的消息,分解器组件用接收到的消息来调用与所述分解器组件相对应的帧调节器厂、从帧调节器厂获得帧调节器组件以解析消息从而标识任何嵌套的消息、以及将任何嵌套的消息发送至执行组件的分层线性集合中紧靠着所述分解器组件上一层的组件。
在某些实施例中,可重用帧调节器组件可被嵌入在分解器组件内以检测消息中各个段之间的边界从而将单个消息变换成子消息流。帧调节器和分解器可在消息处理分层结构中组成,从而允许它们与其他消息通信组件一起被使用并且支持多个分解器的堆叠以拆解分层结构化的消息批次。分解器的分层结构可完全从一个或多个统一的规范中构造。
本发明的各实施例可包括或利用专用或通用计算机,该专用或通用计算机包括诸如例如一个或多个处理器和***存储器等计算机硬件,如以下更详细讨论的。本发明范围内的各实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是可由通用或专用计算机***访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。承载计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限制,本发明的各实施例可包括至少两种显著不同的计算机可读介质:计算机存储介质和传输介质。
计算机存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他介质。
“网络”被定义为允许在计算机***和/或模块和/或其他电子设备之间传输电子数据的一个或多个数据链路。当信息通过网络或另一个通信连接(硬连线、无线、或者硬连线或无线的组合)传输或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可包括可用于携带计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的网络和/或数据链路。上述的组合也应被包括在计算机可读介质的范围内。
此外,在到达各种计算机***组件之后,计算机可执行指令或数据结构形式的程序代码装置可从传输介质自动传输到计算机存储介质(或反之亦然)。例如,通过网络或数据链路接收到的计算机可执行指令或数据结构可被缓存在网络接口模块(例如,“NIC”)内的RAM中,然后最终被传输到计算机***RAM和/或计算机***处的较不易失性的计算机存储介质。因而,应当理解,计算机存储介质可被包括在还利用(或甚至主要利用)传输介质的计算机***组件中。
计算机可执行指令例如包括,当在处理器处执行时使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。计算机可执行指令可以是例如二进制代码、诸如汇编语言之类的中间格式指令、或甚至源代码。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特征或动作。相反,上述特征和动作是作为实现权利要求的示例形式而公开的。
本领域的技术人员将理解,本发明可以在具有许多类型的计算机***配置的网络计算环境中实践,这些计算机***配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器***、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机等等。本发明也可在其中通过网络链接(或者通过硬连线数据链路、无线数据链路,或者通过硬连线和无线数据链路的组合)的本地和远程计算机***两者都执行任务的分布式***环境中实施。在分布式***环境中,程序模块可以位于本地和远程存储器存储设备二者中。
图1示出了便于分层地分解消息的示例计算机架构100。参考图1,计算机架构100包括下层组件101、分解器104、帧调节器厂106、以及上层组件107。所描绘的组件中的每一个可通过***总线和/或诸如例如局域网(“LAN”)、广域网(“WAN”)和甚至因特网等网络彼此连接。因此,所描绘的组件中的每一个以及任何其他连接的计算机***及其组件都可以创建消息相关数据并通过网络交换消息相关数据(例如,网际协议(“IP”)数据报和利用IP数据报的其他更高层协议,诸如传输控制协议(“TCP”)、超文本传输协议(“HTTP”)、简单邮件传输协议(“SMTP)等)。”
如所描绘的,下层组件101包括通信介质102(例如,下层传输组件)和可任选的分解器103。一般地,消息在通信介质102上接收。消息可任选地通过下层组件101的其他组件(包括分解器103)来向上传递。分解器103可以是被可任选地包括在下层组件101中的一个或多个分解器之一。从而,可能的情况是消息从通信介质102被直接传递至分解器104。另选地,消息可从通信介质102通过被包括在下层组件101中的一个或多个可任选的分解器来传递。最后一个可任选的分解器随后将消息(或其部分)传递至分解器104。
在通过下层组件101进行传递之后,消息(或其至少一部分)被向上传递至分解器104。在接收到消息时,分解器104向帧调节器厂106指示消息类型。在某些实施例中,分解器104确定消息类型并将消息类型发送给帧调节器厂106。在其他实施例中,分解器104将消息发送给帧调节器厂106而帧调节器厂106确定消息类型。
响应于接收到消息类型,帧调节器厂106加载分解器104内包含的帧调节器。分解器104使用帧调节器来访问任何与接收到的消息嵌套的消息。任何被访问的嵌套消息被单独地向上传递至上层组件107。当最后一个嵌套消息被访问并且被向上传递至上层组件107时,所包含的帧调节器可被销毁。
如所描绘的,上层组件107包括应用109和可任选的分解器108。一般地,上层组件107从分解器104接收消息。消息可任选地通过上层组件107的其他组件(包括分解器108)被向上传递。分解器108可以是被可任选地包括在上层组件107中的一个或多个分解器之一。消息(或其至少一部分)被递送至应用109。
诸如例如分解器103和109之类的其他可任选地包括的分解器还可利用帧调节器厂106来访问嵌套消息。被访问的嵌套消息随后可被单独地向上传递至上层组件。由此,多次嵌套的消息可在应用处被访问和处理。
图2示出了用于分层地分解消息的示例方法200的流程图。方法200将参考计算机架构100的组件和数据来描述。
方法200包括,从一个或多个分解器组件中选出的分解器组件从组件的分层安排中紧靠着所述分解器组件下一层的组件接收消息的动作,所述消息包含所述消息内的一个或多个嵌套消息(动作201)。例如,分解器104可从下层组件101中的组件接收消息121。在某些实施例中,分解器104直接从通信介质102接收消息。在其他实施例中,分解器104从分解器103或者被包括在下层组件101中的某一其他分解器接收消息。如所描绘的,消息121包含嵌套消息121A、121B等。
然而,消息121(以及其他消息)实质上可具有任何嵌套级别。消息可包括包含深度嵌套的消息的分层级别的批量处理的电子数据交换(EDI)消息。
方法200包括分解器组件向帧调节器厂指示消息的消息类型的动作(动作202)。例如,分解器140可向帧调节器厂106指示(消息122的)消息类型123。消息类型123可以是由分解器104确定的消息类型。另选地,消息类型123可由帧调节器厂106在接收到消息122时确定。
方法200包括帧调节器厂创建包含在分解器组件内的帧调节器的动作,所述帧调节器用于解析消息(动作203)。例如,帧调节器厂106可创建包含在分解器104内的帧调节器111。帧调节器111被配置成解析消息121。
方法200包括,分解器组件向组件的分层安排中紧靠着所述分解器组件上一层的组件指示会话开始的动作,所述会话位于所述分解器组件和紧靠着所述分解器组件上一层的组件之间(动作204)。例如,分解器104可向上层组件107中的组件发送会话开始(SoS)141。SoS141可被发送至被包括在上层组件107中的分解器组件,诸如例如,被发送至分解器108。另选地,SoS141可被发送至应用109。作为响应,可适当地在分解器104和上层组件107中的另一组件之间,或者在分解器104和应用109之间建立会话。
对于消息中的一个或多个嵌套消息中的每一个消息(包括最后一个嵌套消息),并且在指示会话开始之后,方法200包括,帧调节器解析消息以从消息内包含的一个或多个嵌套消息中标识出下一嵌套消息的动作(动作205),以及分解器组件将被标识的下一嵌套消息发送至会话的动作(动作206)。例如,帧调节器111可解析消息121以标识消息121A。分解器104随后可将消息121A发送至上层组件,不管其是另一分解器还是应用109。接着,帧调节器111可解析消息121以标识消息121B。分解器104随后可将消息121B发送至上层组件,不管其是另一分解器还是应用109。这可继续直到消息121中包含的最后一个嵌套消息被标识并被发送至上层组件。
在将消息内的最后一个嵌套消息发送至会话之后,帧调节器可被销毁。例如,在分解器104将消息121内的最后一个嵌套消息发送至上层组件之后,帧调节器111可被销毁。
方法200包括,分解器向紧靠着所述分解器组件上一层的组件指示会话结束的动作(动作207)。例如,分解器104可将会话结束(EoS)142发送至上层组件107中的组件,诸如例如,发送至分解器108、发送至应用109。
还可能的情况是,下层组件101中的组件(分解器或通信介质102)将会话开始的指示发送给分解器104。例如,下层组件101中的组件可将会话开始(SoS)131发送至分解器104。作为响应,可在下层组件和分解器104之间建立会话。消息121可从下层组件通过会话被发送至分解器104。
也可在下层组件和分解器104之间的会话上发送一个或多个其他消息。例如,消息122可从下层组件被发送至分解器104。如所描绘的,消息122包含嵌套消息122A、122B等。在接收到消息122时,分解器104向帧调节器厂106指示消息122的消息类型。例如,分解器104可将消息类型124发送至帧调节器厂106。作为响应,帧调节器厂106可创建包含在分解器104内的帧调节器112。
对于消息122中包含的每一个嵌套消息,帧调节器112可解析消息122以标识下一嵌套消息,并且将被标识的下一嵌套消息发送至上层组件107中的组件。例如,帧调节器112可解析消息122以标识消息122A。分解器104随后可将消息122A发送至上层组件,不管其是另一分解器还是应用109。接着,帧调节器112可解析消息122以标识消息122B。分解器104随后可将消息122B发送至上层组件,不管其是另一分解器还是应用109。这可继续直到消息122中包含的最后一个嵌套消息被标识并被发送至上层组件。
当下层组件不再具有供分解器104的消息时,下层组件可指示下层组件和分解器104之间的会话结束。例如,下层组件101中的下层组件可将会话结束(EoS)132发送至分解器104。分解器104可接收EoS132。EoS132向分解器104指示,下层组件不再具有供分解器104的消息。作为对EoS132的响应,帧调节器112可被销毁。也可以响应于接收到EoS132来发送EoS142。
图3示出了便于分层地分解消息的计算机架构300。参考图3,计算机架构300包括下层组件301、分解器304、分解器314、以及上层组件307。所描绘的组件中的每一个可通过***总线和/或诸如例如局域网(“LAN”)、广域网(“WAN”)和甚至因特网等网络彼此连接。因此,所描绘的组件中的每一个以及任何其他连接的计算机***及其组件都可以创建消息相关数据并通过网络交换消息相关数据(例如,网际协议(“IP”)数据报和利用IP数据报的其他更高层协议,诸如传输控制协议(“TCP”)、超文本传输协议(“HTTP”)、简单邮件传输协议(“SMTP)等)。”
如所描绘的,下层组件301包括通信介质302(例如,下层传输组件)和可任选的分解器303。一般地,消息在通信介质302上接收。消息可任选地通过下层组件301的其他组件(包括分解器303)来向上传递。分解器303可以是被可任选地包括在下层组件301中的一个或多个分解器之一。从而,可能的情况是消息从通信介质302被直接传递至分解器304。另选地,消息可从通信介质302通过被包括在下层组件301中的一个或多个可任选的分解器来传递。最后一个可任选的分解器随后将消息(或其部分)传递至分解器304。
如所描绘的,上层组件307包括应用309和可任选的分解器308。一般地,上层组件307从分解器314接收消息。消息可任选地通过上层组件307的其他组件(包括分解器308)来向上传递。分解器308可以是被可任选地包括在上层组件307中的一个或多个分解器之一。消息(或其至少一部分)被递送至应用309。
简要地回头参考图1,诸如例如分解器103和108之类的其他可任选地被包括的分解器可用于访问随后被单独向上传递至上层组件的嵌套消息。由此,多次嵌套的消息可在应用处被访问和处理。计算机架构300中的分解器可以利用或可以不利用帧调节器厂和/或帧调节器。
图4示出了用于分层地分解消息的示例方法400的流程图。方法400将参考计算机架构300的组件和数据来描述。在某些实施例中,下层组件301中的下层组件(例如,通信介质302、分解器303或某一其他分解器)将会话开始(SoS)331发送至分解器304。分解器304可从下层组件接收SoS331。作为响应,可在下层组件和分解器304之间建立会话333。
方法400包括,第一分解器组件从组件的分层安排中紧靠着所述第一分解器组件下一层的组件接收消息的动作,所述消息包含所述消息内的一个或多个嵌套消息(动作401)。例如,分解器304可从下层组件301中的下层组件(例如,通信介质302、分解器303或某一其他分解器)接收消息321。如所描绘的,消息321包含嵌套消息321A、321B等。
方法400包括,第一分解器组件向组件的分层安排中紧靠着所述第一分解器组件上一层的组件指示会话的开始的动作,所述会话位于所述第一分解器组件和紧靠着所述第一分解器组件上一层的组件之间(动作402)。方法400包括,第二分解器组件从组件的分层安排中紧靠着所述第二分解器组件下一层的组件接收第一会话开始的指示的动作,所述第一会话位于所述第二分解器组件和紧靠着所述第二分解器组件下一层的组件之间,所述第一会话响应于由所述第一分解器组件指示的会话(动作404)。例如,分解器304可向分解器314指示会话开始(SoS)341。分解器314可从分解器304接收SoS341。作为响应,可在下层组件和分解器304之间建立会话343。
方法400包括,第一分解器组件将消息内的一个或多个嵌套消息之一发送至会话的动作(动作403)。例如,分解器304可将消息321A、321B等发送至会话343。方法400包括,第二分解器组件从组件的分层安排中紧靠着所述第二分解器组件下一层的组件接收第一会话上的消息的动作,所述消息包含所述消息内的一个或多个嵌套消息,所述消息响应于由所述第一分解器发送的嵌套消息(动作405)。例如,分解器314可从分解器304接收会话343上的消息321A、321B等,可接收会话333上的消息321。如所描绘的,消息321A包含嵌套消息321A1、321A2等,而消息321B包含消息321B1、321B2等。
方法400包括,第二分解器组件向组件的分层安排中紧靠着所述第二分解器组件上一层的组件指示第二会话开始的动作,所述第二会话位于所述第二分解器组件和紧靠着所述第二分解器组件上一层的组件之间(动作406)。例如,分解器314可将会话开始(SoS)361发送至上层组件307中的组件(例如,分解器308、某一其他分解器、或应用309)。上层组件可从分解器314接收SoS361。作为响应,可在分解器314和上层组件之间建立会话363。
方法400包括,第二分解器组件在向紧靠着所述第二分解器组件上一层的组件指示所述第二会话开始之后,向其发送所述消息中的一个或多个嵌套消息中的每一个(包括最后一个嵌套消息)的动作(动作407)。例如,分解器314可在会话363上将消息321A1、3211A2、321B1、321B2等发送至上层组件。
动作407可包括,第二分解器组件解析消息以从所述消息中包含的一个或多个嵌套消息中标识出下一嵌套消息的动作(动作408),以及第二分解器组件将被标识的下一嵌套消息发送至第二会话的动作(动作409)。例如,分解器314可解析消息321A以标识出消息321A1、321A2等。分解器314随后可在会话363上将消息321A1、321A2等发送至上层组件。接着,分解器304可解析消息321B以标识出消息321B1、321B2等。分解器314随后可在会话363上将消息321B1、321B2等发送至上层组件。这可继续直到消息321中包含的最后一个嵌套消息被解析并且任何嵌套消息都被发送至上层组件。
当下层组件不再具有供分解器304的消息时,下层组件可指示下层组件和分解器304之间的会话结束。例如,下层组件301中的下层组件可将会话结束(EoS)332发送至分解器304。分解器304可接收EoS332。EoS332向分解器304指示,下层组件不再具有供分解器304的消息。
方法400包括,第二分解器组件从组件的分层安排中紧靠着所述第二分解器组件下一层的组件接收第一会话结束的指示的动作(动作410)。例如,当分解器304不再具有供分解器314的消息时,分解器304可指示会话343结束。例如,分解器304可向分解器314发送会话结束(EoS)342。分解器304可接收EoS342。EoS342向分解器314指示,分解器304不再具有供分解器314的消息。
方法400包括,第二分解器组件在将最后一个嵌套消息发送至第二会话之后以及在将接收到第一会话结束的指示之后,向紧靠着所述第二分解器组件上一层的组件指示第二会话结束的动作(动作411)。例如,当分解器314不再具有供上层组件的消息时,分解器314可指示会话363结束。例如,分解器314可向上层组件发送会话结束(EoS)362。上层组件可接收EoS362。EoS362向上层组件指示,分解器314不再具有供上层组件的消息。
在某些实施例中,消息处理组件的分层安排在包括规范元素列表的规范中定义。例如,现在参考图5,规范501包括帧调节器规范502、分解器规范503、帧调节器规范504、分解器规范506以及传输规范507。
在运行时期间,消息处理组件的分层安排从规范中构建。例如,分层安排521可从规范501中构建。如所描绘的,分层安排521包括传输517、分解器514、分解器512和应用511。传输517根据传输规范507来建立。分解器514根据分解器规范506来建立。分解器512根据分解器规范503来建立。
诸如例如消息522之类的消息最初在传输517处接收。消息在分层安排521的基础上向上传递至应用511。每一个分解器可处理和移除嵌套消息级别,并且将嵌套消息单独地向上传递至下一组件。帧调节器可被加载(例如在运行时)以解析和标识嵌套消息。帧调节器可根据帧调节器规范来建立。例如,帧调节器516和513可分别根据帧调节器规范504和502来建立。
一般地,分解器是分层结构中执行组件的线性集合的一部分。然而,帧调节器不一定是执行组件的这一线性集合的一部分。在运行时,帧调节器可以是分解器内部的嵌套子组件,并且(例如,如先前所述的)可具有独立于其他执行组件的对象生存期的对象生存期。通过使帧调节器规范元素将其本身添加到共享上下文而非构建流水线组件来实现适当的变型。
分解器规范在运行时构建过程中遵循帧调节器规范,并且在共享上下文中寻找帧调节器厂。在找到帧调节器厂时,分解器规范使用帧调节器厂来创建作为参数的分解器***对象。一个分层结构中可出现一个以上的帧调节器和分解器,从而产生了消息分解器的分层系列。
由此,本发明的各实施例提供了用于分解消息的各种机制。分解器和帧调节器的功能被解耦合,以使得不同类型的消息的帧调节器可在分层结构中的同一层处使用,而不必还改变分解器。实质上任何分解层都可能解决任何对应的消息嵌套层。分解可在每一消息的基础上执行或在每一会话的基础上执行。
本发明可具体化为其它具体形式而不背离其精神或本质特征。所描述的实施例在所有方面都应被认为仅是说明性而非限制性的。因此,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变被权利要求书的范围所涵盖。

Claims (16)

1.一种在计算机***处的用于分解一个或多个消息的方法,所述计算机***包括一个或多个处理器、***存储器和消息通信栈,所述消息通信栈具有组件的分层安排,所述组件包括下层传输组件、一个或多个分解器组件以及上层应用组件,所述下层传输组件在所述组件的分层安排中位于所述一个或多个分解器组件和所述上层应用组件之下,所述上层应用组件在所述组件的分层安排中位于所述下层传输组件和所述一个或多个分解器组件之上,所述计算机***还包括帧调节器厂,用于创建可被包含在所述一个或多个分解器组件内以解析消息的帧调节器,所述方法包括:
从所述一个或多个分解器组件中选出的分解器组件从所述组件的分层安排中紧靠着所述分解器组件下一层的组件接收消息的动作,所述消息包含所述消息内的一个或多个嵌套消息;
所述分解器组件向所述帧调节器厂指示所述消息的消息类型的动作;
所述帧调节器厂向所述分解器组件提供帧调节器的动作,所述帧调节器用于解析所述消息;
所述分解器组件向所述组件的分层安排中紧靠着所述分解器组件上一层的组件指示会话开始的动作,所述会话位于所述分解器组件和紧靠着所述分解器组件上一层的组件之间;
对于所述消息中的一个或多个嵌套消息中的每一个消息,包括最后一个嵌套消息,以及在指示所述会话开始之后:
所述帧调节器解析所述消息以从包含在所述消息中的所述一个或多个嵌套消息中标识出下一嵌套消息的动作;以及
所述分解器组件将被标识出的下一嵌套消息发送至所述会话的动作;以及
所述分解器组件向紧靠着所述分解器组件上一层的组件指示所述会话结束的动作。
2.如权利要求1所述的方法,其特征在于,还包括,所述分解器组件在从紧靠着所述分解器组件下一层的组件接收所述消息之前,从紧靠着所述分解器组件下一层的组件接收第二会话开始的指示的动作,所述第二会话位于所述分解器组件和紧靠着所述分解器组件下一层的组件之间。
3.如权利要求2所述的方法,其特征在于,所述分解器组件接收消息的动作包括所述分解器组件接收所述第二会话上的消息的动作。
4.如权利要求3所述的方法,其特征在于,还包括:
分解器组件接收所述第二会话上的第二消息的动作;
所述分解器组件将所述第二消息发送给所述帧调节器厂的动作;
所述帧调节器厂向所述分解器组件提供第二帧调节器的动作,所述第二帧调节器用于解析所述第二消息;以及
对于所述第二消息中的一个或多个嵌套消息中的每一个消息,包括最后一个嵌套消息:
所述第二帧调节器解析所述第二消息以从包含在所述第二消息中的所述一个或多个嵌套消息中标识出下一嵌套消息的动作;以及
所述分解器组件将被标识出的下一嵌套消息发送至所述会话的动作。
5.如权利要求4所述的方法,其特征在于,还包括,在所述分解器组件向紧靠着所述分解器组件上一层的组件指示所述第二会话结束之前,从紧靠着所述分解器组件下一层的组件接收所述第二会话结束的指示的动作。
6.如权利要求4所述的方法,其特征在于,所述分解器组件接收所述第二会话上的消息的动作包括所述分解器组件使用事务来接收所述消息的动作;以及
其中所述分解器组件接收所述第二会话上的第二消息的动作包括所述分解器组件使用所述事务来接收所述第二消息的动作。
7.如权利要求1所述的方法,其特征在于,所述分解器组件从所述组件的分层安排中紧靠着所述分解器组件下一层的组件接收消息的动作包括,所述分解器组件接收带有事务的消息的动作;以及
其中对于所述消息中的所述一个或多个嵌套消息中的每一个消息,所述分解器组件将被标识出的下一嵌套消息发送至所述会话的动作包括,所述分解器组件使用所述事务将被标识出的下一嵌套消息发送至所述会话的动作。
8.一种在计算机***处的用于分解一个或多个消息的方法,所述计算机***包括一个或多个处理器、***存储器和消息通信栈,所述消息通信栈具有组件的分层安排,所述组件包括下层传输组件、多个分层安排的分解器组件、以及上层应用组件,所述下层传输组件在所述组件的分层安排中位于所述多个分层安排的分解器组件和所述上层应用组件之下,所述上层应用组件在所述组件的分层安排中位于所述下层传输组件和所述多个分层安排的分解器组件之上,所述多个分层安排的分解器组件包括至少第一分解器组件和第二分解器组件,所述第二分解器组件在所述多个分层安排的分解器组件中位于所述第一分解器组件之上,所述方法包括:
所述第一分解器组件从所述组件的分层安排中紧靠着所述第一分解器组件下一层的组件接收消息的动作,所述消息包含所述消息内的一个或多个嵌套消息;
所述第一分解器组件向所述组件的分层安排中紧靠着所述第一分解器组件上一层的组件指示会话开始的动作,所述会话位于所述第一分解器组件和紧靠着所述第一分解器组件上一层的组件之间;
所述第一分解器组件将所述消息内的所述一个或多个嵌套消息之一发送给所述会话的动作;
所述第二分解器组件从所述组件的分层安排中紧靠着所述第二分解器组件下一层的组件接收第一会话开始的指示的动作,所述第一会话位于所述第二分解器组件和紧靠着所述第二分解器组件下一层的组件之间,所述第一会话响应于由所述第一分解器组件指示的会话;
所述第二分解器组件从所述组件的分层安排中紧靠着所述第二分解器组件下一层的组件接收所述第一会话上的消息的动作,所述消息包含所述消息内的一个或多个嵌套消息,所述消息响应于由所述第一分解器组件发送的嵌套消息;
所述第二分解器组件向所述组件的分层安排中紧靠着所述第二分解器组件上一层的组件指示第二会话开始的动作,所述第二会话位于所述第二分解器组件和紧靠着所述第二分解器组件上一层的组件之间;
所述第二分解器组件在指示所述第二会话开始之后向紧靠着所述第二分解器组件上一层的组件发送所述消息中的所述一个或多个嵌套消息中的每一个的动作,所述一个或多个嵌套消息中的每一个包括最后一个嵌套消息,包括:
所述第二分解器组件解析所述消息以从包含在所述消息中的所述一个或多个嵌套消息中标识出下一嵌套消息的动作;以及
所述第二分解器组件将被标识出的下一嵌套消息发送至所述第二会话的动作;
所述第二分解器组件从所述组件的分层安排中紧靠着所述第二分解器组件下一层的组件接收所述第一会话结束的指示的动作;以及
所述第二分解器组件在将所述最后一个嵌套消息发送至所述第二会话之后以及在接收到所述第一会话结束的指示之后,向紧靠着所述第二分解器组件上一层的组件指示所述第二会话结束的动作。
9.如权利要求8所述的方法,其特征在于,在所述组件的分层安排中紧靠着所述第一分解器组件上一层的组件是所述第二分解器组件。
10.如权利要求8所述的方法,其特征在于,在所述组件的分层安排中紧靠着所述第一分解器组件上一层的组件包括一个或多个分层安排的消息通信组件,所述一个或多个消息通信组件中的每一个被配置成:
从所述组件的分层安排中紧靠着所述消息通信组件下一层的组件接收第一会话开始的指示,所述第一会话位于所述消息通信组件和紧靠着所述消息通信组件下一层的组件之间;
向所述组件的分层安排中紧靠着所述消息通信组件上一层的组件指示第二会话开始,所述第二会话位于所述消息通信组件和紧靠着所述消息通信组件上一层的组件之间;
接收所述第一会话中的一个或多个消息中的每一个消息;
将一个或多个消息发送至所述第二会话,所发送的消息响应于接收到的消息;
从紧靠着所述消息通信组件下一层的组件接收所述第一会话结束的指示;以及
在接收到所述第一会话结束的指示之后,向紧靠着所述消息通信组件上一层的组件发送所述第二会话结束的指示。
11.如权利要求8所述的方法,其特征在于,所述第二分解器组件将被标识出的下一嵌套消息发送至所述第二会话的动作包括,所述第二分解器组件发送所述消息内包含的一个或多个嵌套消息的动作。
12.如权利要求11所述的方法,其特征在于,所述多个分层安排的分解器组件包括在所述第二分解器组件之上的第三分解器组件。
13.如权利要求8所述的方法,其特征在于,还包括:
所述第一分解器组件将所述消息内的所述一个或多个嵌套消息中的另一消息发送给所述会话的动作;
所述第二分解器组件从所述组件的分层安排中紧靠着所述第二分解器组件下一层的组件接收所述第一会话上的第二消息的动作,所述第二消息包含所述消息内的一个或多个嵌套消息,所述第二消息响应于由所述第一分解器组件发送的另一嵌套消息;以及
所述第二分解器组件在指示所述第二会话开始之后向紧靠着所述第二分解器组件上一层的组件发送所述第二消息中的所述一个或多个嵌套消息中的每一个消息的动作,所述一个或多个嵌套消息中的每一个消息包括最后一个嵌套消息,包括:
所述第二分解器组件解析所述第二消息以从包含在所述第二消息中的所述一个或多个嵌套消息中标识出下一嵌套消息的动作;以及
所述第二分解器组件将被标识出的下一嵌套消息发送至所述第二会话的动作。
14.如权利要求8所述的方法,其特征在于,所述第一分解器组件从所述组件的分层安排中紧靠着所述第一分解器组件下一层的组件接收消息的动作包括,所述第一分解器组件使用事务来接收所述消息的动作;且其中所述第二分解器组件向紧靠着所述第二分解器组件上一层的组件发送所述消息中的所述一个或多个嵌套消息中的每一个消息的动作包括,使用所述事务来发送所述消息中的所述一个或多个嵌套消息中的每一个消息的动作。
15.一种在计算机***处的用于创建用于分解应用的消息的消息通信栈的方法,所述计算机***包括一个或多个处理器、***存储器和消息通信运行时,所述消息通信运行时被配置成从声明性规范中构建消息通信栈,所述方法包括:
接收声明性规范的动作,所述声明性规范指定了要被包括在用于分解所述应用的消息的消息通信栈中的组件,所述声明性规范包括传输组件规范、分解器组件的一个或多个实例的规范、以及一个或多个帧调节器组件规范;
所述消息通信运行时从所述声明性规范中创建消息栈的动作,包括:
形成执行组件的分层线性集合的动作,所述执行组件的分层线性集合包括:(a)根据所述传输组件规范来配置的下层传输组件,(b)根据所述分解器组件规范来配置的一个或多个分解器组件,每一个分解器组件分别对应于所述分解器组件的实例之一的规范,以及(c)与所述应用相对应的上层应用组件,所述下层传输组件在所述执行组件的分层线性集合中位于所述一个或多个分解器组件和所述上层应用组件之下,所述上层应用组件在所述执行组件的分层线性集合中位于所述下层传输组件和所述一个或多个分解器组件之上;以及
当组件被添加到所述执行组件的分层线性集合时携带共享上下文的动作;
对于所述一个或多个帧调节器组件规范中的每一个:
将与所述分解器组件之一相对应的所述帧调节器组件规范添加到所述共享上下文的一部分的动作,所述分解器组件之一是利用根据所述帧调节器组件规范来配置的帧调节器组件来解析消息的分解器组件;
对于每一个分解器组件:
所述消息通信运行时在与所述分解器组件相对应的共享上下文的一部分中创建帧调节器厂的动作,所述帧调节器厂被配置成从所述分解器组件接收消息并且向所述分解器组件返回所述消息的帧调节器组件,所述帧调节器组件用于包含在所述分解器组件内以解析所述消息从而标识出所述消息中包含的嵌套消息,所述帧调节器组件根据被添加到与所述分解器组件相对应的共享上下文的一部分的所述帧调节器组件规范来配置;以及
其中每一个分解器组件被配置成:
从所述执行组件的分层线性集合中紧靠着所述分解器组件下一层的组件接收消息;以及
对于每一个接收到的消息:
用所述接收到的消息来调用与所述分解器组件相对应的帧调节器厂,
从所述帧调节器厂获得帧调节器组件以解析所述消息从而标识出所述消息内包含的嵌套消息;以及
将任何嵌套消息发送至所述执行组件的分层线性集合中紧靠着所述分解器组件上一层的组件。
16.如权利要求15所述的方法,其特征在于,所述一个或多个分解器组件中的至少一个还被配置成执行以下动作中的一个或多个:
使用会话将消息发送至另一分解器组件,以及
使用会话从另一分解器组件接收消息。
CN201180020852.1A 2010-04-26 2011-04-21 分层地分解消息 Active CN102884508B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/767,091 US8250234B2 (en) 2010-04-26 2010-04-26 Hierarchically disassembling messages
US12/767,091 2010-04-26
PCT/US2011/033414 WO2011139584A2 (en) 2010-04-26 2011-04-21 Hierarchically disassembling messages

Publications (2)

Publication Number Publication Date
CN102884508A CN102884508A (zh) 2013-01-16
CN102884508B true CN102884508B (zh) 2015-12-02

Family

ID=44816716

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180020852.1A Active CN102884508B (zh) 2010-04-26 2011-04-21 分层地分解消息

Country Status (4)

Country Link
US (2) US8250234B2 (zh)
EP (1) EP2564315B1 (zh)
CN (1) CN102884508B (zh)
WO (1) WO2011139584A2 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1356653B1 (en) * 2001-01-24 2011-07-20 Broadcom Corporation Method for processing multiple security policies applied to a data packet structure
US9405513B2 (en) * 2008-04-18 2016-08-02 Software Ag Systems and methods for graphically developing rules for transforming models between description notations
US8930527B2 (en) * 2009-05-26 2015-01-06 Oracle International Corporation High availability enabler
US8301706B2 (en) 2009-06-15 2012-10-30 Microsoft Corporation Routing of pooled messages via an intermediary
US8688816B2 (en) * 2009-11-19 2014-04-01 Oracle International Corporation High availability by letting application session processing occur independent of protocol servers
US8250234B2 (en) * 2010-04-26 2012-08-21 Microsoft Corporation Hierarchically disassembling messages
US9052907B2 (en) 2011-10-25 2015-06-09 Software Ag Selective change propagation techniques for supporting partial roundtrips in model-to-model transformations
CN108279910B (zh) * 2018-01-17 2021-04-13 珠海市杰理科技股份有限公司 程序代码烧写方法、装置、计算机设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6732153B1 (en) * 2000-05-23 2004-05-04 Verizon Laboratories Inc. Unified message parser apparatus and system for real-time event correlation
CN101495966A (zh) * 2005-06-29 2009-07-29 维萨美国股份有限公司 用于解析多格式消息的基于模式的动态解析/构建引擎
CN101547430A (zh) * 2008-03-24 2009-09-30 华为技术有限公司 一种会话方法、设备和***
US7870295B2 (en) * 2001-03-29 2011-01-11 International Business Machines Corporation Parsing messages with multiple data formats

Family Cites Families (100)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5339392A (en) 1989-07-27 1994-08-16 Risberg Jeffrey S Apparatus and method for creation of a user definable video displayed document showing changes in real time data
US5452445A (en) 1992-04-30 1995-09-19 Oracle Corporation Two-pass multi-version read consistency
GB2276737A (en) 1993-03-30 1994-10-05 Ibm Fault-tolerant transaction-oriented data processing
US5371889A (en) 1993-04-22 1994-12-06 Digital Equipment Corporation Journalling optimization system and method for distributed computations
WO1995010805A1 (en) 1993-10-08 1995-04-20 International Business Machines Corporation Message transmission across a network
US5592622A (en) 1995-05-10 1997-01-07 3Com Corporation Network intermediate system with message passing architecture
US6185197B1 (en) 1995-06-02 2001-02-06 Airspan Networks, Inc. Control message transmission in telecommunications systems
US5802310A (en) 1996-05-30 1998-09-01 International Business Machines Corporation Systems and methods for data channel queue control in a communications network
JPH1049381A (ja) 1996-07-04 1998-02-20 Internatl Business Mach Corp <Ibm> 複数のデータ処理要求の処理方法及び処理システム、プログラムの実行方法及びシステム
AT1751U1 (de) 1996-09-30 1997-10-27 Kuehn Eva Koordinations-system
US6353834B1 (en) 1996-11-14 2002-03-05 Mitsubishi Electric Research Laboratories, Inc. Log based data architecture for a transactional message queuing system
US5974442A (en) 1996-12-31 1999-10-26 Intel Corporation Communication technique for interactive applications over a network with delays
US5913213A (en) 1997-06-16 1999-06-15 Telefonaktiebolaget L M Ericsson Lingering locks for replicated data objects
US5924097A (en) 1997-12-23 1999-07-13 Unisys Corporation Balanced input/output task management for use in multiprocessor transaction processing system
US6484196B1 (en) 1998-03-20 2002-11-19 Advanced Web Solutions Internet messaging system and method for use in computer networks
US6263360B1 (en) 1998-06-01 2001-07-17 Sri International System uses filter tree and feed handler for updating objects in a client from a server object list
US6848108B1 (en) 1998-06-30 2005-01-25 Microsoft Corporation Method and apparatus for creating, sending, and using self-descriptive objects as messages over a message queuing network
US6425017B1 (en) 1998-08-17 2002-07-23 Microsoft Corporation Queued method invocations on distributed component applications
US6332150B1 (en) 1998-08-31 2001-12-18 Cubus Corporation Integrated document development method
US7047532B1 (en) 1998-11-13 2006-05-16 The Chase Manhattan Bank Application independent messaging system
US6728748B1 (en) 1998-12-01 2004-04-27 Network Appliance, Inc. Method and apparatus for policy based class of service and adaptive service level management within the context of an internet and intranet
US7937364B1 (en) 1999-03-09 2011-05-03 Oracle International Corporation Method and system for reliable access of messages by multiple consumers
US6516337B1 (en) 1999-10-14 2003-02-04 Arcessa, Inc. Sending to a central indexing site meta data or signatures from objects on a computer network
US6968395B1 (en) 1999-10-28 2005-11-22 Nortel Networks Limited Parsing messages communicated over a data network
GB2357226B (en) * 1999-12-08 2003-07-16 Hewlett Packard Co Security protocol
US6687735B1 (en) 2000-05-30 2004-02-03 Tranceive Technologies, Inc. Method and apparatus for balancing distributed applications
CA2306586A1 (en) 2000-04-26 2001-10-26 Edispatch.Com Wireless Data Inc. Method and protocol for client initiated function calls to a web-based dispatch service
EP1295432B1 (en) * 2000-05-17 2006-03-22 Symstream Technology Holdings No. 2 Pty Ltd (Acn 113 682 090) Octave pulse data method and apparatus
FI110738B (fi) * 2000-05-22 2003-03-14 Nokia Corp Datansiirto tilaajapäätelaitteen paikantamispalvelun toteuttavassa pakettikytkentäisessä radiojärjestelmässä
US7032027B1 (en) 2000-10-13 2006-04-18 Lucent Technologies Inc. Method of processing nested message layers
US6609178B1 (en) 2000-11-28 2003-08-19 Emc Corporation Selective validation for queued multimodal locking services
US6748583B2 (en) 2000-12-27 2004-06-08 International Business Machines Corporation Monitoring execution of an hierarchical visual program such as for debugging a message flow
US7089564B2 (en) 2001-02-22 2006-08-08 International Business Machines Corporation High-performance memory queue
US7149976B2 (en) 2001-04-16 2006-12-12 Lucent Technologies Inc. View multiplexer for use with a viewing infrastructure and a method of operation thereof
GB2375264B (en) 2001-05-02 2004-10-13 Mitel Knowledge Corp Remote assembly of messages for distributed applications
US6853617B2 (en) 2001-05-09 2005-02-08 Chiaro Networks, Ltd. System and method for TCP connection protection switching
US6971001B1 (en) 2001-05-17 2005-11-29 Accenture Global Services Gmbh General and reusable components for defining net-centric application program architectures
US7743109B2 (en) 2001-08-01 2010-06-22 Cisco Technology, Inc. Reducing round trips across a wide area network for resource locking by extended locking and delayed unlocking
AU2002313583A1 (en) 2001-08-01 2003-02-17 Actona Technologies Ltd. Virtual file-sharing network
US6886041B2 (en) 2001-10-05 2005-04-26 Bea Systems, Inc. System for application server messaging with multiple dispatch pools
US6845230B2 (en) 2001-10-26 2005-01-18 Ibiquity Digital Corporation System and method for a push-pull gateway-directed digital receiver
US7240350B1 (en) 2002-01-07 2007-07-03 Slt Logic, Llc System and method for providing communications to processes
US7370329B2 (en) 2002-03-01 2008-05-06 Sun Microsystems, Inc. System and method for state saves in a distributed data system
JP4077689B2 (ja) 2002-08-28 2008-04-16 日本放送協会 コンテンツ送信方法、コンテンツ送信装置、コンテンツ送信プログラムおよびコンテンツ受信方法、コンテンツ受信装置、コンテンツ受信プログラム
US8438238B2 (en) 2002-10-16 2013-05-07 Sap Ag Master data access
JP2006506748A (ja) 2002-11-19 2006-02-23 ネクサウェブ テクノロジーズ インコーポレイテッド 処理状態を把握するウェブ・ベースのコンピュータ・システムと方法
US7802263B2 (en) * 2002-12-17 2010-09-21 Stragent, Llc System, method and computer program product for sharing information in a distributed framework
US7401334B2 (en) 2002-12-20 2008-07-15 International Business Machines Corporation Method, apparatus and computer program product for managing message flow in a multithreaded, message flow environment
US7827135B2 (en) 2002-12-31 2010-11-02 International Business Machines Corporation Method and apparatus for relaxed transactional isolation in a client-server caching architecture
US7111001B2 (en) 2003-01-27 2006-09-19 Seiko Epson Corporation Event driven transaction state management with single cache for persistent framework
US7154901B2 (en) 2003-02-07 2006-12-26 Mobile 365, Inc. Intermediary network system and method for facilitating message exchange between wireless networks
GB2399189B (en) 2003-03-05 2006-07-19 Quazal Technologies Inc Coherent data sharing
US20040186918A1 (en) 2003-03-21 2004-09-23 Lonnfors Mikko Aleksi Method and apparatus for dispatching incoming data in a multi-application terminal
US7200676B2 (en) 2003-03-26 2007-04-03 Microsoft Corporation Transmitting and receiving messages through a customizable communication channel and programming model
GB0308264D0 (en) 2003-04-10 2003-05-14 Ibm Recovery from failures within data processing systems
US7409428B1 (en) 2003-04-22 2008-08-05 Cooper Technologies Company Systems and methods for messaging to multiple gateways
US7613822B2 (en) 2003-06-30 2009-11-03 Microsoft Corporation Network load balancing with session information
US8032890B2 (en) 2003-07-22 2011-10-04 Sap Ag Resources managing in isolated plurality of applications context using data slots to access application global data and specification of resources lifetime to access resources
GB0318196D0 (en) 2003-08-02 2003-09-03 Ibm A method apparatus and computer program for processing a queue of messages
US7392057B2 (en) 2003-10-31 2008-06-24 Samsung Electronics Co., Ltd Message service method for mobile communication terminal using position information
US7434225B2 (en) 2003-12-18 2008-10-07 International Business Machines Corporation Context information associated with message flows in a messaging system
US7512125B2 (en) 2003-12-19 2009-03-31 Solace Systems, Inc. Coding of routing protocol messages in markup language
US7565451B2 (en) 2004-01-23 2009-07-21 Microsoft Corporation Adaptive dispatch of received messages to code using inter-positioned message modification
US7330860B2 (en) 2004-02-26 2008-02-12 International Business Machines Corporation Fault tolerant mechanism to handle initial load of replicated object in live system
US20050216917A1 (en) * 2004-03-23 2005-09-29 Srivatsa Krishnaswamy Method and system for data object transformation
US7631108B2 (en) 2004-05-13 2009-12-08 Sun Microsystems, Inc. Method and apparatus for executing event driven simulations
US7313575B2 (en) 2004-06-14 2007-12-25 Hewlett-Packard Development Company, L.P. Data services handler
US7853615B2 (en) 2004-09-03 2010-12-14 International Business Machines Corporation Hierarchical space partitioning for scalable data dissemination in large-scale distributed interactive applications
US7472208B2 (en) 2004-10-12 2008-12-30 Intel Corporation Bus communication emulation
US7403945B2 (en) 2004-11-01 2008-07-22 Sybase, Inc. Distributed database system providing data and space management methodology
US20060101064A1 (en) 2004-11-08 2006-05-11 Sharpcast, Inc. Method and apparatus for a file sharing and synchronization system
US7502843B2 (en) 2004-12-30 2009-03-10 Microsoft Corporation Server queuing system and method
US7551567B2 (en) 2005-01-05 2009-06-23 Cisco Technology, Inc. Interpreting an application message at a network element using sampling and heuristics
US20060155862A1 (en) 2005-01-06 2006-07-13 Hari Kathi Data traffic load balancing based on application layer messages
US7532617B2 (en) 2005-02-24 2009-05-12 International Business Machines Corporation Method and apparatus for session initiation protocol application design, development, execution and integration
US7774332B2 (en) 2005-04-12 2010-08-10 International Business Machines Corporation Enabling interactive integration of network-accessible applications in a content aggregation framework
WO2006118529A2 (en) 2005-05-04 2006-11-09 Telefonaktiebolaget Lm Ericsson (Publ) A method and arrangement for handling client-related information in an application server
GB0509904D0 (en) 2005-05-14 2005-06-22 Ibm Method, apparatus and computer program for facilitating communication between a client application and a server application
US7865684B2 (en) 2005-06-27 2011-01-04 Ab Initio Technology Llc Managing message queues
US20070005640A1 (en) 2005-07-01 2007-01-04 Udo Klein Methods and systems for managing multilevel logical units of work
US7496926B2 (en) 2005-07-29 2009-02-24 International Business Machines Corporation Method and apparatus to encapsulate a queue in a namespace
US8065680B2 (en) 2005-11-15 2011-11-22 Yahoo! Inc. Data gateway for jobs management based on a persistent job table and a server table
US8117153B2 (en) 2006-03-28 2012-02-14 Oracle America, Inc. Systems and methods for a distributed cache
US7640249B2 (en) 2006-03-29 2009-12-29 Sap (Ag) System and method for transactional session management
EP1873643A1 (en) 2006-06-30 2008-01-02 Alcatel Lucent Service objects with rollback-recovery
US20080086567A1 (en) 2006-10-10 2008-04-10 Bea Systems, Inc. SIP server architecture for improving latency in message processing
US9021503B2 (en) 2007-11-16 2015-04-28 Microsoft Technology Licensing, Llc Coordinating application state and communication medium state
US8200836B2 (en) 2007-11-16 2012-06-12 Microsoft Corporation Durable exactly once message delivery at scale
US8505030B2 (en) 2007-11-16 2013-08-06 Microsoft Corporation Coordinating resources using a volatile network intermediary
US8719841B2 (en) 2007-11-16 2014-05-06 Microsoft Corporation Dispatch mechanism for coordinating application and communication medium state
US8984530B2 (en) 2008-01-31 2015-03-17 Microsoft Corporation Queued message dispatch
US7860900B2 (en) 2008-02-25 2010-12-28 Microsoft Corporation Consistently signaling state changes
US8181155B2 (en) 2008-02-29 2012-05-15 Microsoft Corporation Unified expression and location framework
US20090282396A1 (en) 2008-05-07 2009-11-12 Boyer John M Preserving a state of an application during update
US8443379B2 (en) 2008-06-18 2013-05-14 Microsoft Corporation Peek and lock using queue partitioning
US9665850B2 (en) 2008-06-20 2017-05-30 Microsoft Technology Licensing, Llc Synchronized conversation-centric message list and message reading pane
US8095935B2 (en) 2008-06-26 2012-01-10 Microsoft Corporation Adapting message delivery assignments with hashing and mapping techniques
US8301706B2 (en) 2009-06-15 2012-10-30 Microsoft Corporation Routing of pooled messages via an intermediary
US8549538B2 (en) 2010-03-18 2013-10-01 Microsoft Corporation Coordinating communication medium state for subtasks
US8250234B2 (en) * 2010-04-26 2012-08-21 Microsoft Corporation Hierarchically disassembling messages

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6732153B1 (en) * 2000-05-23 2004-05-04 Verizon Laboratories Inc. Unified message parser apparatus and system for real-time event correlation
US7870295B2 (en) * 2001-03-29 2011-01-11 International Business Machines Corporation Parsing messages with multiple data formats
CN101495966A (zh) * 2005-06-29 2009-07-29 维萨美国股份有限公司 用于解析多格式消息的基于模式的动态解析/构建引擎
CN101547430A (zh) * 2008-03-24 2009-09-30 华为技术有限公司 一种会话方法、设备和***

Also Published As

Publication number Publication date
US8250234B2 (en) 2012-08-21
WO2011139584A2 (en) 2011-11-10
US9015341B2 (en) 2015-04-21
US20120246663A1 (en) 2012-09-27
US20110264738A1 (en) 2011-10-27
EP2564315A2 (en) 2013-03-06
CN102884508A (zh) 2013-01-16
EP2564315B1 (en) 2016-04-13
WO2011139584A3 (en) 2012-01-19
EP2564315A4 (en) 2013-11-27

Similar Documents

Publication Publication Date Title
CN102884508B (zh) 分层地分解消息
CN1645841B (zh) 使用***消息更改向代码自适应地分派接收消息
EP1566943B1 (en) System and method for provisioning presence application services
US7346893B2 (en) Exchange infrastructure system and method
CN100578942C (zh) 用于压缩以结构化定义语言表达的无线应用程序的***和方法
CN103986742B (zh) 文件同步的方法及相关电子装置
CN1842075A (zh) 使用子队列来增强本地消息处理
EP1686754B1 (en) Synchronizing Server and Device Data Using Device Data Schema
CN1973282A (zh) 用于管理针对集群配置的改变的***和方法
US8244670B2 (en) System and method for reliable symmetric data synchronization
JP2012512445A (ja) メッセージ処理パイプラインの構成
CN102411511A (zh) 用于服务升级的数据迁移
EP1506478B1 (en) Exchange infrastructure system and method
EP2400390A1 (en) Provision of services and libraries to remote clients
CN110351107A (zh) 配置管理方法及装置
US20040193731A1 (en) Universal personal information connector architecture
Plebani et al. MicroMAIS: executing and orchestrating Web services on constrained mobile devices
CN1932760B (zh) 用于运行应用程序的***和方法
KR101258990B1 (ko) 장치관리 클라이언트로부터 객체 회수방법 및 이와 관련된 장치관리 시스템
US20060294210A1 (en) Ad-hoc multimedia information exploitation via web services and mobile agents
Han et al. A middleware architecture for community computing with intelligent agents
US20080198844A1 (en) Cross-media communication coordination
Zhao et al. An agent based wrapper mechanism used in system integration
Mirisaee et al. A framework for context-aware university mobile organizer
Kaiser et al. Exploiting self-descriptions for checking interoperations between embedded components

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150727

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150727

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

C14 Grant of patent or utility model
GR01 Patent grant