Способ потоковой передачи данных между сервером и клиентом

Иллюстрации

Показать все

Изобретение относится к системе и способу для усовершенствованной связи клиента и сервера, в частности усовершенствованному протоколу, который можно использовать для связи между клиентом и сервером в среде электронной почты. Техническим результатом является улучшение связи между клиентом и сервером, в частности создание усовершенствованного протокола, который можно использовать для связи между клиентом и сервером. Сервер электронной почты может предоставить наилучшее тело сообщения, доступное для сообщения электронной почты; пересылать объект данных в целом, если запрошенное свойство или свойства не вполне определены в объекте данных; предоставлять данные о ходе выполнения для использования при слежении за ходом загрузки; посылать информацию об ошибке для объекта данных, имеющего ошибку. Изменения электронной почты можно оптимизировать на серверном компоненте электронной почты даже в том случае, если изменения электронной почты появились на другом серверном компоненте электронной почты. Сервер электронной почты может поддерживать таблицу изменений, которые появляются в папках в связанном с ними хранилище данных, и может по подписке уведомлять клиентский компонент электронной почты об изменениях, которые появились в таблице. 2 н. и 12 з.п. ф-лы, 31 ил.

Реферат

Ссылка на родственную заявку

Данная заявка испрашивает приоритет патентной заявки США № 60/437869 «SYSTEM AND METHOD FOR IMPROVED CLIENT SERVER COMMUNICATIONS», дело поверенного №220635, поданной 3 января 2003 года и содержание которой включено сюда по ссылке.

Область техники, к которой относится изобретение

Данное изобретение относится в целом к компьютерным сетям и, в частности, касается способов связи между клиентскими и серверными приложениями, такими как приложения электронной почты.

Уровень техники

Электронная почта стала важным способом связи. Системы электронной почты обычно включают в себя серверный компонент (например, сервер обмена Microsoft Exchange Server) и клиентский компонент (например, Microsoft Outlook или Microsoft Outlook Express). Эти компоненты обычно представляют собой программные приложения, которые конфигурируются для выполнения на вычислительных устройствах (например, на серверах, персональных компьютерах, лэптопах и «карманных» компьютерах (PDA)).

Часто для облегчения связи (обмена информацией) клиент и сервер, такие как клиентский компонент и серверный компонент системы электронной почты, согласовывают протокол связи. Этот протокол устанавливает правило, определяющее ожидаемое поведение каждой стороны в процессе связи, например ожидаемую последовательность запроса и ответа. Усложненные протоколы содержат правила для обработки нестандартного поведения.

При совершенствовании клиентского и серверного компонентов конечным пользователям предоставляются усовершенствованные версии. Для того чтобы воспользоваться новыми возможностями компонентов и сети, часто создают новый протокол связи. Там, где установленная (инсталлированная) база серверных компонентов является достаточно развитой, клиентский компонент может получить возможность осуществления связи через набор протоколов с выбранными серверными компонентами, имеющими предыдущие версии.

В некоторых случаях более поздние протоколы строятся на основе более ранних протоколов без их полной замены. В указанном случае более поздний протокол может быть построен из протокольных элементов, которым может быть разрешено, либо не разрешено имитировать более ранние протоколы. Аналогично, там, где установленная база клиентских компонентов достаточно развита, серверный компонент может иметь возможность осуществлять связь через один протокол с выбранными клиентскими компонентами, имеющими предыдущие версии.

В изобретении предлагается указанная система и способ. Указанные и другие преимущества изобретения, а также дополнительные признаки изобретения станут очевидными из представленного здесь описания изобретения.

Сущность изобретения

В настоящем изобретении предлагается система и способ улучшенной связи (усовершенствованного обмена информацией) между клиентом и сервером. В частности, изобретение направлено на создание усовершенствованного протокола, который можно использовать для связи (обмена информацией) между клиентом и сервером. Изобретение особенно подходит для серверной среды электронной почты, но описанные здесь признаки можно использовать и в других сетях, связывающих клиентов с серверами.

Согласно одному аспекту настоящего изобретения серверный компонент электронной почты может представить информацию об ошибке для объекта данных, имеющего ошибку, вместо отказа от всего набора ответов из-за ошибки в одном из них. Серверный компонент электронной почты может принимать от клиентского компонента электронной почты запрос на множество объектов данных электронной почты и индикацию о том, что клиентский компонент электронной почты способен обрабатывать объект данных электронной почты, имеющий ошибку. В ответ на запрос и индикацию серверный компонент электронной почты может извлечь множество объектов данных электронной почты и для каждого из объектов данных электронной почты передать объект данных электронной почты на клиентский компонент электронной почты, если при открытии объекта данных электронной почты не появилась ошибка. Однако если при открытии объекта данных электронной почты появилась ошибка, серверный компонент электронной почты передает сообщение об ошибке на клиентский компонент электронной почты.

Согласно другому аспекту настоящего изобретения серверный компонент электронной почты может предоставлять данные о ходе выполнения на клиентский компонент электронной почты, так что клиентский компонент электронной почты может отслеживать ход загрузки из серверного компонента электронной почты. Клиентский компонент электронной почты посылает запрос на множество объектов данных электронной почты и индикацию о том, что клиентский компонент электронной почты способен обрабатывать данные о ходе (режиме) выполнения. В ответ на запрос и индикацию серверный компонент электронной почты извлекает множество объектов данных электронной почты и предоставляет клиентскому компоненту электронной почты данные о режиме выполнения вместе с множеством объектов данных. Данные о ходе (режиме) выполнения могут включать в себя размер множества объектов данных электронной почты, размер каждого из объектов, количество объектов, данные о том, являются ли объекты информацией, связанной с папками, дополнительную информацию или любую комбинацию из вышеперечисленного.

Согласно еще одному аспекту настоящего изобретения запрос, посланный клиентским компонентом электронной почты, может не указывать предельный размер ответа на запрос, позволяя серверному компоненту электронной почты заполнить буфер, если это необходимо. Клиентский компонент электронной почты посылает в запросе множество подзапросов, причем каждый из подзапросов содержит запрос на операцию в серверном компоненте электронной почты и включает в себя информацию о размере. В ответ на каждый подзапрос, если информация о размере включает в себя предельный размер, лежащий внутри диапазона, ожидаемого серверным компонентом электронной почты, серверный компонент электронной почты ограничивает ответ до предельного размера. Если информация о размере включает в себя предельный размер, находящийся вне диапазона, ожидаемого серверным компонентом электронной почты, серверный компонент электронной почты ищет новый предельный размер в информации о размере. Новый предельный размер может быть произвольным, типа «заполнить имеющийся буфер».

Краткое описание чертежей

Фиг.1 - схема компьютеров, соединенных в сеть;

Фиг.2 - схема, иллюстрирующая примерную компьютерную систему, которую можно использовать для реализации варианта настоящего изобретения;

Фиг.3 - схема, иллюстрирующая среду с множеством версий как клиентских компонентов электронной почты, так и серверных компонентов электронной почты;

Фиг.4 - диаграмма протокола, где показан пример процедуры согласования протокола между клиентским компонентом электронной почты и серверным компонентом электронной почты;

Фиг.5 - схема, где показана примерная сеть электронной почты, в которой клиентские компоненты электронной почты и серверные компоненты электронной почты имеют буферы связи (обмена) фиксированного размера;

Фиг.6А - диаграмма протокола, показывающая примерный протокол, который требует два цикла запрос-ответ для завершения операции быстрой пересылки;

Фиг.6В - диаграмма протокола, показывающая примерный протокол, который требует одного цикла запрос-ответ для завершения операции быстрой пересылки;

Фиг.7А - блок-схема последовательности операций, иллюстрирующая примерную процедуру для посылки тела сообщения электронной почты на клиентский компонент электронной почты;

Фиг.7В - блок-схема последовательности операций, иллюстрирующая процедуру для посылки тела сообщения электронной почты на клиентский компонент электронной почты согласно одному аспекту настоящего изобретения;

Фиг.8А - последовательная диаграмма, иллюстрирующая режим пересылки объекта целиком;

Фиг.8В - последовательная диаграмма, иллюстрирующая режим пересылки с заголовками вначале;

Фиг.8С - последовательная диаграмма, иллюстрирующая режим пересылки только заголовков;

Фиг.8D - последовательная диаграмма, иллюстрирующая режим пересылки c исключением в режиме пересылки заголовков вначале или пересылки только заголовков;

Фиг.9 - схема, где показан изменяющийся во времени собственный серверный компонент электронной почты клиентского компонента электронной почты;

Фиг.10 - диаграмма протокола, иллюстрирующая примерный протокол для синхронизации папок электронной почты между клиентским компонентом электронной почты и серверным компонентом электронной почты;

Фиг.11А - блок-схема, показывающая примерную процедуру для оптимизации части «блоба» (большого двоичного объекта) состояния (stateblob);

Фиг.11В - блок-схема, показывающая примерную процедуру для оптимизации части состояния большого двоичного объекта согласно настоящему изобретению;

Фиг.12 - схема, иллюстрирующая иерархию папок электронной почты;

Фиг.13 - схема протокола, демонстрирующая примерный протокол для синхронизации и поддержки синхронизации хранилища сообщений электронной почты согласно одному аспекту настоящего изобретения;

Фиг.14А - схема протокола, демонстрирующая примерный протокол для передачи информации об ошибках на уровне ROP;

Фиг.14В - схема протокола, демонстрирующая примерный протокол для передачи информации об ошибках отдельно для каждого сообщения согласно одному аспекту настоящего изобретения;

Фиг.15А - блок-схема, демонстрирующая процедуру для создания информации об ошибках на уровне ROP;

Фиг.15В - блок-схема, демонстрирующая процедуру для создания информации об ошибках отдельно по каждому сообщению согласно одному аспекту настоящего изобретения;

Фиг.16А - схема протокола, где показан примерный протокол для выполнения операции быстрой пересылки;

Фиг.16В - схема протокола, где показан примерный протокол для предоставления информации о ходе выполнения при выполнении операции быстрой пересылки согласно одному аспекту настоящего изобретения;

Фиг.17А - блок-схема, иллюстрирующая процедуру для потоковой передачи набора сообщений;

17В - блок-схема, иллюстрирующая процедуру для потоковой передачи набора сообщений вместе с информацией о ходе выполнения согласно одному аспекту настоящего изобретения;

фиг.18 - схема множества клиентских компонентов электронной почты, где их уведомление происходит в результате изменения одного и того же объекта данных в серверном компоненте электронной почты;

фиг.19А - блок-схема, где показана процедура уведомления множества абонентов;

фиг.19В - блок-схема, где показана процедура уведомления множества абонентов согласно одному аспекту настоящего изобретения;

фиг.20 - блок-схема, иллюстрирующая процедуру для предоставления сообщения электронной почты, где используется требуемая кодовая страница согласно одному аспекту настоящего изобретения.

Подробное описание изобретения

Перед описанием различных вариантов осуществления изобретения предлагается описание компьютерной и сетевой среды, в которой могут быть практически реализованы различные варианты изобретения. Хотя это и не является обязательным требованием, настоящее изобретение можно реализовать с помощью программ, которые выполняются компьютером. В общем случае программы включают в себя подпрограммы, объекты, компоненты, структуры данных и тому подобное, которые выполняют конкретные задачи или реализуют конкретные типы абстрактных данных. Используемый здесь термин «программа» может ассоциироваться с единственным программным модулем либо множеством взаимодействующих программных модулей. Используемый здесь термин «компьютер» включает в себя любое устройство, которое электронным путем выполняет одну или несколько программ, причем к таким устройствам относятся персональные компьютеры (ПК); переносные устройства; мультипроцессорные системы; электронные устройства на базе микропроцессоров, программируемые пользователем; сетевые ПК; мини-компьютеры; планшетные ПК; универсальные компьютеры; бытовые приборы, имеющие микропроцессор или микроконтроллер; маршрутизаторы; шлюзы; концентраторы и т.п. Изобретение также можно использовать в распределенных вычислительных средах, где задачи выполняются удаленными устройствами обработки данных, связанными через сеть связи. В распределенной вычислительной среде программы могут размещаться как в местных, так и в удаленных запоминающих устройствах.

Пример сетевой среды, в которой можно использовать настоящее изобретение, описывается со ссылками на фиг.1. Примерная сеть включает в себя несколько компьютеров 10, осуществляющих связь друг с другом через сеть 11, представленную в виде облака. Сеть 11 может включать в себя множество хорошо известных компонентов, таких как маршрутизаторы, шлюзы, концентраторы и т.д., при этом сеть 11 позволяет компьютерам 10 осуществлять связь через проводную и/или беспроводную среду. При взаимодействии друг с другом через сеть 11 один или несколько компьютеров могут выступать в качестве клиентов, серверов или равноправных узлов по отношению к другим компьютерам. Соответственно различные варианты изобретения могут быть практически реализованы на клиентских компьютерах, серверах, равноправных узлах или их комбинациях, хотя приведенные здесь конкретные примеры относятся не ко всем указанным типам компьютеров.

Обратимся к фиг.2, где показан пример базовой конфигурации для компьютера, на котором можно реализовать описанное здесь изобретение в целом либо его части. В наиболее общем случае компьютер 10 обычно включает в себя по меньшей мере один блок 14 обработки (процессор) и память 16. Блок 14 обработки выполняет команды для реализации задач согласно различным вариантам изобретения. При выполнении указанных задач блок 14 обработки может передавать электронные сигналы на другие части компьютера 10 и устройства, находящиеся вне компьютера 10, для получения конкретного результата. В зависимости от конкретной конфигурации и типа компьютера 10 память 16 может быть энергозависимой (к примеру, ОЗУ), энергонезависимой (к примеру, ПЗУ или флэш-память), либо представлять собой некоторую комбинацию этих двух вариантов. Такая базовая конфигурация показана на фиг.2 пунктирной линией 18. Вдобавок, компьютер также может иметь дополнительные признаки/функциональные возможности. Например, компьютер 10 может также включать в себя дополнительное запоминающее устройство (съемное 201 и/или несъемное 202) и в том числе, но не только, магнитные или оптические диски или ленту. Компьютерная запоминающая среда включает в себя энергозависимые и энергонезависимые, съемные и несъемные носители, реализованные любым способом или по любой технологии, используемой для запоминания информации, в том числе выполняемых компьютером команд, структур данных, программных модулей или других данных. Компьютерная запоминающая среда включает в себя, но не только: ОЗУ, ПЗУ, СППЗУ (стираемое программируемое ПЗУ), флэш-память, ПЗУ на компакт-диске, цифровой универсальный диск (DVD) либо другое оптическое запоминающее устройство, магнитные кассеты, магнитную ленту, запоминающее устройство на магнитных дисках или другие магнитные запоминающие устройства либо любой другой носитель, который можно использовать для запоминания необходимой информации и который может быть доступен компьютеру 10. Любой из указанных компьютерных носителей может составлять часть компьютера 10.

Предпочтительно, чтобы компьютер 10 также содержал соединения 205 для связи, которые позволяют устройству осуществлять связь с другими устройствами. Соединение для связи является примером среды для связи. Среда для связи обычно воплощает считываемые компьютером команды, структуры данных, программные модули либо другие данные в модулированном сигнале данных, таком как сигнал несущей, либо другом механизме транспортировки, и включает в себя любую среду для доставки информации. В качестве примера, но не как ограничение, термин «среда для связи» включает в себя проводную среду, такую как проводная сеть или прямое проводное соединение, и беспроводную среду, такую как акустическая, радиочастотная (RF), инфракрасная и другие беспроводные среды. Используемый здесь термин «считываемый компьютером носитель» включает в себя как компьютерную запоминающую среду, так и среду для связи.

Компьютер 10 может также иметь устройства 204 ввода, такие как клавиатура, мышь, перо, устройство речевого ввода, сенсорное устройство ввода и т.п. Также в компьютере могут быть устройства 203 вывода, такие как дисплей 20, динамики, принтер и т.п. Все эти устройства хорошо известны специалистам в данной области техники и обсуждать их далее нет необходимости.

Настоящее изобретение имеет своей целью создание системы и способа, обеспечивающих улучшенную связь между клиентом и сервером, и, в частности, направлено на создание усовершенствованного протокола, который можно использовать для связи между клиентом и сервером. Изобретение особенно подходит к серверному оборудованию для электронной почты, но описанные здесь признаки можно использовать и в других сетях с клиентами и серверами. Однако для упрощения описания изобретение описывается со ссылками на среду электронной почты «клиент/сервер».

Настоящее изобретение можно реализовать в среде клиент/сервер, имеющей две или более версий клиентских приложений или компонентов, и/или две или более версий серверных приложений или компонентов. С этой целью на фиг.3 показана блок-схема, демонстрирующая множество версий клиентских и серверных компонентов в сетевой среде электронной почты. В общем случае клиентские и серверные компоненты сконфигурированы таким образом, чтобы они были обратно совместимыми. То есть, клиентский компонент способен осуществлять связь с последними легальными версиями серверных компонентов, и наоборот. Для осуществления связи между множеством версий утвержден набор протоколов. Набор протоколов может образовать несколько различных протоколов, каждый из которых является автономным. В альтернативном варианте можно иметь набор протокольных компонентов и использовать конкретные компоненты для конфигурации конкретных протоколов в наборе протоколов. В любом случае в сетевой среде электронной почты, показанной на фиг.3, клиентский компонент 303 электронной почты, имеющий самую последнюю версию, осуществляет связь наилучшим образом с серверным компонентом 306 электронной почты, имеющим саму последнюю версию, с использованием протокола 307. Однако серверный компонент 306 электронной почты, имеющий самую последнюю версию, способен также осуществлять связь с выбранными клиентскими компонентами электронной почты, имеющими предыдущие версии, например с клиентским компонентом 302 электронной почты и клиентским компонентом 301 электронной почты, используя другие протоколы (например, протоколы 308 и 309 на фиг.3) из набора протоколов. Клиентский компонент 303 электронной почты способен также осуществлять связь с выбранными серверными компонентами электронной почты, имеющими предыдущие версии, например с серверным компонентом 305 электронной почты и серверным компонентом 304 электронной почты, используя такие протоколы, как протоколы 310 и 311.

В общем случае используемый здесь для описания протокола по настоящему изобретению термин «самый последний» (серверный или клиентский) компонент электронной почты или самая последняя версия (серверного или клиентского) компонента электронной почты относится к серверному или клиентскому компоненту, который осведомлен о новом описываемом признаке или признаках и может использовать, реализовать и/или действовать с учетом этих признаков. Хотя эти термины используются во всем документе для описания клиентских и серверных компонентов, осведомленных о различных аспектах протокола по настоящему изобретению, эти термины также включают в себя компоненты, которые осведомлены только о конкретном описываемом аспекте или нескольких описываемых аспектах. Аналогично, «предыдущий» компонент электронной почты или предыдущая версия компонента электронной почты - это компонент, который не осведомлен об аспектах протокола настоящего изобретения и не может действовать согласно этим аспектам.

Для установки протокола между клиентом и сервером (например, серверным компонентом 306 электронной почты, имеющим самую последнюю версию, и клиентским компонентом 303 электронной почты, имеющим самую последнюю версию) часто используют процедуру согласования протокола. Хотя указанные согласования протокола известны, для удобства читателей ниже кратко описывается процедура согласования протокола между клиентским компонентом 401 электронной почты (фиг.4) и серверным компонентом 402 электронной почты (также фиг.4). Ранее при сеансе связи между клиентским компонентом 401 электронной почты и серверным компонентом 402 электронной почты клиентский компонент 401 электронной почты посылал на серверный компонент 402 электронной почты сообщение 403, которое включает в себя информацию о версии клиента, например, в виде штампа (отметки) версии клиентского компонента. Серверный компонент 402 электронной почты реагирует на сообщение 403 сообщением 404, которое включает в себя информацию о версии сервера, например, в виде штампа (отметки) версии серверного компонента.

Информацию о версии клиента и сервера можно использовать различными путями, чтобы попытаться установить связь между клиентским компонентом 401 электронной почты и серверным компонентом 402 электронной почты. Например, информацию о версии можно использовать для выбора подходящего протокола для непрерывной связи либо для определения того, возможно ли продолжение связи. При установке протокола информацию о версии можно использовать, например, для разрешения и/или не разрешения использования конкретных имеющихся аспектов протокола или компонентов.

Серверный компонент электронной почты может принимать и обрабатывать запросы от множества клиентских компонентов электронной почты одновременно. Там, где показан единственный клиент, если в явном виде не констатируется иное, достаточно упростить соответствующие чертежи и пояснения к ним.

Сеть электронной почты по настоящему изобретению использует обмен запросами и ответами для пересылки запросов и данных между клиентскими и серверными компонентами в сети. На практике на эффективность функционирования протокола можно повлиять с помощью механизма транспортировки базовой сети связи, используемого для реализации связи между клиентами и серверами в сети электронной почты. Например, в сети электронной почты, где используются удаленные вызовы процедуры (RPC) в виде механизма транспортировки базовой сети связи, возможно наиболее эффективным окажется один удаленный вызов процедуры большего размера (например, 32 килобайта), чем несколько удаленных вызовов процедуры меньшего размера (например, 2 килобайта). Одним из известных путей повышения эффективности функционирования указанной сети электронной почты является буферизация множества запросов и/или ответов для передачи в одном удаленном вызове процедуры.

В качестве примера на фиг.5 показан обмен запросами и ответами между клиентским компонентом 501 электронной почты и серверным компонентом 502 электронной почты. Как клиентский компонент 501 электронной почты, так и серверный компонент 502 электронной почты имеют буферы 503, 504, 505 и 506 связи с фиксированными размерами. Буферы 503, 504, 505 и 506 представляют собой резервные области памяти для временного хранения данных. Клиентский компонент 501 электронной почты начинает цикл запрос-ответ, заполняя буфер 503 одним или несколькими подзапросами или удаленными операциями (ROP, УОП) перед передачей содержимого буфера 503 в буфер 504.

После приема в буфере 504 каждая ROP обрабатывается по порядку серверным компонентом 502 электронной почты, а соответствующий результат записывается в буфер 505. Каждая операция ROP дает некоторый результат. Этот результат может включать в себя данные, запрошенные клиентским компонентом 501 электронной почты, например конкретный набор сообщений электронной почты. Серверный компонент 502 электронной почты непрерывно контролирует буфер 505 и, когда тот становится почти полным (например, остается менее 8 килобайт), серверный компонент 502 электронной почты записывает необработанные ROP в конец буфера 505 и передает содержимое буфера 505 в буфер 506. Затем клиентский компонент 501 электронной почты начинает новый цикл запрос/ответ, записывая необработанные ROP в буфер 503 для повторного представления серверному компоненту 502 электронной почты, когда буфер 503 будет вновь заполнен.

Размер ответа в среднем обычно больше, чем размер запроса. По этой причине размер буферов 505 и 506 ответов обычно конфигурируется таким образом, чтобы он был больше размера буферов 503 и 504 запросов. В одном варианте изобретения оптимальный размер буферов 505 и 506 ответов был определен равным 96 килобайт при размере 32 килобайта для буферов 503 и 504 запросов, то есть с отношением 3 к 1. В одном варианте клиентский компонент электронной почты способен конфигурировать размер любого из буферов 503, 504, 505 и 506.

В некоторых сетях электронной почты, где используются буферы, например в сети электронной почты, показанной на фиг.5, можно использовать режим быстрой пересылки между клиентским компонентом электронной почты и серверным компонентом электронной почты. Режим быстрой пересылки включает в себя запросы, такие как ROP, от клиента, которые подразделяются по меньшей мере на два типа: запросы, которые приводят к инициализации на сервере источника данных для быстрой пересылки, и запросы, которые приводят к эффективной пересылке данных от источника данных для быстрой пересылки к клиентам. Источник данных для быстрой пересылки может, например, представлять собой таблицу базы данных. Источник данных для быстрой пересылки служит в качестве доступного временного хранилища данных, которое дает возможность обслуживания более поздних запросов данных с меньшей задержкой, чем это было бы возможно в ином случае. Иногда запрос режима быстрой пересылки второго типа осуществляет поиск для достижения эффективной пересылки данных путем задания в явном виде размера ответа, например размер ответа может быть установлен равным размеру всего приемного буфера клиента без дополнительных расходов ресурсов.

На фиг.6А показана операция быстрой пересылки, имеющая по меньшей мере два цикла запрос-ответ. В первом запросе 601 удаленная операция ROP (например, FXPrepare) инициализирует на сервере 502 источник данных для быстрой пересылки. На этом сервере обрабатывается только FXPrepare (то есть, инициализируется источник данных для быстрой пересылки), и полученный результат возвращается обратно в первом ответе 602. Во втором запросе 603 удаленная операция ROP (например, FXGetBuffer) запрашивает сервер, чтобы тот заполнил буфер 505 источника данных для быстрой пересылки. Сервер разгружает источник быстрых данных в буфер и возвращает результат во втором ответе 604. Если выходной буфер 505 для серверного компонента электронной почты заполняется до того, как будет полностью разгружен (опустошен) источник быстрых данных, то могут понадобиться дополнительные операции FXGetBuffer ROP.

На фиг.6В показана операция быстрой пересылки, имеющая только один цикл запрос-ответ. В первом запросе 605 серверный компонент 502 электронной почты обрабатывает как FXPrepare, так и FXGetBuffer, и результаты обеих операций возвращаются обратно в первом ответе 606. Результат операции FXPrepare доступен операции FXGetBuffer на серверном компоненте 502 электронной почты, поскольку часть каждого буфера 503, 504, 505 и 506 задана в явном виде как совместно используемая таблица данных. Желательно сократить количество циклов запрос-ответ, поскольку это приводит к более эффективной пересылке данных. Операция быстрой пересылки, имеющая более одного цикла запрос-ответ, может выполняться тогда, когда буфер 505 заполнен настолько, что не может вместить результат FXGetBuffer ROP.

Очевидно, что операции ROP, показанные на фиг.6А и 6В и аналогичных фигурах данной заявки, представлены схематически в том смысле, что их можно практически реализовать с помощью ряда ROP, если специально не установлено иное.

Обычно размер результата ROP отличается от размера запроса ROP. Размер результата ROP не всегда можно предсказать. Когда для уменьшения размера результата ROP используют технологии сжатия данных, предсказать размер результата ROP еще труднее. Отсутствие возможности предсказания размера результата ROP может помешать ручной настройке протокола с целью минимизации количества циклов запрос-ответ для завершения конкретных клиентских операций, например, чтобы обеспечить загрузку в клиент всех новых сообщений в одном цикле запрос-ответ. Ручная настройка протокола включает в себя ручную конфигурацию последовательности и/или размера протокольных запросов, ответов и/или операций ROP.

Согласно одному аспекту настоящего изобретения количество циклов запрос-ответ минимизируется автоматически следующим образом: на ключевые операции ROP (например, FXGetBuffer) не распространяют требование предсказания размера их результата. Вместо этого указанные ROP обрабатываются серверным компонентом 502 электронной почты до тех пор, пока не будет полностью заполнен буфер 505 (такой же, как буфер 506). Например, в среде, которая включает в себя множество версий серверных компонентов электронной почты, можно определить операции ROP отдельно для серверных компонентов, имеющих предыдущие версии, и отдельно для серверных компонентов, имеющих последние версии. На последние версии не распространяется требование предсказания размера их результата. Характеристики для этих ROP представлены далее в следующей таблице:

ROP, которая может быть использована протоколом для осуществления связи с серверами, имеющими предыдущие версии ROP, которая может быть использована протоколом для осуществления связи с серверами, имеющими самую последнюю версию
Идентификатор (ID) ROPFXGetBufferFXGetBuffer
Параметры, используемые во множестве режимовТребуемый размер: размер, который должен зарезервировать сервер в своем выходном буфереТребуемый размер: устанавливается равным значению ниже максимального, ожидаемого по предыдущей версии, например, больше 32 килобайт. Это является сигналом для сервера на поиск нового предельного размера
ROP, которая может быть использована протоколом для осуществления связи с серверами, имеющими предыдущие версии ROP, которая может быть использована протоколом для осуществления связи с серверами, имеющими самую последнюю версию
Параметр
Новые параметрыНе доступныПредельный размер: информирует сервер о пределе, до которого сервер может заполнить свой выходной буфер

Удаленные операции (ROP) для серверных компонентов, имеющих предыдущие версии, по своей структуре аналогичны известным ROP. То есть, операции ROP прогнозируют и задают размер выходного буфера (например, пересылочного буфера 505), который необходимо зарезервировать для хранения ответа. В противоположность этому, заданный размер выходного буфера для самой последней версии серверного компонента не предсказывается, а вместо этого устанавливают значение размера буфера выше максимально ожидаемого для серверных компонентов, имеющих предыдущие версии, например больше 32 килобайт. Тот факт, что размер выходного буфера определяется значением выше ожидаемого для сигналов серверного компонента, сигнализирует серверному компоненту о необходимости поиска нового предельного параметра размера, который может, например, соответствовать заполнению выходного буфера для серверного компонента. Эти характеристики автоматически минимизируют количество циклов запрос-ответ, причем при весьма незначительном увеличении сложности серверного компонента электронной почты, который обрабатывает операции ROP.

Заметим, что порядок параметров, показанных в вышеуказанной таблице и в аналогичных таблицах в этой заявке, не обязательно соответствуют порядку, в котором, например, эти параметры передаются по сети или запоминаются в памяти либо клиентским компонентом электронной почты, либо серверным компонентом электронной почты, если в явном виде не установлено иное. Вдобавок, для ясности неизменяемые параметры могут быть опущены.

В сети электронной почты одной из типовых функций протокола является обеспечение пересылки объектов данных, например сообщений электронной почты между клиентскими компонентами электронной почты и серверными компонентами электронной почты. Дополнительные примеры указанных объектов данных включают в себя папки электронной почты, которые могут содержать сообщения электронной почты и другие объекты данных, а также объекты данных с информацией, относящейся к папке (FAI), которые могут, например, содержать правила для обработки сообщений электронной почты, либо определять, каким образом будут отображаться объекты данных, содержащиеся в папке. Объекты данных могут быть непрозрачными для клиентского компонента электронной почты; то есть, у клиентского компонента электронной почты могут отсутствовать средства интерпретации содержимого объекта данных. В альтернативном варианте объекты данных могут содержать именованные свойства, например сообщение электронной почты может содержать свойства под названием «к» (to), «от» (from), «тема» (subject), «важность» (importance), «тело 1» (body 1), «тело 2» (body 2), «тело 3» (body 3), «вложение 1» (attachment 1), «вложение 2» (attachment 2) и т.д.

Одним из преимуществ сетей электронной почты, в которых объекты данных могут содержать именованные свойства в сетях электронной почты, где объекты данных непрозрачны, является возможность повышения эффективности функционирования протокола благодаря способности протокола пересылать только часть объекта данных. Наличие именованных свойств позволяет передавать конкретные свойства объекта данных без передачи всего объекта данных.

Например, сообщение электронной почты может содержать набор свойств заголовка и набор свойств тела (сообщения). Потребности клиентского компонента электронной почты могут быть таковы, что протокол сможет пересылать сначала свойства заголовка, а затем свойства тела либо вовсе их не пересылать. Эта особенность позволяет пользователю ознакомиться с информацией в заголовках для нескольких сообщений, прежде чем будут загружены все сообщения целиком. Используя эту особенность, клиентский компонент может обеспечить управление использованием полосы пропускания на уровне более мелких структурных единиц, что может положительно сказаться на эффективности функционирования протокола. Вдобавок, клиентский компонент может воспользоваться этой особенностью, чтобы уменьшить фактическую производительность (например, загрузка тел может выполняться только для выбранных заголовков), что особенно желательно в средах с низкой пропускной способностью.

Эффективность протокола не обязательно возрастет, если серверный компонент сконфигурирован для посылки свойств тела и заголовка в двух отдельных циклах запрос-ответ (то есть, один цикл для заголовка и один для тела). Например, если бы потребности клиентского компонента электронной почты были таковы, что ему необходимо было одновременно иметь свойства заголовка и тела, то тогда эффективность протокола возможно уменьшилась бы по сравнению с ситуацией, когда извлечение заголовка и тела могло выполняться в одном цикле запрос-ответ. Таким образом, простое действие, позволяющее объектам данных иметь в своем составе именованные свойства, само по себе недостаточно для автоматического повышения эффективности протокола. Достижение повышенной эффективности протокола зависит от выбора свойств, которые может скомплектовать объект данных, и от того, каким образом они могут быть использованы протоколом. Этот выбор может зависеть от нескольких факторов, в том числе потребностей клиентских компонентов электронной почты, имеющих самую последнюю версию и предыдущие версии, и потребностей серверных компонентов электронной почты, имеющ