CN1534923B - 通过提供单个编程模型简化应用开发的方法 - Google Patents
通过提供单个编程模型简化应用开发的方法 Download PDFInfo
- Publication number
- CN1534923B CN1534923B CN2004100322497A CN200410032249A CN1534923B CN 1534923 B CN1534923 B CN 1534923B CN 2004100322497 A CN2004100322497 A CN 2004100322497A CN 200410032249 A CN200410032249 A CN 200410032249A CN 1534923 B CN1534923 B CN 1534923B
- Authority
- CN
- China
- Prior art keywords
- message
- application
- session
- transmission
- dialogue
- 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 - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/30—Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/62—Establishing a time schedule for servicing the requests
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/28—Timers or timing mechanisms used in protocols
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer And Data Communications (AREA)
- Time-Division Multiplex Systems (AREA)
- Acyclic And Carbocyclic Compounds In Medicinal Compositions (AREA)
- General Factory Administration (AREA)
Abstract
提供了一种单个编程模型,用于当开发一个或多个在两端点间传送消息的应用时访问多个不同消息传输。该编程模型考虑消息传输的独立可配置保证和特性。可配置保证可从至少一次传送、至多一次传送、顺序消息传送和消息持续时间中选取。独立选取的特性包括会话状态存储、持续时间延长以及事务消息缓存。
Description
技术领域
本发明通常涉及可靠报文系统,尤其提供了一种单个编程模型,具有可配置并适合应用或该应用特定安装的特殊需求的可靠保证和特性。
背景技术
报文系统已经成为一种越来越普及的通信方式。这些通信系统的范围从电子邮件系统到安全交易,从聊天室到各种网络服务,如网上购物。每一通信系统都需要不同级别的安全性、可靠性、可伸缩性以及可用性。这些需求的范围从松耦合模型,如具有简单防火墙、忽略可靠性以及队列系统的数据报机制,提供事务的持久报文服务;到采用如传输控制协议(TCP)和远程过程调用(RPC)等协议的紧耦合模型,具有面向会话的通信。
由于不同通信机制的需求不同,如上文特别指出的,每一机制的程序模型也不同,甚至在来自不同售主的类似系统之间,程序模型也不相同。此外,每一程序模型的配置灵活性等级也随着不同的机制和实现而不同。程序员和系统设计师通常必须理解每一机制,确定哪种机制最适合他们的要求,随后为该机制定义的特定接口编写代码。
然而,如果产品或调度需求发生变化,并需要一种不同的通信机制,通常需要重新设计最终代码并重新执行。这是由以下事实所导致的:大多数可靠通信机制在向使用它们的应用提供可靠保证及特性的选择的时候并未提供足够的与其相关的灵活性或对该选择的控制。例如,这类通信系统通常仅提供精确一次的顺序传送。然而,在很多情况下,这已经超过了应用实际所需要的。
提供更多或更高的保证,如精确一次的顺序递送,也会带来成本问题。例如,必须由接收端向发送端发回确认以确认消息的接收。如果没有该确认,发送端无法知晓消息是否已接收,则无法提供精确一次的保证。对于允许偶尔丢失消息的应用来说,可能不希望花费至少一次确认协议的成本,也不希望在单个低优先级信息无法传送时去冒会话失败的风险。在这种情况下,要求确认会不必要地提高通信成本并降低应用的可用性。
相应地,需要一种单个编程模型,当提供给应用的消息传送保证和特性可配置时,能够提供一种可靠的报文基础结构。更进一步,需要一种单个可靠报文编程模型,为各种传输实现和各类保证及特性提供各类会话状态和报文存储设施的支持。
发明内容
依照本发明的示例实施例,上述不足之处以及现有报文系统的缺点都得以克服。例如,示例实施例提供了支持一个或多个消息传输的报文系统。更进一步,本发明提供了一种可靠的报文抽象,可以通过提供一种单个编程模型,允许在运行时刻选择特定的消息传输来对其指定一个或多个端对端传送保证,而不需在开发时指定特定的信息传输,从而简化了应用的开发。
本发明的可靠报文抽象提供了独立于实际传输消息过程中使用的基本传输的应用专用消息的传送保证。相应地,这一抽象将应用开发者与传输层细节相隔离。类似地,该抽象也使得开发者同网络拓扑和系统连接的细节相隔离。
该系统首先定义了一种消息信道接口,能够对在多个不同消息传输中交换消息的发送和接收操作进行抽象。与传统编程模型不同,该系统定义了一种独立于基本传输的多个端对端消息传送保证,并且可以选择每一端对端消息传送保证在单个编程模型中使用。此外,消息传送保证可以从下列中选取:至少一次消息传送、至多一次消息传送、顺序发送消息传送以及会话持续时间。最后,本系统还定义了多种本地可靠消息特性,可以选择每一本地可靠消息特性在单个编程模型中使用。另外,本地可靠消息特性可以是状态存储、消息持续时间、事务消息缓存中的任何一种。
根据本发明的另一示例实施例,还提供了一种简化应用开发的方法,通过提供单个编程模型来访问不同的消息传输,来通过对消息信道接口的抽象用于在不同消息传输中交换消息,并使得应用开发者可以指定一个或多个端对端消息传送保证。可以选择消息传送保证在单个编程模型中使用,这些消息传送保证可以从下列中选取:至少一次消息传送、至多一次消息传送、顺序发送消息传送以及会话持续时间。更进一步,该方法还使得应用开发者可以指定一个或多个本地可靠消息特性。可以选择每一本地可靠消息特性用于单个程序模型,并至少包括会话状态存储、消息持续时间以及事务消息缓存的其中之一。
以下详细描述将阐明本发明的其它特性和优点,部分的特性和优点在以下描述是显而易见的,或者也可以从本发明的实践中学习到。本发明的特性和优点可以通过后附权利要求书中特别指出的器件和组合来实现及获得。通过对下文及后附权利要求书的研究或者从后文阐述的本发明的实践中学习,可以更清楚本发明的特性。
附图说明
为了通过描述可以获得本发明的上述和其它优点和特性,将参考附图描述的特定实施例提供上述发明概述的更详细描述。必须理解的是,附图仅描述本发明的典型实施例,并未限定其范围,通过附图可以描述和解释本发明另外的特性和细节,这些附图包括:
图1根据本发明的示例实施例描述了可靠报文栈,用来发送和接收数据;
图2根据本发明的示例实施例描述了一种消息结构;
图3根据本发明的示例实施例描述了应用和传输之间的链路的生命周期;
图4根据描述了为本发明提供合适的操作环境的示例系统。
具体实施方式
本发明可延伸到方法、系统以及计算机程序产品,通过提供一种在开发一个或多个应用时用于访问和使用多个不同消息传输的单个编程模型,从而简化可靠报文应用的开发。本发明的实施例包括专用计算机或通用计算机,其包括各种计算机硬件,将在下文详细讨论。
图1描述了可靠报文栈100a和100b的高层表示。在报文栈中,如果没有可靠报文协议125,当应用125需要发送消息至诸如应用程序层185时,将直接传输一个消息或一个消息列至数据报报文层140。(必须注意,应用105可以是任何形式的应用,如服务,并且通常理解成对应用的结构进行适当的封装)。由于数据报不可靠,消息115可能会发生重复、延迟和/或丢失。例如,在具有防火墙并忽略可靠性的较低可靠度的数据报协议中,消息115可能由于任何原因而丢失,包括在传输160和165之间的中间层135。相应地,对方端点应用185永远无法接收到消息115,并且发送应用105无法知晓消息115未被接收到。
然而,根据本发明的示例实施例,报文栈100a和100b具有可靠报文协议125。相应地,例如,可靠报文结构120(或180)可以确保应用105发送的消息115到达其目标终端。例如,如果应用105希望传输消息115至其对话方应用185,应用105可以用指令“Send()”发送消息115至可靠报文结构120,在该结构中,将消息分配给会话并生成消息序号。会话标识符同应用105和应用185之间的会话通信相对应。换言之,会话指的是两个应用105和185之间的双工对话。序号的生成同该会话通信中特定的消息相对应。例如,在两个应用105和108之间的单一会话中,可以有若干消息,每一消息根据应用的发送顺序循序标号。另外,在应用105和185或其它应用之间可能建立多重会话(每一建立的会话可以具有相同或不同的传送保证)。相应地,为每一消息分配一个会话和唯一的序号,用以标识特定的会话和会话中的消息顺序。
在消息191中写入会话和序列报头并执行了其它所需的信道处理之后,消息191被储存在发送缓存中的会话状态190中。然后,消息191的副本通过数据报报文140往下进行传输,能够通过如提供路由报头来方便消息191的端对端传输。消息191可能通过一个或多个中间层传输,如中间层135,每一中间层能将消息191的端对端传输简化为一列点对点传输。该可延伸的侦听机制可以用来实现如路由、滤波、策略管理以及安全等行为。要注意的是,传输145、170、155和报文终端上以及中间层140、175、150中终端上的可用行为既可以由编程建立,也可以通过配置建立。
如果至少一次传送的保证(下文将详细讨论)是应用105专用的,则可靠报文结构120期望收到来自可靠报文结构180的确认,表明哪一消息被正确接收。消息192携带表明消息191(如序列中的消息5)已接收的确认。周期性地,如果可靠报文结构120没有接收到确认192,可以由于可靠报文结构180未正确接收到副本,也可以由于120未接收到任何来自180的确认,则重新传输消息191。相应地,如果消息191被如中间层135丢失、延迟或者误传,可靠报文结构120继续(在一个超时的范围之内,下文将描述)周期性地传输消息191,试图确保消息191的至少一个副本被可靠报文结构180正确接收。然而,值得注意的是,由于上文描述的同消息191类似的原因,确认192可能丢失、延迟或者误传。在这一情况下,本发明提供了确认192的可靠消息传送,将在后文描述。
一旦可靠报文结构180成功地接收到消息191的一个副本,它就将向可靠报文结构120发送确认192。在接收到确认192后,可靠报文结构120将消息191的副本从其会话状态(发送)缓存190中删除,并停止对其继续传输。类似地,可靠报文结构180在其会话状态195中记录已接收到消息191的副本,因而不论消息是否已传送至应用185,都将丢弃可靠信息结构180接收到的任何重复信息。此后,应用185可以通过其“Receive()”命令从会话状态(接收)缓存195中检索已接收到的消息。如果可靠报文结构120由于丢失、延迟或误传而未收到确认192,则会继续消息191的重新传输,从而引发可靠报文结构180发送确认192的另一个副本。这一过程将一直得以继续,直到可靠报文结构120接收到至少一个确认192,或直到可靠报文结构120放弃重试并向应用105发送错误指示。
可靠报文结构120和/或180,可以根据本发明配置为对话200(图2),如下文结合图2的更详细描述。对话200是一种消息结构抽象,其中,服务(或应用实例)使用对话200以获得同其它服务的可靠的面向会话的通信。程序员可以使用对话信道220来访问对话。此外,对话200还提供了一种可靠报文基本结构以及一种单个编程模型,可对应用的信息传送保证进行配置。需要满足这些可靠保证,否则将出现会话失败。对话200的设计向相应的运行时刻执行提供了灵活性,从而提供服从于保留用于应用执行的保证(正确性约束)的额外特性。特别地,应用可以具有各种不同级别的可用性和可伸缩性,其对应用的执行完全透明。此外,应用105和185之间的会话通信可以通过各种传输类型(如TCP/IP 160和HTTP 165)、传输连接实例和网络拓扑来实现。
对话200提供的可靠保证包括至少一次(ALO)、至多一次(AMO)以及顺序(IO)传送。还另外提供会话持续时间(TTL)的保证。AMO保证能够保证对于发送应用发送的任何消息,该消息将至多一次被传送至接收应用。由于对话200是一种抽象,应用无需检测并丢弃会破坏应用语义的重复消息。类似地,ALO保证能保证所有发送应用发送的消息都被接收端点所接收,从而令应用无需检测丢失或误传的消息,并调整其重新传输。IO保证能保证消息以发送应用发送的顺序传送到接收应用,令应用无需处理无序的消息接收。
对话22还提供了一种会话TTL保证,要求相互对应的端点双方之间的会话在会话TTL超时之前完成。如果会话TTL在对话会话还未完成之前就超时了,则对话信道被置于错误状态,并向应用发出错误通知。应用可以通过同TTL的重新协商来延长会话TTL。
对话使得这些消息传送保证既可以单独使用也可以以任何形式组合使用,来达到一个已知应用和调度的特定要求。例如,三种AMO、ALO和IO保证的组合能够提供大多数如TCP/IP的可靠通信机制的典型的精确一次的顺序传送。然而,与典型的通信机制及其相应的编程模型不同,这些保证可以进行定制,而不需要改变应用所使用的编程模型。
对话200不仅考虑可配置保证,还考虑相互独立地选择和配置本地可靠信息特性,并独立于以上选择的保证。这些本地可靠信息特性被划分成两大类型:一类集成于编程模型和一类独立于应用程序定制。例如,集成本地特性包括:已事务缓存,其对于应用具有一致性、隔离性以及语义可分性;或者模板引用,它将模板同会话相结合,以允许独立定制。可定制本地特性包括:会话状态存储配置,缓存限额、发送超时、可配置消息TTL、会话优先级消息或有害消息检测门限,将在后文描述。
根据本发明的示例实施例,对话200提供了会话状态和消息存储作为可替代成分,称为对话存储260。由于对话存储260是可替代的,第三方可以独立设计并分配对话存储260的实现。管理员可以选取已知安装中实际使用的对话存储。相应地,这一机制具有很大的灵活性,可以达到耐久性、独立性和管理目标。对话存储260可以是可插式存储,至少有存储器存储、盘上持久存储、端口监控进程存储、非易失性存储器存储、光学存储、磁带、网络附加存储或可移动存储中的一种。此外,对话存储也可以是远程或者非节点的。
根据本发明的示例实施例,提供了一种存储器对话存储实现(如对话存储260),它可以将所有的状态都保存在应用存储器中。这一存储提供了对状态的快速访问,然而,其代价是如果应用进程状态丢失(如,应用被用户终止,或者由于应用错误或系统中应用执行失败等原因被操作系统终止),则所有的状态都将丢失。
根据另一示例实施例,快速对话存储实现(如对话存储260)将状态保存在独立专用端口监控进程的存储器中。这一对话存储可以确保在应用进程失败时状态仍存在,然而,其代价时必须进行进程切换来保存状态。如果端口监控进程失败或者操作系统或计算机节点失效,则该会话的所有相关状态都丢失。
根据对话存储实现(如对话存储260)的另一实施例,会话状态信息可永久保存在数据库,如结构化查询语言(SQL)服务器。当计算机节点或操作系统失效时,该持久状态仍存在,然而,其代价是必须进行磁盘写操作来保存状态。使用如SQL服务器的数据库系统来保存状态的好处之一是安装可能已具备对适合常规的备份和重要应用状态的恢复的工具、技术和处理方法。
本发明还使得一些对话存储可以配置为运行于本地计算机节点或另一节点上。例如,一种持久对话存储,如SQL服务器,可以配置为使用本地服务器数据库或另一节点上的服务器数据库。另一节点可以是集群系统中的一部分,这样就具有很高的可用性。
本发明还使得多重存储(或存储配置)可以同时存在,来达到应用使用的特定调度特征的要求。更进一步,可以对应用配置进行修改,使用不同的存储(或存储配置)来适应变化,如负载增加或容量需求,从而利用新存储选项或涉及其它调度环境的考虑因素。此外,同一应用中不同的通信会话可以有不同的配置需求。对话使得每一会话可以单独进行配置。例如,应用中某些会话可能在持久状态存储中运行最好,而其它会话可能在可变状态存储中运行最好。对话存储可以通过模板(下文描述)来配置,也可以在应用代码中指定。
对话200提供的另一可配置特性是缓存限额。对话200在发送方和接收方应用中将消息存入缓存中,缓存增加了这两个应用的独立性,使得任何一方即使在诸如由于网络分区的原因,另一方未运行或者不可访问时,都能从其本地缓存中发送或接收消息。例如,应用205可以在即使另一方暂时不可用,如未运行或不可访问时,继续发送消息。该特性通过将消息积存在本地发送缓存250内直至成功传输来实现。类似地,即使当前发送消息的应用未运行,应用205也可以在接收之前存入接收缓存245的消息。对话200提供了一种可配置缓存限额,它定义了可由系统缓存的最大消息数(视消息容量而定)。相应地,也限制了对话状态235所消耗的空间,以及另一端点可消耗的本地资源。该特性也使报文系统可以为应用保留足够的空间来将特定数量的消息存入本地缓存中。对话200也提供了最小缓存限额,定义了可由报文基本结构缓存的消息的最小保留数量,同最大消息容量一起定义了报文基本结构缓存的最小字节数。缓存限额可以通过模板(下文描述)来配置,或在应用代码中指定。
对话200也提供了可配置发送超时特性。当发送一条消息时,该消息被置于对话存储260/发送缓存250中。如果该缓存已满,即,如果已达到缓存限额,则对“Send()”的调用被阻塞,直到发送超时或者缓存中的空间变得可用于容纳消息。当消息成功传输至接收端并已得到确认后,在本地端点已不再需要该消息来重试,则缓存中的空间将变为可用。如果在发送超时之前空间已可用,则Send()210调用将正常完成。如果在空间变为可用之前已经发送超时,则产生一个异常,并通知应用:消息无法成功存入缓存(或采集)。相应地,应用程序可以稍后重试。可配置超时使得应用可以根据阻塞的简易性选择响应等级。发送超时可以通过模板来配置(下文描述)或在应用代码中指定。
如上文所述,对话200能够支持端对端会话TTL保证。对话200也提供了可配置为本地特性的可选消息持续时间。消息TTL要求发送的消息必须在TTL指定的时间内被接收端点成功接收,否则将向应用205引发一个错误。对话200也提供了对信息TTL的可配置延长。相应的,当TTL超时,通知发送方应用225。应用225可以选择终止该对话或延长消息TTL。同发送超时相类似,TTL可以由应用代码设定,也可以间接使用模板来配置。
对话200提供的另一项特性是指定的可选优先级。对话200内所有的消息都具有相同的优先级。然而,当来自多重对话的信息可用于发送时,高优先级的对话将优先于低优先级的对话进行消息发送。类似地,当信息可用于“传送”至接收方应用时,高优先级的消息将优先于低优先级的消息被接收。优先级可以在应用代码中设定,也可以间接使用模板(下文描述)来设定。
对话200也提供消息的可选事务缓存。当对话用于事务时,本地发送和接收缓存作为事务的资源管理器使用。在这一情况下,在事务中接收到的消息被认为是服从于事务结果的暂时传送的(从接收缓存中删除)。类似地,在事务中发送的消息被认为是服从于事务结果暂时采集的(添加入发送缓存)。如果事务提交,这些暂时的信息采集或传送将变为永久性的。如果事务中止,这些暂时操作将被丢弃,就如从未出现。同其它事务资源管理器相似,该对话存储负责为暂时缓存操作(如,采集的消息在该事务之外是不可见的)提供事务独立性,并在事务管理器的控制下提供相对事务完成的事务可分性。
事务缓存能够简化正确报文应用的开发(如,甚至在失败或并发活动的情况下进行正确的状态传输)。应用可以使用这一特性来协调消息交换和本地消息处理。例如,一个应用程序可以在事务范围内接收并处理消息。该消息处理可以包括读取并更新一个或多个事务数据库,并在事务内的对话上发送一个或多个消息。如果事务中止,所有工作都未完成。特别地,暂时发送的消息都被丢弃——例如,会话对方无法见到这些局部结果——并且已接收的消息仍然可用于传送。后者使该消息可以在新的事务范围内进行处理。当事务提交时,所有这些活动都变为永久性,包括删除已接收到的消息和缓存已发送的消息。网络影响是精确一次的消息处理。事务缓存是一种本地对话特性,其中,应用是否使用该特性对于该会话对方的应用来说是完全透明的。
根据示例实施例并参考图2在下文进行描述,在发送端点当调用Send()210时,消息被暂时置放于对话存储260中。如果事务提交,则消息提交至存储260并可用于发送至对方端点。如果事务中止,则丢弃该消息。在接收端,当调用Receive()215(或Delete)时,消息暂时从存储260中删除。如果事务提交,则该消息永久从存储260中删除。如果事务中止,则消息仍保留在存储260中并可用来重新传送。事务的接收考虑消息的精确一次处理。
必须注意,尽管执行缓存对队列系统来说是一种普遍特性,但这些系统通常需要一种持久存储。对话200能提供这些相同的事务语义,而无需考虑对话存储260的持久性,在所有的情况下提供相同的程序模型。例如,存储器存储作为事务资源管理器提供事务语义。然而,对话200使得应用的实现可以从调度细节中分离出来,包括同传输和连接特性、消息路由和端点状态管理有关的细节。
对话200提供的另一特性是可选的有害信息功能。如上文所述,当在事务中接收到消息并对其进行处理时,当事务中止,信息仍保留在对话存储260中,可以用来重新传送至应用。有时候引起事务中止的问题是瞬时的,例如,由于死锁而引起的超时,传送和消息处理可以在下一次的尝试中成功。如果对于一个给定消息的传送尝试反复地引起中止,则该消息被认为是“有害的”。对话200提供了一种方法,可以设置消息在多少次传输失败之后被认为是有害的。当检测到一个有害消息时,向应用引发错误,将暂停对该消息处理的进一步尝试,直到应用采取纠正措施。这一特性可以确保处理资源没有浪费在可能永远无法成功或仅在某些干涉下才会成功的尝试上。有害消息检测可以通过模板来配置(下文描述)或在应用代码中指定。
可选的模板特性提供了对话配置选项的命名集合。如上文所述,对话具有许多可配置特性,如缓存限额、超时、存储等等。更进一步,对话200提供可配置消息传送保证,如ALO、AMO和IO,应用可以单独指定所需的传送保证最小级别,如有需要可以在配置中增加。模板提供了一种将对话的共同设定分组的方法,并可以通过名称来引用这些设定。更进一步,对话200的实现使得可以通过应用配置文件来选择模板,从而令管理员有调度时间来控制设定。当创建或接受对话时,应用根据名称来引用模板,该模板中指定的所有设定都用来创建对话200。设定可以作为应用程序的一部分直接建立,如代码或另外的编程结构。模板可以间接通过代码或者其它编程结构中的引用来同程序关联,这样,模板的值可以独立于应用程序而进行设置。直接建立的模板值优先级高于通过模板引用间接设定的模板值。
由于对话200提供了这些特性和保证的任意组合,并且相互独立,因此对话200可以配置为符合任何耦合配置的要求,范围从与传输控制协议(TCP)和远程过程调用(RPC)相似的紧耦合编程模型,到同数据报和队列相似的松耦合编程模型。另外,对话200有效地支持各种双方消息交换模式(MEP),如单向、半双工(从单一的请求/应答到更复杂的模式)以及最复杂的全双工交互。相应地,对话200还考虑到双方通信编程模型的统一。
图2根据本发明的示例实施例描述了对话200中的可操作特性。对话信道应用编程接口(API)220作为应用205的抽象。如上文所描述的,对话200采用一种报文协议,如Web服务可靠报文(WS-RM),该协议定义了一个消息序列。序列定义了会话中消息的单向组合。两个这样的序列组成一个对话,在两个通信方之间每一序列占用一个方向。当调用通道220的方法Send()时,该消息作为一个参数传送至发送方法210,储存在发送状态250中,并根据消息发送的顺序标上唯一的单调递增消息序号。
消息255保存在发送状态250缓存中,以保留序列中单独消息255的状态。在这一点上,可以说消息被状态250“采集”,Send()210返回至该应用。尤其来说,发送方法210将一个消息作为参数来接受。该消息被传送至发送缓存250,并标上序号,相继或同时存入存储260中。在这点上,消息被认为是“已采集的”,发送方法210返回。对其它消息重复这一调用,可以令消息255组成一个或部分序列。
对话状态235包括发送和接收缓存,分别为250和240。对话状态235控制并储存常量信息,如对话标识符、由应用指定的保证以及对方端点地址。对话状态235还控制会话信息,如下一输出发送序列号和确认状态。此外,配置数据,如对话TTL、超时、存储位置等等,保留在对话会话状态235中。
一旦消息被采集,协议270可以对其进行处理并相应地通过端口285发送该捕捉的消息,如消息275。对话200的编程模型和运行时刻基础结构提供了灵活且有效的端点分辨模型。
该模型至少确保两端点能充分地被分辨出来,以提供可靠消息交换。尤其来说,协议270能够确保端点双方在传送对话中的初始消息用来处理之前,具有充分的参考可以保证端点的唯一性以及通过对话200及其相应会话的消息的相关性。这需要用来确保消息被可靠地传送至单个会话对方,由此可以确保至多一次的传送。该端点分辨可以以多重因素为基础,包括对话200的创建者使用的标识对方应用的标识符(如通用资源标识符(URI))、本地配置、消息报头中的路由数据、中间配置以及目标应用配置。
必须注意的是,应用实现205不需要参与对话端点分辨的细节。对话200的基础结构能够配合初始化端点来完成分辨过程,确保该端点是会话唯一选取的对等端点。该过程在需要时进行,并对应用实现205来说完全透明。
也可以提供对话运行时刻端点分辨,来确保达到消息传送的目的,并提供了在一个广阔的网络配置范围内完成正确执行的灵活性。该特性支持应用在不同配置下的灵活调度,以涉及可伸缩性、可用性、安全性(如防火墙)以及性能需求。服务调度配置包括,如应用集群(farm)(如超范围复制品(scale-outreplicas))和应用分区(如根据客户号码或地理区域的分区处理)。应用集群和应用分区可以单独使用,也可以一起使用。例如,一个应用可以调度为使用对应用分区的数据相关路由,依次包括应用服务器的集群。
协议270也可以确定应用205指定了哪一类型的端对端保证和本地特性,独立于上文描述的实现端点分辨所用的方法。如果应用205指定了ALO保证,则协议270将消息275的一个副本保存在对话的发送缓存250中,直到协议270从接收端(此处未示出)收到肯定的确认,表明消息275已被正确接收。当协议270从接收端接收到肯定的确认时,将这一事件记录在会话状态235中,并将消息从发送缓存250中删除。如果协议270在指定的重试超时范围内未收到肯定的确认,则协议使用相同的消息序列号重新发送同一消息275的副本。对话200可以重复这一过程多次,并可以采用重试定时器后退策略来避免网络上更进一步的阻塞。如果在消息TTL指定的时间段内未收到确认,则引发一个错误,通知发送应用205无法达到保证。
当接收到对话消息280时,协议270将该消息复制到接收缓存状态240中。协议270也记录下一期望的消息序列号。当接收到消息280时,如果对话200保证包含AMO,则将到达的消息280的消息序列号同之前到达的消息序列号集合进行比较,之前到达的消息如上文描述储存于接收缓存状态240中。如果该集合已包含匹配的序列号,则消息280被认为是重复的消息并被丢弃;反之,则将消息280置于本地接收缓存240中供之后引用。
如果保证包含ALO,则协议270在接收到消息280时,向对话的对方端点发送一个未编排序列的完整可选择的肯定确认。该确认必须包括目前为止会话所接收到的所有消息的序列号。可以使用一种速记符号来保存消息空间,该速记符号包含序列范围的集合。
如果指定的保证不包括IO,则立即使消息280可用于通过接收信道220“传送”至接收应用205。特别地,将向应用205发送通知,表明消息已可用于接收。应用205可在下一可用于传送的消息传送至应用205并出现“传送”时调用Receive()215。
如果指定了IO保证,则将到达的消息280的序列号同下一期望消息序列号相比较。如果序列号小于下一期望消息序列号,则丢弃该到达的消息280。如果两者相匹配,则立即使到达的消息280可用于传送至接收应用205,并将下一期望序列号设为下一丢失消息的号码。如果序列号大于下一期望序列号,则采取何种行动取决于是否还指定了ALO保证。如果未指定ALO保证,则使消息280立即可用于传送至接收应用205,并将下一期望序列号设为到达消息280的序列号加1。如果指定了ALO保证,则不使消息280可用于传送至接收应用205,而保留在接收缓存240中。相应地,如果两者不匹配,则假定至少一个具有更低序列号的其它消息还未接收到。当所有这种丢失的较低序列号消息都到达时,则使连续范围的消息可用于以正确的序列传送至接收应用,并将下一期望序列号设为下一丢失信息的号码。
如上文所述,当消息可用于传送至接收应用205时,则向接收应用205发出通知。然后接收应用可以在对话信道220上调用Receive()方法215,来接受下一可用消息的传送。可以多次调用Receive()来依次接收每一可用消息。为了确保顺序,连续传送事件通知。相应地,当消息可用于传送至应用205时,通过调用之前向对话200事件登记的应用代码,向应用205传送单个事件通知。在对该应用代码的调用返回之前,即使当其它消息可用于传送时,也不会调用其它应用代码。在该应用代码中,应用205通常会调用对话Receive()210来接收下一可用消息。
如上文所述,当调用Send()210时,将当前发送缓存250中的消息数同指定的缓存限额进行比较。如果超过了限额,则对Send()210的调用被阻塞,直到空间变为可用,或者直到发送超时为止。当发送缓存250中的空间可用时,缓存检测是否有任何调用正在等待发送消息。如果有处于等待状态的调用,则除去对Send()210调用的阻塞,使其可以继续发送消息。
对话200的所有状态——包括在消息缓存250和240中、信道220中和协议270中的状态——可以同时保存在对话存储260中。对话存储260应包含最新的信息。这保证了对话235具有对话存储260的持久性性质,并使得所有特性都同正在使用的存储260功能上无关。例如,将消息280置于接收缓存240可以涉及对存储260的磁盘写操作。为了提供保证,仅当消息被记录在存储260之后才发送确认。这可以确保,诸如不论发送方还是接收方都可以始终拥有消息的副本。类似地,在发送端,Send()210只有在消息记录在存储260之后才得以完成。
如前文所提及的,对话存储260可以是一种可插式存储,使其具有很大的灵活性,可以达到持久性、性能、独立性以及管理的目标。例如,存储260可以从以下单个结构中的多个存储中选一:存储器对话存储实现,它可以将所有状态保存在应用存储器中;快速对话存储实现,它可以将状态保存在独立的专用端口监控进程的存储器中;或者持久数据库存储实现,如结构化查询语言(SQL)服务器。同一应用205中的不同对话可以使用不同的存储。而且,本发明还将一些对话存储260可以配置为运行于本地计算机节点或其它节点上。
由于对话200在行为上作为应用205的代理,使应用205同连接中的变化隔离。这使得诸如应用程序开始、发送和接收消息、然后退出而无需等待其它端点响应甚至可用这样的批处理风格成为可能。更进一步,可以很灵活地安排调度消息传送,仅需服从是否达到不同传送保证和本地特性的要求,如消息或会话TTL。例如,服从传送保证,对话200可以在一段时间(负载平衡)内扩展峰值消息负载或将消息传送转移至更成本有效的时间内、等待资源变为可用、说明消息或对话的优先级等等,独立于应用205。另外,存储260为应用205提供了关闭和重启能力。批处理、调度以及应用关闭和重启能力都增强了系统的可用性和可伸缩性。
另外,根据上文简介提到的,应用205可以指定Send()210或Receive()215操作对对话缓存250和240进行事务处理。这使得应用可以,如接收消息、在一个或多个对话中发送若干消息、以及更新应用表,以上都在单个的事务中进行。在对事务的这一使用中,这只是一个简单的本地概念,并未带入其它端点中。
对话还提供了运行时间中的错误恢复,可以自动恢复(屏蔽)许多错误265,而不涉及应用实现。应用可以依靠接收对话200生存期的断言特征(如断言的保证和特性)。如果对话200或者协议270的基础结构确定断言的特征无法达到,则将对话置于错误状态,并引发错误事件,使得带外纠正动作独立于主线应用代码甚至是应用205。如果错误265可以纠正(修复),则该对话置回服务中。对于无法恢复的错误,如无法修复的错误,则终止对话200并通知应用。这一设计符合“错误快速”模型,这是可靠应用开发的基础。
可保全失败包括:讹误、丢失、重复或延迟消息;传输或网络失败;进程失败;中间层失败以及系统失败。如上文所提及的,由于对话200提供了应用的抽象并保留其自身的缓存和储存,对话200也支持具有间歇连接的应用和环境。对话还可用来改变环境,如改变网络拓扑、重新协商安全内容或端点重定位。
对话200可以独立地自动试图修复这些错误,如通过重新发送消息。或者也可以发送要求至第三方进行相互合作,如系统操作员或者诊断代码,要求在修复错误中的协助。协助可以是,如,简单的人员干涉来修复网络的中断连接或者也可能是自动修复进程。在任何情况下,一旦修复错误,对话200就继续发送消息。这些同其它可用性特性相结合,可以考虑持久的对话。然而,如果错误无法通过对话200或者其它第三方干涉来解决,则必须向开始对话的应用205引发错误消息。
应用程序可配置为采用对话存储260来使得对话在应用进程失败并重启后继续维持。有些存储260可以额外地允许系统失败和重启。
其它传输错误可以通过特定域错误处理器和上文描述的基本消息重新传输支持的组合来自动处理。示例包括由于安全证书或策略过期引起的错误。如果安全会话中的消息传输由于证书过期而发生错误,对话200可以重新协商安全证书并清除对话错误。当对话进程继续时,通过标准重试进程采用更新的证书来重新传输已缓存的消息。
如上文所提及的,对话200的设计及其相应的基本结构使得运行时刻能够动态地令对话200适应变化的执行环境。这对应用执行来说是透明的,并支持持久对话的存在和高可用性应用。
上文描述的错误处理器(可以是可插型的)、传输和传送重试的组合以及错误和修复模型令对话可以适应多种环境变化。这些变化包括但不限于,策略变化(如消息保密)、协议变化(如支持新的安全协议)、网络拓扑变化(如路由器或防火墙的增加和减少)、改变已调度的应用来处理增加的负载(如引入应用程序集群和/或分区)以及对话端点及其相应状态的重定位(如灾难的恢复)。也可以考虑可伸缩调度选项,包括从很小到很大的支持。例如,对话200支持按比例放大、超尺寸范围扩展、应用程序复制或分区,同样对应用实现来说是透明的。
图3描述了对话200的生命周期和状态。对话200可以处于一个或两个主要状态,活动状态320或非活动状态360。如果对话200处于活动状态320,对话信道对象220位于存储器中,反之如果对话200处于非活动状态,则对话200仅存在于对话存储260中。通过去激活350和重新激活340进程手动或自动进行系统资源管理。例如,如果应用程序调用Dispose,则手动进行去激活350,如果由于非活动时间段,即在一段时间内对话通道上没有消息交换,则自动发生去激活350。这类信道可以去激活(从存储器释放相应的对象),来释放存储器资源用于其它对象。
如果应用向对话管理器(未示出)请求信道,则手动进行重新激活240,或者如果有新信息到达会话,则自动发生重新激活340。在对话创建310中每一对话都由对话管理器分配一个唯一的ID。当有重新激活340的请求时,该ID经应用205传送至对话管理器,对话管理器使用该ID来定位对话状态并重新开启信道。去激活350和重新激活340接口使得系统可以限制进程资源,该资源同未激活使用的发送输出消息或处理输入消息的对话相关联。这使基础结构可以回收相关资源,同对话存储260相关联的资源除外。更进一步,这一设计还可考虑资源调度,包括:根据优先级或资源可用性进行消息发送调度;批处理消息以获得更高效的发送;根据优先级或资源可用性进行消息传送调度;以及批处理消息传送以获得更高效的处理。
对话的创建310由对话管理器控制,并由调用创建310函数的应用开始。另外,报文系统在从另一端点接收到表明请求新对话的消息后也可以开始对话创建310。在这一情况下,系统通知应用205有对话请求。应用205可以调用对话管理器的接受方法来接受对话请求,并引发对话创建310,也可以调用对话管理器上的拒绝方法来拒绝对话请求。对话管理器也控制去除330,它由多种原因来开始。一个原因是会话已成功完成,即,双方都完成发送并没有遗留的消息。另一去除330的原因可能是对话220被终止,例如,应用调用Terminate()函数或从对方端点收到终止指示。当一方终止对话,就将发送消息至另一方表明该终止。该消息没有可靠性,仅仅是一个简单的尝试,告诉另一方对话已终止。终止表明该对话会话上将不再有进一步的消息交换。
尽管本发明的描述将对话定义为一种双工通信机制,其中应用消息可以被会话双方端点发送和接收,另一示例实施例包括了单工模型。在相应的实施例中,一个会话端点仅发送应用消息,并不从其对方端点接收应用消息,会话对方端点仅接收应用消息但并不发送。相同的可配置保证和可配置本地端点特性都应用于对话中。实现的不同之处在于,在发送端点不需要接收缓存240,在接收端点不需要发送缓存250。
不脱离本发明范围的实施例还包括计算机可读介质,携带或具有计算机可执行指令或数据结构。这类计算机可读介质可以是任何可用的介质,可以被通用或专用计算机所存取。作为示例但并不局限,这类计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备、以及其它任何介质,可以用来以计算机可执行指令形式携带或储存所需的程序代码装置或数据结构,并能够被通用或专用计算机所存取。当信息在网络或者另一同计算机的通信连接(可以是硬布线、或无线、或两者的组合)上传输或提供时,计算机适当地将该连接视为计算机可读介质。这样,任何这种连接都被适当地定义为计算机可读介质。以上的组合也可以包含在计算机可读介质的范围内。计算机可执行指令包括,如,能引发通用计算机、专用计算机或者专用处理设备执行特定函数或者函数组的指令和数据。
图4以及下文的讨论将要提供对一种可实现本发明的合适的计算环境的简要的综合的描述。尽管不是必须的,仍将在计算机可执行指令的一般环境下描述本发明,如在网络的环境下由计算机执行的程序模块。程序模块通常包括例程、程序、对象、成分、数据结构等等,它们可以完成特定的任务或者实现特定的抽象数据类型。计算机可执行指令及其相关的数据结构和程序模块代表了用于执行此处描述的方法的步骤的程序代码装置的示例。该可执行指令及其相关的数据结构的特定序列代表了实现该步骤中所描述的功能的相应行为的示例。
令本领域技术人员高兴的是,本发明可以在具有很多类型计算机系统配置的网络计算环境中实行,包括个人计算机、手持式设备、多处理器系统、基于微处理器或可编程的消费类电子产品、网络PC、小型机、大型计算机等等。本发明也可以在分布式计算环境中实行,其中任务是由通过通信网络连接(可以是硬布线连接、无线连接或者两者的组合)的本地和远程处理设备完成的。在分布式计算环境中,程序模块可以同时位于本地和远程存储设备中。
根据图4,实现本发明的一个示例系统包括以传统计算机420形式表示的通用计算设备,包括处理单元421、系统存储器422以及系统总线423,用来将各种系统组件,包括系统存储器422,耦合至处理单元421。系统总线423可以是几种类型总线结构的任何一种,包括存储器总线或存储控制器、并行总线、以及使用各种总线结构的任何本地总线。系统存储器包括只读存储器(ROM)424和随机存取存储器(RAM)425。基本输入/输出系统(BIOS)426可以储存在ROM 424中,包括如在启动时协助在计算机420内两元件间传输信息的基本例程。
计算机420还可以包括对磁硬盘439进行读写操作的磁硬盘驱动器427、对可移动磁盘429进行读写操作的磁盘驱动器428、以及对可移动光盘431如CD-ROM或其它光介质进行读写操作的光盘驱动器430。磁硬盘驱动器427、磁盘驱动器428和光盘驱动器430相应地通过硬盘驱动器接口432、磁盘驱动器接口433以及光盘驱动器接口同系统总线423连接。驱动器及其相关的计算机可读介质能向计算机420提供计算机可执行指令、数据结构、编程模块以及其它数据的非易失性存储。尽管这里描述的示例实施例使用了磁硬盘439、可移动的磁盘429以及可移动的光盘431,也可以使用其它类型的计算机可读介质来储存数据,包括磁盒式磁带、快速擦写存储卡、数字通用盘、Bernoulli盒式磁盘、RAM、ROM等等。
包括一个或多个程序模型的程序代码装置可以储存在硬盘439、磁盘429、光盘431、ROM 424或RAM 425上,包括操作系统35、一个或多个应用程序36、其它程序模块437以及程序数据438。用户可以通过键盘440、定位设备442或其它输入设备(未标出),如麦克风、操纵杆、游戏操纵杆、圆盘式卫星电视天线、扫描仪等等,输入命令和信息至计算机420。这些输入设备以及其它输入设备通常通过同系统总线连接的串行端口接口446连接至处理单元421。输入设备也可以通过其它接口连接,如并行端口、游戏端口或通用串行总线(USB)。监视器447和另一显示设备也通过接口,如视频适配器448,连接至系统总线423。除监视器之外,个人计算机通常包括其它外围输出设备(未示出),如扬声器和打印机。
计算机420可以在建立网络的环境中操作,该网络环境采用逻辑连接至一个或多个远端计算机,如远端计算机449a和449b。远端计算机449a和449b每一个都可以是另一个人计算机、服务器、路由器、网络PC、对等设备或其它普通网络节点,通常包括许多或所有上文所描述的有关计算机420的元件,尽管在图4中只描述了存储设备450a和450b以及他们相关联的应用程序436a和436b。图4描述的逻辑连接包括局域网(LAN)451和广域网(WAN)452,此处仅作为示例,并非局限。这类常见的网络环境有办公室范围和企业范围的计算机网络、企业内部互联网和因特网。
当在LAN网络环境中使用时,计算机420通过网络接口或适配器453同本地网络451相连接。当在WAN网络环境中使用时,计算机420可以包括调制解调器454、无线链路或者其它用来在广域网452,如因特网中建立通信的装置。调制解调器454可以是内置或者外置的,通过串行端口接口446连接至系统总线423。在网络环境中,所描述的同计算机420或其部分相关的程序模块可以储存在远程存储设备中。这里所描绘的网络连接是示例性的,也可以使用广域网452中建立通信的其它装置。
本发明可以在不脱离其精神和主要特性的情况下采用其它指定的形式来实施。所描述的实施例在各方面仅作说明,并非限制。因此,本发明的范围由后附的权利要求书来说明,而非前文的描述。所有等效权利要求书的意义和范围之内的变化都包含在其范围之内。
Claims (19)
1.一种在支持一个或多个消息传输的报文系统中通过提供单个编程模型简化应用开发的方法,所述单个编程模型允许独立于运行时刻使用的特定消息传输而指定一个或多个运行时刻达到的端对端消息传送保证,而无需在开发时期指定特定的消息传输,该方法包含的步骤有:
定义消息信道接口,该接口对发送和接收操作进行抽象,以在可用于发送和接收一个或多个消息的一个或多个消息传输上交换消息;
定义多个端对端消息传送保证以在单个编程模型内使用,每一消息传送保证可在运行时刻独立于一个或多个可用的消息传输而被指定,无需在开发时期指定所述一个或多个可用的消息传输,其中,多个消息传送保证包括至少一次消息传送、至多一次消息传送、顺序发送消息传送以及会话持续时间中的至少一个;
除了所述多个端对端消息传送保证之外,定义能独立地选择和定制的多个本地可靠消息特性,其中所述多个本地可靠消息特性划分成两种不同的类型:包括集成于所述单个编程模型的本地可靠消息特性的第一特性类型和包括涉及独立于应用程序定制的本地可靠消息特性的第二特性类型,所述第一特性类型包括对于应用具有一致性、隔离性以及语义可分性的已事务缓存,或者将模板同会话相结合以允许独立定制的模板引用,所述第二特性类型包括会话状态存储配置、缓存限额、发送超时、可配置的消息持续时间、会话优先级消息和有害消息检测门限中的至少一个。
2.如权利要求1所述的方法,其特征在于,所述会话状态存储配置包括可插式存储且对于每一独立的会话是可单独定制的,所述存储包括存储器存储、盘上持久存储或端口监控进程存储中的至少一个,所述存储对于指定定义的多个端对端消息传送保证中的一个或多个端对端消息传送保证的应用来说是本地的。
3.如权利要求1所述的方法,其特征在于,所述会话状态存储配置包括可插式存储且对于每一独立的会话是可单独定制的,所述存储包括存储器存储、盘上持久存储或端口监控进程存储中的至少一个,所述存储对于指定定义的多个端对端消息传送保证中的一个或多个端对端消息传送保证的应用来说是远程的。
4.如权利要求1所述的方法,其特征在于,所述缓存限额连同最大消息容量一起,定义了系统可缓存的最大消息数,并限制了消息可消耗的最大空间。
5.如权利要求4所述的方法,其特征在于,如果所需要的缓存空间由于缓存限额而不可用时,则在所述发送超时之后除去对消息发送功能的阻塞。
6.如权利要求1所述的方法,其特征在于,所述缓存限额连同最大消息容量一起,为特定的消息数保留足够的缓存空间。
7.如权利要求1所述的方法,其特征在于,根据所述会话优先级消息,高优先级消息将优先于低优先级消息发送。
8.如权利要求1所述的方法,其特征在于,根据所述会话优先级消息,高优先级消息将优先于低优先级消息传送。
9.如权利要求1所述的方法,其特征在于,不管会话状态存储的持久性如何,所述已事务缓存是可用的。
10.如权利要求1所述的方法,其特征在于,所述有害消息检测门限包括一可配置数,该可配置数指定当消息传送必须中止多少次以后可认为消息无法传送。
11.如权利要求1所述的方法,其特征在于,报文特征可由一组模板来定义,该组模板能提供一组指定的由端对端消息传送保证和本地特性所定义的消息配置选项。
12.一种在支持一个或多个消息传输的报文系统中通过提供单个编程模型简化应用开发的方法,所述单个编程模型允许指定在运行时刻选择特定的消息传输而使用的一个或多个端对端消息传送保证,而无需在开发时期指定所述特定的消息传输,该方法包含的步骤有:
对通过所述一个或多个消息传输交换信息的消息信道接口进行抽象;
允许应用开发者指定多个端对端消息传送保证中的一个或多个以用于单个编程模型中,所指定的端对端消息传送保证用来在运行时刻选择合适的消息传输,而无需在开发时期指定任何消息传输,所述多个消息传送保证包括至少一次消息传送、至多一次消息传送、顺序发送消息传送以及消息持续时间中的至少一个;
除了所述多个端对端消息传送保证之外,允许应用程序开发者指定多个本地可靠消息特性中的一个或多个,其中,所述多个本地可靠消息特性是能独立地选择和定制的,其中所述多个本地可靠消息特性划分成两种不同的类型:包括集成于所述单个编程模型的本地可靠消息特性的第一特性类型和包括涉及独立于应用程序定制的本地可靠消息特性的第二特性类型,所述第一特性类型包括对于应用具有一致性、隔离性以及语义可分性的已事务缓存,或者将模板同会话相结合以允许独立定制的模板引用,所述第二特性类型包括会话状态存储配置、缓存限额、发送超时、可配置的消息持续时间、会话优先级消息和有害消息检测门限中的至少一个。
13.如权利要求12所述的方法,其特征在于,所述缓存限额连同最大消息容量一起定义可由系统缓存的最大消息数。
14.如权利要求13所述的方法,其特征在于,如果达到缓存限额,则在发送超时后除去对发送功能的阻塞。
15.如权利要求12所述的方法,其特征在于,根据所述会话优先级消息,高优先级消息在低优先级消息之前发送。
16.如权利要求12所述的方法,其特征在于,根据所述会话优先级消息,高优先级消息在低优先级消息之前接收。
17.如权利要求12所述的方法,其特征在于,不管会话状态存储的持久性如何,所述已事务缓存是可用的。
18.如权利要求12所述的方法,其特征在于,所述有害消息检测门限包括一可配置数,该可配置数指定消息传送必须中止多少次以后可认为消息不可传送。
19.如权利要求12所述的方法,其特征在于,消息传送特征可由一组模板来定义,该组模板提供了一组特定的由端对端消息传送保证和本地特性所定义的消息配置选项。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/401,649 | 2003-03-27 | ||
US10/401,649 US7676580B2 (en) | 2003-03-27 | 2003-03-27 | Message delivery with configurable assurances and features between two endpoints |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1534923A CN1534923A (zh) | 2004-10-06 |
CN1534923B true CN1534923B (zh) | 2012-05-30 |
Family
ID=32825023
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2004100322497A Expired - Fee Related CN1534923B (zh) | 2003-03-27 | 2004-03-26 | 通过提供单个编程模型简化应用开发的方法 |
Country Status (19)
Country | Link |
---|---|
US (1) | US7676580B2 (zh) |
EP (1) | EP1463249A3 (zh) |
JP (1) | JP2004295895A (zh) |
KR (1) | KR20040086583A (zh) |
CN (1) | CN1534923B (zh) |
AU (1) | AU2004200732A1 (zh) |
BR (1) | BRPI0400775A (zh) |
CA (1) | CA2460274A1 (zh) |
CO (1) | CO5560092A1 (zh) |
IL (1) | IL160572A0 (zh) |
MX (1) | MXPA04002731A (zh) |
MY (1) | MY144262A (zh) |
NO (1) | NO20041261L (zh) |
NZ (1) | NZ531382A (zh) |
PL (1) | PL366440A1 (zh) |
RU (1) | RU2363040C2 (zh) |
SG (1) | SG116532A1 (zh) |
TW (1) | TWI337823B (zh) |
ZA (1) | ZA200401582B (zh) |
Families Citing this family (117)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8144671B2 (en) | 2005-07-01 | 2012-03-27 | Twitchell Jr Robert W | Communicating via nondeterministic and deterministic network routing |
US7693952B2 (en) * | 2003-03-27 | 2010-04-06 | Microsoft Corporation | Availability and scalability in a messaging system in a manner transparent to the application |
US7966368B2 (en) * | 2003-05-02 | 2011-06-21 | Microsoft Corporation | Communicating messages over transient connections in a peer-to-peer network |
JP2005293370A (ja) * | 2004-04-01 | 2005-10-20 | Hitachi Ltd | 記憶制御システム |
US7142107B2 (en) | 2004-05-27 | 2006-11-28 | Lawrence Kates | Wireless sensor unit |
US7483943B2 (en) * | 2004-09-21 | 2009-01-27 | Microsoft Corporation | Reliable messaging using clocks with synchronized rates |
KR100663465B1 (ko) * | 2004-10-08 | 2007-01-02 | 삼성전자주식회사 | 전송제어 프로토콜을 사용하는 데이터 네트워크에서 다중 세그먼트 복구를 위한 가상 블록 정보의 송수신 방법 및 장치 |
US7730196B2 (en) * | 2004-12-03 | 2010-06-01 | Microsoft Corporation | Efficient transfer of messages using reliable messaging protocols for web services |
US7899921B2 (en) * | 2004-12-08 | 2011-03-01 | Microsoft Corporation | Verifying and maintaining connection liveliness in a reliable messaging for web services environment |
US7421501B2 (en) * | 2005-02-04 | 2008-09-02 | Microsoft Corporation | Queued sessions for communicating correlated messages over a network |
US7474618B2 (en) * | 2005-03-02 | 2009-01-06 | Objective Interface Systems, Inc. | Partitioning communication system |
US8032500B2 (en) * | 2005-08-22 | 2011-10-04 | Oracle America, Inc. | Dynamic sending policies and client-side disaster recovery mechanism for messaging communication |
JP2007081678A (ja) * | 2005-09-13 | 2007-03-29 | Ntt Docomo Inc | データ中継装置及びデータ中継方法 |
US7721293B2 (en) * | 2005-09-21 | 2010-05-18 | Sap Ag | Web services hibernation |
US7761533B2 (en) * | 2005-09-21 | 2010-07-20 | Sap Ag | Standard implementation container interface for runtime processing of web services messages |
US7711836B2 (en) * | 2005-09-21 | 2010-05-04 | Sap Ag | Runtime execution of a reliable messaging protocol |
US20070067461A1 (en) * | 2005-09-21 | 2007-03-22 | Savchenko Vladimir S | Token streaming process for processing web services message body information |
US7716279B2 (en) * | 2005-09-21 | 2010-05-11 | Sap Ag | WS addressing protocol for web services message processing runtime framework |
US7788338B2 (en) | 2005-09-21 | 2010-08-31 | Sap Ag | Web services message processing runtime framework |
US7606921B2 (en) * | 2005-09-21 | 2009-10-20 | Sap Ag | Protocol lifecycle |
US8745252B2 (en) * | 2005-09-21 | 2014-06-03 | Sap Ag | Headers protocol for use within a web services message processing runtime framework |
US20070081472A1 (en) * | 2005-10-06 | 2007-04-12 | Mung Chiang | System for evolvable network design |
US20070294584A1 (en) * | 2006-04-28 | 2007-12-20 | Microsoft Corporation | Detection and isolation of data items causing computer process crashes |
WO2008101756A1 (en) * | 2007-02-20 | 2008-08-28 | International Business Machines Corporation | Method and system for concurrent message processing |
US20080307056A1 (en) * | 2007-06-07 | 2008-12-11 | Vladimir Videlov | Web Services Reliable Messaging |
US8200836B2 (en) * | 2007-11-16 | 2012-06-12 | Microsoft Corporation | Durable exactly once message delivery at scale |
US8214847B2 (en) * | 2007-11-16 | 2012-07-03 | Microsoft Corporation | Distributed messaging system with configurable assurances |
US7523206B1 (en) | 2008-04-07 | 2009-04-21 | International Business Machines Corporation | Method and system to dynamically apply access rules to a shared resource |
WO2009140669A2 (en) | 2008-05-16 | 2009-11-19 | Terahop Networks, Inc. | Securing, monitoring and tracking shipping containers |
US20100008377A1 (en) * | 2008-07-08 | 2010-01-14 | International Business Machines Corporation | Queue management based on message age |
US8600559B2 (en) | 2008-10-27 | 2013-12-03 | Lennox Industries Inc. | Method of controlling equipment in a heating, ventilation and air conditioning network |
US9268345B2 (en) | 2008-10-27 | 2016-02-23 | Lennox Industries Inc. | System and method of use for a user interface dashboard of a heating, ventilation and air conditioning network |
US8255086B2 (en) | 2008-10-27 | 2012-08-28 | Lennox Industries Inc. | System recovery in a heating, ventilation and air conditioning network |
US8802981B2 (en) | 2008-10-27 | 2014-08-12 | Lennox Industries Inc. | Flush wall mount thermostat and in-set mounting plate for a heating, ventilation and air conditioning system |
US8352080B2 (en) | 2008-10-27 | 2013-01-08 | Lennox Industries Inc. | Communication protocol system and method for a distributed-architecture heating, ventilation and air conditioning network |
US8452456B2 (en) | 2008-10-27 | 2013-05-28 | Lennox Industries Inc. | System and method of use for a user interface dashboard of a heating, ventilation and air conditioning network |
US8463443B2 (en) | 2008-10-27 | 2013-06-11 | Lennox Industries, Inc. | Memory recovery scheme and data structure in a heating, ventilation and air conditioning network |
US8615326B2 (en) | 2008-10-27 | 2013-12-24 | Lennox Industries Inc. | System and method of use for a user interface dashboard of a heating, ventilation and air conditioning network |
US8564400B2 (en) | 2008-10-27 | 2013-10-22 | Lennox Industries, Inc. | Communication protocol system and method for a distributed-architecture heating, ventilation and air conditioning network |
US8352081B2 (en) | 2008-10-27 | 2013-01-08 | Lennox Industries Inc. | Communication protocol system and method for a distributed-architecture heating, ventilation and air conditioning network |
US8655490B2 (en) | 2008-10-27 | 2014-02-18 | Lennox Industries, Inc. | System and method of use for a user interface dashboard of a heating, ventilation and air conditioning network |
US8548630B2 (en) | 2008-10-27 | 2013-10-01 | Lennox Industries, Inc. | Alarm and diagnostics system and method for a distributed-architecture heating, ventilation and air conditioning network |
US9152155B2 (en) | 2008-10-27 | 2015-10-06 | Lennox Industries Inc. | Device abstraction system and method for a distributed-architecture heating, ventilation and air conditioning system |
US8600558B2 (en) | 2008-10-27 | 2013-12-03 | Lennox Industries Inc. | System recovery in a heating, ventilation and air conditioning network |
US8463442B2 (en) | 2008-10-27 | 2013-06-11 | Lennox Industries, Inc. | Alarm and diagnostics system and method for a distributed architecture heating, ventilation and air conditioning network |
US8725298B2 (en) | 2008-10-27 | 2014-05-13 | Lennox Industries, Inc. | Alarm and diagnostics system and method for a distributed architecture heating, ventilation and conditioning network |
US9377768B2 (en) | 2008-10-27 | 2016-06-28 | Lennox Industries Inc. | Memory recovery scheme and data structure in a heating, ventilation and air conditioning network |
US8774210B2 (en) | 2008-10-27 | 2014-07-08 | Lennox Industries, Inc. | Communication protocol system and method for a distributed-architecture heating, ventilation and air conditioning network |
US8892797B2 (en) | 2008-10-27 | 2014-11-18 | Lennox Industries Inc. | Communication protocol system and method for a distributed-architecture heating, ventilation and air conditioning network |
US8560125B2 (en) | 2008-10-27 | 2013-10-15 | Lennox Industries | Communication protocol system and method for a distributed-architecture heating, ventilation and air conditioning network |
US8452906B2 (en) | 2008-10-27 | 2013-05-28 | Lennox Industries, Inc. | Communication protocol system and method for a distributed-architecture heating, ventilation and air conditioning network |
US8437877B2 (en) | 2008-10-27 | 2013-05-07 | Lennox Industries Inc. | System recovery in a heating, ventilation and air conditioning network |
US8295981B2 (en) | 2008-10-27 | 2012-10-23 | Lennox Industries Inc. | Device commissioning in a heating, ventilation and air conditioning network |
US8239066B2 (en) | 2008-10-27 | 2012-08-07 | Lennox Industries Inc. | System and method of use for a user interface dashboard of a heating, ventilation and air conditioning network |
US8762666B2 (en) | 2008-10-27 | 2014-06-24 | Lennox Industries, Inc. | Backup and restoration of operation control data in a heating, ventilation and air conditioning network |
US8994539B2 (en) | 2008-10-27 | 2015-03-31 | Lennox Industries, Inc. | Alarm and diagnostics system and method for a distributed-architecture heating, ventilation and air conditioning network |
US8977794B2 (en) | 2008-10-27 | 2015-03-10 | Lennox Industries, Inc. | Communication protocol system and method for a distributed-architecture heating, ventilation and air conditioning network |
US8442693B2 (en) | 2008-10-27 | 2013-05-14 | Lennox Industries, Inc. | System and method of use for a user interface dashboard of a heating, ventilation and air conditioning network |
US8661165B2 (en) | 2008-10-27 | 2014-02-25 | Lennox Industries, Inc. | Device abstraction system and method for a distributed architecture heating, ventilation and air conditioning system |
US8543243B2 (en) | 2008-10-27 | 2013-09-24 | Lennox Industries, Inc. | System and method of use for a user interface dashboard of a heating, ventilation and air conditioning network |
US8855825B2 (en) | 2008-10-27 | 2014-10-07 | Lennox Industries Inc. | Device abstraction system and method for a distributed-architecture heating, ventilation and air conditioning system |
US8798796B2 (en) | 2008-10-27 | 2014-08-05 | Lennox Industries Inc. | General control techniques in a heating, ventilation and air conditioning network |
US9325517B2 (en) | 2008-10-27 | 2016-04-26 | Lennox Industries Inc. | Device abstraction system and method for a distributed-architecture heating, ventilation and air conditioning system |
US9432208B2 (en) | 2008-10-27 | 2016-08-30 | Lennox Industries Inc. | Device abstraction system and method for a distributed architecture heating, ventilation and air conditioning system |
US9651925B2 (en) | 2008-10-27 | 2017-05-16 | Lennox Industries Inc. | System and method for zoning a distributed-architecture heating, ventilation and air conditioning network |
US9261888B2 (en) | 2008-10-27 | 2016-02-16 | Lennox Industries Inc. | System and method of use for a user interface dashboard of a heating, ventilation and air conditioning network |
US8744629B2 (en) | 2008-10-27 | 2014-06-03 | Lennox Industries Inc. | System and method of use for a user interface dashboard of a heating, ventilation and air conditioning network |
US8655491B2 (en) | 2008-10-27 | 2014-02-18 | Lennox Industries Inc. | Alarm and diagnostics system and method for a distributed architecture heating, ventilation and air conditioning network |
US8874815B2 (en) | 2008-10-27 | 2014-10-28 | Lennox Industries, Inc. | Communication protocol system and method for a distributed architecture heating, ventilation and air conditioning network |
US9678486B2 (en) | 2008-10-27 | 2017-06-13 | Lennox Industries Inc. | Device abstraction system and method for a distributed-architecture heating, ventilation and air conditioning system |
US8788100B2 (en) | 2008-10-27 | 2014-07-22 | Lennox Industries Inc. | System and method for zoning a distributed-architecture heating, ventilation and air conditioning network |
US9632490B2 (en) | 2008-10-27 | 2017-04-25 | Lennox Industries Inc. | System and method for zoning a distributed architecture heating, ventilation and air conditioning network |
US8437878B2 (en) | 2008-10-27 | 2013-05-07 | Lennox Industries Inc. | Alarm and diagnostics system and method for a distributed architecture heating, ventilation and air conditioning network |
US8694164B2 (en) | 2008-10-27 | 2014-04-08 | Lennox Industries, Inc. | Interactive user guidance interface for a heating, ventilation and air conditioning system |
US8433446B2 (en) | 2008-10-27 | 2013-04-30 | Lennox Industries, Inc. | Alarm and diagnostics system and method for a distributed-architecture heating, ventilation and air conditioning network |
JP5169761B2 (ja) * | 2008-11-17 | 2013-03-27 | 富士通株式会社 | 電子ファイル管理システム,端末装置および電子ファイル管理プログラム |
US8424024B2 (en) * | 2009-03-26 | 2013-04-16 | Digi International Inc. | Application-specific serial port redirector |
US7958244B2 (en) * | 2009-09-25 | 2011-06-07 | International Business Machines Corporation | Imposed policies for handling instant messages |
USD648642S1 (en) | 2009-10-21 | 2011-11-15 | Lennox Industries Inc. | Thin cover plate for an electronic system controller |
USD648641S1 (en) | 2009-10-21 | 2011-11-15 | Lennox Industries Inc. | Thin cover plate for an electronic system controller |
US8285775B2 (en) * | 2009-10-22 | 2012-10-09 | International Business Machines Corporation | Expedited transaction failure handling by leveraging a reliable message transport protocol to assist detection of discarded processing |
US8260444B2 (en) | 2010-02-17 | 2012-09-04 | Lennox Industries Inc. | Auxiliary controller of a HVAC system |
US8719625B2 (en) * | 2010-07-22 | 2014-05-06 | International Business Machines Corporation | Method, apparatus and computer program for processing invalid data |
US9264787B2 (en) | 2010-11-29 | 2016-02-16 | Rosemount Inc. | Communication system for process field device |
US8910182B2 (en) * | 2011-05-27 | 2014-12-09 | Microsoft Corporation | Managing and simplifying distributed applications |
US8806250B2 (en) | 2011-09-09 | 2014-08-12 | Microsoft Corporation | Operating system management of network interface devices |
US8892710B2 (en) | 2011-09-09 | 2014-11-18 | Microsoft Corporation | Keep alive management |
US9049660B2 (en) | 2011-09-09 | 2015-06-02 | Microsoft Technology Licensing, Llc | Wake pattern management |
US9047182B2 (en) | 2012-12-27 | 2015-06-02 | Microsoft Technology Licensing, Llc | Message service downtime |
US9742819B2 (en) * | 2013-03-15 | 2017-08-22 | Synaptive Medical (Barbados) Inc. | System and method for reliable messaging between application sessions across volatile networking conditions |
US9614794B2 (en) * | 2013-07-11 | 2017-04-04 | Apollo Education Group, Inc. | Message consumer orchestration framework |
US9454364B2 (en) | 2013-07-17 | 2016-09-27 | Accenture Global Services Limited | Mobile application optimization platform |
US9749280B2 (en) * | 2013-09-20 | 2017-08-29 | Oracle International Corporation | Techniques for reliable messaging for an intermediary in a network communication environment |
ES2930670T3 (es) * | 2014-03-11 | 2022-12-21 | Iex Group Inc | Técnicas para el mecanismo de retransmisión de mensajes |
US10362059B2 (en) * | 2014-09-24 | 2019-07-23 | Oracle International Corporation | Proxy servers within computer subnetworks |
KR102357697B1 (ko) * | 2014-09-23 | 2022-02-08 | 오라클 인터내셔날 코포레이션 | 컴퓨터 서브네트워크들 내의 프록시 서버들 |
US10142273B2 (en) | 2015-06-23 | 2018-11-27 | International Business Machines Corporation | Handling various scenarios where an email recipient is not available |
US10333879B2 (en) | 2015-08-07 | 2019-06-25 | Satori Worldwide, Llc | Scalable, real-time messaging system |
US9319363B1 (en) | 2015-08-07 | 2016-04-19 | Machine Zone, Inc. | Scalable, real-time messaging system |
US9602455B2 (en) | 2015-08-07 | 2017-03-21 | Machine Zone, Inc. | Scalable, real-time messaging system |
US9407585B1 (en) | 2015-08-07 | 2016-08-02 | Machine Zone, Inc. | Scalable, real-time messaging system |
US9319365B1 (en) | 2015-10-09 | 2016-04-19 | Machine Zone, Inc. | Systems and methods for storing and transferring message data |
US9385976B1 (en) | 2015-10-09 | 2016-07-05 | Machine Zone, Inc. | Systems and methods for storing message data |
US9397973B1 (en) | 2015-10-16 | 2016-07-19 | Machine Zone, Inc. | Systems and methods for transferring message data |
CN107231284B (zh) * | 2016-03-23 | 2020-06-05 | 阿里巴巴集团控股有限公司 | 一种消息的发送方法和终端设备 |
CN107231283B (zh) * | 2016-03-23 | 2020-12-18 | 阿里巴巴集团控股有限公司 | 消息管理方法及装置、消息预读方法及装置 |
US9602450B1 (en) | 2016-05-16 | 2017-03-21 | Machine Zone, Inc. | Maintaining persistence of a messaging system |
US10404647B2 (en) | 2016-06-07 | 2019-09-03 | Satori Worldwide, Llc | Message compression in scalable messaging system |
US9608928B1 (en) * | 2016-07-06 | 2017-03-28 | Machine Zone, Inc. | Multiple-speed message channel of messaging system |
US9967203B2 (en) | 2016-08-08 | 2018-05-08 | Satori Worldwide, Llc | Access control for message channels in a messaging system |
US10374986B2 (en) | 2016-08-23 | 2019-08-06 | Satori Worldwide, Llc | Scalable, real-time messaging system |
US10305981B2 (en) | 2016-08-31 | 2019-05-28 | Satori Worldwide, Llc | Data replication in scalable messaging system |
US9667681B1 (en) | 2016-09-23 | 2017-05-30 | Machine Zone, Inc. | Systems and methods for providing messages to multiple subscribers |
US10187278B2 (en) | 2017-02-24 | 2019-01-22 | Satori Worldwide, Llc | Channel management in scalable messaging system |
US10270726B2 (en) | 2017-02-24 | 2019-04-23 | Satori Worldwide, Llc | Selective distribution of messages in a scalable, real-time messaging system |
US10447623B2 (en) | 2017-02-24 | 2019-10-15 | Satori Worldwide, Llc | Data storage systems and methods using a real-time messaging system |
US20230069362A1 (en) * | 2021-08-27 | 2023-03-02 | Toshiba Tec Kabushiki Kaisha | Maintenance support server and maintenance system |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020073211A1 (en) * | 2000-12-12 | 2002-06-13 | Raymond Lin | System and method for securely communicating between application servers and webservers |
Family Cites Families (53)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020004812A1 (en) | 1997-06-26 | 2002-01-10 | Tetsuro Motoyama | Method and system for diagnosis and control of machines using connectionless modes having delivery monitoring and an alternate communication mode |
GB2268374A (en) | 1992-06-23 | 1994-01-05 | Ibm | Network addressing |
US5786771A (en) | 1993-02-12 | 1998-07-28 | International Business Machines Corporation | Selectable checking of message destinations in a switched parallel network |
US5377350A (en) | 1993-04-30 | 1994-12-27 | International Business Machines Corporation | System for cooperative communication between local object managers to provide verification for the performance of remote calls by object messages |
IL111154A0 (en) | 1993-10-21 | 1994-12-29 | Martino Ii John A | Systems and methods for electronic messaging |
US5826269A (en) | 1995-06-21 | 1998-10-20 | Microsoft Corporation | Electronic mail interface for a network server |
US6339794B2 (en) | 1995-12-08 | 2002-01-15 | Microsoft Corporation | Wire protocol for a media server system |
GB2313524A (en) * | 1996-05-24 | 1997-11-26 | Ibm | Providing communications links in a computer network |
US5872930A (en) | 1996-07-11 | 1999-02-16 | Microsoft Corporation | Load balancing between E-mail servers within a local area network |
US5870556A (en) | 1996-07-12 | 1999-02-09 | Microsoft Corporation | Monitoring a messaging link |
US5819272A (en) | 1996-07-12 | 1998-10-06 | Microsoft Corporation | Record tracking in database replication |
US5951648A (en) | 1997-03-03 | 1999-09-14 | Mylex Corporation | Reliable event delivery system |
US6058389A (en) | 1997-10-31 | 2000-05-02 | Oracle Corporation | Apparatus and method for message queuing in a database system |
US6205498B1 (en) | 1998-04-01 | 2001-03-20 | Microsoft Corporation | Method and system for message transfer session management |
US6446206B1 (en) | 1998-04-01 | 2002-09-03 | Microsoft Corporation | Method and system for access control of a message queue |
US6256634B1 (en) | 1998-06-30 | 2001-07-03 | Microsoft Corporation | Method and system for purging tombstones for deleted data items in a replicated database |
US6594701B1 (en) | 1998-08-04 | 2003-07-15 | Microsoft Corporation | Credit-based methods and systems for controlling data flow between a sender and a receiver with reduced copying of data |
US7050432B1 (en) | 1999-03-30 | 2006-05-23 | International Busines Machines Corporation | Message logging for reliable multicasting across a routing network |
US7020697B1 (en) | 1999-10-01 | 2006-03-28 | Accenture Llp | Architectures for netcentric computing systems |
US6970945B1 (en) | 1999-11-01 | 2005-11-29 | Seebeyond Technology Corporation | Systems and methods of message queuing |
US7003571B1 (en) * | 2000-01-31 | 2006-02-21 | Telecommunication Systems Corporation Of Maryland | System and method for re-directing requests from browsers for communication over non-IP based networks |
US7162512B1 (en) | 2000-02-28 | 2007-01-09 | Microsoft Corporation | Guaranteed exactly once delivery of messages |
US6772216B1 (en) * | 2000-05-19 | 2004-08-03 | Sun Microsystems, Inc. | Interaction protocol for managing cross company processes among network-distributed applications |
US20020123966A1 (en) | 2000-06-23 | 2002-09-05 | Luke Chu | System and method for administration of network financial transaction terminals |
US6980518B1 (en) * | 2000-06-23 | 2005-12-27 | International Business Machines Corporation | Gossip-based reliable multicast message recovery system and method |
US6816458B1 (en) * | 2000-09-13 | 2004-11-09 | Harris Corporation | System and method prioritizing message packets for transmission |
US6954792B2 (en) * | 2001-06-29 | 2005-10-11 | Sun Microsystems, Inc. | Pluggable authentication and access control for a messaging system |
US6877107B2 (en) | 2001-07-05 | 2005-04-05 | Softwired Ag | Method for ensuring operation during node failures and network partitions in a clustered message passing server |
US7254616B1 (en) * | 2001-07-27 | 2007-08-07 | Ciena Corporation | Reliable communication mechanism with “at most once” delivery guarantee |
US7631092B2 (en) | 2001-10-05 | 2009-12-08 | Bea Systems, Inc. | System and method for providing a pluggable message store |
US7406537B2 (en) | 2002-11-26 | 2008-07-29 | Progress Software Corporation | Dynamic subscription and message routing on a topic between publishing nodes and subscribing nodes |
US7162524B2 (en) | 2002-06-21 | 2007-01-09 | International Business Machines Corporation | Gapless delivery and durable subscriptions in a content-based publish/subscribe system |
US7720910B2 (en) | 2002-07-26 | 2010-05-18 | International Business Machines Corporation | Interactive filtering electronic messages received from a publication/subscription service |
US7203706B2 (en) | 2002-08-01 | 2007-04-10 | Oracle International Corporation | Buffered message queue architecture for database management systems with memory optimizations and “zero copy” buffered message queue |
US7181482B2 (en) | 2002-08-01 | 2007-02-20 | Oracle International Corporation | Buffered message queue architecture for database management systems |
WO2004036382A2 (en) | 2002-10-17 | 2004-04-29 | Tibco Software Inc. | Method and system to communicate messages in a computer network |
US7152180B2 (en) * | 2002-12-06 | 2006-12-19 | Ntt Docomo, Inc. | Configurable reliable messaging system |
US7290051B2 (en) * | 2003-01-09 | 2007-10-30 | Sun Microsystems, Inc. | Method and apparatus for hardware implementation independent verification of network layers |
US7693952B2 (en) | 2003-03-27 | 2010-04-06 | Microsoft Corporation | Availability and scalability in a messaging system in a manner transparent to the application |
US7287066B2 (en) | 2003-10-31 | 2007-10-23 | Sap Aktiengesellschaft | Publish-subscribe system having a reliability mechanism |
US7634583B2 (en) | 2003-12-18 | 2009-12-15 | Microsoft Corporation | Systems and methods that utilize persisted push/pull state to provide reliable message publishing |
GB2412762B (en) | 2004-04-02 | 2009-01-28 | Symbian Software Ltd | Inter process communication in a computing device |
US7483943B2 (en) | 2004-09-21 | 2009-01-27 | Microsoft Corporation | Reliable messaging using clocks with synchronized rates |
US7525964B2 (en) | 2004-11-03 | 2009-04-28 | International Business Machines Corporation | Mechanism for delivering messages to competing consumers in a point-to-point system |
US7613830B2 (en) | 2004-12-10 | 2009-11-03 | Microsoft Corporation | Reliably transferring queued application messages |
GB0427798D0 (en) | 2004-12-18 | 2005-01-19 | Ibm | Publish/subscribe messaging system |
US20060146999A1 (en) | 2005-01-06 | 2006-07-06 | Tervela, Inc. | Caching engine in a messaging system |
US8255455B2 (en) | 2005-12-30 | 2012-08-28 | Sap Ag | Method and system for message oriented middleware virtual provider distribution |
US7818417B2 (en) | 2006-01-10 | 2010-10-19 | International Business Machines Corporation | Method for predicting performance of distributed stream processing systems |
US20070245018A1 (en) | 2006-04-12 | 2007-10-18 | International Business Machines Corporation | Dynamic access control in a content-based publish/subscribe system with delivery guarantees |
US20080209007A1 (en) | 2007-02-27 | 2008-08-28 | Tekelec | Methods, systems, and computer program products for accessing data associated with a plurality of similarly structured distributed databases |
US8136122B2 (en) | 2007-08-30 | 2012-03-13 | Software Ag | Systems and/or methods for providing feature-rich proprietary and standards-based triggers via a trigger subsystem |
DE602008004570D1 (de) | 2007-09-20 | 2011-02-24 | Markport Ltd | Nachrichtenübermittlung in mobilfunknetzen |
-
2003
- 2003-03-27 US US10/401,649 patent/US7676580B2/en not_active Expired - Fee Related
-
2004
- 2004-02-24 AU AU2004200732A patent/AU2004200732A1/en not_active Abandoned
- 2004-02-25 IL IL16057204A patent/IL160572A0/xx unknown
- 2004-02-25 NZ NZ531382A patent/NZ531382A/en not_active IP Right Cessation
- 2004-02-26 ZA ZA200401582A patent/ZA200401582B/xx unknown
- 2004-03-01 MY MYPI20040701A patent/MY144262A/en unknown
- 2004-03-02 TW TW093105449A patent/TWI337823B/zh not_active IP Right Cessation
- 2004-03-04 CA CA002460274A patent/CA2460274A1/en not_active Abandoned
- 2004-03-10 SG SG200401467A patent/SG116532A1/en unknown
- 2004-03-19 PL PL36644004A patent/PL366440A1/xx unknown
- 2004-03-23 MX MXPA04002731A patent/MXPA04002731A/es not_active Application Discontinuation
- 2004-03-25 CO CO04028254A patent/CO5560092A1/es not_active Application Discontinuation
- 2004-03-25 EP EP04007250A patent/EP1463249A3/en not_active Withdrawn
- 2004-03-25 BR BR0400775-1A patent/BRPI0400775A/pt not_active IP Right Cessation
- 2004-03-26 RU RU2004109131/09A patent/RU2363040C2/ru not_active IP Right Cessation
- 2004-03-26 CN CN2004100322497A patent/CN1534923B/zh not_active Expired - Fee Related
- 2004-03-26 NO NO20041261A patent/NO20041261L/no unknown
- 2004-03-26 JP JP2004093769A patent/JP2004295895A/ja active Pending
- 2004-03-26 KR KR1020040020852A patent/KR20040086583A/ko not_active Application Discontinuation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020073211A1 (en) * | 2000-12-12 | 2002-06-13 | Raymond Lin | System and method for securely communicating between application servers and webservers |
Non-Patent Citations (1)
Title |
---|
BEA Systems Inc. IBM, Microsoft, TIBO Software Inc.."Web Services Reliable Messaging Protocol (WS-ReliableMessaging)" WS-RELIABLEMESSAGING SPECIFICATION.2003,对比文件1第2章图1,第2.1节,第4.2节,第4.3节,附录A、B. * |
Also Published As
Publication number | Publication date |
---|---|
EP1463249A2 (en) | 2004-09-29 |
CN1534923A (zh) | 2004-10-06 |
ZA200401582B (en) | 2004-08-31 |
JP2004295895A (ja) | 2004-10-21 |
NZ531382A (en) | 2005-10-28 |
MXPA04002731A (es) | 2005-06-17 |
IL160572A0 (en) | 2004-07-25 |
NO20041261L (no) | 2004-09-28 |
US7676580B2 (en) | 2010-03-09 |
SG116532A1 (en) | 2005-11-28 |
MY144262A (en) | 2011-08-29 |
KR20040086583A (ko) | 2004-10-11 |
PL366440A1 (en) | 2004-10-04 |
EP1463249A3 (en) | 2006-06-07 |
TW200503487A (en) | 2005-01-16 |
RU2004109131A (ru) | 2005-09-10 |
RU2363040C2 (ru) | 2009-07-27 |
CA2460274A1 (en) | 2004-09-27 |
CO5560092A1 (es) | 2005-09-30 |
TWI337823B (en) | 2011-02-21 |
US20040205781A1 (en) | 2004-10-14 |
AU2004200732A1 (en) | 2004-10-14 |
BRPI0400775A (pt) | 2004-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1534923B (zh) | 通过提供单个编程模型简化应用开发的方法 | |
CN100553235C (zh) | 以对应用程序透明的方式改进消息传递系统的可用性和可伸缩性 | |
CN110297801A (zh) | 基于容错fpga的事务系统的正好一次事务语义 | |
CN1881944B (zh) | 改进型分布式核心操作系统 | |
JP2000132443A (ja) | コンピュータ、情報共有システム、及びレプリカ同一性保持方法 | |
CN104205756A (zh) | 并发进程执行 | |
CN108712332A (zh) | 一种通信方法、系统和装置 | |
CN110413424A (zh) | 可配置的第三方消息回调方法、装置、服务器和存储介质 | |
EP1177670B1 (en) | File transfer system and method | |
CN102647365A (zh) | 处理消息及消息状态的方法、装置和数据交换服务器 | |
JP4410608B2 (ja) | Webサービス提供方法 | |
US6466963B1 (en) | Agent system with prioritized processing of mobile agents | |
CN101336539B (zh) | 网关实体 | |
EP0464352A2 (en) | Sub-entry point interface architecture for change management in a computer network | |
KR101758337B1 (ko) | 메시지의 중복알림을 방지하는 방법, 저장 매체 및 이를 운용하는 사용자 장치 | |
Bauer et al. | Strategies for distributed search | |
NO331943B1 (no) | Tilgjengelighet og skalerbarhet i et meldingssystem pa en mate som er transparent for applikasjonen. | |
JP2019208112A (ja) | 中継サーバ、および、中継方法 | |
Noblet | MojaveComm: a view-oriented group communication protocol with support for virtual synchrony |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120530 Termination date: 20140326 |