ПЕРЕДАЧА БОЛЬШОГО ОБЪЕМА СООБЩЕНИЙ ПРИ ИСПОЛЬЗОВАНИИ ОДИНОЧНОГО НТТР-ЗАПРОСА
BULK TRANSMISSION OF MESSAGES USING SINGLE HTTP REQUEST

Область техники, к которой относится изобретение
Настоящее изобретение имеет отношение к передаче сообщений между вычислительными системами, использующими HTTP связь типа «запрос-ответ». Более подробно настоящее изобретение обеспечивает передачу HTTP ответов между оконечными точками в виде множества фрагментов различного размера для сохранения ценных системных ресурсов, связанных с проверкой достоверности и авторизацией соответствующего HTTP запроса и обеспечивает двустороннюю связь с запрашивающей стороной в окружении, не позволяющем организовать связь иными способами.
Уровень техники
Компьютерные сети расширили наши возможности к общению и доступу к информации, позволяя одному компьютеру или устройству (в дальнейшем - «вычислительная система») обмениваться информацией через сеть с другими вычислительными системами посредством электронных сообщений. В процессе передачи между вычислительными системами электронные сообщения часто проходят через стек протоколов, выполняющий преобразование данных внутри электронного сообщения (пакетирование, маршрутизация, контроль потока и т.п.). Модель взаимодействия открытых систем (OSI) - пример сетевой структуры, реализующей такой стек протоколов.
Модель OSI разбивает операцию передачи электронного сообщения на несколько отдельных уровней, каждый из которых предназначен для выполнения строго определенных действий в процессе передачи данных. Несмотря на то, что стек протоколов потенциально может реализовать любой из уровней, многие стеки протоколов реализуют только выборочные уровни для передачи данных через сеть. Например, когда данные передаются от компьютерной системы, источником их является прикладной уровень, и далее они передаются на промежуточные более низкие уровни и затем в сеть. Когда данные из сети принимаются компьютерным устройством, они поступают на физический уровень и передаются на промежуточные более высокие уровни и, в итоге, принимаются на прикладном уровне. Прикладной уровень, как самый старший, отвечает за поддержку приложений и процессов конечного пользователя. Другой уровень, являющийся частью большинства стеков протоколов, транспортный уровень. Примером транспортного уровня является протокол управления передачей (TCP).
В распределенной системе (например, Web-окружении) службы и запросы к службам часто передаются с помощью HTTP. Протокол передачи гипертекста (HTTP) действует между прикладным уровнем и другими более низкими уровнями модели OSI для облегчения передачи содержимого сообщения в среде распределенной системы. Как и большинство сетевых протоколов, HTTP использует модель «клиент-сервер». Более детально: клиентская компьютерная система (далее «клиент» или «запрашивающая» оконечная точка) открывает соединение и передает запрашивающее сообщение через поток запросов к серверу (далее «сервер» или «служебная» оконечная точка). Затем сервер возвращает ответное сообщение, обычно содержащее ресурс, который был запрошен (например, файл, динамически сгенерированный результат запроса или подобную порцию данных), через поток ответов HTTP соединения. После доставки ответа сервер закрывает соединение, что делает HTTP протоколом без сохранения состояния, т.е. не сохраняющим никакой информации о соединении между транзакциями.
Так как HTTP является протоколом без сохранения состояния, HTTP-аутентификация не поддерживает понятие сессии, где пользователь регистрируется и/или завершает сеанс. Соответственно каждый запрос для доступа к содержимому, передаваемому через HTTP (то есть HTTP запрос), должен включать соответствующую информацию HTTP аутентификации. По существу формируется огромное число служебных данных, связанных с обработкой данных аутентификации и проверкой достоверности клиента для каждого запроса, полученного на служебной оконечной точке.
Например, типично HTTP протокол обеспечивает передачу аутентификационной информации с каждым HTTP запросом посредством специального заголовка, который типично представлен в формате типа-аутентификатора и мандата. Способ, которым клиент получает и передает мандаты, описан ниже. Когда пользователь впервые пытается получить доступ к web-сайту или другой подобной службе, требующей аутентификации, служба обычно запрещает доступ к запрашиваемому содержимому или информации и возвращает клиенту HTTP-сообщение об ошибке (например, сообщение об отсутствии авторизации), а также и некоторую форму запроса на доступ. Когда клиент получает это сообщение, он должен надлежащим образом ответить на запрос, используя собственный мандат для получения доступа к служебным ресурсам. Например, клиент при получении запроса на доступ может вывести пользователю диалог в виде всплывающего окна, требующий ввода имени пользователя и/или пароля. Как альтернатива или в дополнение, запрос на доступ может потребовать некоторые мандаты другого типа, как маркер, например X.509, Kerberos или подобные маркеры. В дальнейшем также могут быть применены и другие типы запросов на доступ.
Независимо от типа запроса на доступ, после того как пользователь (или, в зависимости от обстоятельств, клиент) предоставил правильный мандат (например, ввел правильный пароль), клиент может передать исходный HTTP-запрос на сервер, но он может добавить заголовок авторизации, который теперь включает мандат как параметр головной метки.
Если служба подтверждает представленный мандат и возвращает достоверное содержимое, клиент типично кэширует эти мандаты и передает их снова при каждом новом запросе к тому же сервису или производным сервисам, связанным с тем же содержимым.
В процессе передачи больших файлов или в случае запросов, требующих достаточно большого времени для обработки (например, заимствованный процесс), для передачи файла полностью или обработки всего запроса в целом выполняется несколько запросов. Это обусловлено в большей мере свойствами HTTP, в котором клиенты рассматриваются как неадресуемые, и по этой причине данные не могут быть переданы им без встречного запроса в потоке ответов, соответствующем запросу. Соответственно для больших файлов и общих запросов, требующих значительного времени для обработки, клиент должен постоянно передавать запросы, которые содержат информацию для аутентификации, а сервис должен постоянно обрабатывать эти аутентификационные мандаты и возвращать соответствующие части данных общего запроса по мере их доступности.
Этот постоянный процесс аутентификации и подтверждения доступа для каждого запроса потребляет значительное количество системных ресурсов, которые могут быть использованы для других целей (например, для обработки полного ответа). Подобным образом обработка продолженных запросов, связанная со строгостью межсетевых экранов, также требует значительных системных ресурсов. По существу имеется необходимость обеспечения сохранения потока ответов HTTP-соединения открытым для пересылки частей полного запроса клиенту по мере того, как они становятся доступны. Другими словами, существует необходимость предоставления возможности приема/передачи множества частей полного запроса без приема/передачи некоторых запросов для этих частей.
Краткое описание сущности изобретени
Обозначенные выше недостатки и отрицательные стороны используемого в настоящее время HTTP соединения типа «запрос-ответ» преодолеваются при осуществлении примера представленного изобретения. Например, представленное изобретение обеспечивает передачу HTTP запроса в виде множества различных частей для сохранения ценных системных ресурсов, связанных с подтверждением доступа и авторизацией HTTP запроса.
Пример осуществления изобретения обеспечивает передачу запрашивающего сообщения через поток запросов HTTP для установления связи между оконечными точками в распределенной системе. Первая часть ответа принимается через соответствующий поток ответов HTTP в течение первого промежутка времени. Затем поток ответов HTTP сохраняется открытым для получения дополнительных частей ответа. Без передачи другого запрашивающего сообщения вторая часть ответа принимается через поток ответов HTTP в течение второго промежутка времени, отличного от первого промежутка.
Другой пример осуществления обеспечивает получение запрашивающего сообщения через поток запросов HTTP для установления связи между оконечными точками в распределенной системе. Первая часть ответа принимается через соответствующий поток ответов HTTP в течение первого промежутка времени. Без получения другого запрашивающего сообщения вторая часть передается через поток ответов HTTP в течение второго промежутка времени, отличного от первого промежутка времени.
Дополнительные особенности и преимущества изобретения будут изложены в описании, следующем ниже, и частично будут очевидны из описания или могут быть изучены при практической реализации изобретения. Возможности и особенности изобретения могут быть реализованы и получены с помощью средств и комбинаций, особо оговоренных в прилагаемых пунктах формулы изобретения. Эти и другие свойства представленного изобретения станут более понятны из нижеследующего описания и прилагаемой формулы изобретения или могут быть изучены при практической реализации изобретения, как предложено ниже.
Краткое описание чертежей
В целях описания среды, в которой вышеперечисленные и другие преимущества и особенности изобретения могут быть достигнуты, более детальное описание изобретения, кратко описанного выше, будет представлено со ссылками на специфические примеры его осуществления, проиллюстрированные на прилагаемых чертежах. Понимая, что эти чертежи описывают только типовые примеры реализации изобретения и поэтому не могут рассматриваться как ограничивающие его сферу, изобретение будет описано и объяснено с дополнительными особенностями и деталями посредством использования сопроводительных чертежей на которых:
фиг.1A иллюстрирует схему обмена сообщениями при использовании расширенного потока ответов HTTP в соответствии с примером осуществления представленного изобретения;
фиг.1B иллюстрирует двунаправленный сеанс связи между оконечными точками в распределенной при использовании двух расширенных потоков ответов HTTP в соответствии с примером осуществления представленного изобретения;
фиг.2 и фиг.3 иллюстрируют примеры блок-схем передачи HTTP ответов в виде множества различных частей в соответствии с примером осуществления представленного изобретения; и
фиг.4 иллюстрирует пример системы, обеспечивающей соответствующую рабочую среду для представленного изобретения.
Осуществление изобретения
Представленное изобретение распространяется на методы, системы и компьютерные программные продукты для передачи HTTP ответов между оконечными точками в виде множества различных частей с целью сохранения ценных системных ресурсов. Осуществление представленного изобретения может включать в себя специальный компьютер или компьютер общего назначения, включая различное компьютерное оборудование, что рассмотрено более детально ниже.
Представленное изобретение обеспечивает сохранение потока ответов HTTP для связи открытым таким образом, что сообщения могут быть переданы через поток ответов HTTP. Как только различные части полного ответа становятся доступными на соответствующей оконечной служебной точке, служба надлежащим образом инкапсулирует сообщения и передает их запрашивающей оконечной точке. Обычно инкапсуляция является собственной для каждого сервиса, и их специфические детали не являются ключевыми для данного изобретения. Тем не менее является важным то, что имеет место установленный способ, с помощью которого читаются доли или части ответа и определяются границы инкапсулированных сообщений. Соответственно, как результат одного запроса, ответ в сущности является потоком частей полного ответа, каждая из которых приходит как часть целого запроса.
Получатель или подающая запрос оконечная точка получает возможность чтения доступной части ответа и надлежащим образом декодирует вложенные части и может соответствующим образом обработать их. Соответственно, даже если полный HTTP ответ еще не получен, запрашивающая оконечная точка может начать работу на основании каждой из полученных вложенных частей или сообщений. К тому же, так как выполнен только один запрос для нескольких частей ответа, ценные системные ресурсы выделяются только для одной аутентификации и/или проверки достоверности запрашивающей оконечной точки.
Фиг.1А иллюстрирует некоторые из выгодных вариантов реализации, описанных выше. Как можно видеть, распределенная система 100 включает запрашивающую оконечную точку 165 и служебную оконечную точку 145, которая содержит несколько служебных модулей 147, 150, 155, 160. В одном из вариантов реализации запрашивающая оконечная точка 165 передает запрашивающее сообщение 115 через поток запросов HTTP 120 с целью установления связи со служебной оконечной точкой 145. Запрашивающее сообщение 115 типично содержит соответствующий мандат для аутентификации запрашивающей оконечной точки 165. Кроме того, другие способы аутентификации также возможны в представленном изобретении. Например, запрашивающая оконечная точка может устанавливать общий ключ или использовать иной способ аутентификации запрашивающего сообщения 115. Кроме того, любые другие из широко распространенных типов мандатов (например, маркер, общий ключ, шифрование и т.д.) также доступны в представленном изобретении. Соответственно любой конкретный способ аутентификации и/или мандат, описанный в данном документе, используется только для иллюстративных целей и не ограничивает или иным образом сужает область применения представленного изобретения.
При условии, что запрашивающая оконечная точка 165 надлежащим образом аутентифицирована (и при условии, что оконечные точки поддерживают и подтвердили формат инкапсуляции, как описано выше), части 135 и 140 полного запроса 150 могут быть переданы от служебной оконечной точки 145 запрашивающей оконечной точке 165 по мере того, как они становятся доступны. Например, первая часть ответа 150 может быть передана через поток ответов HTTP 125 в течение первого промежутка времени, а когда вторая часть 140 ответа 150 становится доступной в течение второго промежутка времени, она может быть передана через тот же поток ответов 125 при условии, что запрашивающая оконечная точка 165 сохраняет поток ответов HTTP 125 открытым.
Отметим, что перед любым типом реального обмена информацией пример осуществления предусматривает проверку поддержки двумя оконечными точками 165, 145 сохранения открытым потока ответов HTTP 125. Такая проверка позволяет двум оконечным точкам 165, 145 договариваться о некотором типе кодирования для сохранения потока ответов 125 открытым на протяжении сеанса связи. Соответственно, упаковка частей 135, 140 типично будет собственной для запрашивающей 165 и служебной 145 оконечных точек. Более того согласование может быть динамическим по природе, и оконечные точки 165, 145 могут договариваться о различных типах кодирования в течение отдельных сеансов связи. Кроме того, кодирование может быть заранее заданным, при этом проверка и динамическое согласование кодирования не являются необходимыми.
Один из примеров соглашения на стандарт инкапсуляции использует заголовочные части сообщений, например документы расширяемого языка разметки (XML). В этом примере служебная оконечная точка 145 может постоянно передавать части 135, 140 через поток ответов HTTP 125 без включения заголовка «конец сообщения» до тех пор, пока, как описано более детально ниже, не произойдет одно или более событий. Тем не менее тело сообщения должно быть закодировано так, чтобы запрашивающая оконечная точка 165 поняла, что части 135, 140 есть части полного ответа 150.
Также заметим, что части 135, 140 полного ответа являются случайными данными по той причине, что они могут быть различного размера и типа данных даже в пределах одного ответа. Например, одна часть 135 может содержать потоковые данные, в то время как другая часть 140 может быть одиночным сообщением. Более того другие типы данных и форматы также доступны в представленном изобретении. Соответственно любой определенный тип или формат сообщения использованы для иллюстративных целей и не ограничивают или иным образом сужают область применения представленного изобретения, за исключением особо оговоренных случаев.
Существуют также другие преимущества и причины, которые могут потребовать сохранять поток ответов 125 сеанса HTTP связи «запрос-ответ» открытым, как описано выше. Например, служебная оконечная точка 145 может пожелать передать более одного ответа запрашивающей оконечной точке 165 в случае, когда полный ответ требует времени для формирования, но отдельные части ответа доступны раньше. Такое может быть в случае, когда запрашивающая оконечная точка 165 желает приобрести некоторый товар со служебной точки 145. По получении запрашивающего сообщения 115 служебная точка 145 может в начале передать первую часть 135, означающую для запрашивающей оконечной точки, что запрашивающее сообщение 115 принято. Впоследствии служебная точка 145 может произвести проверку кредитной карты или другой персональной информации в течение некоторого последующего промежутка времени и передать вторую часть 140 полного ответа 150 запрашивающей оконечной точке 165, подтвердив персональные данные. Когда продукт окончательно отправляется пользователю, служебная точка 145 может передать последующие части 135, 140 ответа 150 запрашивающей оконечной точке 165, показывающие, что продукт отправлен. Любые другие последующие части 135, 140 ответа 150, такие как отслеживающая или другая информация, могут быть переданы как части 135, 140, когда они будут доступны служебной оконечной точке.
Другой причиной для сохранения открытым потока ответов HTTP 125 является то, что полный ответ 150 может быть комбинацией сообщений, происходящих из различных источников, таких как служебные модули A-C 160, 155, 150. Подобным образом запрос 115 может быть совокупностью запросов от различных служебных модулей 160, 155, 150. И в том, и в другом случае служебная оконечная точка 145 может получать или собирать информацию со служебных модулей A-C 160, 155, 150. Например, одиночный сервер 147 может использовать службы, предоставляемые другими служебными модулями 160, 155, 150, и включать их как части 135, 140 полного запроса 150. Для случая, показанного выше на примере, служебная оконечная точка 145 может проверять информацию о кредитной карте или другие персональные данные через служебный модуль A 160, получать состояние доставки через служебный модуль B 155 и затребовать следящую информацию через служебный модуль C 150. Когда эти части информации станут доступны, сервер 147 может действовать как модуль доступа или маршрутизатор для различных частей 135, 140 и передавать их через поток ответов HTTP 125, как ранее описано.
Ссылаясь на вышеупомянутое, способ, которым сервер 147 узнает о получении информации от различных модулей 160, 155, 150 в составе оконечной точки 145, может быть различным. Например, при наличии соответствующего соглашения на кодирование запрашивающая оконечная точка 165 может передавать совокупность ссылок на оконечные точки, например, в составе запрашивающего сообщения 115, идентифицируя разные части 135, 140 или службы для получения информации от различных служебных модулей 160, 155, 150. Сервер 147 может затем сделать надлежащие запросы к различным служебным модулям 160, 155, 150 и по мере обработки и отправления модулями 160, 155, 150 соответствующих ответов обратно сервер 147 может передать эти ответы как части 130, 145 полного запроса 150 через поток ответов HTTP 125.
В качестве альтернативы (или возможно, в дополнение) одиночное запрашивающее сообщение 115, направленное на сервер 147, может распознать различные части 135,140, затребованные от различных служебных модулей 160, 155, 150, в пределах служебной оконечной точки 145 и может автоматически находить их надлежащим образом. Другие процессы для идентификации и получения частей полного запроса 150 также доступны в рамках представленного изобретения. Также отметим, что только три служебных модуля 160, 155, 150 показаны в пределах служебной оконечной точки 147, однако в рамках представленного изобретения доступно любое число служб. Соответственно любые специфические описания обращений служебных модулей 160, 155, 150, служебной оконечной точки 145 или любого другого числа служебных модулей 160, 155, 150, как описано здесь, использованы только для иллюстративных целей и не ограничивают или иным образом сужают область применения представленного изобретения, за исключением особо оговоренных случаев.
Еще одной причиной для сохранения открытым потока ответов 125 HTTP соединения может быть задача согласования устройств или оконечных точек 165, 145 с ограниченным объемом буферного пространства или для поддержки небуферизованного соединения. В этом варианте осуществления в случае, когда ответ представляет собой большой набор данных, и оконечная точка желает избежать буферизации всех данных в памяти, меньшие части 135, 140 полного запроса могут быть периодически или асимметрично переданы через поток ответов HTTP и немедленно обработаны для предотвращения буферизации. Это может быть желательно в случае звукового или видео потоков или для систем с ограниченными системными ресурсами.
Заметим, что в любое время запрашивающая оконечная точка 165 может прервать соединение или связь со служебной оконечной точкой в соответствии со стандартным HTTP протоколом. Это закрытие соединения может быть, например, выражением того, что было доставлено слишком много информации и/или произошла ошибка. Подобным образом служебная оконечная точка 145 имеет возможность остановить формирование частей или инкапсуляцию частей 135, 140 полного запроса 150 и закончить исходный запрос 115. Соответственно любая из оконечных точек 165, 145 в процессе связи имеют возможность прерывать взаимодействие в рамках типового набора механизмов управления. Таким образом, не требуется нового HTTP механизма для разрыва соединения или закрытия потока ответов HTTP 125.
В дополнение к общему способу осуществления инкапсуляции сообщений в пределах одиночного ответа 150 (это части 135, 140 полного ответа 150) другие примеры осуществления обеспечивают управление связью между оконечными точками 165, 145 посредством управляющих сообщений 105. Управляющее сообщение 105 может быть одним или несколькими из совокупности сообщений, которые помогают оконечным точкам 165, 145 управлять взаимодействием инкапсулированных потоков.
Каждое управляющее сообщение 105 может быть смоделировано в виде пары сообщений «запрос-ответ», что хорошо соответствует модели HTTP транспорта. Заметим, что типично управляющее сообщение должно быть передано 110, используя другой тип HTTP запроса, чем тот, что используется для формирования запроса 150 через поток ответов HTTP 125. Хотя начальное запрашивающее сообщение 115 может включать управляющую информацию на начальном этапе соединения, необходима отправка дополнительного управляющего сообщения 105 через другой транспорт типа «запрос-ответ».
Управляющее сообщение 105 может также передаваться вне пределов коммуникационного транспорта 110 до тех пор, пока конкретное соединение не будет установлено между запрашивающей оконечной точкой 165 и служебной оконечной точкой 145. Помимо этого другие процессы и транспорты для передачи управляющих сообщений 105 через различные транспорты 110 служебной оконечной точке 145 также доступны в настоящем изобретении. Соответственно любое специфическое применение процесса или конкретного транспорта для передачи управляющих сообщений 105 служебной оконечной точке 145 используется только в иллюстративных целях и не ограничивает или иным образом сужает область применения представленного изобретения, за исключением особо оговоренных случаев.
Существует несколько типов управляющих сообщений 105, которые доступны в настоящем изобретении. Например, одно управляющее сообщение 105 может выступать как сообщение «готовность к групповой передаче». Это управляющее сообщение 105 используется для определения того, позволяет ли оконечная точка групповой потоковый ответ 105. Такое управляющее сообщение 105 может быть использовано на начальной стадии установления соединения с целью определения того, какие соединения поддерживаются конкретными оконечными точками 165, 145, и какой тип инкапсуляции необходимо использовать. Другим видом управляющего сообщения 105 может быть сообщение «приостановить», которым запрашивающая оконечная точка 165 выражает желание временно остановить получение инкапсулированных частей 135, 140 ответа 150. Другим управляющим сообщением 105 может быть «возобновить», которым запрашивающая оконечная точка 165 выражает желание возобновить получение инкапсулированного сообщения 150. Еще одним управляющим сообщением может быть «ping» (сигнал проверки доступности адресата), по которому одна из оконечных точек 165, 145 выражает желание определить, находится ли другая оконечная точка 165, 145 в рабочем состоянии.
Другое управляющее сообщение 105 может содержать сообщение «инициации мультиплексной передачи». Это управляющее сообщение 105 позволяет служебной оконечной точке 145 (или более конкретно, серверу 147) взаимодействовать со множеством ссылок на оконечные точки, которые готовы выступить в качестве промежуточного маршрутизатора или прокси-сервера. Соответственно сообщения для каждой из таких ссылок на оконечные точки передаются как инкапсулированные части, описанные ранее, через сервер 147.
Еще одним управляющим сообщением 105 может быть сообщение «разъединение», которое, хотя и описано как сообщение, может быть заменено простым заголовком, содержащим ссылку на оконечную точку, идентифицирующую HTTP ответ 150 для разрешения запрашивающей оконечной точке 165 ссылаться на ответ 150 или все соединение между оконечными точками 145,165 на других каналах, например 110. Как видно, эти данные имеют множество применений для передачи управляющих сообщений 105 и другой информации между различными оконечными точками.
Другие широко известные управляющие сообщения 105 и/или заголовки для управления связью также доступны в рамках представленного изобретения. Соответственно выше описанный перечень управляющих сообщений 105 не является полным, и любая конкретная ссылка на конкретное управляющее сообщение 105 использована только в иллюстративных целях и не ограничивает или иным образом сужает область применения представленного изобретения, за исключением особо оговоренных случаев.
Другой пример практического осуществления обеспечивает двунаправленную связную обменную схему между двумя службами. В этом варианте осуществления выше описанные процессы для установления связи могут быть выполнены дважды, в соответствии с тем, что каждая оконечная точка выступает как запрашивающая 165 и как служебная 145 оконечная точка. Например, как показано на фиг. 1B, распределенная система 100 включает оконечные точки A 170 и B 180. Первый сеанс связи A 175 может быть установлен при передаче оконечной точке A 170 запроса через поток запросов A 185, а последующие части полного ответа принимаются через поток ответов A 190, как описано ранее. Аналогично оконечная точка B может установить сеанс связи B 195, передав запрашивающее сообщение через поток запросов B 182 и получив части полного ответа через поток ответов B 184 в соответствии с примером осуществления. В этих случаях две оконечные точки 170, 180 обычно должны согласовывать, какой запрос и части полного ответа соответствуют одному направлению двунаправленной связи.
Представленное изобретение может также быть описано в рамках системы, включающей функциональные шаги и/или нефункциональные действия. Приведенное ниже представляет собой описание шагов и/или действий, которые могут быть выполнены при практической реализации представленного изобретения. Обычно функциональные шаги описывают изобретение по достигнутым результатам, в то время как нефункциональные действия описывают более специфические действия по достижению конкретного результата. Несмотря на то, что функциональные шаги и/или нефункциональные действия могут быть описаны или заявлены в определенном порядке, представленное изобретение не обязательно ограничивается какой-либо последовательностью или комбинацией шагов и/или действий. Более того, использование шагов и/или действий в соответствии с перечисленными в патентной формуле и последующим описанием блок-схем на фиг.2 и 3 используется только с целью показать требуемую специфику использования таких понятий.
Фиг.2 и 3 иллюстрируют примеры блок-схем для различных вариантов осуществления представленного изобретения. Последующее описание фиг.2 и 3 будет иногда ссылаться на соответствующие элементы с фиг. 1A и 1B. Несмотря на то, что ссылки могут быть сделаны на специфические элементы с этих чертежей, эти элементы используются только в иллюстративных целях и не ограничивают или иным образом сужают область применения представленного изобретения, за исключением особо оговоренных случаев.
Фиг.2 иллюстрирует пример блок-схемы метода 200 передачи HTTP ответа в виде множества различных частей для сохранения ценных системных ресурсов, связанных с проверкой авторизации соответствующего запроса. Заметим, что метод 200 - из числа ожидающих запрашивающую оконечную точку 165 и включает в себя действия по передаче 205 запрашивающего сообщения через поток ответов HTTP. Например, запрашивающая оконечная точка 165 может передать запрашивающее сообщение 115 через поток ответов 125 для установления связи со служебной оконечной точкой 145 в распределенной системе 100. Запрашивающее сообщение 115 может содержать управляющую информацию, например управляющее сообщение 105 для управления связью. Однако типично управляющее сообщение передается в разных сеансах связи с целью управления установленным соединением между запрашивающей оконечной точкой 165 и служебной оконечной точкой 145. Как описано выше, управляющее сообщение может быть одним из следующих: «готовность к групповой передаче», «приостановить», «возобновить», «ping» (сигнал проверки доступности адресата), «повторное соединение», «инициация мультиплексного соединения», «это соединение» и т.д.
После передачи запрашивающего сообщения метод 200 включает действие по получению 210 первой части ответа через поток ответов HTTP 125. Например, запрашивающая оконечная точка 165 может получить первую часть 135 ответа через соответствующий поток ответов HTTP 125, который получен в течение первого интервала времени. Метод 200 также включает в себя действие по сохранению 215 потока ответов HTTP 125 открытым. Например, запрашивающая оконечная точка 165 может сохранять поток ответов HTTP 125 открытым для получения дополнительных частей ответа 150. Без передачи другого запрашивающего сообщения метод 200 также включает в себя действие 220 по получению второй части ответа через поток ответов HTTP 125. Например, запрашивающая оконечная точка 165 может получить вторую часть 140 ответа 150 через поток ответов HTTP, в котором вторая часть получается в течение второго промежутка времени, отличающегося от первого промежутка времени.
Первая 135 и вторая 140 части могут быть получены асинхронно, т.е. в произвольные моменты времени. Эти части 135, 140 могут быть потоковыми, отдельными сообщениями или и тем, и другим, тем, что составляет содержание полного ответа 150. Кроме этого первая часть 135 и вторая часть 140 могут быть отдельными сообщениями, которые были сформированы различными служебными модулями 160, 155, 150 в составе распределенной системы 100. Первая и вторая части 135, 140 могут быть получены от отдельной службы 147 или сервера, который запросил отдельные сообщения 135, 140 от различных служебных модулей 160, 155, 150, используя ссылки на оконечные точки, отправленные с запрашивающей оконечной точки 165. Эти ссылки на оконечные точки могут быть включены в запрашивающее сообщение 115. Как альтернатива или в дополнение, служебная оконечная точка 145 может передать ссылки на оконечные точки, которые она поддерживает, в управляющее сообщение 105 к запрашивающей оконечной точке 165. Помимо этого ссылки на оконечные точки могут быть переданы в управляющем сообщении 105 через коммуникационный транспорт отдельно от потока ответов HTTP 125.
Как указано выше, двунаправленная связь может быть установлена между двумя точками в распределенной системе 100. В таком варианте осуществления, если оконечная точка A 170, показанная на фиг. 1B, является запрашивающей оконечной точкой 165, показанной на фиг. 1A, и оконечная точка B 180, показанная на фиг. 1B, является служебной оконечной точкой с фиг. 1A, тогда следует установление первого сеанса связи A 175, дальнейшее осуществление которого приведено ниже. Оконечная точка A 170 может получить второе запрашивающее сообщение через второй поток ответов HTTP (например, поток запросов B 182) для установления двунаправленной связи между оконечными точками 170, 180 в распределенной системе 100. Затем оконечная точка A 170 может передать первую часть второго ответа через соответствующий второй поток ответов HTTP (например, поток ответов B 184) в третий промежуток времени. Без получения другого запрашивающего сообщения оконечная точка A 170 может передать вторую часть второго ответа через второй поток ответов HTTP (например, поток ответов B 184) в четвертый промежуток времени, отличный от третьего промежутка.
Фиг.3 иллюстрирует метод 300 передачи HTTP ответа от служебной оконечной точки 145 в виде множества разных частей в соответствии с примером осуществления представленного изобретения. Метод 300 включает процесс получения 305 запрашивающего сообщения через поток ответов HTTP. Например, служебная оконечная точка 145 может получить запрашивающее сообщение 115 от запрашивающей оконечной точки 165 через поток ответов HTTP 125. Метод 300 также включает процесс передачи 310 первой части ответа через поток ответов HTTP. Например, служебная оконечная точка 145 может отправить первую часть 135 ответа 150 через поток ответов HTTP 125 в первый промежуток времени. Метод 300 также включает процесс передачи 315 второй части ответа через поток запросов HTTP. Например, служебная оконечная точка 145 может передать вторую часть 140 ответа 150 через поток ответов HTTP 125 во второй промежуток времени, отличный от первого промежуток времени. Отметим, что другие варианты примеров осуществления, описанные выше, также могут быть применены к методу 300.
Осуществление в рамках представленного изобретения также включает компьютерные носители информации для переноса или получения исполняемых компьютером команд или сохраненных на них структур данных. Такими компьютерными носителями информации могут быть носители, доступ к которым может быть получен компьютером общего применения или специальным компьютером. В качестве примера, но не ограничения, такими компьютерными носителями информации могут быть RAM, ROM, EEPROM, CD-ROM или другие оптические дисковые накопители, магнитные диски и другие магнитные устройства хранения данных или любые другие носители, которые могут быть использованы для переноса или хранения необходимых программных кодов, выполненных в форме исполняемых компьютером команд или структур данных, доступ к которым может быть получен компьютером общего назначения или специальным компьютером. Когда информация передается или распространяется через сеть или другое коммуникационное соединение (проводное, беспроводное или комбинация проводного и беспроводного соединений) компьютеру, компьютер по сути рассматривает соединение компьютерного носителя информации. Таким образом, любое такое соединение по сути является компьютерным носителем информации. Сочетания вышеперечисленного также должны включаться в сферу компьютерных носителей информации. Исполняемые компьютером инструкции включают в себя, например, команды и данные, которые заставляют компьютер общего назначения, специальный компьютер или специальное устройство обработки выполнять определенную функцию или группу функций.
Фиг.4 и последующее обсуждение преследуют цель обеспечить краткое, общее описание соответствующей вычислительной среды, в которой изобретение может быть реализовано. Хотя и не требуется, изобретение будет описано в общем контексте выполняемых компьютером команд, таких как программные модули, исполняемые компьютерами в сетевой среде. В общем случае программные модули включают подпрограммы, программы, объекты, компоненты, структуры данных и т.д., которые выполняют определенные задачи или реализуют определенные абстрактные типы данных. Исполняемые компьютером команды, ассоциированные типы данных и программные модули представляют пример программных средств для выполнения шагов методов, раскрытых в этом документе. Определенная последовательность таких исполняемых команд или ассоциированных структур данных представляет пример соответствующих действий для реализации функций, описанных в этих шагах.
Квалифицированные специалисты в этой области оценят то, что изобретение может быть реализовано на практике в сетевых вычислительных средах с различными типами конфигураций вычислительных систем, включая персональные компьютеры, портативные устройства, многопроцессорные системы, программируемую или с микропроцессорным управлением потребительскую электронику, сетевые ПК, миникомпьютеры, мэйнфреймы и подобные им. Изобретение также может быть реализовано на практике в распределенных компьютерных системах, в которых задачи выполняются и удаленно обрабатываются устройствами, соединенными (проводными соединениями, беспроводными соединениями или комбинацией проводных и беспроводных соединений) через сеть передачи данных. В распределенной вычислительной среде программные модули могут быть расположены на локальных и удаленных запоминающих устройствах.
В соответствии с фиг.4, пример системы для реализации изобретения включает вычислительное устройство общего назначения в виде обыкновенного компьютера 420, включающего процессор 421, системную память 422 и системную шину 423, которая объединяет различные системные компоненты, соединяя также системную память 422 и процессор 421. Системная шина 423 может быть любого из нескольких типов систем шин, включая шину памяти или контроллер памяти, периферийную шину и шину, использующую любую из множества шинных архитектур. Системная память включает постоянное запоминающее устройство (ROM) 424 и оперативное запоминающее устройство (RAM) 425. Базовая система ввода-вывода (BIOS) 426 содержит основные подпрограммы, которые помогают передавать информацию между элементами внутри компьютера 420, например, ту, которая во время старта системы хранится в ROM 424.
Компьютер 420 может также содержать накопитель на жестком магнитном диске 427 для чтения и записи на магнитный жесткий диск 439, накопитель на магнитном диске 428 для чтения и записи на съемный магнитный диск 429 и накопитель на оптических дисках 430 для чтения и записи на съемный оптический диск 431, такой как CD-ROM или другой оптический носитель. Накопитель на жестком магнитном диске 427, накопитель на магнитном диске 428 и накопитель на оптических дисках 430 соединены с системной шиной 423 посредством интерфейса накопителя на жестком диске 432, интерфейса накопителя на магнитном диске 433 и интерфейса накопителя на оптических дисках 434 соответственно. Накопители и связанные с ними компьютерные носители информации обеспечивают энергонезависимое хранение компьютерных команд, структур данных, программных модулей и других данных для компьютера 420. Несмотря на то, что в примере описанной среды применяется магнитный жесткий диск 439, сменный магнитный диск 429 и сменный оптический диск 431, другие виды компьютерных носителей информации для хранения данных могут быть также использованы, включая магнитные кассеты, карты флэш-памяти, универсальный цифровой диск, картриджи Бернулли, RAM, ROM и другие подобные устройства.
Программные средства, содержащие один или более программных модулей, могут быть сохранены на жестком диске 439, магнитном диске 429, оптическом диске 431, в ROM 424 или RAM 425, включая операционную систему 435, одну или более прикладных программ 436, другие программные модули 437 и программные данные 438. Пользователь может ввести команды и информацию в компьютер 420 через клавиатуру 440, указательное устройство 442 или другое устройство ввода (не показано), такое как микрофон, джойстик, игровой планшет, спутниковая антенна, сканер и другие подобные устройства. Эти и другие устройства ввода часто соединяются с процессором 421 через интерфейс с последовательным портом 446, соединенный с системной шиной 423. Как альтернатива, устройства ввода могут быть присоединены с помощью других интерфейсов, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB). Монитор 447 или другое устройство отображения также соединяется с системной шиной 423 через интерфейс, такой как видеоадаптер 448. В дополнение к монитору персональный компьютер обычно включает в себя другие периферийные устройства (не показаны), такие как акустические колонки и принтер.
Компьютер 420 может работать в сетевой среде, используя логические соединения с одним или большим числом удаленных компьютеров, таких как компьютеры 449a и 449b. Каждый из удаленных компьютеров 449a и 449b может быть другим персональным компьютером, сервером, маршрутизатором, сетевым ПК, пиринговым устройством или другим общим сетевым узлом и типично включает многие или все элементы, описанные выше для компьютера 420, однако только устройства хранения информации 450a и 450b и связанные с ними прикладные программы 436a и 436b показаны на фиг. 4. Логические соединения, изображенные на фиг. 4, включают локальную сетевую среду (LAN) 451 и глобальную сетевую среду (WAN) 452 и представлены только как примеры, а не как ограничивающие. Такая сетевая среда является обычной в офисных, корпоративных компьютерных сетях, интрасетях и Интернете.
При использовании в локальной сетевой среде (LAN) компьютер 420 соединен с сетью 451 через сетевой интерфейс или адаптер 453. Когда используется глобальная сетевая среда (WAN), компьютер 420 может содержать в себе модем 454, беспроводное соединение или другие средства для установления соединения через глобальную сеть 452, такую как Интернет. Модем 454 может быть внутренним или внешним, присоединенным к системной шине 423 через интерфейс с последовательным портом 446. В сетевой среде программные модули, показанные связанными с компьютером 420, или часть из них могут храниться на удаленных носителях информации. Принимается во внимание то, что показанные сетевые соединения являются иллюстративными, и другие средства установления связи через глобальную сеть могут быть использованы.
Представленное изобретение может быть воплощено в других специфических формах без отступления от его сути и основных характеристик. Описанный способ осуществления рассмотрен во всех отношениях только как иллюстративный и неограничивающий. Поэтому сфера применимости изобретения указана в приложенных пунктах патентной формулы более подробно, чем в предшествующем описании. Все изменения, которые оказываются в рамках его смысла и эквивалентны пунктам формулы изобретения, попадают в сферу его действия.