RU2363040C2 - Доставка сообщений между двумя конечными пунктами с конфигурируемыми гарантиями и признаками - Google Patents

Доставка сообщений между двумя конечными пунктами с конфигурируемыми гарантиями и признаками Download PDF

Info

Publication number
RU2363040C2
RU2363040C2 RU2004109131/09A RU2004109131A RU2363040C2 RU 2363040 C2 RU2363040 C2 RU 2363040C2 RU 2004109131/09 A RU2004109131/09 A RU 2004109131/09A RU 2004109131 A RU2004109131 A RU 2004109131A RU 2363040 C2 RU2363040 C2 RU 2363040C2
Authority
RU
Russia
Prior art keywords
message
messages
local
messaging
memory
Prior art date
Application number
RU2004109131/09A
Other languages
English (en)
Other versions
RU2004109131A (ru
Inventor
Ричард Д. ХИЛЛ (US)
Ричард Д. ХИЛЛ
Родни Т. ЛИМПРЕХТ (US)
Родни Т. ЛИМПРЕХТ
Хани Эссам РАМАДАН (US)
Хани Эссам РАМАДАН
Дэвид Е. ЛЭНГУОРТИ (US)
Дэвид Е. ЛЭНГУОРТИ
Шай КОХЕН (US)
Шай КОХЕН
Original Assignee
Майкрософт Корпорейшн
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 Майкрософт Корпорейшн filed Critical Майкрософт Корпорейшн
Publication of RU2004109131A publication Critical patent/RU2004109131A/ru
Application granted granted Critical
Publication of RU2363040C2 publication Critical patent/RU2363040C2/ru

Links

Images

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
    • 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/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/30Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling 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/62Establishing a time schedule for servicing the requests
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/28Timers 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)
  • Acyclic And Carbocyclic Compounds In Medicinal Compositions (AREA)
  • General Factory Administration (AREA)
  • Time-Division Multiplex Systems (AREA)

Abstract

Изобретение относится к системам надежного обмена сообщениями. Техническим результатом является обеспечение единственной программной модели для обращения ко множеству отличающихся средств передачи сообщений при разработке одного или более приложений для доставки сообщений между двумя конечными пунктами. Программная модель позволяет независимо конфигурировать гарантии и признаки для транспортировки сообщений. Конфигурируемые гарантии могут выбираться из доставки сообщения хотя бы один раз, доставки сообщения самое большое один раз, доставки сообщения по запросу и времени существования сообщения. 4 н. и 43 з.п. ф-лы, 4 ил.

Description

Настоящее изобретение, в целом, относится к системам надежного обмена сообщениями. В частности, настоящее изобретение относится к единственной программной модели с надежными гарантиями и признаками, которую можно конфигурировать и настраивать на конкретные требования приложения или конкретных инсталляций этого приложения.
Системы обмена сообщениями становятся все более популярным способом связи. Эти системы связи находятся в диапазоне от систем электронной почты до безопасных транзакций, от «переговорных комнат» (чат-форумов) до разнообразных сетевых услуг, таких как покупки по Интернету. Каждая из этих систем связи требует различных степеней безопасности, надежности, расширяемости и доступности. Эти требования простираются от свободно связанных моделей, таких как дейтаграммные механизмы с простыми системами надежности и очередности типа «запустил и забыл», которые обеспечивают длительный обмен сообщениями, до тесно связанных моделей, использующих такие протоколы, как протокол управления передачей (ТСР) и удаленный вызов процедур (RPC) с сеансно-ориентированной связью.
Вследствие разнообразных требований к различным механизмам связи, таким как конкретно указанные выше, программные модели различаются для каждого из таких механизмов, и даже среди одинаковых систем от разных поставщиков. Далее, степень гибкости конфигурации в каждой программной модели варьирует по разным механизмам и реализациям. Программисты и системные дизайнеры должны, как правило, понимать каждый механизм, решать, который из них лучше подходит под их требования, и записывать код в конкретный интерфейс, определенный этим механизмом.
Однако, если меняются требования продукта или размещения и требуются разные механизмы связи, результирующий код обычно должен быть переконструирован и перевоплощен. Это происходит вследствие того факта, что наиболее надежные механизмы связи не обеспечивают достаточной гибкости по отношению к выбору гарантий и признаков надежности, которые они обеспечивают для использующих их приложений, или при управлении этим выбором. К примеру, такие механизмы обычно обеспечивают лишь в точности одну доставку по заказу. Имеется, однако, множество ситуаций, где это больше, чем в действительности нужно приложению.
Кроме того, имеет значение стоимость, затрачиваемая при обеспечении более высоких гарантий, таких как в точности одна доставка по заказу. Например, сообщения подтверждения должны посылаться от приемника обратно к отправителю для подтверждения приема сообщений. Без этого подтверждения отправитель не может знать, принято ли сообщение, и, следовательно, не может обеспечить гарантию точности одной отправки. Приложения, которые могут существовать со случайной потерей сообщений, могут не иметь желания тратиться на протокол подтверждения, по меньшей мере, одной отправки и рискуют сбоем сеанса, если единственное низкоприоритетное сообщение нельзя доставить. Требование подтверждения в таких случаях может излишне увеличить стоимость связи и уменьшить доступность приложения.
Соответственно, существует необходимость в единой программной модели, которая обеспечивает надежную инфраструктуру обмена сообщениями, где подлежащие обеспечению гарантии и признаки доставки сообщений являются конфигурируемыми. Далее, имеется необходимость в единой программной модели надежного обмена сообщениями, которая поддерживает широкий диапазон средств сохранения состояния сеанса и обмена сообщениями для различных реализаций передачи и для различных гарантий и признаков.
В соответствии с примерными вариантами выполнения настоящего изобретения вышеуказанные трудности и недостатки существующих систем обмена сообщениями преодолеваются. Так, примерные варианты выполнения обеспечивают систему обмена сообщениями, которая поддерживает одно или более средств передачи сообщений. Далее, настоящее изобретение обеспечивает реферирование надежного обмена сообщениями, которое упрощает разработку приложений за счет обеспечения единой программной модели, которая позволяет устанавливать одну или более гарантий сквозной доставки для выбора конкретного средства (средств) передачи сообщений на этапе выполнения в противоположность установлению конкретного средства передачи сообщений на этапе разработки.
Реферирование надежного обмена сообщениями по настоящему изобретению обеспечивает определяемые приложением гарантии доставки сообщений, которые не зависят от лежащего в основе средства или средств передачи, которые используются для реальной передачи сообщений. Соответственно это реферирование избавляет разработчика приложения от подробностей. Аналогично, реферирование позволяет разработчикам избавиться от подробностей топологии сети и системной связности.
Система сначала определяет интерфейс канала сообщений, который реферирует операции отправки и приема для обмена сообщениями посредством многих отличающихся средств передачи сообщений. В отличие от традиционных программных моделей определяется множество гарантий сквозной доставки сообщений, которые не зависят от лежащих в основе средств передачи, и каждая из этих гарантий сквозной доставки сообщений может выбираться для использования с единой программной моделью. Кроме того, гарантии доставки сообщений могут выбираться из следующих: по меньшей мере, одна доставка сообщения, самое большое одна доставка сообщения, доставка сообщений в порядке отправки и время сеанса для активной работы. Наконец, определяется множество локальных признаков надежного обмена сообщениями, каждый из которых может выбираться для использования с единой программной моделью. В дополнение к этому, локальные признаки надежного обмена сообщениями могут быть любыми из сохранения состояния, времени сообщения для активной работы и буферизации передаваемого сообщения.
В соответствии с другим примерным вариантом выполнения настоящего изобретения предлагается способ упрощения разработки приложения путем обеспечения единой программной модели для обращения к отличающимся средствам передачи сообщений за счет реферирования интерфейса канала сообщений для обмена сообщениями посредством многих отличающихся средств передачи сообщений, и разрешения разработчику приложений устанавливать одну или более гарантий сквозной доставки сообщений. Эти гарантии доставки сообщений могут выбираться для использования с единой программной моделью, и могут выбираться из следующих: по меньшей мере, одна доставка сообщения, самое большое одна доставка сообщения, доставка сообщений в порядке отправки и время сеанса для активной работы. Далее, способ обеспечивает разрешение разработчику приложения устанавливать один или более локальных признаков надежного обмена сообщениями. Каждый из этих локальных признаков надежного обмена сообщениями может выбираться для использования с единой программной моделью и содержит, по меньшей мере, одно из сохранения состояния, времени сообщения для активной работы и буферизации передаваемого сообщения.
Дополнительные признаки и преимущества изобретения излагаются в нижеследующем описании и частично очевидны из описания или могут быть изучены при практической реализации изобретения. Признаки и преимущества изобретения могут быть реализованы и получены посредством инструментов и комбинаций, конкретно указанных в приложенной формуле изобретения. Эти и другие признаки настоящего изобретения станут понятны более полно из нижеследующего описания и приложенной формулы изобретения, либо могут быть изучены при практической реализации изобретения, как оно излагается здесь.
Для того чтобы описать метод, которым можно получить вышеприведенные и другие преимущества и признаки изобретения, будет приведено более конкретное описание изобретения, кратко описанного выше, посредством ссылок на конкретные варианты его выполнения, которые иллюстрируются на прилагаемых чертежах. В понимании того, что эти чертежи показывают только типичные варианты выполнения изобретения, а потому не должны рассматриваться как ограничивающие его объем, изобретение будет описано и пояснено с дополнительной конкретизацией и подробностями за счет применения сопровождающих чертежей, на которых:
фиг.1 иллюстрирует стеки надежного обмена сообщениями для отправки и приема сообщений в соответствии с примерными вариантами выполнения настоящего изобретения;
фиг.2 иллюстрирует оболочку сообщения в соответствии с примерными вариантами выполнения настоящего изобретения;
фиг.3 иллюстрирует жизненный цикл линии между приложением и средством передачи в соответствии с примерными вариантами выполнения настоящего изобретения;
фиг.4 иллюстрирует примерную систему, которая обеспечивает подходящую операционную среду для настоящего изобретения.
Настоящее изобретение распространяется на способы, системы и компьютерные программные продукты для упрощения разработки приложения надежного обмена сообщениями за счет обеспечения единой программной модели для обращения и использования множества отличающихся средств передачи сообщений при разработке одного или более приложений. Варианты выполнения по настоящему изобретению могут содержать универсальный компьютер, в том числе различные виды компьютерного аппаратного обеспечения, как это подробнее обсуждается ниже. Фиг.1 иллюстрирует высокоуровневое представление стеков 100а и 100b надежного обмена сообщениями. В стеке обмена сообщениями без протокола 125 надежного обмена сообщениями, когда желательно отправить сообщение, например, другому слою 185 приложения, приложение 105 переносило бы сообщение или ряд сообщений 115 прямо в дейтаграммный слой 140 обмена. (Отметим, что приложение 105 может быть приложением любого типа, таким, к примеру, как услуга, и в общем случае следует понимать, что оно заключает в себя, когда это уместно, и оболочку приложения). Поскольку дейтаграммы не являются надежными, сообщения или сообщение 115 может дублироваться, задерживаться и/или выпадать. К примеру, в менее надежном дейтаграммном протоколе, имеющем надежность «запустил и забыл», сообщение или сообщения 115 могут выпадать по любым причинам, включая промежуточный пункт 135 между средствами 160 и 165 передачи. Соответственно, приложение 185 партнерского конечного пункта никогда не примет сообщение или сообщения 115, а отправляющее приложение 105 не будет знать, что сообщение или сообщения 115 не приняты.
Однако в соответствии с примерными вариантами выполнения настоящего изобретения стеки 100а и 100b надежного обмена сообщениями снабжены протоколом 125 надежного обмена сообщениями. Соответственно, например, оболочка 120 (или, альтернативно, 180) надежного обмена сообщениями может гарантировать, что сообщение или сообщения 115, отправленные из приложения 105, должным образом прибыли к их конечному пункту назначения. Например, если приложение 105 желает передать сообщение или сообщения 115 своему партнеру по сеансу приложению 185, приложение 105 может Отправить() сообщение или сообщения 115 в оболочку 120 надежного обмена сообщениями, где они назначаются на сеанс и им даются номера последовательности обмена. Сеансовый идентификатор соответствует сеансовой связи между приложением 105 и приложением 185. Иными словами, сеансом называется дуплексная «беседа» между двумя приложениями 105 и 185. Нумерация последовательности соответствует конкретному сообщению в сеансовой связи. Например, может быть несколько сообщений в единственном сеансе, происходящем между двумя приложениями 105 и 185, и каждое сообщение нумеруется последовательно в порядке, посланном приложением. В дополнение к этому, может быть несколько сеансов, установленных между приложениями 105, 185 и, возможно, другими приложениями (каждый установленный сеанс может иметь те же самые или отличные гарантии доставки). Соответственно, каждому сообщению будет назначен сеанс и номер последовательности, однозначно устанавливающий конкретный сеанс и порядок в последовательности сообщений в этом сеансе.
После записи заголовка сеанса и последовательности в сообщение 191 и выполнения остальной требуемой канальной обработки сообщение 191 сохраняется в сеансовом состоянии 190 в буфере отправки. Вслед за этим копия сообщения 191 передается через дейтаграммный обмен 140, который облегчает сквозную передачу сообщения 191 за счет обеспечения, к примеру, маршрутизирующих заголовков. Затем сообщение 191 переносится потенциально через один или более промежуточных пунктов, например промежуточный пункт 135, каждый из которых способствует сквозной передаче сообщения 191 как ряда сквозных передач. Для воплощения такого «поведения», как маршрутизация, фильтрация, централизованное управление и безопасность, можно использовать расширяемый механизм перехвата. Отметим, что средства 145, 170, 155 передачи и «поведения», доступные в конечных пунктах в обменивающихся сообщениями конечных пунктах 140, 175, 150, могут устанавливаться либо программно, либо через конфигурирование.
Если для приложения 105 определена, по меньшей мере, одна доставка (более подробно описанная ниже), то оболочка 120 надежного обмена сообщениями ожидает приема подтверждения от оболочки 180 надежного обмена сообщениями, указывающих, какие сообщения приняты должным образом. Сообщение 192 несет подтверждение того, что сообщение 191 (например, сообщение 5 в последовательности) было принято. Периодически, если подтверждающее сообщение (подтверждение) 192 не принимается оболочкой 120 надежного обмена сообщениями, либо вследствие того, что копия не была должным образом принята оболочкой 180 надежного обмена сообщениями, или вследствие того, что ни одно из подтверждений от оболочки 180 не принималось в оболочке 120, сообщение 191 передается вновь. Соответственно, если сообщение 191 выпало, задержано или направлено не туда, например, промежуточным пунктом 135, оболочка 120 надежного обмена сообщениями продолжает (в описанное позже время простоя) периодически передавать сообщение 191 в попытке гарантировать, что, по меньшей мере, одна копия сообщения 191 должным образом принята оболочкой 180 надежного обмена сообщениями. Следует, однако, отметить, что по тем же самым причинам, как описанные выше в отношении сообщения 191, подтверждающее сообщение 192 может выпасть, задержаться или направиться не туда. Как таковое, настоящее изобретение обеспечивает надежную доставку сообщений для подтверждающего сообщения 192, как описывается здесь.
Когда оболочка 180 надежного обмена сообщениями принимает копию сообщения 191, она отправляет подтверждающее сообщение 192 к оболочке 120 надежного обмена сообщениями. По получении подтверждающего сообщения 192 оболочка 120 надежного обмена сообщениями удаляет из буфера 190 сеансового состояния (отправить) копию сообщения 191 и останавливает выполнение его дополнительных передач. Аналогично, оболочка 180 надежного обмена сообщениями записывает в свое сеансовое состояние 195, что она приняла копию сообщения 191, так что все дубликатные сообщения, принятые оболочкой 180 надежного обмена сообщениями, могут отбрасываться независимо от того, доставлены ли уже эти сообщения приложению 185. После этого приложение 185 может извлечь принятое сообщение из буфера 195 сеансового состояния (принять) посредством своей команды Принять(). Если оболочка 120 надежного обмена сообщениями не принимает подтверждающее сообщение 192, потому что оно выпало, задержано или направлено не туда, то переотправка сообщения 191 будет продолжаться, тем самым запуская оболочку 180 надежного обмена сообщениями отправить копию подтверждения сообщения 192. Этот процесс может продолжаться до тех пор, пока, по меньшей мере, одно подтверждение 192 не будет принято оболочкой 120 надежного обмена сообщениями, или же пока оболочка 120 надежного обмена сообщениями не откажется от повторных попыток и не отправит индикацию отказа к приложению 105.
Оболочки 120 и/или 180 надежного обмена сообщениями могут каждая конфигурироваться как диалог 200 (фиг.2) в соответствии с настоящим изобретением и как более подробно описывается по отношению к фиг.2. Диалог 200 представляет собой реферат оболочки сообщения, где услуги (или экземпляры приложения) используют диалог 200 для надежной ориентированной на сеанс связи с другими услугами. Программисты могут использовать диалоговый канал 220 для доступа к диалогам. Кроме того, диалог 200 обеспечивает надежную инфраструктуру обмена сообщениями и единую программную модель, где гарантии доставки сообщений приложениям могут конфигурироваться. Эти гарантии надежности должны удовлетворяться или происходит отказ сеанса. Разработка диалога 200 придает соответствующему воплощению на этапе выполнения гибкость к предложению дополнительных признаков, подчиненных поддержанию этих гарантий (ограничения правильности), заявленных для воплощения приложения. В частности, приложение может быть снабжено различными степенями доступности и расширяемости, прозрачными для воплощения приложения. Далее, эти сеансовые связи между приложениями 105 и 185 могут быть реализованы на средствах передачи разных типов (например, TCP/IP 160 и НТТР 165), экземплярах подключения средств передачи и сетевых топологиях.
Гарантии надежности, предусмотренные диалогом 200, включают в себя доставку хотя бы один раз (ХБО) (ALO), самое большее один раз (СБО) (АМО) и по заказу (ПЗ) (IO). Предусматривается также дополнительная гарантия времени сеанса для активной работы (ВДА) (TTL). Гарантии СБО гарантируют, что для любого данного сообщения, отправленного отправляющим приложением, сообщение будет доставлено к принимающему приложению самое большее один раз. Вследствие того, что диалог 200 представляет собой реферат, приложение освобождается от того, чтобы обнаруживать и отбрасывать продублированные сообщения, если продублированные сообщения ломают прикладную семантику. Аналогично, гарантия ХБО обеспечивает то, что все сообщения, отправленные отправляющим приложением, принимаются принимающим конечным пунктом, что освобождает приложения от необходимости обнаруживать потерянные или направленные не туда сообщения и координировать их повторную передачу. Гарантии ПЗ обеспечивают то, что сообщения доставляются принимающему приложению в том порядке, в котором они отправлялись отправляющим приложением. Это освобождает приложение от необходимости иметь дело с беспорядочным приемом сообщений.
Диалог 200 обеспечивает также сеансовую гарантию ВДА, которая требует, чтобы диалоговый сеанс между партнерами конечных пунктов завершался до истечения сеансового ВДА. Если сеансовое ВДА истекает до того, как завершится диалоговый сеанс, диалоговые каналы помещаются в состояние отказа, и к приложениям направляется извещение об отказе. Приложения могут продлить сеансовое ВДА путем повторного заключения соглашения по ВДА.
Диалоги позволяют использовать эти гарантии доставки сообщений как по отдельности, так и в любой комбинации, чтобы удовлетворить конкретные требования данного приложения или размещения. К примеру, комбинация из трех гарантий СБО, ХБО и ПЗ обеспечивает в точности одну доставку по заказу, типичную для большинства механизмов надежной связи, таких как ТСР/IP.
Диалог 200 позволяет не только конфигурировать гарантии, но также позволяет выбирать локальные признаки надежного обмена сообщениями и конфигурировать их независимо друг от друга и независимо от выбранных выше гарантий. Эти локальные признаки надежного обмена сообщениями подразделяются на две категории: те, которые представляют собой часть целого программной модели, и те, которые связаны с приспособлением под требования потребителя независимо от прикладной программы. Например, неотъемлемые локальные признаки могут включать в себя: буферизацию осуществляемого обмена, которая имеет семантики согласованности, изолированности и атомности для приложения; или профильный эталон, который связывает профиль с сеансом, чтобы обеспечить независимое приспособление под требования потребителя. Приспосабливаемые под требования потребителя локальные признаки могут включать в себя: конфигурацию хранения состояния сеанса, буферную квоту, время простоя отправки, конфигурируемое ВДА сообщения, приоритетные сообщения сеанса или порог обнаружения вредных сообщений, как описывается здесь далее.
В соответствии с примерными вариантами выполнения настоящего изобретения диалог 200 обеспечивает сохранение сеансовых состояний и сообщений в качестве заменяемого компонента, называемого диалоговой памятью 260. Вследствие заменяемости диалоговой памяти 260 третьи стороны могут независимо создавать и распространять реализации диалоговой памяти 260. Администраторы могут отсортировывать и выбирать диалоговые памяти, реально используемые в данной инсталляции. Соответственно, этот механизм обеспечивает громадную гибкость для соответствия живучести, качеству, автономности и административным целям. Диалоговая память 260 может быть подключаемой с помощью разъема памятью, которая имеет, по меньшей мере, одну встроенную ступень памяти, дисковую долговечную память, память процесса демона (служебного процесса UNIX), встроенную энергонезависимую память, оптическую память, магнитную ленту, сетевую накапливающую память, либо съемную. Далее, диалоговая память может быть съемной или внеузловой.
В соответствии с примерным вариантом выполнения настоящего изобретения обеспечивается встроенное воплощение диалоговой памяти (например, диалоговая память 260), которая поддерживает все состояния в памяти приложения. Эта память обеспечивает очень быстрый доступ к состоянию; однако за счет того, что все состояния теряются, если утрачивается состояние прикладного процесса (например, приложение завершается пользователем, оно завершается операционной системой, например, из-за сбоя приложения, или же отказывает система, где исполняется приложение).
В соответствии с другим примерным вариантом выполнения настоящего изобретения срочное воплощение диалоговой памяти (например, диалоговая память 260) удерживает состояние в памяти отдельно назначенного процесса демона. Эта диалоговая память гарантирует, что состояние уцелеет при отказе прикладного процесса, однако за счет осуществления переключений процессов для поддержания этого состояния. Если отказывает процесс демона или отказывает операционная система или компьютерный узел, то теряются все состояния для сеансов, на которые они реагируют.
В соответствии с еще одним вариантом выполнения для реализации диалоговой памяти (например, диалоговой памяти 260), информация о сеансовых состояниях поддерживается долговременно в базе данных, такой как сервер языка структурированных запросов (SQL). Это долговременное состояние может уцелеть при отказе компьютерного узла или операционной системы, однако за счет осуществления записей на диск для поддержания состояния. Одно преимущество в использовании системы базы данных, такой как сервер SQL, для поддержания состояний состоит в том, что инсталляции уже могут иметь инструменты, методы и процессы вместо того, чтобы осуществлять регулярное резервирование и восстановление важного состояния приложения.
Настоящее изобретение обеспечивает также то, что некоторые диалоговые памяти могут конфигурироваться для исполнения на локальном компьютерном узле или ином узле. К примеру, долговременная диалоговая память, такая как сервер SQL, может конфигурироваться для использования базы данных локального сервера либо одного или другого узла. Другой узел может быть частью кластеризованной системы и тем самым иметь очень высокую доступность.
Настоящее изобретение обеспечивает также то, что множество памятей могут существовать одновременно, чтобы удовлетворять конкретным характеристикам развертывания, используемым приложением или приложениями. Далее, конфигурация приложения может модифицироваться для использования разной памяти (или конфигурации памяти) для того, чтобы приспособить изменения, такие как увеличенные требования нагрузки или пропускной способности, чтобы иметь преимущество новых опций памяти или чтобы обращаться к другим соображениям среды развертывания. Более того, различные сеансы связи в одном и том же приложении могут иметь различные требования по конфигурации. Диалог позволяет каждому сеансу конфигурироваться отдельно. Например, некоторые сеансы в приложении могут работать наилучшим образом с долговременной памятью состояний, тогда как другие сеансы могут работать наилучшим образом с энергозависимой памятью состояний. Диалоговая память может конфигурироваться посредством профиля (описанного ниже) или устанавливаться в коде приложения.
Другим конфигурируемым признаком, предлагаемым диалогом 200, является квота на буфер. Диалог 200 буферизует сообщения в приложениях отправителя и получателя. Эта буферизация увеличивает автономность этих двух приложений, позволяя любой стороне отправлять сообщения к их локальным буферам и принимать сообщения от них, даже если другая сторона не работает или недостижима, например, вследствие сетевого разделения. К примеру, приложение 205 может продолжать отправлять сообщения, даже хотя другая сторона временно недоступна, т.е. не работает или недостижима. Это достигается накоплением сообщений в локальном буфере 250 отправки до тех пор, пока они не смогут успешно передаваться. Аналогично, приложение 205 может принимать сообщения, которые перед этим были буферизованы в буфере 245 приема, даже хотя приложение, которое отправило их, в настоящее время может не работать. Диалог 200 обеспечивает конфигурируемую квоту на буфер, которая определяет максимальное число сообщений (долю на размере сообщения), которое будет буферизироваться системой. Соответственно, это ограничивает размер пространства, потребляемого диалоговым состоянием 235, и ограничивает локальные ресурсы, которые могут потребляться другим конечным пунктом. Это также позволяет системе обмена сообщениями резервировать пространство, достаточное для того, чтобы приложение локально буферизировало установленное число сообщений. Диалог 200 обеспечивает также минимальную квоту на буфер, которая определяет минимальное зарезервированное число сообщений, которые будут буферизироваться инфраструктурой обмена сообщениями, что в комбинации с максимальным размером сообщения определяет минимальное число байтов, которые будут буферизироваться этой инфраструктурой обмена сообщениями. Квота на буфер может конфигурироваться посредством профиля (описанного ниже) или устанавливаться в коде приложения.
Диалог 200 обеспечивает также конфигурируемый признак времени простоя отправки. Когда отправляется сообщение, оно помещается в диалоговую память 260 / буфер 250 отправки. Если этот буфер полон, т.е. если достигнута квота на буфер, то вызов к функции Отправить() 210 блокируется до тех пор, пока не истечет время простоя отправки, либо станет доступным пространство в буфере для хранения сообщения. Пространство делается доступным в буфере, когда сообщения успешно передаются к получающему конечному пункту и подтверждаются им, и больше не нужны локальному конечному пункту, чтобы повторять попытки. Если пространство становится доступным до истечения времени простоя отправки, вызовы функции Отправить() завершаются нормальным образом. Если же время простоя отправки истекает до того, как пространство стало доступным, возникает изъятие, выдающее приложению извещение о том, что сообщение не может быть успешно буферизировано (захвачено). Соответственно, приложение может попытаться вновь позже. Конфигурированное время простоя позволяет приложениям выбирать степень ответной реакции над простотой блокирования. Время простоя отправки может конфигурироваться посредством профиля (описанного ниже) или устанавливаться в коде приложения.
Как упомянуто ранее, диалог 200 поддерживает гарантию ВДА сквозного сеанса. Диалог 200 обеспечивает также время для активной работы опционного сообщения, которое конфигурируется в качестве локального признака. ВДА сообщения требует того, что переданные сообщения должны успешно приниматься принимающим конечным пунктом в течение времени, установленного в ВДА, иначе в приложении 205 возникает ошибка. Диалог 200 обеспечивает также конфигурируемое расширение для ВДА сообщения. Соответственно, когда истекает ВДА, отправляющему приложению 205 предоставляется извещение. Приложение 205 затем имеет выбор завершить диалог или расширить ВДА сообщения. Аналогично времени простоя отправки ВДА может устанавливаться кодом приложения или конфигурироваться косвенным образом с помощью профиля.
Другим признаком, предоставляемым диалогом 200, является назначение опционального приоритета. Все сообщения в диалоге 200 имеют какой-нибудь приоритет. Однако, когда сообщения от множества диалогов доступны для передачи, диалогам с более высоким приоритетом при передаче сообщений отдается предпочтение перед диалогами с более низким приоритетом. Аналогично, когда сообщения доступны для «доставки» к принимающему конечному пункту, сообщения с более высоким приоритетом принимаются до сообщений с более низким приоритетом. Приоритеты могут устанавливаться кодом приложения или косвенно с помощью профилей, описанных здесь далее.
Диалог 200 обеспечивает также опциональную буферизацию сообщений в процессе транзакций. Когда диалог используется с транзакциями, локальные буферы отправки и приема действуют в качестве менеджеров транзакционных ресурсов. В этом случае сообщения, принятые в процессе транзакции, считаются предварительно доставленными (исключенными из буфера приема) в зависимости от результата транзакции. Аналогично, сообщения, отправленные в процессе транзакции, предварительно захвачены (добавлены в буфер отправки) в зависимости от результата транзакции. Если транзакция совершается, эти предварительные захваты и доставки сообщения делаются постоянными. Если транзакция прерывается, эти предварительные операции прекращаются, как если бы они никогда не происходили. Подобно другим менеджерам ресурсов транзакций, диалоговые памяти реагируют на обеспечение изоляции транзакций для предварительных буферных операций (например, захваченные сообщения представляют собой не видимую снаружи транзакцию), и атомности транзакции с завершением транзакции под управлением менеджера транзакций. Буферизация транзакций упрощает разработку приложений правильного обмена сообщениями (например, таких, которые делают правильные переходы состояний даже вопреки сбоям или одновременной деятельности). Приложения могут использовать этот признак, чтобы координировать обмен сообщениями и локальную обработку сообщений. К примеру, приложение может принимать и обрабатывать сообщение в объеме транзакции. Эта обработка сообщений может включать в себя считывание и обновление одной или более баз данных транзакций, равно как и отправку одного или более сообщений на диалоги, включенные в транзакцию. Если транзакция прекращается, все работы аннулируются. В частности, сообщения, которые были предварительно отправлены, отбрасываются, т.е. партнеры по сеансу не увидят этих частичных результатов, а принятые сообщения останутся доступными для доставки. Последнее позволяет обрабатывать сообщение в объеме новой транзакции. Когда транзакция совершается, все эти действия становятся постоянными, в том числе удаление принятого сообщения и буферизация отправленных сообщений. Чистый результат - в точности одна обработка сообщения. Буферизация транзакций представляет собой локальный диалоговый признак в том, что факт использования или неиспользования приложением этого признака совершенно прозрачен для приложений партнеров по сеансу.
В соответствии с примерными вариантами выполнения и как описано ниже со ссылкой на фиг.2, на конечном пункте отправителя, когда вызывается функция Отправить() 210, сообщение предварительно помещается в диалоговую память 260. Если транзакция совершается, сообщение передается в память 260 и делается доступным для передачи к партнерскому конечному пункту. Если транзакция прерывается, сообщение отбрасывается. У получателя, когда вызывается функция Получить() 215 (или Стереть), сообщение предварительно стирается из диалоговой памяти 260. Если транзакция совершается, сообщение постоянно стирается из памяти 260. Если же транзакция прекращается, сообщение остается в памяти 260 и доступно для повторной доставки. Получение в процессе транзакции обеспечивает в точности одну обработку сообщений.
Следует отметить, что, хотя буферизация в процессе транзакции является общим признаком систем с очередями, эти системы в общем случае требуют долговременной памяти. Диалог 200 обеспечивает эти те же самые семантики транзакций независимо от длительности диалоговой памяти 260, предоставляя одну и ту же программную модель во всех случаях. К примеру, встроенная память обеспечивает семантику транзакций путем участия в качестве менеджера ресурсов транзакций. Диалог 200, однако, позволяет избавить воплощение приложения от подробностей развертывания, в том числе от подробностей, связанных с характеристиками передачи и связности, маршрутизации сообщений и управления состоянием конечного пункта.
Другой признак, предоставляемый диалогом 200, является опциональной функцией вредных сообщений. Как упомянуто ранее, когда сообщение принимается и обрабатывается в процессе транзакции и эта транзакция прекращается, сообщение остается в диалоговой памяти 260 и доступно для повторной доставки к приложению. Иногда проблемой, которая заставляет транзакцию прерваться, является неустойчивый режим, к примеру время простоя из-за взаимной блокировки, и доставка и обработка сообщений достигает цели в следующей попытке. Если попытки доставки для данного сообщения неоднократно вызывают прекращение, это сообщение рассматривается как «вредное». Диалог 200 обеспечивает путь для конфигурирования того, сколько раз доставка сообщений вызывает прекращение до того, как это сообщение будет рассматриваться как вредное. Когда обнаруживается вредное сообщение, в приложении возникает ошибка, и дальнейшие попытки по обработке этого сообщения останавливаются до тех пор, пока приложение не предпримет корректирующего действия. Это гарантирует, что ресурсы обработки не растрачиваются впустую в попытках работы, которая может никогда не быть успешной, или может быть успешной только после некоторого вмешательства. Обнаружение вредного сообщения может конфигурироваться с помощью профиля (описывается ниже) или устанавливаться в коде приложения.
Опциональные признаки профилей предоставляют поименованный набор опций конфигурации диалога. Как описано выше, имеется много конфигурируемых признаков диалога, таких как квота на буфер, время простоя, памяти и т.п. Далее, диалог 200 обеспечивает конфигурируемые гарантии доставки сообщений, например ХБО, СБО и ПЗ, коды приложения которых могут независимо устанавливать минимальный уровень желательной гарантии доставки, который может увеличиваться посредством конфигурации, если это желательно. Профиль предоставляет путь для группировки общих установок диалога и для ссылки на эти установки по имени. Далее, воплощение диалога 200 обеспечивает выбор профилей посредством файлов конфигурации приложения, так что администраторы имеют контроль времени развертывания над установками. При создании или принятии диалогов приложения ссылаются на профиль по имени, и все установки, будучи определены в этом профиле, используются для создания диалога 200. Установки могут устанавливаться непосредственно как часть прикладной программы, как код, или как иные программные конструкты. Профили могут быть связаны с программной косвенно посредством ссылок на код или иные программные конструкты, такие, что значения профиля могут устанавливаться независимо от прикладных программ. Значения профиля, установленные непосредственно, имеют предпочтение перед значением профиля, установленным косвенно путем профильных ссылок.
Поскольку диалог 200 обеспечивает любую комбинацию этих признаков и гарантий независимо один от другого, диалог 200 может конфигурироваться, чтобы удовлетворять любой связывающей конфигурации от тесно связанных программных моделей, подобных протоку управления передачей (ТСР) и вызову удаленной процедуры (RPC), до свободно связанных программных моделей, подобных дейтаграммам и очередям. В дополнение к этому, диалог 200 эффективно поддерживает различные двусторонние схемы обмена сообщениями (МЕР), такие как однонаправленные, полудуплексные (от единичного запроса/ответа до более сложных схем) и наиболее сложные полнодуплексные взаимодействия. Соответственно, диалог 200 позволяет унифицировать двусторонние программные модели связи. Фиг.2 иллюстрирует операционные признаки диалога 200 в соответствии с примерными вариантами выполнения настоящего изобретения. Диалоговый канальный интерфейс прикладного программирования (ИПП) (API) 220 предусматривается как реферат для приложения 205. Как обсуждалось ранее, диалог 200 использует протокол обмена сообщениями, такой как сетевые услуги - надежный обмен сообщениями (СУ-НОС) (WS-RM), который определяет последовательность сообщений. Последовательность определяет однонаправленный набор сообщений в сеансе. Две таких последовательности объединяются для образования диалога, по одной последовательности в каждом направлении между двумя осуществляющими связь сторонами. Когда вызывается функция Отправить() 210 каналу 220, сообщение, которое проходит в качестве параметра к функции Отправить 210, сохраняется в состоянии 250 отправки и единственным образом характеризуется монотонно возрастающим номером последовательности сообщений согласно порядку, в котором сообщение было послано.
Сообщения 255 буферизуются в состоянии 250 отправки для поддержания состояния отдельных сообщений 255 в последовательности. При этом говорят, что сообщения «захватываются» в состоянии 250, а функция Отправить() 210 возвращается в приложение. Конкретнее, функция Отправить 210 принимает одно сообщение в качестве параметра. Именно это сообщение проходит к буферу 250 отправки, чтобы быть охарактеризованным номером последовательности и последовательно или одновременно сохраняться в памяти 260. Именно при этом сообщение считается «захваченным», а способ Отправить 210 возвращается. Повторение этого вызова с остальными сообщениями приводит к последовательности или частичной последовательности сообщений 255.
Диалоговое состояние 235 содержит буферы 250 отправки и 240 получения соответственно. Диалоговое состояние 235 контролирует и сохраняет такую инвариантную информацию, как диалоговый идентификатор, установленные приложением гарантии и адрес партнерского конечного пункта. Диалоговое состояние 235 управляет также такой сеансовой информацией, как следующий выходящий номер в последовательности передачи и состояние подтверждения. Далее, такие данные конфигурации, как диалоговое ВДА, времена простоя, местоположение памяти и т.п., поддерживаются в диалоговом сеансовом состоянии 235.
Когда сообщение захвачено, протокол 270 может затем обрабатывать и передавать захваченное сообщение, например, сообщение 275, соответственно через порт 285. Программная модель и инфраструктура этапа выполнения для диалога 200 обеспечивают гибкую и эффективную модель разрешения конечного пункта.
Эта модель, как минимум, гарантирует, что два конечных пункта разрешаются (идентифицируются) в достаточной степени для того, чтобы обеспечить надежный обмен сообщениями. В частности, протокол 270 может гарантировать до доставки исходного сообщения в диалоге для обработки, что оба конечных пункта имеют ссылку, достаточную для того, чтобы гарантировать уникальность конечного пункта и правильное сопоставление сообщений через диалог 200 и его соответствующего сеанса. Это требуется, к примеру, чтобы гарантировать, что сообщение надежно доставляется единственному партнеру по сеансу, так что гарантируется самое большее одна доставка. Это разрешение конечных пунктов может быть основано на множестве факторов, включая идентификатор, который идентифицирует приложение партнера (например, универсальный указатель ресурсов (УУР) (URI)), используемый создателем диалога 200, локальная конфигурация, данные маршрутизации в заголовках сообщений, конфигурации промежуточных пунктов и конфигурации целевых приложений.
Важно отметить, что воплощению приложения 205 не нужно быть связанным с подробностями диалогового разрешения конечных пунктов. Инфраструктура для диалога 200 выполняет процесс разрешения для координирования с исходным конечным пунктом, чтобы гарантировать, что для сеанса уникальным образом выбран одноранговый конечный пункт. Это делается по необходимости и прозрачно для воплощения приложения 205.
Разрешение конечного пункта на этапе выполнения для диалога может быть обеспечено, чтобы гарантировать достижение целей доставки сообщений, при обеспечении гибкости для достижения правильного исполнения в широком диапазоне сетевых конфигураций. Этот признак поддерживает гибкое развертывание приложений в разнообразных конфигурациях, чтобы адресоваться к требованиям расширяемости, доступности, безопасности (таким как брандмауэр) и рабочих характеристик. Конфигурации развертывания услуг включают в себя, к примеру, прикладные «фермы» (например, расширенные копии) и прикладные сегменты (например, для подразделения обработки несколькими потребителями или географическими областями). Прикладные «фермы» и сегменты могут использоваться по отдельности или вместе. К примеру, приложение может развертываться для использования зависящей от данных подпрограммы с прикладным сегментом, который в свою очередь содержит «ферму» прикладных серверов.
Протокол 270 также определяет, какой тип сквозной гарантии и локальных признаков конкретизируется приложением 205 независимо от способа выполнения описанного выше разрешения конечных пунктов. Если приложение 205 устанавливает гарантию ХБО, протокол 270 содержит копию сообщения 275 в диалоговом буфере 250 отправки до тех пор, пока этот протокол 270 не примет положительное подтверждение от получателя (не показан) о том, что сообщение 275 получено должным образом. Когда протокол 270 принимает положительное подтверждение от получателя, он записывает этот факт в сеансовое состояние 235 и удаляет сообщение из буфера 250 отправки. Если протокол 270 не получает положительного подтверждения в установленное время простоя для повторных попыток, этот протокол повторно передает копию того же самого сообщения 275 с тем же самым номером последовательности сообщений. Диалог 200 может повторять этот процесс несколько раз и может применять стратегии возврата таймера повторных попыток для того, чтобы избежать дальнейшего скопления в сети. Если подтверждение не принимается в установленный ВДА сообщения временной период, то возникает ошибка для информирования отправляющего приложения 205, что гарантию нельзя удовлетворить.
Когда принимается диалоговое сообщение 280, протокол 270 копирует это сообщение в состоянии 240 буфера получения. Протокол 270 также записывает следующий ожидаемый номер в последовательности сообщений. Когда принимается сообщение 280, то, если гарантии диалога 200 включают в себя ХБО, номер в последовательности сообщений прибывшего сообщения 280 сравнивается с набором прибывших перед этим номеров в последовательности сообщений, который, как отмечено ранее, сохраняется в состоянии 240 буфера получения. Если этот набор уже содержит совпадающий номер последовательности, сообщение 280 считается дубликатом и отбрасывается; в противном случае, сообщение 280 помещается в локальный буфер 240 получения для будущей ссылки.
Если гарантии включают в себя ХБО, то протокол 270 по получении сообщения 280 посылает вне последовательности полное выбранное положительное подтверждение к партнерскому конечному пункту для диалога. Это подтверждение должно включать в себя номера последовательности всех сообщений, которые получены именно в этом сеансе. Для сбережения места в сообщении можно использовать стенографическую запись, которая включает в себя набор диапазонов последовательностей.
Если установленные гарантии не включают в себя ПЗ, то сообщение 280 немедленно делается доступным для «доставки» к получающему приложению 205 через канал 220 приема. В частности, к приложению 205 посылается извещение, что сообщение доступно для получения. Приложение 205 может тогда вызвать функцию Получить() 215, после чего следующее сообщение, доступное для доставки, проходит к приложению 205, и «доставка» считается состоявшейся.
Если установлена гарантия ПЗ, то номер в последовательности прибывшего сообщения 280 сравнивается со следующим ожидаемым номером в последовательности. Если номер в последовательности меньше, чем следующий ожидаемый номер в последовательности, поступившее сообщение 280 отбрасывается. Если эти номера совпадают, поступившее сообщение 280 немедленно делается доступным для доставки к получающему приложению 205, и следующий ожидаемый номер в последовательности устанавливается для номера следующего пропущенного сообщения. Если номер в последовательности больше, чем следующий ожидаемый номер в последовательности, то поведение зависит от того, установлена ли также гарантия ХБО. Если гарантия ХБО не установлена, сообщение 280 немедленно делается доступным для доставки к получающему приложению 205, и следующий ожидаемый номер в последовательности устанавливается на единицу больше, чем номер в последовательности прибывшего сообщения 280. Если же установлена гарантия ХБО, сообщение 280 не делается доступным для доставки к получающему приложению 205, но остается в буфере 240 получения. Соответственно, если эти номера не совпадают, предполагается, что, по меньшей мере, одно другое сообщение с меньшим номером в последовательности все еще не получено. Когда все такие пропущенные сообщения с более низкими номерами прибывают, непрерывный диапазон сообщений делается доступным для доставки к получающему приложению, и следующий номер в последовательности устанавливается для номера следующего пропущенного сообщения.
Как упомянуто выше, когда сообщения доступны для доставки к получающему приложению 205, этому получающему приложению 205 выдается извещение. Тогда получающее приложение может вызвать функцию Получить() 215 по диалоговому каналу 220, чтобы принять доставку следующего доступного сообщения. Функция Получить() может быть вызвана много раз для получения каждого доступного сообщения в свой черед. Для того чтобы гарантировать упорядочение, извещения о событиях доставляются последовательно. Соответственно, когда сообщение доступно для доставки к приложению 205, единственное извещение о событии доставляется приложению 205 путем вызова кода приложения, который предварительно был зарегистрирован с событием диалога 200. До тех пор, пока этот вызов к коду приложения не возвратится, никакой другой вызов к коду приложения не будет делаться, даже если другие сообщения доступны для доставки. В этом коде приложения приложение 205 будет типично вызывать диалоговую функцию Получить() 215 для получения следующего доступного сообщения.
Как тоже описано выше, когда вызывается функция Отправить() 210, число сообщений, находящихся в настоящий момент в буфере 250 Отправки, сравнивается с установленной квотой на буфер. Если оно превышает эту квоту, вызов функции Отправить() 210 блокируется по событию до тех пор, пока либо пространство станет доступным, либо не будет превышено время простоя отправки. Когда становится доступным пространство в буфере 250 Отправки, этот буфер проверяет, имеются ли какие-либо вызывающие, ожидающие отправки сообщений. Если да, то вызов функции Отправить() 210 разблокируется и вновь может отправлять сообщения.
Все состояния для диалога 200, в том числе и имеющиеся в буферах 250 и 240, в канале 220 и в протоколе 270, могут поддерживаться одновременно в диалоговой памяти 260. Эта диалоговая память 260 должна содержать наиболее свежую информацию. Это гарантирует, что диалоговое состояние 235 имеет долговечные свойства диалоговой памяти 260, и позволяет всем признакам функционировать безотносительно к памяти 260, которая находится в пользовании. К примеру, помещение сообщения 280 в буфер 240 получения может включать в себя дисковые записи в память 260. Для того чтобы обеспечить гарантии, подтверждения посылаются только после того, как сообщение записано в память 260. Это гарантирует, например, что либо отправитель, либо получатель всегда имеют копию этого сообщения. Аналогично, на отправляющей стороне, функция Отправить() будет завершаться только после того, как сообщение запишется в память 260.
Как упоминалось ранее, диалоговая память 260 может быть съемной памятью, обеспечивающей громадную гибкость для удовлетворения долговечности, качества, автономности и административных целей. К примеру, память 260 может быть выбрана из множества памятей в единой оболочке, включая следующие: воплощение диалоговой памяти, которая содержит все состояния в памяти приложения; срочное воплощение диалоговой памяти, которая содержит в памяти состояние отдельного выделенного процесса демона; или воплощение долговременной памяти базы данных, такое как сервер языка структурированных запросов (SQL). Различные диалоги в одном и том же приложении 205 могут использовать разные памяти. Кроме того, настоящее изобретение обеспечивает также то, что некоторые диалоговые памяти 260 могут конфигурироваться для выполнения на локальном компьютерном узле или другом узле.
Вследствие того, что диалог 200 действует как агент от имени приложения 205, приложение 205 изолируется для изменений в связности. Это обеспечивает, к примеру, ряд стилей обработки, когда приложение начинает, отправляет и получает некоторые сообщения, а затем выходит без необходимости ожидания того, что другой конечный пункт отвечает или даже доступен. Далее, доставка сообщений может быть запланирована с большей гибкостью, обусловленной лишь удовлетворением различных гарантий доставки и локальных признаков, например, ВДА сообщения или сеанса. К примеру, при условии гарантий доставки диалог 200 может распределять пиковые нагрузки сообщений по некоторому периоду времени (баланс загрузки) или иным образом сдвигать доставку сообщений на более эффективное по стоимости время, ожидать, чтобы ресурсы стали доступными, учитывать приоритет сообщения или диалога, и т.п., независимо от приложения 205. В дополнение к этому, память 260 обеспечивает для приложения 205 способности закрытия и перезапуска. Групповая обработка, планирование, а также способности закрытия и перезапуска приложения увеличивают доступность и расширяемость системы.
Вдобавок, и как упомянуто выше, приложение 205 может устанавливать, что функции Отправить() 210 или Получить() 215 осуществляются в процессе транзакций по отношению к диалоговым буферам 250 и 240. Это позволяет приложению, к примеру, в одной и той транзакции получать сообщение, отправлять некоторые сообщения на один или более диалогов и обновлять таблицу приложения. В этом использовании транзакций это просто локальное извещение и не переносится к другому конечному пункту.
Диалог обеспечивает также восстановление отказа в процессе выполнения, что может автоматически восстанавливать (маскировать) много отказов 265, не вовлекая воплощение приложения. Приложение может полагаться на получение заявленных характеристик (т.е. заявленных гарантии и признаков) на время существования диалога 200. Если инфраструктура для диалога 200 или протокола 270 определяет, что заявленные характеристики больше нельзя удовлетворять, диалог помещается в состояние отказа, и возникает событие отказа, позволяя осуществлять экстренное корректирующее действие независимо от кода приложения из основной ветви или даже приложения 205. Если отказ 265 нельзя исправить (восстановить), диалог может быть помещен обратно в услугу. Необратимые отказы, т.е. сбои, которые нельзя восстановить, могут привести к завершению диалога 200 и извещению приложения. Такая конструкция поддерживает модель «быстрого сбоя», которая является основой при разработке надежных приложений.
Способные к восстановлению отказы могут включать в себя следующие: порча, потеря, дублирование или задержка сообщений; транспортные и сетевые отказы; отказы обработки; отказы промежуточных пунктов и системные отказы. Как упоминалось выше, вследствие того, что диалог 200 обеспечивает реферирование для приложения и сохраняет свои собственные буферы и память, диалог 200 также поддерживает приложения и среду с прерывающейся связностью. Диалоги могут также приспосабливаться к меняющейся среде, такой как изменения в сетевой топологии, пересмотренные контексты безопасности или перемещения конечных пунктов.
Диалог 200 может автоматически пытаться самостоятельно восстановить эти сбои, к примеру, вновь отправляя сообщение. Альтернативно, или во взаимодействии, диалог 200 может отправлять запрос к третьей стороне, например, системному оператору или диагностическому коду, запрашивая помощь в восстановлении сбоя. Эта помощь может быть, например, просто человеческим вмешательством для восстановления сломанного соединения в сети или, возможно, автоматизированным процессом восстановления. В любом случае, когда сбой восстановлен, диалог 200 может продолжать отправлять сообщения. Эти связанные с другой доступностью признаки обеспечивают долгоживущие диалоги. Если же, однако, сбой нельзя разрешить диалогом 200 или через какое-либо иное вмешательство третьей стороны, к приложению 205, которое инициировало диалог, следует направить сообщение об ошибке.
Приложения могут конфигурироваться для использования диалоговых памятей 260, которые позволяют поддерживать диалог в ходе отказа и перезапуска прикладного процесса. Некоторые памяти 260 могут дополнительно допускать системный отказ и перезапуск.
Другие сбои передачи могут обрабатываться автоматически с помощью комбинации специализированных к области обработчиков ошибок и базовой поддержки повторной передачи сообщений, как описано выше. Примеры включают в себя сбои, происходящие из-за истечения полномочий и политики безопасности. Если сообщение, переданное в безопасном сеансе, нарушается из-за истечения полномочий, диалог 200 может пересмотреть полномочия безопасности и исправить диалоговый сбой. Когда диалоговая обработка возобновляется, буферизованные сообщения будут повторно передаваться с обновленными полномочиями посредством стандартного процесса повторения попыток.
Как тоже упомянуто выше, конструкция и соответствующая инфраструктура для диалога 200 позволяет этапу выполнения динамически приспосабливать диалог 200 к изменяющейся среде выполнения. Это может обеспечиваться прозрачным для воплощения приложения и поддерживает существование долговременных диалогов и приложений с высокой доступностью.
Описанные выше комбинации обработчиков сбоя (которые могут быть съемными), повторных попыток передачи и доставки и модели сбоя и восстановления позволяют диалогу адаптироваться ко многим изменениям среды. Эти изменения включают в себя, но не ограничиваются ими, изменения политики (например, конфиденциальность сообщений), изменения протокола (например, поддержка новых протоколов безопасности), изменения сетевой топологии (например, добавление или удаление маршрутизаторов или брандмауэров), смена развернутого приложения для обработки увеличенной нагрузки (например, введение прикладных «ферм» и/или сегментов) и смена местоположений диалоговых конечных пунктов и связанного состояния (например, восстановление отказа). Это также обеспечивает опции расширяемого развертывания, которые включают в себя поддержку от очень малых до очень больших. К примеру, диалог 200 поддерживает расширенные, внемасштабные повторение и сегментирование приложения, опять-таки прозрачные для воплощения приложения.Фиг.3 иллюстрирует жизненный цикл и состояния диалога 200. Диалог 200 может быть в одном из двух основных состояний, активном 320 и неактивном 360. Если диалог 200 находится в активном состоянии 320, то диалоговый канальный объект 220 находится в памяти, в противном случае диалог 200 находится в неактивном состоянии 360 и диалог 200 существует только в диалоговой памяти 260. Управление системными ресурсами происходит через процессы деактивации 350 и реактивации 340, которые могут происходить вручную или автоматически. К примеру, деактивация 350 может происходить вручную, если приложение вызывает функцию Разместить, или автоматически из-за времени бездействия, когда истекает некоторый период времени, в котором нет обмена сообщениями по диалоговому каналу. Такой канал можно деактивировать (соответствующие объекты убираются из памяти), тем самым освобождая ресурсы памяти для другого.
Реактивация 340 может происходить вручную, если приложение запрашивает канал из диалогового менеджера (не показан), либо реактивация 340 может происходить автоматически, если для сеанса прибывает новое сообщение. Каждому диалогу назначается уникальный идентификатор диалоговым менеджером при создании 310 диалога. Этот идентификатор направляется диалоговому менеджеру приложением 205 по запросу реактивации 340, и диалоговый менеджер использует этот идентификатор для нахождения диалогового состояния и повторного инициирования канала. Интерфейсы деактивации 350 и реактивации 340 позволяют системе ограничить ресурсы обработки, связанные с диалогом, которые не используются активно для отправки исходящих сообщений или обработки поступающих сообщений. Это позволяет инфраструктуре утилизировать ресурсы, за исключением тех, которые связаны с диалоговой памятью 260. Далее, эта структура позволяет планировать ресурсы, в том числе: планировать передачу сообщений на основании приоритета или доступности ресурсов; дозировать сообщения для более эффективной передачи; планировать доставку сообщений на основании приоритета или доступности ресурсов и дозировать доставку сообщений для более эффективной обработки.
Создание 310 диалога управляется диалоговым менеджером и может инициироваться приложением, которое вызывает функцию Создание 310. Альтернативно, система обмена сообщениями может инициировать Создание 310 диалога после получения сообщения от другого конечного пункта, указывающее на необходимость в новом диалоге. В этом случае система извещает приложение 205, что запрашивается диалог. Приложение 205 может затем вызвать способ приема по диалоговому менеджеру для приема диалогового запроса и возбуждения диалогового Создания 310, либо оно может вызвать способ отклонения по диалоговому менеджеру для отклонения диалогового запроса. Диалоговый менеджер управляет также функцией Закрытие 330, которую можно инициировать по паре причин. Одна причина может быть в том, что сеанс завершен успешно, т.е. обе стороны сделали отправку, и больше не осталось никаких сообщений. Другой причиной для Закрытия 330 может быть то, что диалог 200 завершается, например, приложение вызывает функцию Завершить(), или от партнерского конечного пункта принимается указание на завершение. Когда одна сторона завершает диалог, для индикации этого другой стороне посылается сообщение. Для этого сообщения нет никакой надежности, это просто попытка сказать другой стороне, что диалог был завершен. Завершение означает, что в диалоговом сеансе больше не будет обмена сообщениями.
Хотя описание изобретения определяет диалог как механизм дуплексной связи, в котором сообщения приложения могут отправляться и приниматься обоими сеансовыми партнерами конечных пунктов, другой примерный вариант выполнения включает в себя простую модель. В соответствии с этим вариантом выполнения, один сеансовый конечный пункт только отправляет сообщения приложения и не принимает сообщений приложения от партнерского конечного пункта, а сеансовый партнерский конечный пункт только принимает сообщения приложения, но не отправляет сообщений приложения. Применимы те же самые конфигурируемые гарантии и конфигурируемые локальные признаки конечного пункта, как и при диалоге. Воплощение изменяется в том, что на отправляющем конечном пункте не требуется буфер 240 получения, а на получающем конечном пункте не требуется буфер 250 отправки.
Варианты выполнения в объеме настоящего изобретения включают в себя также машиночитаемый носитель данных для хранения или присутствия на нем исполняемых в компьютере команд или структур данных. Такой машиночитаемый носитель данных может быть любым доступным носителем, к которому может обращаться универсальный или специализированный компьютер. В качестве примера, но не ограничения, такой машиночитаемый носитель данных может содержать ОЗУ, ПЗУ, ЭСППЗУ, ПЗУ-КД (ПЗУ на компакт-диске) или другую оптическую дисковую память, магнитную дисковую память или иные магнитные запоминающие устройства, либо любой другой носитель данных, который может использоваться для переноса или хранения желательного программного кодового средства в виде исполняемых компьютером команд или структур данных и к которому может обращаться универсальный или специализированный компьютер. Когда информация переносится или предоставляется по сети или иному соединению связи (как проводному, беспроводному, так и комбинации проводного или беспроводного) к компьютеру, этот компьютер должным образом просматривает соединение как машиночитаемый носитель данных. Тем самым, любое такое соединение справедливо называется машиночитаемым носителем данных. Комбинации вышеуказанных средств также должны быть включены в объем машиночитаемого носителя данных. Исполняемые компьютером команды содержат, к примеру, команды и данные, которые заставляют универсальный компьютер, специализированный компьютер или устройство обработки специального назначения выполнять заданную функцию или группу функций.
Фиг.4 и нижеследующее обсуждение направлены на получение беглого общего описания подходящей вычислительной среды, в которой можно воплотить изобретение. Изобретение, хотя это и не требуется, будет описано в общем контексте исполняемых компьютером команд, таких как программные модули, исполняемых компьютерами в сетевых средах. В целом, программные модули включают в себя подпрограммы, программы, объекты, компоненты, структуры данных и т.п., которые выполняют задачи или воплощают конкретные типы абстрактных данных. Исполняемые компьютером команды, связанные структуры данных и программные модули представляют примеры программных кодовых средств для выполнения шагов раскрытого здесь способа. Конкретная последовательность таких исполняемых команд или связанных структур данных представляет примеры соответствующих операций для воплощения функций, описанных в таких шагах.
Специалисты поймут, что изобретение может быть реализовано в сетевых вычислительных средах с конфигурациями компьютерных систем многих видов, включая персональные компьютеры, карманные устройства, многопроцессорные системы, основанную на микропроцессорах или программируемую бытовую электронику, сетевые ПК, мини-компьютеры, мейнфреймовые компьютеры и т.п. Изобретение можно также реализовать в распределенных компьютерных средах, где задачи выполняются местными или удаленными устройствами обработки, которые связаны (либо проводными линиями, беспроводными линиями, либо комбинацией проводных или беспроводных линий) через сеть связи. В распределенной вычислительной среде программные модули могут располагаться как в местном, так и в удаленном запоминающих устройствах.
На фиг.4 примерная система для воплощения изобретения включает в себя универсальное вычислительное устройство в виде традиционного компьютера 420, содержащего блок 421 обработки, системную память 422 и системную шину 423, которая связывает различные системные компоненты, включая системную память 422 с блоком 421 обработки. Системная шина 423 может быть любой из нескольких типов шинных структур, в том числе шиной памяти или контроллером памяти, периферийной шиной и локальной шиной, использующей любую из множества шинных архитектур. Системная память включает в себя постоянное запоминающее устройство (ПЗУ) (ROM) 424 и оперативное запоминающее устройство (ОЗУ) (RAM) 425. В ПЗУ 424 может храниться базовая система 426 ввода/вывода (BIOS), содержащая базовые подпрограммы, такие как запуск, которые помогают переносить информацию между элементами в компьютере 420.
Компьютер 420 может также содержать дисковод 427 магнитного жесткого диска для считывания с магнитного жесткого диска 439 и записи на него, дисковод 428 магнитного диска для считывания со съемного магнитного диска 429 или записи на него, и дисковод 430 оптического диска, такого как ПЗУ-КД или иного оптического носителя, для считывания со съемного оптического диска 431 или записи на него. Дисковод 427 магнитного жесткого диска, дисковод 428 магнитного диска и дисковод 430 оптического диска подключаются к системной шине 423 интерфейсом 432 дисковода жесткого диска, интерфейсом 433 дисковода магнитного диска и интерфейсом 434 оптического дисковода, соответственно. Дисководы и связанные с ними машиночитаемые носители данных обеспечивают энергонезависимую память для исполняемых компьютером команд, структур данных, программных модулей и других данных для компьютера 420. Хотя описанная здесь примерная среда использует магнитный жесткий диск 439, съемный магнитный диск 429 и съемный оптический диск 431, можно использовать и другие типы машиночитаемых носителей данных для хранения данных, в том числе магнитные кассеты, карты флэш-памяти, цифровые многоцелевые диски, картриджи Бернулли, ОЗУ, ПЗУ и т.п.Программное кодовое средство, содержащее один или более программных модулей, в том числе операционную систему 435, одну или более прикладных программ 436, другие программные модули 437 и программные данные 438, может храниться на жестком диске 439, магнитном диске 429, оптическом диске 431, в ПЗУ 424 или ОЗУ 425. Пользователь может вводить команды и информацию в компьютер 420 через клавиатуру 440, координатное устройство 442 или иные устройства ввода (не показаны), такие как микрофон, джойстик, игровая панель, спутниковая антенна, сканер или аналогичные. Эти и другие устройства ввода часто соединяются с блоком 421 обработки через интерфейс 446 последовательного порта, связанный с системной шиной 423. Альтернативно, устройства ввода могут подключаться другими интерфейсами, такими как параллельный порт, игровой порт или универсальная последовательная шина (УПШ) (USB). Монитор 447 или иное устройство отображения также подключено к системной шине 423 через интерфейс, такой как видеоадаптер 448. В дополнение к монитору, персональные компьютеры, как правило, включают в себя другие периферийные устройства вывода (не показаны), такие как громкоговорители и принтеры.
Компьютер 420 может работать в сетевой среде с помощью логических соединений с одним или более удаленными компьютерами, такими как удаленные компьютеры 449а и 449b. Каждый из удаленных компьютеров 449а и 449b может быть другим персональным компьютером, сервером, маршрутизатором, сетевым ПК, одноранговым устройством или другим общим сетевым узлом и включает в себя, как правило, многие или все из описанных выше элементов, относящихся к компьютеру 420, хотя на фиг.4 проиллюстрированы только запоминающие устройства 450а и 450b и связанные с ними прикладные программы 436а и 436b. Логические соединения, показанные на фиг.4, включают в себя локальную сеть (ЛС) (LAN) 451 и глобальную сеть (ГС) (WAN) 452, которые представлены здесь посредством примера, а не ограничения. Такие сетевые среды обычны в офисных или учрежденческих компьютерных сетях, интрасетях и Интернете.
При использовании ЛС компьютер 420 соединяется с локальной сетью 451 через сетевой интерфейс или адаптер 453. При использовании ГС компьютер 420 может включать в себя модем 454, беспроводную линию или другие средства для установления соединений по глобальной сети 452, такой как Интернет. Модем 454, который может быть внутренним или внешним, подключается к системной шине 423 через интерфейс 446 последовательного порта. В сетевой среде программные модули, показанные относящимися к компьютеру 420, или их части могут храниться в удаленном запоминающем устройстве. Понятно, что показанные сетевые соединения являются примерными, и что могут использоваться и другие средства установления связи по глобальной сети 452.
Настоящее изобретение может быть выполнено в иных конкретных формах без отхода от сущности или существенных характеристик. Описанные варианты выполнения должны рассматриваться во всех аспектах только как иллюстративные, а не ограничивающие. Поэтому объем изобретения определяется приложенной формулой изобретения, а не предшествующим описанием. Все изменения, которые попадают в значения или границы эквивалентности этой формулы изобретения, должны быть включены в этот объем.

Claims (47)

1. Способ установления гарантии сквозной доставки сообщений в системе обмена сообщениями, которая поддерживает одно или более средств передачи сообщений за счет обеспечения единственной программной модели, которая позволяет устанавливать одну или более гарантий сквозной доставки сообщений, причем эти гарантии подлежат удовлетворению на этапе выполнения, независимо от конкретного средства или конкретных средств передачи сообщений, которые используются на этапе выполнения, в противоположность установлению конкретного средства или конкретных средств передачи сообщений во время разработки, содержащий следующие операции:
определение канального интерфейса сообщений, который действует как посредник между приложением и одним или более средством передачи так, что канальный интерфейс сообщений принимает операции отправки и получения сообщений от приложения для обмена сообщениями по одному или более средствам передачи, доступным для отправки и получения одного или более сообщений; и
определение для использования в единственной программной модели множества гарантий сквозной доставки сообщений, каждая из которых может устанавливаться на этапе выполнения независимо от одного или более доступных средств передачи сообщений без установления этих одного или более доступных средств передачи сообщений во время разработки, при этом множество гарантий доставки сообщений содержит по меньшей мере одну из доставки сообщения хотя бы один раз, доставки сообщения самое большее один раз, доставки посланного по заказу сообщения и времени существования сеанса.
2. Способ по п.1, который также содержит операцию определения множества локальных признаков надежного обмена сообщениями, причем каждый из этого множества локальных признаков надежного обмена сообщениями может быть выбран для использования в единственной программной модели, и множество локальных признаков надежного обмена сообщениями содержит по меньшей мере одно из памяти сеансового состояния, времени существования сообщения и буферизации сообщения в процессе транзакции.
3. Способ по п.2, по которому локальный признак надежного обмена сообщениями в виде памяти сеансового состояния содержит съемную память.
4. Способ по п.3, по которому память содержит по меньшей мере одну из встроенной памяти, долговременной дисковой памяти или памяти процесса демона.
5. Способ по п.4, по которому память является локальной для приложения, устанавливающего одну или более из определенного множества гарантий сквозной доставки сообщений.
6. Способ по п.4, по которому память является удаленной от приложения, устанавливающего одну или более из определенного множества гарантий сквозной доставки сообщений.
7. Способ по п.2, по которому локальные признаки надежного обмена сообщениями содержат также квоту на буфер, которая в комбинации с максимальным размером сообщения определяет максимальное число сообщений, которые будут буферизироваться системой, и ограничивает максимальное пространство, которое могут занимать сообщения.
8. Способ по п.7, по которому локальные признаки надежного обмена сообщениями содержат также время простоя отправки, которое разблокирует функцию отправки сообщений после того, как истечет время простоя отправки, если требуемое буферное пространство, зависящее от квоты на буфер, не является доступным.
9. Способ по п.2, по которому локальные признаки надежного обмена сообщениями содержат также квоту на буфер, которая в комбинации с максимальным размером сообщения резервирует буферное пространство, достаточное для установленного числа сообщений.
10. Способ по п.2, по которому локальные признаки надежного обмена сообщениями содержат опцию приоритета, при этом передача сообщений с более высоким приоритетом имеет преимущество над сообщениями с более низким приоритетом.
11. Способ по п.2, по которому локальные признаки надежного обмена сообщениями содержат опцию приоритета, при этом доставка сообщений с более высоким приоритетом имеет преимущество над сообщениями с более низким приоритетом.
12. Способ по п.2, по которому локальный признак надежного обмена сообщениями для буферизуемого в процессе транзакции сообщения доступен вне зависимости от длительности памяти сеансового состояния.
13. Способ по п.2, по которому локальные признаки надежного обмена сообщениями содержат конфигурируемое число того, сколько раз доставка сообщения должна прекращаться до того, как сообщение будет сочтено недоставляемым.
14. Способ по п.2, по которому характеристики обмена сообщениями могут определяться набором профилей, которые задают конкретный набор опций конфигурации сообщений, определенных гарантиями сквозной доставки сообщений и локальными признаками.
15. Способ установления гарантии сквозной доставки сообщений в системе обмена сообщениями, которая поддерживает одно или более средств передачи сообщений за счет обеспечения единственной программной модели, которая позволяет устанавливать одну или более гарантий сквозной доставки сообщений для использования при выборе конкретного средства передачи сообщений на этапе выполнения, в противоположность установлению конкретного средства или конкретных средств передачи сообщений во время разработки, содержащий этапы, на которых:
определяют канальный интерфейс сообщений, который действует как посредник между приложением и одним или более средством передачи так, что канальный интерфейс сообщений принимает операции отправки и получения сообщений от приложения для обмена сообщениями по одному или более средствам передачи, доступным для отправки и получения одного или более сообщений; и
разрешают разработчику приложений устанавливать одну или более гарантий сквозной доставки сообщений для использования в единственной программной модели, причем установленные гарантии сквозной доставки подлежат использованию при выборе подходящего средства передачи сообщений на этапе выполнения без установления этих одного или более доступных средств передачи сообщений во время разработки, при этом множество гарантий доставки сообщений содержит по меньшей мере одну из доставки сообщения хотя бы один раз, доставки сообщения самое большее один раз, доставки посланного по заказу сообщения и времени существования сообщения.
16. Способ по п.15, который также содержит этап разрешения разработчику приложений устанавливать один или более из множества локальных признаков надежного обмена сообщениями, причем каждый из этого множества локальных признаков надежного обмена сообщениями может быть выбран для использования в единственной программной модели, и множество локальных признаков надежного обмена сообщениями содержит по меньшей мере одно из памяти сеансового состояния, времени существования сообщения и буферизации сообщения в процессе транзакции.
17. Способ по п.16, по которому локальный признак надежного обмена сообщениями в виде памяти сеансового состояния содержит съемную память.
18. Способ по п.17, по которому память содержит по меньшей мере одну из встроенной памяти, долговременной дисковой памяти или памяти процесса демона.
19. Способ по п.16, по которому локальные признаки надежного обмена сообщениями содержат также квоту на буфер, которая в комбинации с максимальным размером сообщения определяет максимальное число сообщений, которые будут буферизироваться системой.
20. Способ по п.19, по которому локальные признаки надежного обмена сообщениями содержат также время простоя отправки, которое разблокирует функцию отправки сообщений после того, как истечет время простоя отправки, если квота на буфер не удовлетворяется.
21. Способ по п.16, по которому локальные признаки надежного обмена сообщениями содержат опцию приоритета, при этом сообщения с более высоким приоритетом передаются перед сообщениями с более низким приоритетом.
22. Способ по п.16, по которому локальные признаки надежного обмена сообщениями содержат опцию приоритета, при этом сообщения с более высоким приоритетом принимаются перед сообщениями с более низким приоритетом.
23. Способ по п.16, по которому локальный признак надежного обмена сообщениями для буферизуемого в процессе транзакции сообщения доступен вне зависимости от длительности памяти сеансового состояния.
24. Способ по п.16, по которому локальные признаки надежного обмена сообщениями содержат путь для конфигурирования того, сколько раз доставка сообщения должна прекращаться до того, как сообщение будет сочтено недоставляемым.
25. Способ по п.16, по которому характеристики обмена сообщениями могут определяться набором профилей, которые задают конкретный набор опций конфигурации сообщений, определенных гарантиями сквозной доставки сообщений и локальными признаками.
26. Машиночитаемый носитель, хранящий исполняемые компьютером команды, которые при исполнении компьютером осуществляют способ установления гарантии сквозной доставки сообщений в системе обмена сообщениями, которая поддерживает одно или более средств передачи сообщений за счет обеспечения единственной программной модели, которая позволяет устанавливать одну или более гарантий сквозной доставки сообщений для использования при выборе конкретного средства передачи сообщений на этапе выполнения, в противоположность установлению конкретного средства или конкретных средств передачи сообщений во время разработки, содержащий этапы, на которых:
определяют канальный интерфейс сообщений, который действует как посредник между приложением и одним или более средством передачи так, что канальный интерфейс сообщений принимает операции отправки и получения сообщений от приложения для обмена сообщениями по одному или более средствам передачи, доступным для отправки и получения одного или более сообщений; и
определяют, для использования в единственной программной модели, множество гарантий сквозной доставки сообщений для использования при выборе подходящего средства передачи сообщений на этапе выполнения без установления подходящего средства передачи сообщений во время разработки, при этом множество гарантий доставки сообщений содержит по меньшей мере одну из доставки сообщения хотя бы один раз, доставки сообщения самое большее один раз, доставки посланного по заказу сообщения и времени существования сеанса.
27. Машиночитаемый носитель по п.26, содержащий также операцию определения множества локальных признаков надежного обмена сообщениями, причем каждый из этого множества локальных признаков надежного обмена сообщениями может быть выбран для использования в единственной программной модели, и множество локальных признаков надежного обмена сообщениями содержит по меньшей мере одно из памяти сеансового состояния, времени существования сообщения и буферизации сообщения в процессе транзакции.
28. Машиночитаемый носитель по п.27, в котором локальный признак надежного обмена сообщениями в виде памяти сеансового состояния содержит съемную память.
29. Машиночитаемый носитель по п.28, в котором память содержит по меньшей мере одну из встроенной памяти, долговременной дисковой памяти или памяти процесса демона.
30. Машиночитаемый носитель по п.27, в котором локальные признаки надежного обмена сообщениями содержат также квоту на буфер, которая в комбинации с максимальным размером сообщения определяет максимальное число сообщений, которые будут буферизироваться системой.
31. Машиночитаемый носитель по п.30, в котором локальные признаки надежного обмена сообщениями содержат также время простоя отправки, которое разблокирует функцию отправки сообщений после того, как истечет время простоя отправки, если квота на буфер не удовлетворяется.
32. Машиночитаемый носитель по п.27, в котором локальные признаки надежного обмена сообщениями содержат опцию приоритета, при этом сообщения с более высоким приоритетом передаются перед сообщениями с более низким приоритетом.
33. Машиночитаемый носитель по п.27, в котором локальные признаки надежного обмена сообщениями содержат опцию приоритета, при этом сообщения с более высоким приоритетом принимаются перед сообщениями с более низким приоритетом.
34. Машиночитаемый носитель по п.27, в котором локальный признак надежного обмена сообщениями для буферизуемого в процессе транзакции сообщения доступен вне зависимости от длительности памяти сеансового состояния.
35. Машиночитаемый носитель по п.27, в котором локальные признаки надежного обмена сообщениями содержат путь для конфигурирования того, сколько раз доставка сообщения должна прекращаться до того, как сообщение будет сочтено недоставляемым.
36. Машиночитаемый носитель по п.27, в котором характеристики обмена сообщениями могут определяться набором профилей, которые задают конкретный набор опций конфигурации сообщений, определенных гарантиями сквозной доставки сообщений и локальными признаками.
37. Машиночитаемый носитель, хранящий исполняемые компьютером команды, которые при исполнении компьютером осуществляют способ установления гарантии сквозной доставки сообщений в системе обмена сообщениями, которая поддерживает одно или более средств передачи сообщений за счет обеспечения единственной программной модели, которая позволяет устанавливать одну или более гарантий сквозной доставки сообщений для использования при выборе конкретного средства передачи сообщений на этапе выполнения, в противоположность установлению конкретного средства или конкретных средств передачи сообщений во время разработки, содержащий этапы, на которых:
определяют канальный интерфейс сообщений, который действует как посредник между приложением и одним или более средством передачи так, что канальный интерфейс сообщений принимает операции отправки и получения сообщений от приложения для обмена сообщениями по одному или более средствам передачи, доступным для отправки и получения одного или более сообщений; и
разрешают разработчику приложений устанавливать одну или более гарантий сквозной доставки сообщений для использования в единственной программной модели, причем установленные гарантии сквозной доставки подлежат использованию при выборе подходящего средства передачи сообщений на этапе выполнения без установления этих одного или более доступных средств передачи сообщений во время разработки, при этом множество гарантий доставки сообщений содержит по меньшей мере одну из доставки сообщения хотя бы один раз, доставки сообщения самое большее один раз, доставки посланного по заказу сообщения и времени существования сообщения.
38. Машиночитаемый носитель по п.37, содержащий также этап, на котором разработчику приложений разрешают устанавливать один или более из множества локальных признаков надежного обмена сообщениями, причем каждый из этого множества локальных признаков надежного обмена сообщениями может быть выбран для использования в единственной программной модели, и множество локальных признаков надежного обмена сообщениями содержит по меньшей мере одно из памяти сеансового состояния, времени существования сообщения и буферизации сообщения в процессе транзакции.
39. Машиночитаемый носитель по п.38, в котором локальный признак надежного обмена сообщениями в виде памяти сеансового состояния содержит съемную память.
40. Машиночитаемый носитель по п.39, в котором память содержит по меньшей мере одну из встроенной памяти, долговременной дисковой памяти или памяти процесса демона.
41. Машиночитаемый носитель по п.38, в котором локальные признаки надежного обмена сообщениями содержат также квоту на буфер, которая в комбинации с максимальным размером сообщения определяет максимальное число сообщений, которые будут буферизироваться системой.
42. Машиночитаемый носитель по п.41, в котором локальные признаки надежного обмена сообщениями содержат также время простоя отправки, которое разблокирует функцию отправки сообщений после того, как истечет время простоя отправки, если квота на буфер не удовлетворяется.
43. Машиночитаемый носитель по п.38, в котором локальные признаки надежного обмена сообщениями содержат опцию приоритета, при этом сообщения с более высоким приоритетом передаются перед сообщениями с более низким приоритетом.
44. Машиночитаемый носитель по п.38, в котором локальные признаки надежного обмена сообщениями содержат опцию приоритета, при этом сообщения с более высоким приоритетом принимаются перед сообщениями с более низким приоритетом.
45. Машиночитаемый носитель по п.38, в котором локальный признак надежного обмена сообщениями для буферизуемого в процессе транзакции сообщения доступен вне зависимости от длительности памяти сеансового состояния.
46. Машиночитаемый носитель по п.38, в котором локальные признаки надежного обмена сообщениями содержат путь для конфигурирования того, сколько раз доставка сообщения должна прекращаться до того, как сообщение будет сочтено недоставляемым.
47. Машиночитаемый носитель по п.38, в котором характеристики обмена сообщениями могут определяться набором профилей, которые задают конкретный набор опций конфигурации сообщений, определенных гарантиями сквозной доставки сообщений и локальными признаками.
RU2004109131/09A 2003-03-27 2004-03-26 Доставка сообщений между двумя конечными пунктами с конфигурируемыми гарантиями и признаками RU2363040C2 (ru)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/401,649 US7676580B2 (en) 2003-03-27 2003-03-27 Message delivery with configurable assurances and features between two endpoints
US10/401,649 2003-03-27

Publications (2)

Publication Number Publication Date
RU2004109131A RU2004109131A (ru) 2005-09-10
RU2363040C2 true RU2363040C2 (ru) 2009-07-27

Family

ID=32825023

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2004109131/09A RU2363040C2 (ru) 2003-03-27 2004-03-26 Доставка сообщений между двумя конечными пунктами с конфигурируемыми гарантиями и признаками

Country Status (19)

Country Link
US (1) US7676580B2 (ru)
EP (1) EP1463249A3 (ru)
JP (1) JP2004295895A (ru)
KR (1) KR20040086583A (ru)
CN (1) CN1534923B (ru)
AU (1) AU2004200732A1 (ru)
BR (1) BRPI0400775A (ru)
CA (1) CA2460274A1 (ru)
CO (1) CO5560092A1 (ru)
IL (1) IL160572A0 (ru)
MX (1) MXPA04002731A (ru)
MY (1) MY144262A (ru)
NO (1) NO20041261L (ru)
NZ (1) NZ531382A (ru)
PL (1) PL366440A1 (ru)
RU (1) RU2363040C2 (ru)
SG (1) SG116532A1 (ru)
TW (1) TWI337823B (ru)
ZA (1) ZA200401582B (ru)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2574353C2 (ru) * 2010-11-29 2016-02-10 Роузмаунт Инк. Система связи для полевого устройства процесса
US9264787B2 (en) 2010-11-29 2016-02-16 Rosemount Inc. Communication system for process field device

Families Citing this family (116)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
WO2007005947A1 (en) 2005-07-01 2007-01-11 Terahop Networks, Inc. Nondeterministic and deterministic network routing
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 データ中継装置及びデータ中継方法
US7761533B2 (en) * 2005-09-21 2010-07-20 Sap Ag Standard implementation container interface for runtime processing of web services messages
US7721293B2 (en) * 2005-09-21 2010-05-18 Sap Ag Web services hibernation
US20070067461A1 (en) * 2005-09-21 2007-03-22 Savchenko Vladimir S Token streaming process for processing web services message body information
US7606921B2 (en) * 2005-09-21 2009-10-20 Sap Ag Protocol lifecycle
US7711836B2 (en) * 2005-09-21 2010-05-04 Sap Ag Runtime execution of a reliable messaging protocol
US7788338B2 (en) 2005-09-21 2010-08-31 Sap Ag Web services message processing runtime framework
US8745252B2 (en) * 2005-09-21 2014-06-03 Sap Ag Headers protocol for use within a web services message processing runtime framework
US7716279B2 (en) * 2005-09-21 2010-05-11 Sap Ag WS addressing protocol for 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
US8214847B2 (en) * 2007-11-16 2012-07-03 Microsoft Corporation Distributed messaging system with configurable assurances
US8200836B2 (en) 2007-11-16 2012-06-12 Microsoft Corporation Durable exactly once message delivery at scale
US7523206B1 (en) 2008-04-07 2009-04-21 International Business Machines Corporation Method and system to dynamically apply access rules to a shared resource
WO2009151877A2 (en) 2008-05-16 2009-12-17 Terahop Networks, Inc. Systems and apparatus for securing a container
US20100008377A1 (en) * 2008-07-08 2010-01-14 International Business Machines Corporation Queue management based on message age
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
US8437877B2 (en) 2008-10-27 2013-05-07 Lennox Industries Inc. System recovery in 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
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
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
US8694164B2 (en) 2008-10-27 2014-04-08 Lennox Industries, Inc. Interactive user guidance interface for a heating, ventilation and air conditioning system
US8255086B2 (en) 2008-10-27 2012-08-28 Lennox Industries Inc. System recovery in a heating, ventilation and air 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
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
US8600559B2 (en) 2008-10-27 2013-12-03 Lennox Industries Inc. Method of controlling equipment in 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
US8600558B2 (en) 2008-10-27 2013-12-03 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
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
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
US8798796B2 (en) 2008-10-27 2014-08-05 Lennox Industries Inc. General control techniques in 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
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
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
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
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
US8295981B2 (en) 2008-10-27 2012-10-23 Lennox Industries Inc. Device commissioning in a 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
USD648641S1 (en) 2009-10-21 2011-11-15 Lennox Industries Inc. Thin cover plate for an electronic system controller
USD648642S1 (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
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
EP2974187A4 (en) * 2013-03-15 2016-11-23 Synaptive Medical Barbados Inc SYSTEM AND METHOD FOR RELIABLE MESSAGING BETWEEN APPLICATION SESSIONS UNDER 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
JP6404911B2 (ja) * 2013-09-20 2018-10-17 オラクル・インターナショナル・コーポレイション ネットワーク通信環境における仲介主体のための信頼できるメッセージングのための手法
WO2015138581A1 (en) * 2014-03-11 2015-09-17 Iex Group, Inc. Techniques for message retransmission mechanism
KR102357697B1 (ko) * 2014-09-23 2022-02-08 오라클 인터내셔날 코포레이션 컴퓨터 서브네트워크들 내의 프록시 서버들
US10362059B2 (en) 2014-09-24 2019-07-23 Oracle International Corporation Proxy servers within computer subnetworks
US10142273B2 (en) 2015-06-23 2018-11-27 International Business Machines Corporation Handling various scenarios where an email recipient is not available
US9319363B1 (en) 2015-08-07 2016-04-19 Machine Zone, Inc. Scalable, real-time messaging system
US9407585B1 (en) * 2015-08-07 2016-08-02 Machine Zone, Inc. Scalable, real-time messaging system
US9602455B2 (en) 2015-08-07 2017-03-21 Machine Zone, Inc. Scalable, real-time messaging system
US10333879B2 (en) 2015-08-07 2019-06-25 Satori Worldwide, Llc Scalable, real-time messaging system
US9385976B1 (en) 2015-10-09 2016-07-05 Machine Zone, Inc. Systems and methods for storing message data
US9319365B1 (en) 2015-10-09 2016-04-19 Machine Zone, Inc. Systems and methods for storing and transferring 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
US10447623B2 (en) 2017-02-24 2019-10-15 Satori Worldwide, Llc Data storage systems and methods using a real-time messaging system
US10270726B2 (en) 2017-02-24 2019-04-23 Satori Worldwide, Llc Selective distribution of messages in a scalable, real-time messaging system
US20230069362A1 (en) * 2021-08-27 2023-03-02 Toshiba Tec Kabushiki Kaisha Maintenance support server and maintenance system

Family Cites Families (54)

* Cited by examiner, † Cited by third party
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
US6446206B1 (en) 1998-04-01 2002-09-03 Microsoft Corporation Method and system for access control of a message queue
US6205498B1 (en) 1998-04-01 2001-03-20 Microsoft Corporation Method and system for message transfer session management
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
US6980518B1 (en) * 2000-06-23 2005-12-27 International Business Machines Corporation Gossip-based reliable multicast message recovery system and method
US20020123966A1 (en) 2000-06-23 2002-09-05 Luke Chu System and method for administration of network financial transaction terminals
US6816458B1 (en) * 2000-09-13 2004-11-09 Harris Corporation System and method prioritizing message packets for transmission
US20020073211A1 (en) * 2000-12-12 2002-06-13 Raymond Lin System and method for securely communicating between application servers and webservers
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
EP1849092A4 (en) 2005-01-06 2010-01-27 Tervela Inc END-TO-END-PUBLISH / SUBSCRIBE MIDDLEWARE ARCHITECTURE
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
WO2009037685A1 (en) 2007-09-20 2009-03-26 Markport Limited Message delivery in mobile networks

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2574353C2 (ru) * 2010-11-29 2016-02-10 Роузмаунт Инк. Система связи для полевого устройства процесса
US9264787B2 (en) 2010-11-29 2016-02-16 Rosemount Inc. Communication system for process field device

Also Published As

Publication number Publication date
TW200503487A (en) 2005-01-16
NZ531382A (en) 2005-10-28
MY144262A (en) 2011-08-29
IL160572A0 (en) 2004-07-25
RU2004109131A (ru) 2005-09-10
AU2004200732A1 (en) 2004-10-14
US7676580B2 (en) 2010-03-09
KR20040086583A (ko) 2004-10-11
JP2004295895A (ja) 2004-10-21
BRPI0400775A (pt) 2004-10-26
CA2460274A1 (en) 2004-09-27
US20040205781A1 (en) 2004-10-14
CN1534923B (zh) 2012-05-30
EP1463249A3 (en) 2006-06-07
SG116532A1 (en) 2005-11-28
CN1534923A (zh) 2004-10-06
PL366440A1 (en) 2004-10-04
EP1463249A2 (en) 2004-09-29
MXPA04002731A (es) 2005-06-17
NO20041261L (no) 2004-09-28
ZA200401582B (en) 2004-08-31
CO5560092A1 (es) 2005-09-30
TWI337823B (en) 2011-02-21

Similar Documents

Publication Publication Date Title
RU2363040C2 (ru) Доставка сообщений между двумя конечными пунктами с конфигурируемыми гарантиями и признаками
RU2345408C2 (ru) Улучшение доступности и масштабируемости в системе передачи сообщений способом, прозрачным для приложения
US7840682B2 (en) Distributed kernel operating system
US7530078B2 (en) Certified message delivery and queuing in multipoint publish/subscribe communications
US7529855B2 (en) Dynamic modification of fragmentation size cluster communication parameter in clustered computer system
CA2547829C (en) Improved distributed kernel operating system
EP1008056A1 (en) Certified message delivery and queuing in multipoint publish/subscribe communications
NO331943B1 (no) Tilgjengelighet og skalerbarhet i et meldingssystem pa en mate som er transparent for applikasjonen.

Legal Events

Date Code Title Description
MM4A The patent is invalid due to non-payment of fees

Effective date: 20130327