RU2421790C2 - Система и способ усовершенствованной синхронизации между сервером и клиентом - Google Patents
Система и способ усовершенствованной синхронизации между сервером и клиентом Download PDFInfo
- Publication number
- RU2421790C2 RU2421790C2 RU2008127702/08A RU2008127702A RU2421790C2 RU 2421790 C2 RU2421790 C2 RU 2421790C2 RU 2008127702/08 A RU2008127702/08 A RU 2008127702/08A RU 2008127702 A RU2008127702 A RU 2008127702A RU 2421790 C2 RU2421790 C2 RU 2421790C2
- Authority
- RU
- Russia
- Prior art keywords
- component
- request
- client
- server
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 74
- 230000004044 response Effects 0.000 claims abstract description 78
- 230000008859 change Effects 0.000 claims description 31
- 238000012508 change request Methods 0.000 claims 2
- 238000012546 transfer Methods 0.000 abstract description 50
- 238000005516 engineering process Methods 0.000 abstract description 5
- 230000000694 effects Effects 0.000 abstract description 4
- 239000000126 substance Substances 0.000 abstract 1
- 230000005540 biological transmission Effects 0.000 description 57
- 238000004891 communication Methods 0.000 description 41
- 239000000872 buffer Substances 0.000 description 38
- 238000003860 storage Methods 0.000 description 35
- 238000010586 diagram Methods 0.000 description 20
- 238000012545 processing Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 12
- 238000005457 optimization Methods 0.000 description 11
- 230000007704 transition Effects 0.000 description 7
- 238000013500 data storage Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000002411 adverse Effects 0.000 description 3
- 229920001940 conductive polymer Polymers 0.000 description 3
- 238000009616 inductively coupled plasma Methods 0.000 description 3
- 239000003999 initiator Substances 0.000 description 3
- 230000014759 maintenance of location Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- BDAGIHXWWSANSR-UHFFFAOYSA-M Formate Chemical compound [O-]C=O BDAGIHXWWSANSR-UHFFFAOYSA-M 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003339 best practice Methods 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/234—Monitoring or handling of messages for tracking messages
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/42—Mailbox-related aspects, e.g. synchronisation of mailboxes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/08—Protocols for interworking; Protocol conversion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/06—Message adaptation to terminal or network requirements
- H04L51/066—Format adaptation, e.g. format conversion or compression
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99932—Access augmentation or optimizing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
Изобретение относится к области обмена данными между клиентскими и серверными приложениями, например приложениями, обеспечивающими передачу электронной почты. Техническим результатом является минимизация количества циклов запрос - ответ между серверным и клиентским компонентами электронной почты для повышения эффективности передачи данных. Способ синхронизации папок на клиентском и серверных компонентах, содержащий этапы, на которых поддерживают таблицу глубокой иерархии, причем каждая папка в иерархии папок имеет строку в таблице глубокой иерархии, при этом иерархия папок содержит множество папок, содержащих объекты данных электронной почты, причем упомянутое множество папок сохранено в серверном компоненте электронной почты, работающем в компьютерной системе, обновляют строки для папок, когда содержимое этих папок модифицируется, подписывают клиентский компонент электронной почты на таблицу глубокой иерархии, в ответ на изменение в таблице глубокой иерархии посылают уведомление на клиентский компонент электронной почты. 6 н. и 12 з.п. ф-лы, 31 ил., 9 табл.
Description
ССЫЛКА НА РОДСТВЕННУЮ ЗАЯВКУ НА ИЗОБРЕТЕНИЕ
Эта заявка на изобретение испрашивает приоритет заявки на патент США № 60/437869, зарегистрированной в досье патентного поверенного 3 января 2003 года под номером 220635, которая имеет название "SYSTEM AND METHOD FOR IMPROVED CLIENT SERVER COMMUNICATIONS" ("Система и способ усовершенствованной связи клиент-сервер") и включена сюда путем ссылки.
ОБЛАСТЬ ТЕХНИКИ
Это изобретение относится, в целом, к компьютерным сетям и, в частности, к способам обмена данными между клиентскими и серверными приложениями, например приложениями, обеспечивающими передачу электронной почты.
ПРЕДПОСЫЛКИ СОЗДАНИЯ ИЗОБРЕТЕНИЯ
Электронная почта стала важным средством связи. Системы электронной почты обычно содержат серверный компонент (например, программу "Microsoft Exchange Server" фирмы "Майкрософт") и клиентский компонент (например, программу "Microsoft Outlook" или "Microsoft Outlook Express" фирмы "Майкрософт"). Эти компоненты обычно представляют собой программные приложения, которые обеспечивают возможность их выполнения в вычислительных устройствах (например, в серверах, в персональных компьютерах (ПК), в портативных компьютерах и в персональных информационных устройствах (ПИУ) (PDA)).
Часто для облегчения обмена информацией клиент и сервер, например клиентский компонент и серверный компонент системы электронной почты, договариваются о протоколе связи. Этот протокол устанавливает правила, определяющие ожидаемый режим работы каждой стороны при обмене информацией, например ожидаемую последовательность запросов и ответов. Сложные протоколы содержат правила обработки непредвиденных ситуаций.
По мере усовершенствования клиентских и серверных компонентов эти усовершенствованные версии распределяют по конечным пользователям. Часто происходит так, что для использования преимуществ новых возможностей компонентов и возможностей сети изобретают новый протокол связи. В том случае, когда важна установленная базовая система серверных компонентов, посредством такого набора протоколов клиентский компонент может быть способен поддерживать связь с серверными компонентами избранных предыдущих версий.
Иногда имеет место ситуация, при которой более новые протоколы представляют собой надстройку, созданную поверх более старых протоколов, вместо полной замены ими более старых протоколов. В этом случае более новый протокол может быть создан из элементов протокола, использование которых может быть разрешено или запрещено, что позволяет осуществлять эмулирование более старых протоколов. Аналогичным образом, в том случае, когда важна установленная базовая система клиентских компонентов, посредством такого протокола серверный компонент может быть способен поддерживать связь с клиентскими компонентами избранных предыдущих версий.
В настоящем изобретении предложена подобная система и способ. Вышеупомянутые и иные преимущества изобретения, а также дополнительные отличительные признаки изобретения станут очевидными из приведенного здесь описания изобретения.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
В настоящем изобретении предложены система и способ усовершенствованной связи между клиентом и сервером. В частности, изобретение относится к усовершенствованному протоколу, который может быть использован для связи между клиентом и сервером. Применение настоящего изобретения особенно целесообразно для среды работы сервера электронной почты, но описанные здесь отличительные признаки могут быть использованы и для других сетей с конфигурацией клиент-сервер.
Согласно одному из аспектов настоящего изобретения в серверном компоненте электронной почты может быть осуществлена оптимизация изменений в сообщениях электронной почты даже в том случае, если изменения в сообщениях электронной почты произошли в другом серверном компоненте электронной почты. Первый серверный компонент электронной почты имеет независимые первые данные об изменениях в сообщении электронной почты, замеченные клиентским компонентом электронной почты. Второй серверный компонент электронной почты поддерживает вторые данные об изменениях в сообщении электронной почты, замеченные вышеупомянутым клиентским компонентом электронной почты. Затем вышеупомянутый второй серверный компонент электронной почты осуществляет оптимизацию первых независимых данных.
Согласно другому аспекту настоящего изобретения серверный компонент электронной почты может обеспечивать поддержку таблицы изменений, произошедших в "папках" (каталогах), находящихся в соответствующем запоминающем устройстве для данных, и может уведомлять клиентский компонент электронной почты, являющийся абонентом этой услуги, об изменениях, произошедших в таблице. В таблице сохраняют сведения об изменениях в множестве папок, содержащих информационные объекты электронной почты. Клиентский компонент электронной почты становится абонентом вышеупомянутой таблицы и в ответ на наличие изменений в таблице посылает уведомление в клиентский компонент электронной почты.
Согласно еще одному аспекту настоящего изобретения серверный компонент электронной почты может запрещать передачу уведомлений в тот клиентский компонент электронной почты, который вызвал изменение в таблице. Серверный компонент электронной почты может осуществлять прием указания, требующего не осуществлять передачу уведомления в первый клиентский компонент электронной почты в ответ на наличие изменения, а в ответ на наличие изменения и получение вышеупомянутого указания он может осуществлять передачу уведомлений о наличии изменения всем остальным абонентам таблицы, за исключением первого клиентского компонента электронной почты.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
На Фиг.1 показана схема компьютеров, подключенных к сети.
На Фиг.2 изображена схема, на которой показан пример компьютерной системы, используемой для реализации одного из вариантов осуществления настоящего изобретения.
На Фиг.3 показана схема вычислительной среды, содержащей клиентские компоненты электронной почты и серверные компоненты электронной почты множества различных версий.
На Фиг.4 изображена схема протокола, на которой показан пример процедуры согласования протоколов между клиентским компонентом электронной почты и серверным компонентом электронной почты.
На Фиг.5 изображена принципиальная схема, на которой показан пример сети электронной почты, в которой клиентский компонент электронной почты и серверный компонент электронной почты имеют буферы связи фиксированного объема.
На Фиг.6А изображена схема протокола, на которой показан пример протокола, требующего наличия двух циклов запрос-ответ для завершения операции высокоскоростной передачи.
На Фиг.6Б изображена схема протокола, на которой показан пример протокола, требующего наличия одного цикла запрос-ответ для завершения операции высокоскоростной передачи.
На Фиг.7А приведена схема последовательности операций, на которой показан пример процедуры передачи основного содержимого ("тела") сообщения электронной почты в клиентский компонент электронной почты.
На Фиг.7Б приведена схема последовательности операций, на которой показана процедура передачи основного содержимого ("тела") сообщения электронной почты в клиентский компонент электронной почты согласно аспекту настоящего изобретения.
На Фиг.8А приведена схема последовательности передачи, на которой показан режим передачи элементов данных целиком.
На Фиг.8Б приведена схема последовательности передачи, на которой показан режим первоочередной передачи заголовков.
На Фиг.8В приведена схема последовательности передачи, на которой показан режим передачи только заголовков.
На Фиг.8Г приведена схема последовательности передачи, на которой показан режим передачи, являющийся исключением по отношению к режиму первоочередной передачи заголовков или к режиму передачи только заголовков.
На Фиг.9 показана схема изменений серверного компонента электронной почты, являющегося базовым для клиентского компонента электронной почты, с течением времени.
На Фиг.10 изображена схема протокола, на которой показан пример протокола, посредством которого осуществляют синхронизацию папок электронной почты между клиентским компонентом электронной почты и серверным компонентом электронной почты.
На Фиг.11А приведена схема последовательности операций, на которой показан пример процедуры оптимизации части большого двоичного объекта, характеризующего состояние (stateblob).
На Фиг.11Б приведена схема последовательности операций, на которой показана процедура оптимизации части большого двоичного объекта, характеризующего состояние (stateblob) согласно настоящему изобретению.
На Фиг.12 показана схема, иллюстрирующая иерархическую структуру папок электронной почты.
На Фиг.13 изображена схема протокола, на которой показан пример протокола, посредством которого осуществляют и поддерживают синхронизацию хранилищ для сообщений электронной почты согласно аспекту настоящего изобретения.
На Фиг.14А изображена схема протокола, на которой показан пример протокола, посредством которого осуществляют передачу информации об ошибках на уровне дистанционно выполняемых операций (ДВО) (ROP).
На Фиг.14Б изображена схема протокола, на которой показан пример протокола, посредством которого осуществляют передачу информации об ошибках в каждом сообщении, согласно техническому решению, предложенному в настоящем изобретении.
На Фиг.15А приведена схема последовательности операций, на которой показана процедура генерации информации об ошибках на уровне ДВО.
На Фиг.15Б приведена схема последовательности операций, на которой показана процедура генерации информации об ошибках, передаваемой в каждом сообщении, согласно техническому решению, предложенному в настоящем изобретении.
На Фиг.16А изображена схема протокола, на которой показан пример протокола, посредством которого выполняют операцию высокоскоростной передачи.
На Фиг.16Б изображена схема протокола, на которой показан пример протокола, посредством которого получают информацию о ходе выполнения операции высокоскоростной передачи согласно аспекту настоящего изобретения.
На Фиг.17А приведена схема последовательности операций, на которой показана процедура потоковой передачи набора сообщений.
На Фиг.17Б приведена схема последовательности операций, на которой показана процедура потоковой передачи набора сообщений вместе с информацией о ходе выполнения передачи согласно техническому решению, предложенному в настоящем изобретении.
На Фиг.18 показана принципиальная схема множества клиентских компонентов электронной почты, в которые посылают уведомления в результате изменения одного и того же информационного объекта в серверном компоненте электронной почты.
На Фиг.19А приведена схема последовательности операций, на которой показана процедура передачи уведомлений множеству абонентов.
На Фиг.19Б приведена схема последовательности операций, на которой показана процедура передачи уведомлений множеству абонентов согласно техническому решению, предложенному в настоящем изобретении.
На Фиг.20 приведена схема последовательности операций, на которой показана процедура создания сообщения электронной почты, в котором используют желательную кодовую страницу, согласно аспекту настоящего изобретения.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
Перед изложением описания различных вариантов осуществления изобретения ниже приведено описание компьютера и сетевой среды, в которых могут быть реализованы различные варианты осуществления настоящего изобретения. Настоящее изобретение может быть реализовано посредством программ, выполняемых компьютером, хотя это не является обязательным условием. Программы обычно содержат подпрограммы, объекты, компоненты, структуры данных и т.п., посредством которых выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. Используемый здесь термин "программа" может обозначать одиночный программный модуль или множество программных модулей, действующих согласованно. Используемый здесь термин "компьютер" охватывает собой любое устройство, которое посредством электроники выполняет одну или большее количество программ, например персональные компьютеры (ПК), карманные устройства, многопроцессорные системы, программируемые бытовые электронные устройства на основе микропроцессоров, сетевые ПК, мини-компьютеры, планшетные ПК, большие универсальные электронно-вычислительные машины, бытовые приборы, содержащие микропроцессор или микроконтроллер, маршрутизаторы, шлюзы, концентраторы и т.п. Изобретение может быть также использовано в распределенных вычислительных средах, в которых задачи выполняют посредством удаленных устройств обработки, связанных друг с другом через сеть связи. В распределенной вычислительной среде программы могут находиться как в локальных, так и в удаленных запоминающих устройствах.
Ниже приведено описание примера сетевого окружения, в котором может быть использовано настоящее изобретение, со ссылкой на Фиг.1. Приведенная в качестве примера сеть содержит несколько компьютеров 10, поддерживающих связь друг с другом через сеть 11, изображенную на чертеже в виде облака. Сеть 11 может содержать множество известных компонентов, например маршрутизаторы, шлюзы, концентраторы и т.д., и позволяет компьютерам 10 поддерживать связь между собой через средства проводной и/или беспроводной связи. При взаимодействии друг с другом через сеть 11 один или большее количество компьютеров может функционировать в качестве клиентов, серверов или равноправных устройств по отношению к другим компьютерам. Следовательно, различные варианты осуществления изобретения могут быть реализованы в клиентских, в серверных и в равноправных устройствах либо в их совокупностях даже несмотря на то, что конкретные содержащиеся здесь примеры не относятся ко всем этим типам компьютеров.
Со ссылкой на чертеж Фиг.2, на нем показан пример базовой конфигурации компьютера, в котором полностью или частично может быть реализовано описанное здесь изобретение. Компьютер 10, имеющий наиболее простую базовую конфигурацию, обычно содержит, по меньшей мере, один процессор 14 и запоминающее устройство 16. Процессор 14 исполняет команды, посредством которых обеспечивают выполнение задач в соответствии с различными вариантами осуществления настоящего изобретения. При выполнении таких задач процессор 14 может осуществлять передачу электронных сигналов в другие части компьютера 10 и в устройства, находящиеся вне компьютера 10, для получения некоторого результата. В зависимости от точной конфигурации и типа компьютера 10 запоминающее устройство 16 может представлять собой энергозависимое запоминающее устройство (например, оперативное запоминающее устройство (ОЗУ)), энергонезависимое запоминающее устройство (например, постоянное запоминающее устройство (ПЗУ) или флэш-память) либо некоторую совокупность этих двух запоминающих устройств. Эта наиболее простая базовая конфигурация изображена на Фиг.2 в виде пунктирной линии 18. Кроме того, компьютер может также иметь дополнительные элементы/функциональные возможности. Например, компьютер 10 может также содержать дополнительное запоминающее устройство (сменное 201 и/или стационарное 202), в том числе на магнитных или оптических дисках либо на ленте, но эти примеры не являются ограничивающими. Компьютерные средства хранения данных представляют собой энергозависимые и энергонезависимые, сменные и стационарные носители информации, реализованные любым способом или посредством любой технологии хранения информации, в том числе исполняемых посредством компьютера команд, структур данных, программных модулей или иных данных. Компьютерными средствами хранения данных являются, в том числе, ОЗУ, ПЗУ, электрически стираемые программируемые ПЗУ (ЭСППЗУ), флэш-память, постоянные запоминающие устройства на компакт-дисках (CD-ROM), универсальные цифровые диски (УЦД) (DVD) или иные оптические запоминающие устройства, магнитные кассеты, магнитная лента, запоминающие устройства на магнитных дисках или иные магнитные запоминающие устройства либо любой другой носитель информации, который может быть использован для запоминания желательной информация и к которому компьютер 10 может осуществлять доступ, но эти примеры не являются признаком, ограничивающим изобретение. Любые такие компьютерные средства запоминания данных могут являться частью компьютера 10.
В предпочтительном варианте компьютер 10 также содержит коммуникационные соединения 205, которые позволяют этому устройству поддерживать связь с другими устройствами. Коммуникационное соединение представляет собой пример средства связи. Средства связи обычно обеспечивают реализацию считываемых посредством компьютера команд, структур данных, программных модулей или другие данных в виде модулированного информационного сигнала, например в виде сигнала несущей или посредством иного способа транспортировки, и содержат любые средства передачи информации. Термин "средства связи" охватывает собой средства проводной связи, например сеть проводной связи или проводное соединение прямой связи, и средства беспроводной связи, например акустические, радиочастотные (РЧ), инфракрасные и иные средства беспроводной связи, но эти примеры не являются ограничивающими. Используемый здесь термин "считываемый посредством компьютера носитель информации" охватывает собой как компьютерные средства хранения данных, так и средства связи.
Компьютер 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, содержащее информацию о версии клиента, например, в виде метки (отметки) версии клиентского компонента. В ответ на сообщение 403 серверный компонент 402 электронной почты посылает сообщение 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 серверный компонент 502 электронной почты осуществляет обработку каждой ДВО в надлежащем порядке, а соответствующий результат записывают в буфер 505. Каждая ДВО создает некоторый результат. Этот результат может содержать данные, запрошенные клиентским компонентом 501 электронной почты, например определенный набор сообщений электронной почты. Серверный компонент 502 электронной почты осуществляет текущий контроль буфера 505 и в том случае, когда он почти полон (например, когда оставшийся объем памяти равен менее 8 КБ), серверный компонент 502 электронной почты записывает любые необработанные ДВО в конец буфера 505 и осуществляет передачу содержимого буфера 505 в буфер 506. После этого клиентский компонент 501 электронной почты начинает новый цикл запросов-ответов путем записи необработанных ДВО в буфер 503 для их повторной подачи в серверный компонент 502 электронной почты в тот момент, когда снова произойдет заполнение буфера 503.
Усредненный объем ответа обычно является большим, чем объем запроса. Поэтому конфигурацию обычно устанавливают таким образом, что объем буферов 505 и 506 для ответов является большим, чем объем буферов 503 и 504 для запросов. В одном из вариантов осуществления изобретения был определен оптимальный объем буферов 505 и 506 для ответов, равный 96 КБ при объеме буферов 503 и 504 для запросов, равном 32 КБ, то есть их отношение равно 3:1. В одном из вариантов осуществления изобретения клиентский компонент электронной почты способен изменять конфигурацию объема любого из буферов 503, 504, 505 и 506.
В некоторых сетях электронной почты, в которых используют буферы, например в сети электронной почты, показанной на Фиг.5, может быть использован режим быстрой передачи данных между клиентским компонентом электронной почты и серверным компонентом электронной почты. Режим быстрой передачи содержит выдаваемые клиентом запросы, например ДВО, которые подразделены, по меньшей мере, на два типа запросов: на запросы, вызывающие инициирование находящегося в сервере источника данных, предназначенных для быстрой передачи, и на запросы, вызывающие высокопроизводительную передачу данных от источника данных, предназначенных для быстрой передачи, клиенту. Источником данных, предназначенных для быстрой передачи, может являться, например, таблица базы данных. Источник данных, предназначенных для быстрой передачи, служит в качестве готового временного хранилища данных, которое обеспечивает возможность обслуживания поступающих позднее запросов на получение данных с меньшей задержкой, чем это возможно в ином случае. Иногда посредством запросов режима быстрой передачи, относящихся ко второму типу, предпринимают попытку достигнуть высокопроизводительной передачи данных путем указания объема ответа в явном виде, например, объем ответа может быть задан равным полному объему приемного буфера клиента за вычетом объема служебных данных, используемых для передачи ответа.
На Фиг.6А показана операция быстрой передачи, содержащая, по меньшей мере, два цикла запроса-ответа. При первом запросе 601 ДВО (например, запрос на подготовку данных для быстрой передачи, ПодготовкаВП (FXPrepare)) инициализирует источник данных для быстрой передачи в сервере 502. В сервере осуществляют обработку только запроса ПодготовкаВП (FXPrepare) (то есть осуществляют инициализацию источника данных для быстрой передачи) и результат этой обработки возвращают в виде первого ответа 602. Во втором запросе 603 ДВО (например, запрос на получение содержимого буфера для быстрой передачи, ПолучитьБуферВП (FXGetBuffer)) в сервер поступает запрос на заполнение буфера 505 из источника данных для быстрой передачи. Сервер опустошает источник данных для быстрой передачи, переводя их в буфер, и возвращает результат во втором ответе 604. Если буфер 505 вывода в серверном компоненте электронной почты заполняется до того, как произойдет опустошение источника данных для быстрой передачи, то могут потребоваться дополнительные ДВО ПолучитьБуферВП (FXGetBuffer).
На Фиг.6Б показана операция быстрой передачи, содержащая только один цикл запроса-ответа. При первом запросе 605 серверный компонент 502 электронной почты осуществляет обработку как операции ПодготовкаВП (FXPrepare), так и операции ПолучитьБуферВП (FXGetBuffer), а в первом ответе 606 возвращают результаты обеих операций. В серверном компоненте 502 электронной почты результат операции ПодготовкаВП (FXPrepare) доступен для запроса ПолучитьБуферВП (FXGetBuffer), поскольку часть каждого из буферов 503, 504, 505 и 506 задана в явном виде как таблица совместно используемых данных. Желательно уменьшить количество циклов запросов-ответов, поскольку это обеспечивает более эффективную передачу данных. Операция быстрой передачи, содержащая более одного цикла запросов-ответов, может иметь место в том случае, когда буфер 505 слишком переполнен для того, чтобы обеспечить сохранение результата ДВО ПолучитьБуферВП (FXGetBuffer).
Понятно, что ДВО, изображенные на Фиг.6А и Фиг.6Б и на всех аналогичных чертежах в данной заявке на изобретение, показаны схематично, то есть они могут быть реализованы на практике в виде последовательности ДВО, если иной вариант не оговорен особо.
Как правило, объем результата ДВО отличается от объема запроса на ДВО. Прогнозирование объема результата ДВО не всегда возможно. При использовании способов сжатия данных для уменьшения объема результата ДВО еще сложнее спрогнозировать объем результата ДВО. Неспособность прогнозирования объема результата ДВО может привести к невозможности ручной настройки протокола для сведения к минимуму количества циклов запросов-ответов, необходимых для завершения конкретных клиентских операций, например для обеспечения гарантированной загрузки всех новых сообщений в клиентский компонент за один цикл запроса-ответа. Операция ручной настройки протокола содержит выполняемые вручную операции настройки конфигурации последовательности и/или объема протокольных запросов, ответов и/или ДВО.
Согласно одному из аспектов настоящего изобретения количество циклов запросов-ответов автоматически сводят к минимуму путем указания того, что для ключевых ДВО (например, для операции ПолучитьБуферВП (FXGetBuffer)) не нужно осуществлять прогнозирование объема их результата. Вместо этого серверный компонент 502 электронной почты выполняет обработку таких ДВО до тех пор, пока не будет достигнуто предельное значение объема буфера 505 (который является тем же самым, что и для буфера 506).
Например, в среде, содержащей серверные компоненты электронной почты множества версий, для серверных компонентов предыдущих версий и для серверных компонентов новых версий могут быть заданы отдельные ДВО. В новых версиях отсутствует необходимость прогнозирования объема их результата. Параметры этих ДВО указаны в приведенной ниже таблице:
ДВО, которая может быть использована в протоколе для связи с серверами предыдущих версий | ДВО, которая может быть использована в протоколе для связи с серверами наиболее новых версий | |
Идентификатор ДВО (ROP ID) | ПолучитьБуферВП (FXGetBuffer) | ПолучитьБуферВП (FXGetBuffer) |
Параметры, используемые во многих режимах | Требуемый объем: объем памяти, который сервер должен зарезервировать в своем буфере вывода. |
Требуемый объем: задают равным величине большей, чем максимальная величина, ожидаемая компонентом предыдущей версии, например, большим, чем 32 КБ. Это оповещает сервер о необходимости поиска нового параметра, задающего предельное значение объема. |
Новые параметры | Не доступны | Предельное значение объема: уведомляет сервер о предельном значении, вплоть до которого сервер может заполнять свой буфер вывода. |
ДВО для серверных компонентов предыдущих версий аналогичны по структуре с существующими ДВО из известного уровня техники. То есть, ДВО прогнозируют и задают объем памяти в буфере вывода (например, в пересылочном буфере 505), который должен быть зарезервирован для хранения ответа. В отличие от этого прогнозирование предписанного объема буфера вывода для серверного компонента наиболее новой версии не осуществляют, а вместо этого его объем задают равным величине, большей, чем максимальная ожидаемая величина, получаемая в серверных компонентах предыдущих версий, например большим чем 32 КБ. То обстоятельство, что объем буфера вывода задан большим, чем величина, ожидаемая серверным компонентом, оповещает серверный компонент о том, что ему следует искать новый параметр предельного значения объема, которым для серверного компонента может являться, например, степень заполнения буфера вывода. Эти параметры автоматически сводят к минимуму количество циклов запросов-ответов, при этом имеет место лишь незначительное усложнение серверного компонента электронной почты, осуществляющего обработку ДВО.
Следует отметить, что порядок следования параметров, указанных в приведенной выше таблице и во всех аналогичных таблицах из этой заявки на изобретение, не обязательно соответствует, например, порядку передачи этих параметров через сеть или их сохранения в запоминающем устройстве клиентским компонентом электронной почты или серверным компонентом электронной почты, за исключением тех случаев, когда в явном виде утверждается обратное. Кроме того, для ясности изложения описание неизменяемых параметров может быть опущено.
В сети электронной почты одной из типичных задач протокола является обеспечение передачи объектов данных, например сообщений электронной почты, между клиентскими компонентами электронной почты и серверными компонентами электронной почты. Другими примерами таких объектов данных являются папки электронной почты, которые могут содержать сообщения электронной почты и иные объекты данных, а также объекты данных, представляющие собой информацию, связанную с папками (ИСП) (FAI), которая может, например, содержать правила обработки сообщений электронной почты или определять то, каким образом будут отображены объекты данных, содержащиеся в папке. Объекты данных могут быть "непрозрачными" по отношению к клиентскому компоненту электронной почты; то есть, в клиентском компоненте электронной почты может отсутствовать какое-либо средство интерпретации содержимого объекта данных. В альтернативном варианте объекты данных могут содержать именованные свойства, например сообщение электронной почты может содержать признаки, имеющие наименования "кому", "от кого", "тема", "важность", " основное содержимое 1", "основное содержимое 2", "основное содержимое 3", "вложение 1", "вложение 2" и так далее.
Одно из преимуществ сетей электронной почты, в которых объекты данных могут содержать передаваемые по сетям электронной почты именованные свойства, причем объекты данных являются "непрозрачными", состоит в наличии потенциальной возможности улучшения производительности протокола, обусловленной способностью передачи посредством протокола только части объекта данных. Наличие именованных свойств позволяет осуществлять передачу конкретных свойств объекта данных без необходимости передачи всего объекта данных.
Например, сообщение электронной почты может состоять из набора свойств заголовка и набора свойств основного содержимого (тела сообщения). Потребности клиентского компонента электронной почты могут быть такими, что протокол может сначала осуществлять передачу свойств заголовка, а затем осуществлять передачу свойств основного содержимого в более поздний момент времени или вообще не осуществлять их передачу. Наличие этого отличительного признака позволяет пользователю просматривать информацию заголовков нескольких сообщений до того, как будет выполнена загрузка всех сообщений полностью. С использованием этого отличительного признака может быть получено более тонкое управление использованием пропускной способности клиентским компонентом, что может оказать положительное воздействие на производительность протокола. Кроме того, этот отличительный признак может быть использован клиентским компонентом для обеспечения более низкой степени использования пропускной способности (например, загрузка основного содержимого может быть выполнена только для выбранных заголовков), что является особенно желательным в средах с низкой пропускной способностью.
Обязательное увеличение производительности протокола не происходит в том случае, если конфигурация серверного компонента установлена таким образом, что он осуществляет передачу свойств основного содержимого и заголовка за два отдельных цикла запроса-ответа (то есть по одному для заголовка и для основного содержимого). Например, если потребности клиентского компонента электронной почты таковы, что ему одновременно необходимы и свойства заголовка, и свойства основного содержимого, то в той ситуации, когда за один цикл запроса-ответа может быть осуществлено извлечение как заголовка, так и основного содержимого, может происходить снижение производительности протокола. Следовательно, простая операция разрешения того, чтобы объекты данных состояли из именованных свойств, не является сама по себе достаточной для того, чтобы она автоматически обеспечивала бы повышение производительности протокола. В действительности обеспечение повышения производительности протокола зависит от выбора свойств, из которых может состоять объект данных, и от того, каким образом они могут быть использованы протоколом. Этот выбор может зависеть от нескольких факторов, в том числе от потребностей клиентских компонентов электронной почты наиболее новых и предыдущих версий и от потребностей серверных компонентов электронной почты наиболее новых и предыдущих версий. Примерами потребностей клиентского компонента электронной почты являются, в том числе, обеспечение различных уровней срочности визуального отображения различной информации и соблюдение предпочтений, установленных пользователем клиентского компонента электронной почты. Примерами потребностей серверного компонента электронной почты являются, в том числе, эффективное запоминание и извлечение данных, а также эффективная обработка протокольных запросов.
В обычных средах электронной почты из известного уровня техники используют объекты данных, которые могут состоять из именованных свойств, например сообщение электронной почты, которое может содержать набор именованных свойств, соответствующий заголовкам, и набор именованных свойств основного содержимого, которые обеспечивают возможность выдачи запросов на раздельное получение этих двух наборов и/или выполнения их раздельной обработки. Другим примером из известного уровня техники является сообщение электронной почты, в котором набор именованных свойств основного содержимого содержит множество версий основного содержимого сообщения электронной почты, например, во множестве форматов сообщения электронной почты, например, в виде открытого текста, формата гипертекстового языка разметки (HTML), расширенного текстового формата (RTF) и так далее. В этой ситуации серверные компоненты электронной почты из известного уровня техники могут отвечать на запрос протокола на получение основного содержимого сообщения электронной почты несколькими способами. Наименее сложным способом ответа может являться передача всех версий основного содержимого сообщения электронной почты, но этот ответ может привести к увеличению степени использования пропускной способности.
На Фиг.7А показана часть процедуры, которую серверный компонент электронной почты предыдущей версии (из известного уровня техники) использует для ответа в этой ситуации. На этапе 701 серверный компонент электронной почты анализирует формат каждого основного содержимого сообщения электронной почты. Если один из форматов является заранее заданным стандартным форматом (например, форматом RTF), то в процедуре переходят к выполнению этапа 703 и осуществляют передачу основного содержимого сообщения электронной почты стандартного формата в клиентский компонент электронной почты, выдавший запрос. Если ни один из форматов не является заранее заданным стандартным форматом, то на этапе 701 выполняют переход к этапу 702, на котором осуществляют преобразование одной из версий основного содержимого сообщения электронной почты в стандартный формат. Подпрограмма, изображенная Фиг.7А, может быть использована также и в том случае, когда имеется только одна версия основного содержимого сообщения электронной почты, но это основное содержимое сообщения электронной почты может быть не представлено в стандартном формате, который требуется для протокола.
На Фиг.7Б показана часть процедуры, используемой в серверном компоненте электронной почты наиболее новой версии согласно настоящему изобретению. На этапе 704 осуществляют анализ протокольного запроса, приводящего к выполнению этой подпрограммы, используемой серверным компонентом электронной почты, на наличие флага НАИЛУЧШИЙ_ВАРИАНТ_ОСНОВНОГО_СОДЕРЖИМОГО (BEST_BODY). Флаг из этого примера и иные используемые здесь флаги применяют для того, чтобы серверный компонент электронной почты получил сведения о том, что клиентский компонент электронной почты является компонентом наиболее новой версии и желает выполнить функцию, соответствующую флагу. Также могут быть использованы и другие способы оповещения. Например, в случае обнаружения клиентского компонента электронной почты наиболее новой версии функция может быть выполнена по умолчанию.
В любом случае, если флаг НАИЛУЧШИЙ_ВАРИАНТ_ОСНОВНОГО_СОДЕРЖИМОГО (BEST_BODY) не обнаружен, то на этапе 704 выполняют переход к этапу 701 и продолжают процедуру так, как указано в описании Фиг.7А.
Если флаг обнаружен, то в процедуре переходят к выполнению этапа 705, при которой осуществляют выбор наилучшего варианта основного содержимого сообщения электронной почты для его передачи в клиентский компонент электронной почты, выдавший запрос. При наличии только одного основного содержимого сообщения электронной почты, соответствующего запрошенному сообщению электронной почты, оно является наилучшим. При наличии нескольких доступных вариантов основного содержимого сообщения электронной почты, например, имеющих различные форматы, серверный компонент электронной почты осуществляет выбор наилучшего из них согласно, например, заранее заданному ранжированию форматов основного содержимого сообщения электронной почты (например, формат RTF, формат HTML, открытый текст). Затем в процедуре переходят к выполнению этапа 703, на котором осуществляют передачу выбранного основного содержимого сообщения электронной почты в клиентский компонент электронной почты. В этом варианте осуществления изобретения клиентский компонент электронной почты может быть способен осуществлять визуальное отображение множества форматов основного содержимого сообщения электронной почты, освобождая таким образом серверный компонент электронной почты от необходимости осуществлять преобразование вариантов основного содержимого сообщения электронной почты в стандартный формат. Кроме того, при необходимости клиентский компонент электронной почты может осуществлять преобразование наилучшего варианта основного содержимого сообщения электронной почты в иной формат.
Поскольку серверный компонент электронной почты освобожден от выполнения задачи преобразования основного содержимого сообщений электронной почты, то настоящее изобретение обеспечивает повышение производительности. Кроме того, серверный компонент электронной почты наиболее новой версии может отвечать на протокольные запросы, поступающие из клиентского компонента электронной почты предыдущей версии, за счет всего лишь незначительного его усложнения.
ДВО могут быть использованы для обеспечения дублирования папок электронной почты между серверным компонентом электронной почты и клиентским компонентом электронной почты. Запрос на синхронизацию папки может быть выдан, например, посредством ДВО СинхронизироватьПапку (SynchFolder). В тех случаях, когда клиентский компонент электронной почты способен осуществлять визуальное отображение нестандартных форматов основного содержимого сообщения электронной почты, в ДВО СинхронизироватьПапку (SynchFolder) может быть установлен флаг НАИЛУЧШИЙ_ВАРИАНТ_ОСНОВНОГО_СОДЕРЖИМОГО (BEST_BODY), указывающий, что серверный компонент электронной почты может выбрать наилучший формат из доступных вариантов основного содержимого сообщения электронной почты вместо того, чтобы посылать в сервер запрос на возврат основного содержимого сообщения электронной почты в стандартном формате. Серверный компонент электронной почты может осуществлять надлежащую обработку ДВО как с наличием флага НАИЛУЧШИЙ_ВАРИАНТ_ОСНОВНОГО_СОДЕРЖИМОГО (BEST_BODY), так и без него, за счет всего лишь незначительного его усложнения. Для обеспечения обмена данными с серверами предыдущих версий и наиболее новых версий ДВО могут содержать, например, параметры, указанные в приведенной ниже таблице:
ДВО, которая может быть использована в протоколе для связи с серверами предыдущих версий | ДВО, которая может быть использована в протоколе для связи с серверами наиболее новых версий | |
Идентификатор ДВО (ROP ID) | СинхронизироватьПапку (SynchFolder) | СинхронизироватьПапку (SynchFolder) |
Новые параметры | Не доступны | Флаг НАИЛУЧШИЙ_ВАРИАНТ_ ОСНОВНОГО_СОДЕРЖИМОГО (BEST_BODY): при его установке серверный компонент электронной почты выбирает наилучший вариант основного содержимого сообщения электронной почты для его передачи в клиентский компонент электронной почты. Отсутствует необходимость в преобразовании основного содержимого сообщения электронной почты в заранее заданный стандартный формат. |
На Фиг.8А, Фиг.8Б и Фиг.8В показано несколько различных существующих режимов передачи набора сообщений электронной почты между серверным компонентом электронной почты и клиентским компонентом электронной почты. В каждом из режимов каждое сообщение электронной почты содержит именованные свойства, в том числе набор заголовков и набор основного содержимого, а в папке содержится несколько сообщений электронной почты. На Фиг.8А показан режим передачи элементов данных целиком. На чертеже показано, что сначала осуществляют передачу заголовка 801 первого сообщения электронной почты, а затем осуществляют передачу основного содержимого 802 первого сообщения электронной почты, после чего осуществляют передачу заголовка 803 второго сообщения электронной почты, а затем - основного содержимого 804 второго сообщения электронной почты, и так далее до тех пор, пока не будет выполнена передача набора сообщений электронной почты. На Фиг.8Б показан режим первоочередной передачи заголовков. В этом режиме сначала осуществляют передачу заголовка 805 первого сообщения электронной почты, затем - заголовка 806 второго сообщения электронной почты и так далее до тех пор, пока не будет выполнена передача заголовков всех сообщений электронной почты, и только после этого осуществляют передачу основного содержимого 807 первого сообщения электронной почты, затем - передачу основного содержимого 808 второго сообщения электронной почты и так далее до тех пор, пока не будет выполнена передача набора сообщений электронной почты. На Фиг.8В показан режим передачи только заголовков. Как подсказывает название режима, в ответ на запрос на передачу набора сообщений электронной почты осуществляют передачу только заголовков 809 сообщений электронной почты. Передачу основного содержимого 810 сообщений электронной почты осуществляют только в ответ на дополнительный запрос, выраженный в явной форме. В любом из этих режимов последовательность передачи может быть временно прервана запросом клиентского компонента электронной почты, имеющим более высокий приоритет, например, на получение конкретного основного содержимого сообщения электронной почты.
Папка электронной почты представляет собой пример целевого объекта (объекта назначения) для запроса на передачу набора сообщений электронной почты. Однако папка электронной почты может содержать и другие объекты данных, помимо сообщений электронной почты. Как описано выше, режимы передачи часто характеризуются способом передачи заголовков сообщений электронной почты и основного содержимого сообщений электронной почты как, например, режим первоочередной передачи заголовков и режим передачи только заголовков. При таких режимах передачи попытка передачи объектов данных, для которых набор именованных свойств заголовков и/или набор признаков с присвоенными наименованиями, соответствующий основному содержимому, не могут быть строго определены, может привести к нарушению работы протокола. Один аспект настоящего изобретения предотвращает возникновение этой ситуации за счет обеспечения возможности передачи таких объектов данных, для которых наборы (набор) именованных свойств заголовков и/или основного содержимого не являются строго (полностью) определенными, и могут быть переданы целиком, а не по частям. Этот вариант осуществления изобретения может быть проиллюстрирован на примере из Фиг.8Г. В этом примере передача данных между серверным компонентом электронной почты и клиентским компонентом электронной почты может происходить в режиме передачи только заголовков. Соответственно, сначала осуществляют передачу заголовка 811 первого сообщения электронной почты, а затем следующим кандидатом на передачу становится объект 812 данных. Для объекта 812 данных, которым является, например, ИСП, набор именованных свойств заголовков, не является строго определенным, поэтому осуществляют передачу этого объекта целиком. Следующий кандидат на передачу имеет строго определенный набор именованных свойств заголовков (то есть объект данных, являющийся кандидатом на передачу, действительно обладает всеми именованными свойствами, явно заданными клиентским компонентом электронной почты, как принадлежащие набору именованных свойств заголовков), и поэтому осуществляют передачу только лишь заголовка 813 сообщения электронной почты.
Примером одного из способов реализации этого аспекта настоящего изобретения является использование флага, например флага ИГНОРИРОВАТЬ_РЕЖИМ_ПО_НАЛИЧИЮ_ИСП (IGNORE_MODE_ON_FAI), который может входить в состав ДВО синхронизации, например, вышеописанной ДВО СинхронизироватьПапку (SynchFolder). Серверный компонент электронной почты может осуществлять надлежащую обработку ДВО как при наличии флага ИГНОРИРОВАТЬ_РЕЖИМ_ПО_НАЛИЧИЮ_ИСП (IGNORE_MODE_ON_FAI), так и без него, за счет всего лишь незначительного его усложнения. Для обеспечения дублирования папки электронной почты между серверным компонентом электронной почты и клиентским компонентом электронной почты ДВО могут содержать параметры, указанные в приведенной ниже таблице:
ДВО, которая может быть использована в протоколе для связи с серверами предыдущих версий | ДВО, которая может быть использована в протоколе для связи с серверами наиболее новых версий | |
Идентификатор ДВО (ROP ID) | СинхронизироватьПапку (SynchFolder) | СинхронизироватьПапку (SynchFolder) |
Новые параметры | Не доступны | Флаг ИГНОРИРОВАТЬ_ РЕЖИМ_ПО_НАЛИЧИЮ_ИСП (IGNORE_MODE_ON_FAI): при его установке для информационных объектов, например, ИСП, не содержащих строго определенного набора именованных свойств заголовка и/или основного содержимого, серверный компонент электронной почты может отвечать на запрос на выполнение передачи путем передачи всего информационного объекта целиком вне зависимости от существующего режима передачи. |
Сообщения электронной почты обычно адресуют одному или большему количеству пользователей сети электронной почты. Сообщение электронной почты можно считать доставленным в том случае, если оно принято серверным компонентом электронной почты для его запоминания. Сеть электронной почты может содержать несколько серверных компонентов электронной почты. Протокол сети электронной почты, как правило, обладает определенной стратегией ограничения количества серверных компонентов электронной почты, который пользователь сети электронной почты должен проверять на наличие новых сообщений. Обычным примером является стратегия базового (домашнего) сервера, которая обеспечивает прием сообщений электронной почты, адресованных конкретному пользователю сети электронной почты, только одним конкретным серверным компонентом электронной почты, который именуют базовым сервером пользователя. В этом случае клиентский компонент электронной почты может быть выполнен таким образом, чтобы, например, при периодической проверке наличия новых сообщений электронной почты или при регистрации для уведомления о поступлении новых сообщений электронной почты он обращался только в базовый сервер.
На Фиг.9 продемонстрировано, что даже в простом примере стратегии базового сервера могут возникать затруднения. В примере, показанном на Фиг.9, конкретный серверный компонент 901 электронной почты сначала выделяют конкретному пользователю сети электронной почты в качестве его базового сервера. С течением времени выделенный пользователю базовый сервер заменяют иными серверными компонентами 903 и 905 электронной почты, обычно из административных соображений. Серверные компоненты 901, 903 и 905 электронной почты могут быть различными, например физически или логически, или могут представлять собой компоненты различных версий. С момента времени T0 до момента времени T1 клиентский компонент 902 электронной почты может осуществлять обмен информацией только с серверным компонентом 901 электронной почты, затем до момента времени T2 клиентский компонент 904 электронной почты может осуществлять обмен информацией только с серверным компонентом 903 электронной почты, а после этого клиентский компонент 906 электронной почты может осуществлять обмен информацией только с серверным компонентом 905 электронной почты. Клиентские компоненты 902, 904 и 906 электронной почты могут быть одинаковыми или различными. После момента времени T2 серверные компоненты 901 и 903 электронной почты могут существовать или могут отсутствовать. Эти затруднения являются особенно существенными при операции дублирования хранилищ для сообщений электронной почты, описание которой приведено ниже.
Серверный компонент электронной почты может осуществлять запоминание сообщений электронной почты в определенном хранилище для сообщений электронной почты, которое может быть реализовано, например, с использованием известных технологий баз данных. Серверный компонент электронной почты может иметь одно или большее количество таких хранилищ для сообщений. Пользователь сети электронной почты может иметь свое «домашнее» хранилище для сообщений. Изменение «домашних» хранилищ для сообщений может приводить к тем же самым эффектам, которые изложены в разделе описания, относящемся к изменениям базовых серверов.
Некоторые протоколы сети электронной почты обладают способностью дублирования части хранилища для сообщений электронной почты в запоминающем устройстве, являющемся локальным по отношению к клиентскому компоненту электронной почты. Дублирование частей удаленного хранилища для сообщений электронной почты в локальном запоминающем устройстве для хранения электронной почты может обеспечить повышение производительности протокола и/или воспринимаемой производительности протокола, например, за счет заблаговременного дублирования всех новых сообщений электронной почты в локальном запоминающем устройстве для хранения электронной почты до того, как от пользователя сети электронной почты поступит явный запрос на их просмотр. Такое дублирование может также обеспечить дополнительные функциональные возможности для клиентского компонента электронной почты, например предоставление пользователю сети электронной почты возможности просмотра сообщений электронной почты во время пауз вследствие прерывания связи в сети.
В сетевой среде электронной почты простое дублирование может быстро стать неэффективным. Например, если серверный компонент электронной почты содержит одно сообщение электронной почты, относящееся к конкретному пользователю сети электронной почты, и это сообщение уже было дублировано в клиентский компонент этого пользователя сети, а для этого пользователя сети электронной почты поступает новое сообщение электронной почты, то в ответ на запрос на выполнение простого дублирования по-прежнему необходимо осуществлять передачу двух сообщений электронной почты. Если же после выполнения дублирования этих двух сообщений электронной почты поступает еще одно новое сообщение электронной почты, то в ответ на запрос на выполнение простого дублирования по-прежнему необходимо осуществлять передачу теперь уже трех сообщений электронной почты и так далее. В некоторых протоколах сети электронной почты предусмотрено инкрементное дублирование хранилищ для сообщений электронной почты, что облегчает эту задачу. При инкрементном дублировании в ответ на запрос на выполнение дублирования необходимо осуществлять передачу только сведений об изменениях, произошедших в хранилище для сообщений электронной почты после предыдущего успешного инкрементного дублирования, например, если единственным изменением за время, прошедшее с последнего успешного инкрементного дублирования, является поступление нового сообщения электронной почты, то в ответ на запрос на выполнение инкрементного дублирования необходимо осуществить передачу только лишь нового сообщения электронной почты.
На Фиг.10 более подробно показан пример протокола, обеспечивающего возможность инкрементного дублирования. Хранилище для сообщений электронной почты может быть подразделено на папки электронной почты. Дублирование каждой папки электронной почты может быть осуществлено независимо от других, что обеспечивает более тонкое управление процессом дублирования. В этом примере процесс инкрементного дублирования именуют синхронизацией, поскольку он содержит операцию передачи изменений из клиентского компонента 501 электронной почты в серверный компонент 502 электронной почты, а также из серверного компонента 502 электронной почты в клиентский компонент 501 электронной почты. После получения запроса 1001 на выполнение синхронизации серверный компонент 502 электронной почты выполняет обработку ДВО СинхронизироватьПапку (SynchFolder). Эта ДВО содержит параметр ИДпапки (идентификатор папки (folderID)) (на чертеже не показан) и параметр большой_двоичный_объект_характеризующий_состояние0 (stateblob0). Параметр ИДпапки (folderID) идентифицирует папку электронной почты, которая является целевой для запроса 1001 на выполнение синхронизации. Параметр большой_двоичный_объект_характеризующий_состояние0 (stateblob0) содержит информацию, позволяющую серверному компоненту 502 электронной почты определить то, произошли ли изменения в папке электронной почты со времени выполнения ее последней синхронизации и какие именно. Если запрос 1001 представляет собой самый первый запрос на выполнение клиентским компонентом 501 электронной почты синхронизации целевой папки, то серверный компонент 502 электронной почты определяет, произошло ли изменение целевой папки электронной почты в хранилище для сообщений электронной почты по сравнению с пустой папкой. В качестве ответа 1002 на запрос 1001 серверный компонент 502 электронной почты передает сведения о любых изменениях в клиентском компоненте 501 электронной почты, включая любые сообщения электронной почты и/или иные объекты данных, добавленные в целевую папку, и перечень любых сообщений электронной почты и/или иных объектов данных, удаленных из целевой папки. Серверный компонент 502 электронной почты также создает новый параметр большой_двоичный_объект_характеризующий_состояние1 (stateblob1), отображающий состояние целевой папки в клиентском компоненте 501 электронной почты непосредственно после выполнения синхронизации, а также осуществляет передачу этого параметра большой_двоичный_объект_характеризующий_состояние1 (stateblob1) в ответе 1002. Когда клиентский компонент 501 электронной почты посылает следующий запрос 1003 на выполнение синхронизации той же самой папки, что и в запросе 1001, то запрос 1003 будет содержать в качестве параметра тот же самый большой_двоичный_объект_характеризующий_состояние1 (stateblob1), который был возвращен в ответе 1002. Как и ранее, серверный компонент 502 электронной почты использует информацию, содержащуюся в параметре большой_двоичный_объект_характеризующий_состояние1 (stateblob1), для определения того, произошли ли изменения в целевой папке и какие именно, и осуществляет передачу сведений об этих изменениях вместе с вновь созданным параметром большой_двоичный_объект_характеризующий_состояние2 (stateblob2) обратно в клиентский компонент 501 электронной почты в ответе 1004.
Если объект данных, представляющий большой двоичный объект, характеризующий состояние, имеет большой объем, то это может оказать неблагоприятное воздействие на производительность протокола, поскольку его передачу в серверный компонент электронной почты и из него осуществляют, например, в каждом запросе на выполнение синхронизации папки электронной почты. В некоторых протоколах сети электронной почты, в которых предусмотрена возможность синхронизации папок электронной почты, большой двоичный объект, характеризующий состояние, может состоять в основном из набора объектов данных «ИДизменения сообщения» (идентификатор изменения сообщения (message changeID)), идентифицирующих изменения в сообщениях электронной почты, замеченные клиентским компонентом электронной почты. Можно сказать, что клиентский и/или серверный компонент электронной почты замечает изменение в сообщении электронной почты при передаче измененного сообщения электронной почты в этот компонент.
Одной из целей использования объекта данных «ИДизменения сообщения» (message changeID) может являться однозначная идентификация изменения в сообщении электронной почты применительно ко всей сети электронной почты. В сети электронной почты, в которой используют стратегию базового сервера, базовый сервер пользователя может нести ответственность за привязку объекта данных «ИДизменения сообщения» (message changeID) к ранее незамеченному изменению сообщения электронной почты. Например, базовый сервер может использовать объекты данных «ИДизменения сообщения» (message changeID), содержащие объект данных «Идсервера» (идентификатор сервера (serverID)) и порядковый номер. Объект данных «Идсервера» (serverID) может однозначно идентифицировать серверный компонент электронной почты для всей сети электронной почты с использованием известных способов, например глобально уникальных идентификаторов. В тех случаях, когда такие идентификаторы сами являются большими по объему, вместо них в качестве указателя в таблице поиска идентификаторов, поддерживаемой серверным компонентом электронной почты, может служить объект данных ИДсервера (serverID). Порядковый номер может быть получен из счетчика, например, имеющего разрядность шесть байт, который является локальным по отношению к серверному компоненту электронной почты, то есть осуществляют его приращение на единицу при каждом приеме серверным компонентом электронной почты ранее незамеченного сообщения электронной почты для запоминания.
Для целей обсуждения, объект данных ИДизменения сообщения (message changeID) может быть представлен, например, как "S1:1", где 'S1' представляет собой объект данных ИДсервера (serverID) для первого серверного компонента электронной почты, а '1' представляет собой порядковый номер. Набор объектов данных ИДизменения сообщения (message changeID) может быть представлен, например, как "S1:1, S1:2, S1:3", где "S1:1", "S1:2" и "S1:3" являются последовательными объектами данных ИДизменения сообщения (message changeID), которые использует серверный компонент электронной почты, имеющий ИДсервера (serverID), равный S1.
Для тех случаев, в которых большой двоичный объект, характеризующий состояние, состоит в основном из набора объектов данных ИДизменения сообщения (message changeID), отображающих изменения сообщения электронной почты, замеченные клиентским компонентом электронной почты (набор "Замеченные Изменения Сообщения"), было разработано несколько способов кодирования этого набора для уменьшения его объема, например набор "S1:1, S1:2, S1:3, S1:4" может быть закодирован как "S1:1-4". Кроме того, серверный компонент электронной почты может гарантировать то, что используемые им порядковые номера всегда увеличиваются. В этом случае независимый набор "Замеченные Изменения Сообщения", например "S1:1, S1:3, S1:5, S1:7", может быть закодирован как "S1:1-7", то есть как интервал, включающий минимальный порядковый номер и максимальный порядковый номер, без потери функциональных возможностей.
В сценарии, изображенном на Фиг.9, набор "Замеченные Изменения Сообщения" может содержать иные объекты данных типа ИДизменения сообщения (message changeID), созданные серверными компонентами электронной почты (например, S1, S2), нежели те, которые созданы текущим базовым сервером (например, S3). Объект данных ИДизменения сообщения (message changeID), созданный текущим базовым сервером, может быть назван собственным объектом данных ИДизменения сообщения (message changeID), а объект данных ИДизменения сообщения (message changeID), созданный другими серверными компонентами электронной почты, может быть назван чужим объектом данных ИДизменения сообщения (message changeID). Протоколы сети электронной почты, обеспечивающие обмен информацией с серверными компонентами электронной почты предыдущих версий, не обеспечивают оптимизацию чужих независимых последовательностей объектов данных «ИДизменения сообщения» (message changeID) в качестве интервала, содержащего минимальный и максимальный порядковые номера, для каждого серверного компонента электронной почты. В приведенной ниже таблице продемонстрировано преимущество использования такой оптимизации в одном из вариантов осуществления настоящего изобретения:
Оптимизация, используемая в сервере предыдущей версии (текущий базовый сервер S3) | Оптимизация, используемая в сервере наиболее новой версии (текущий базовый сервер S3) | |
Набор "Замеченные Изменения Сообщения" до оптимизации | S1:1, S1:3, S1:5, S1:7 S2:1, S2:3, S2:5, S2:7 S3:1, S3:3, S3:5, S3:7 |
|
Набор "Замеченные Изменения Сообщения" после оптимизации | S1:1, S1:3, S1:5, S1:7 S2:1, S2:3, S2:5, S2:7 S3:1-7 |
S1:1-7 S2:1-7 S3:1-7 |
В одном из вариантов осуществления настоящего изобретения для обеспечения синхронизации папки электронной почты между серверным компонентом электронной почты и клиентским компонентом электронной почты используют ДВО, содержащие параметры, указанные в приведенной ниже таблице. Усовершенствованный способ кодирования большого двоичного объекта, характеризующего состояние, может быть реализован в серверном компоненте электронной почты путем всего лишь незначительного его усложнения.
Результат ДВО, который может быть использован в протоколе при обмене информацией с серверами предыдущих версий | Результат ДВО, который может быть использован в протоколе при обмене информацией с серверами наиболее новых версий | |
Идентификатор ДВО (ROP ID) | СинхронизироватьПапку (SynchFolder) | СинхронизироватьПапку (SynchFolder) |
Неизменные параметры, используемые в новом режиме | большой двоичный объект, характеризующий состояние: оптимизация, при которой оптимизацию независимых наборов чужих информационных объектов типа ИДизменения сообщения (message changeID) не производят. | большой двоичный объект, характеризующий состояние: усовершенствованная оптимизация, в том числе, независимых наборов чужих информационных объектов типа ИДизменения сообщения (message changeID). |
На Фиг.11А и Фиг.11Б показано различие между подпрограммой, которая может быть использована соответственно в сервере предыдущей версии и в сервере наиболее новой версии для ответа на ДВО СинхронизироватьПапку (SynchFolder). На Фиг.11А показаны этапы 1101, 1102 и 1103. При выполнении этапа 1101 создают исходный набор "Замеченные Изменения Сообщения". На этапе 1102 осуществляют оптимизацию элементов набора "Замеченные Изменения Сообщения", представляющие собой собственные объекты данных ИДизменения сообщения (message changeID). На этапе 1103 оптимизированный набор "Замеченные Изменения Сообщения" добавляют к объекту данных, представляющему собой большой двоичный объект, характеризующий состояние, который может быть передан вместе с ответом в клиентский компонент электронной почты, выдавший запрос на выполнение синхронизации. Фиг.11Б содержит дополнительный этап 1104, на котором показано, что также осуществляют оптимизацию тех элементов набора "Замеченные Изменения Сообщения", которые являются чужими объектами данных ИДизменения сообщения (message changeID), и которую выполняют перед этапом 1103, при которой набор "Замеченные Изменения Сообщения", подвергнутого теперь усовершенствованной оптимизации, добавляют к объекту данных, представляющему собой большой двоичный объект, характеризующий состояние.
Несмотря на то что операция подразделения хранилища для сообщений электронной почты на папки электронной почты действительно обеспечивает более тонкое управление процессом синхронизации, она не обеспечивает автоматическое улучшение производительности протокола и может привести к ухудшению производительности протокола. Например, некоторые протоколы требуют раздельного выполнения синхронизации каждой папки хранилища для сообщений. Каждая операция синхронизации обычно содержит некоторые накладные расходы, и эти накладные расходы могут быть значительными. Примером операций, которые могут иметь значительные накладные расходы, являются операции синхронизации, в которых используют объекты данных, представляющие собой большие двоичные объекты, характеризующие состояние. В случае синхронизации всего хранилища сообщений протоколы, требующие раздельного выполнения синхронизации каждой папки хранилища сообщений, могут иметь недостатки по сравнению с протоколами, требующими меньшего количества операций синхронизации.
Желательной целью клиентского компонента электронной почты является синхронизация всего хранилища сообщений и поддержка синхронизации. В обычных клиентских компонентах электронной почты из известного уровня техники была предпринята попытка достичь этой цели даже в том случае, когда это приводило к существенному неблагоприятному воздействию на производительность протокола. Один из аспектов настоящего изобретения состоит в том, что он позволяет свести к минимуму неблагоприятное воздействие на протокол при достижении этой цели за счет использования таблицы глубокой иерархической структуры. Обычные серверные компоненты электронной почты из известного уровня техники не были способны обеспечить создание таблицы глубокой иерархической структуры.
В тех случаях, когда хранилища сообщений электронной почты подразделены на папки электронной почты, эти папки электронной почты могут быть упорядочены в иерархическую структуру. На Фиг.12 показан пример иерархической структуры папок электронной почты. На Фиг.12 папка 1204 представляет собой папку нижележащего уровня по отношению к папке 1203. В свою очередь, папка 1203 представляет собой папку нижележащего уровня по отношению к папке 1202. Папка 1201 представляет собой корневую папку. Корневая папка не является папкой нижележащего уровня по отношению к любой другой папке. Все остальные папки представляют собой элементы иерархической структуры папок, для которых папка 1201 является корневой. Как правило, каждая папка в иерархической структуре папок не имеет прямых (непосредственных) ссылок на каждую из других папок. Папка может иметь прямые ссылки только лишь на папки нижележащего уровня, входящие в ее состав. Папка также может иметь прямые ссылки на любые папки, по отношению к которым она является папкой нижележащего уровня. Во многих случаях может иметь место ситуация, при которой единственной папкой, на которую каждая папка имеет прямую ссылку, является корневая папка иерархической структуры.
Таблица глубокой иерархической структуры может содержать информацию о каждой папке из иерархической структуры папок. Каждая папка может иметь свою строку в таблице глубокой иерархической структуры (иерархии). Таблица глубокой иерархии содержит такую информацию, которая может быть использована для определения того, произошло ли изменение содержимого папки электронной почты в течение конкретного промежутка времени. Определение наличия изменений в папке электронной почты в течение конкретного промежутка времени может быть осуществлено путем простого сравнения копии строки папки, взятой в начале этого промежутка времени, с копией строки этой папки, взятой в конце этого промежутка времени. В одном из вариантов осуществления изобретения каждая строка таблицы глубокой иерархии содержит следующие атрибуты:
Наименование атрибута | Тип атрибута | Примечания |
Идентификатор папки (ИД папки) |
ИДП (FID) |
Тип идентификатора папки (ИДП) содержит глобально уникальный идентификатор (GUID) и шестибайтовый порядковый номер. Это значение может быть использовано для однозначной идентификации папки электронной почты применительно к сети электронной почты. |
PR_LOCAL_COMMIT_TIME_MAX | Отметка времени | Эту отметку времени обновляют при каждом видоизменении содержимого папки. |
PR_DELETED_COUNT_TOTAL | QWORD | Это значение представляет собой отсчет общего количества элементов, когда-либо удаленных из папки. |
Обновление атрибутов строки папки электронной почты в таблице глубокой иерархии может быть выполнено при каждом изменении содержимого папки. Заявителями было установлено, что для эффективного осуществления обновления таблицы глубокой иерархии полезно иметь быструю и прямую ссылку на таблицу глубокой иерархии. Заявителями было установлено, что при попытке осуществить доступ к таблице глубокой иерархии необходимо иметь, как минимум, небольшое и предсказуемое количество уровней косвенного доступа. Например, размещение таблицы глубокой иерархии на произвольном уровне в иерархической структуре папок не обеспечивает предсказуемое количество уровней косвенного доступа. Поэтому в одном из вариантов осуществления настоящего изобретения таблица глубокой иерархии может быть связана с корневой папкой иерархической структуры папок хранилища сообщений электронной почты, принадлежащего пользователю сети электронной почты.
Процесс обмена информацией между клиентским компонентом электронной почты и серверным компонентом электронной почты может быть разделен на сеансы связи. Между сеансами связи может происходить потеря синхронизации хранилища сообщений электронной почты, например, во время пауз вследствие прерывания связи в сети. Для восстановления синхронизации хранилища сообщений электронной почты в начале сеанса связи в некоторых протоколах, обеспечивающих обмен информацией с серверными компонентами электронной почты предыдущих версий, используют ДВО СинхронизироватьПапку (SynchFolder) для каждой папки, входящей в состав иерархической структуры папок. Обычно между сеансами связи содержимое некоторых папок не изменяется. Результатом выполнения ДВО СинхронизироватьПапку (SynchFolder), имеющей в качестве целевого объекта неизменившуюся папку, является "нулевая синхронизация". Несмотря на то что "нулевая синхронизация" не приводит к каким-либо изменениям папки, передаваемой в клиентский компонент электронной почты, она, тем не менее, имеет соответствующие накладные расходы, например объект данных, представляющий собой большой двоичный объект, характеризующий состояние, который может иметь значительный объем.
На Фиг.13 показан вариант осуществления изобретения, предотвращающий такие результаты "нулевой синхронизации" за счет использования таблицы глубокой иерархии. В первом запросе 1301 клиентский компонент 501 электронной почты осуществляет передачу в серверный компонент 502 электронной почты ДВО (например, Получить ТаблицуИерархическойСтруктуры (GetHierarchyTable)), запрашивающей получение таблицы глубокой иерархии. В первом ответе 1302 осуществляют передачу копии таблицы глубокой иерархии в клиентский компонент 501 электронной почты. Как правило, клиентский компонент 501 электронной почты содержит предыдущую копию таблицы глубокой иерархии. Клиентский компонент 501 электронной почты может быстро определить то, какие именно папки, содержащиеся в хранилище сообщений электронной почты пользователя в серверном компоненте 502 электронной почты, были подвергнуты изменению путем использования последовательного построчного сравнения строк двух копий. Затем осуществляют синхронизацию только тех папок, в которых произошли изменения, с использованием ДВО (например, СинхронизироватьПапку (SynchFolder)). При необходимости, запрос 1303 и ответ 1304 могут быть повторены для обеспечения синхронизации измененных папок. После успешного выполнения синхронизации может быть выполнено обновление копии таблицы глубокой иерархии в клиентском компоненте электронной почты таким образом, чтобы она соответствовала самой новой копии, переданной в ответе 1302. Если в клиентском компоненте 501 электронной почты отсутствует предыдущая копия таблицы глубокой иерархии, то может быть выполнена синхронизация всех папок, имеющих строку в самой новой копии.
После установления синхронизации хранилища сообщений электронной почты пользователя может быть обеспечена поддержка синхронизации путем периодического повторения вышеописанных операций начала сеанса связи (то есть путем опроса серверного компонента электронной почты), но эта схема имеет недостатки. Например, промежуток времени между опросами может быть намного более коротким, чем промежуток времени между изменениями в пользовательском хранилище сообщений электронной почты. В этом случае относительно большое количество операций сравнения таблиц глубокой иерархии указывают на отсутствие каких-либо изменений в папках. Такие операции сравнения, в сущности, являются бесполезными, поэтому протокол, способный предотвратить их выполнение, может оказаться более эффективным.
Некоторые сети электронной почты содержат средство подписки клиентского компонента электронной почты, для его уведомления серверным компонентом электронной почты, например, о том, что произошло изменение содержимого конкретной папки электронной почты. Некоторые клиентские компоненты электронной почты предыдущих версий действительно используют такое средство для поддержки синхронизации пользовательского хранилища сообщений электронной почты путем создания отдельной подписки на получение уведомлений о наличии изменений, соответствующих каждой папке, входящей в состав иерархии папок пользователя. В одном из вариантов осуществления настоящего изобретения клиентский компонент электронной почты может создавать только одну подписку на получение уведомлений о наличии изменений, связанных с таблицей глубокой иерархии. Единственная подписка является более эффективной, поскольку для ее создания требуется меньшее количество ДВО и расходуется меньший объем ресурсов со стороны сервера.
И вновь со ссылкой на Фиг.13, когда в первом запросе 1301 в начале сеанса связи с серверным компонентом 502 электронной почты клиентский компонент 501 электронной почты наиболее новой версии согласно одному из аспектов настоящего изобретения использует ДВО ПолучитьТаблицуИерархическойСтруктуры (GetHierarchyTable), происходит автоматическая подписка клиентского компонента 501 электронной почты на получение уведомлений о наличии изменений, связанных с таблицей глубокой иерархии, которую возвращают в ответе 1302. При возникновении изменений в папке электронной почты, содержащейся в пользовательском хранилище сообщений электронной почты в клиентском компоненте электронной почты, например, в папку добавляют сообщение электронной почты, также осуществляют обновление таблицы глубокой иерархии вышеописанным способом. Наличие изменений в таблице глубокой иерархии инициирует передачу в клиентский компонент 501 электронной почты предупреждения 1305 об уведомлении. Несмотря на то что предупреждение об уведомлении передают в ответ на подписку, размещенную посредством запроса 1301, оно не является частью цикла запросов-ответов в явном виде. Следовательно, результатом использования системы передачи уведомлений, предложенной в настоящем изобретении, является намного меньший объем накладных расходов в сети электронной почты.
Наличие единственной подписки может привести к передаче множества уведомлений. В одном из вариантов осуществления изобретения доставку предупреждающего сообщения осуществляют с использованием способа транспортировки данных в сети без установления соединения, например протокола передачи дейтаграмм пользователя/протокола сети Интернет (UDP/IP), но может быть использован и любой иной пригодный способ транспортировки данных в сети. В ответ на получение предупреждающего сообщения клиентский компонент 501 электронной почты посылает в серверный компонент 502 электронной почты запрос 1306, содержащий ДВО (например, ПолучитьУведомление (GetNotification)). В ответе 1307 в клиентский компонент 501 электронной почты передают любые измененные строки таблицы глубокой иерархии (то есть строки, соответствующие измененной папке, инициировавшей передачу уведомления). Затем клиентский компонент 501 электронной почты осуществляет синхронизацию только тех папок, в которых произошли изменения, с использованием ДВО (например, СинхронизироватьПапку (SynchFolder)).
Множество клиентских компонентов электронной почты могут иметь подписку на получение уведомлений о наличии изменений, связанных с одним и тем же объектом данных (например, с одной и той же папкой электронной почты), например, для обеспечения совместных функциональных возможностей. Как показано на Фиг.18, клиентские компоненты 1801, 1802 и 1803 электронной почты имеют подписку на получение уведомлений о наличии изменений, связанных с одним и тем же объектом данных (на чертеже не показан), находящимся в серверном компоненте 1804 электронной почты. Клиентский компонент 1803 электронной почты осуществляет передачу ДВО 1805 в серверный компонент 1804 электронной почты, что приводит к изменению объекта данных. В результате этого изменения серверный компонент 1804 электронной почты посылает в клиентские компоненты 1801, 1802 и 1803 электронной почты уведомления 1806, 1807 и 1808 о наличии изменений. Уведомления о наличии изменений могут содержать мало информации, помимо идентификатора объекта данных, подвергнутого изменению, так что, например, для клиентского компонента электронной почты может отсутствовать какой-либо способ определения причины, вызвавшей конкретное изменение. Если объектом данных является, например, папка электронной почты, то передача уведомлений 1806, 1807 и 1808 о наличии изменений может привести к тому, что каждый клиентский компонент 1801, 1802 и 1803 электронной почты начинает синхронизацию измененной папки. Поскольку в этом примере ответственность за изменение несет клиентский компонент 1803 электронной почты, то результатом будет "нулевая синхронизация".
По вышеописанным причинам может оказаться желательным исключить операции синхронизации, результатом которых является "нулевая синхронизация". Однако описанный режим передачи уведомлений не всегда может быть нежелательным, и некоторые клиентские компоненты электронной почты могут иметь зависимость от него. Одним из аспектов настоящего изобретения является предоставление клиентскому компоненту электронной почты возможности устанавливать конфигурацию режима передачи уведомлений для серверных компонентов электронной почты наиболее новых версий с целью повышения производительности протокола и одновременно обеспечивать неизменный режим передачи уведомлений для клиентских компонентов электронной почты предыдущих версий.
На Фиг.19А показан режим передачи уведомлений, который может быть обеспечен серверными компонентами электронной почты предыдущих версий. На Фиг.19Б показан режим передачи уведомлений с перестраиваемой конфигурацией согласно одному из аспектов настоящего изобретения. При необходимости клиентский компонент электронной почты наиболее новой версии может указать серверному компоненту электронной почты, что он способен перейти в режим передачи уведомлений, показанный на Фиг.19Б, например, путем передачи вместе с запросом флага, которым в примере, показанном на Фиг.19Б, является флаг ИГНОРИРОВАТЬ_СОБСТВЕННЫЙ (IGNORE_OWN).
На этапе 1901 производят выбор следующего возможного абонента из набора подписавшихся абонентов, которым передают уведомления. На этапе 1904 производят анализ подписки на наличие флага ИГНОРИРОВАТЬ_СОБСТВЕННЫЙ (IGNORE_OWN). Если флаг отсутствует, то на этапе 1904 переходят к этапу 1902, на котором осуществляют передачу уведомления абоненту, претендующему на его получение (кандидату). Если флаг обнаружен, то от этапа 1904 переходят к этапу 1905, на котором снова производят анализ подписки для определения того, действительно ли это уведомление инициировано данным абонентом. Эта операция определения может быть выполнена, например, путем анализа идентификатора сеанса связи ("ИДсеанса" ("sessionID")), соответствующего тому сеансу связи, который был использован для размещения подписки. Идентификатор "ИДсеанса" ("sessionID") может содержать, например, глобально уникальный идентификатор и шестибайтовый порядковый номер. Уведомление также анализируют на соответствие идентификатора "ИДсеанса" ("sessionID") инициатору уведомления. Если эти два идентификатора совпадают, то передачу уведомления не производят. Это приводит к тому, что клиентский компонент электронной почты, инициировавший уведомление, также не получит это уведомление. Затем в подпрограмме переходят к выполнению этапа 1903, описание которого приведено ниже.
Если подписавшийся абонент не является инициатором уведомления, то идентификатор сеанса связи, соответствующий подписке, отличается от идентификатора сеанса связи, соответствующего инициатору уведомления, и от этапа 1905 переходят к этапу 1902, на котором осуществляют передачу уведомления. Затем в процедуре переходят к выполнению операции 1903, на которой определяют, имеются ли еще другие подписавшиеся абоненты, которым следует послать уведомление. При их наличии в подпрограмме возвращаются к выполнению операции 1901, а в противном случае выполнение этой подпрограммы завершают.
Как указано выше, клиентский компонент электронной почты, использующий кэш-память для хранения сообщений электронной почты, может, например, посредством ДВО запрашивать выполнение синхронизации сообщений или иных объектов данных между локальным клиентским запоминающим устройством данных и запоминающим устройством данных, доступным в серверном компоненте электронной почты. Аналогичным образом, клиентский компонент электронной почты может выдать запрос на копирование сообщений из серверного запоминающего устройства в клиентское запоминающее устройство. В любом случае передача запроса может быть осуществлена с использованием режима быстрой передачи.
Как правило, при запросе синхронизации или копирования сообщений или иных данных, например файлов, запрос (например, ДВО) содержит указатель всех сообщений, синхронизацию которых желательно выполнить. Этот перечень может быть автоматически создан серверным компонентом электронной почты, например, с использованием вышеописанного отличительного признака, которым является большой двоичный объект, характеризующий состояние. Для серверных компонентов электронной почты предыдущих версий (из известного уровня техники) наличие ошибки в одном сообщении или объекте данных, указанном в запросе ДВО, приводит к неудачному исходу для всех элементов данных, указанных в запросе. Этот процесс показан на чертеже Фиг.14А, на котором на этапе 1401 передачу запроса, содержащего ДВО (например, ПодготовкаВП (FXPrepare)), осуществляют вместе с набором идентификаторов сообщений ИДсообщения (messageID), предназначенных для копирования или синхронизации. В серверном компоненте 502 электронной почты устанавливают режим быстрой передачи и на этапе 1402 осуществляют передачу идентификатора быстрой передачи в клиентский компонент 501 электронной почты. Затем клиентский компонент 501 электронной почты выдает запрос на копирование или синхронизацию объектов данных посредством запроса, содержащего, например, ДВО ПолучитьБуферВП (FXGetBuffer) (операция 1403). При попытке серверного компонента 502 электронной почты открыть запрошенные сообщения возникает ошибка в одном или в большем количестве сообщений или иных объектов данных. Примерами ошибок являются, в том числе, искажение сообщения или объекта данных, сбой сервера, нехватка памяти в серверном компоненте 502 электронной почты или обнаружение вируса в объекте данных.
После обнаружения ошибки выполняют этап 1404, на котором серверный компонент 502 электронной почты передает сообщение о неисправимой ошибке ДВО в составе потока данных, направляемых в клиентский компонент 501 электронной почты. По существу, происходит нарушение синхронизации, сообщения, входящие в состав набора ИДсообщения (messageID), остаются несинхронизированными или нескопированными, а клиентский компонент электронной почты 501 не получает большой двоичный объект, характеризующий состояние, или аналогичную информацию обновления. В этом случае клиентский компонент 501 электронной почты должен выдать запрос на синхронизацию или копирование объектов данных в другой момент времени. Существует вероятность того, что, если в серверном компоненте 502 электронной почты ошибка не исправлена, передача сообщений об ошибках может продолжаться и сообщения, входящие в состав набора ИДсообщения (messageID), никогда не смогут быть синхронизированы или скопированы.
Согласно одному из аспектов настоящего изобретения вместо сообщения о неисправимой ошибке ДВО серверный компонент электронной почты наиболее новой версии может осуществлять передачу информацию об ошибках, относящихся к конкретному объекту данных (например, к сообщению электронной почты), таким образом, чтобы имело место нарушение синхронизации только для этого объекта данных. Наличие этой возможности позволяет осуществлять передачу, синхронизацию или копирование сообщений или иных объектов данных, указанных в ДВО или в ином запросе, даже в том случае, если в состав ответа входит сообщение или иной объект данных, содержащий ошибку.
Одним из примеров того, каким образом следует осуществлять обработку ошибки, относящейся к конкретному объекту, является следующий: серверный компонент электронной почты наиболее новой версии может послать сообщение об ошибках в составе потока данных для объекта данных, имеющего ошибку в объекте. В этом примере для обеспечения простоты ссылок ошибку именуют как ИнформацияОбОшибкеВП (FXErrorInfo). При необходимости ИнформацияОбОшибкеВП (FXErrorInfo), более подробное описание которой приведено ниже, может содержать такую информацию, как, например, ИД сообщения (идентификатор сообщения), соответствующий объекту данных, содержащему ошибку, и дополнительную информацию о причине неудачной передачи сообщения.
На Фиг.14Б показана операция синхронизации, при которой ошибка возникает в сообщении M3. Наличие ошибки приводит к тому, что ответ 1405 ПолучитьБуферВП (FXGetBuffer) содержит сообщение M1 и сообщение M2, после которых следует ИнформацияОбОшибкеВП (FXErrorInfo), а затем сообщение M4. Информация ИнформацияОбОшибкеВП (FXErrorInfo) позволяет клиентскому компоненту 501 электронной почты получить сведения о том, какое именно сообщение содержало ошибку, и синхронизировать все другие сообщения, содержащиеся в ответе. Если сообщения об ошибке ИнформацияОбОшибкеВП (FXErrorInfo) содержит информацию о причине возникновения ошибки, то клиентский компонент может соответствующим образом реагировать на эту информацию, например, путем визуального отображения сообщения об ошибке для пользователя.
В приведенной ниже таблице показан пример формата, который может иметь ИнформацияОбОшибкеВП (FXErrorInfo):
ИнформацияОбОшибкеВП (FXErrorInfo) | ||
Наименование атрибута | Тип атрибута | Примечания |
Версия | СЛОВО (WORD) | Версия этой структуры. |
Код ошибки | СЛОВО УДВОЕННОЙ ДЛИНЫ (DWORD) | |
Идентификатор сообщения | ИДС (MID) | Тип идентификатора сообщения (ИДС) содержит глобально уникальный идентификатор (GUID) и шестибайтовый порядковый номер. Он представляет собой идентификатор сообщения, вызвавшего ошибку |
... | Сюда может быть добавлено ноль или большее количество атрибутов. | |
Длина вспомогательного поля | ULONG | Объем следующего массива. |
Вспомогательное поле | Массив типа БАЙТ (BYTE) | Неструктурированный массив для передачи подробных данных об ошибке. |
Из таблицы видно, что приведенный в качестве примера формат содержит атрибут версии, код ошибки и идентификатор сообщения ИДсообщения (messageID). Кроме того, при необходимости к нему можно добавить один или большее количество атрибутов. К тому же, как указано выше, может быть задано вспомогательное поле для передачи подробных данных об ошибке. По существу, может быть задан атрибут, задающий длину поля подробных данных об ошибке (например, массив), и может быть предусмотрено наличие поля, которое может представлять собой, например, неструктурированный массив для передачи подробных данных об ошибке. Как указано выше, клиентский компонент 501 электронной почты может осуществлять необходимую обработку подробных данных об ошибке.
ИнформацияОбОшибкеВП (FXErrorInfo) позволяет осуществлять полную синхронизацию первого ответа, в результате чего в клиентский компонент 501 электронной почты передают, например, большой двоичный объект, характеризующий состояние, или иную информацию. Поскольку клиентский компонент электронной почты является теперь синхронизированным вплоть до сообщения M4, то следующий запрос 1406 на выполнение синхронизации может привести к передаче ответа 1407, содержащего сообщения, идущие после сообщения M4 (например, M5 и M6).
Для указания того, что клиентский компонент 501 электронной почты является компонентом наиболее новой версии и, следовательно, способен осуществлять обработку сообщения ИнформацияОбОшибкеВП (FXErrorInfo), может быть установлен флаг, например флаг ВосстановлениеРежимаВП (FXRecoverMode), передача которого может быть выполнена вместе с ДВО, посредством которой выдают запрос на выполнение синхронизации или копирования. Для установления связи между клиентским компонентом 501 электронной почты и серверным компонентом 502 электронной почты, способным осуществлять обработку сообщения ИнформацияОбОшибкеВП (FXErrorInfo), могут быть использованы и другие указатели.
Когда серверный компонент 502 электронной почты посылает одно или большее количество сообщений или иных объектов данных в клиентский компонент 501 электронной почты, поток данных, направляемый в клиентский компонент электронной почты, может быть разделен или ограничен посредством тег свойств (например, обозначенных как "ptags"). Например, перечень сообщений может содержать для каждого сообщения тег свойств (ptag) начала сообщения и тег свойств (ptag) конца сообщения. Между тегами свойств (ptags) начала и конца может находиться тег свойств (ptag) списка свойств и тег свойств (ptag) темы, который может содержать признак строки. После тега свойств (ptag) темы могут следовать сами данные о теме. Этот перечень может содержать и другие теги свойств.
В том случае, когда при передаче сообщения возникает ошибка, ИнформацияОбОшибкеВП (FXErrorInfo) может быть представлена в виде тега свойств (ptag) и может иметь двоичные свойства, например, как указано в приведенной выше таблице. Ниже приведен пример потока данных, содержащего как успешно переданное сообщение, так и сообщение, в котором возникла ошибка. В случае возникновения ошибки тег свойств (ptag) конца сообщения для этого конкретного сообщения не используют, а тег свойств (ptag) ИнформацияОбОшибкеВП (FXErrorInfo) является последним тегом свойств (ptag) для этого сообщения.
ptagMessageListStart (тег свойств начала перечня сообщений)
ptagMessageStart (тег свойств начала сообщения)
ptagPropList (тег свойств списка свойств)
ptagSubject [PT_STRING] (тег свойств темы [ПРИЗНАК_СТРОКА])
"Re: Your email" ("Ответ: Ваша электронная почта")
...
ptagMessageEnd (тег свойств конца сообщения)
ptagMessageStart (тег свойств начала сообщения)
...
ptagFXErrorInfo [PT_BINARY]
(тег свойств ИнформацияОбОшибкеВП [ПРИЗНАК_БИНАРНЫЙ])
[Содержимое описано в таблице]
ptagMessageStart (тег свойств начала сообщения)
...
ptagMessageEnd (тег свойств конца сообщения)
ptagMessageListEnd (тег свойств конца перечня сообщений)
На Фиг.15А показаны операции, которые серверный компонент 502 электронной почты может использовать для передачи сообщений в клиентский компонент 501 электронной почты предыдущей версии. Процедуру начинают с выполнения операции 1501, при которой осуществляют подготовку набора сообщений, например, путем размещения набора сообщений в хранилище данных, предназначенных для быстрой передачи. На этапе 1502 начинают потоковую передачу сообщения, например, сразу же после того, как оно было помещено в пересылочный буфер серверного компонента 502 электронной почты. При возникновения ошибки во время потоковой передачи сообщения выполняют этап 1504, при котором осуществляют потоковую передачу сообщения о неисправимой ошибке ДВО в клиентский компонент 501 электронной почты. После этого выполнение подпрограммы завершают. Если же во время потоковой передачи сообщения ошибка не возникает, то выполняют этап 1503, при котором определяют, имеются ли в наборе другие сообщения. В случае их наличия процедура возвращается назад к этапу 1502, на котором осуществляют потоковую передачу следующего сообщения. В противном случае выполнение подпрограммы завершают.
На Фиг.15Б показана процедура обработки набора сообщений серверным компонентом 502 электронной почты наиболее новой версии. Выполняемые этапы являются различными в зависимости от того, является ли клиентский компонент электронной почты компонентом наиболее новой версии или компонентом предыдущих версий. Этапы 1501-1504 представляют собой этапы, выполняемые при наличии клиентского компонента электронной почты предыдущих версий, и они являются теми же самыми, что и этапы, описанные в предыдущем абзаце и имеющие одинаковые номера позиций.
Если на этапе 1502 при потоковой передаче сообщения обнаружена ошибка, то выполняют этап 1505, при которой определяют, содержит ли запрос флаг, например флаг ВосстановлениеРежимаВП (FXRecoverMode). Если запрос содержит флаг, то клиентский компонент 501 электронной почты является компонентом наиболее новой версии, и на этапе 1505 выполняют переход к этапу 1506, на котором осуществляют потоковую передачу информации ИнформацияОбОшибкеВП (FXErrorInfo) в клиентский компонент 501 электронной почты. Затем процедура может быть продолжена путем выполнения этапа 1503. Если запрос не содержит флаг, то от этапа 1505 выполняют переход к этапу 1504, на котором осуществляют потоковую передачу сообщения о неисправимой ошибке ДВО. После этого выполнение подпрограммы завершают.
Как видно из описания, наличие флага в запросе позволяет продолжать процесс потоковой передачи за счет разрешения потоковой передачи сообщения ИнформацияОбОшибкеВП (FXErrorInfo) вместо отказа от нее и передачи сообщения о неисправимой ошибке ДВО. Передачу флага осуществляет клиентский компонент 501 электронной почты наиболее новой версии. Клиентские компоненты электронной почты предыдущих версий не включают флаг в состав запроса, и, следовательно, как описано выше, возникновение ошибки приводит к передаче сообщения о неисправимой ошибке ДВО в составе потока данных.
При желании, в альтернативном варианте осуществления может быть осуществлена передача сообщения об ошибках (например, ИнформацияОбОшибкеВП (FXErrorInfo)), относящихся к конкретным свойствам сообщения или иного объекта данных, а не ко всему сообщению. Например, может быть осуществлена передача сообщения ИнформацияОбОшибкеВП (FXErrorInfo), относящегося к основному содержимому сообщения, или к вложению в сообщение. В этом случае клиентский компонент 501 электронной почты может осуществлять синхронизацию или копирование свойств, которые переданы успешно и без ошибок, и не осуществляет синхронизацию или копирование только тех свойств, которые содержат ошибки.
Иногда сообщение или иной объект данных могут иметь достаточный объем для того, чтобы в их состав входило множество ответов ПолучитьБуферВП (FXGetBuffer). Для обеспечения обработки таких сообщений клиентский компонент 501 электронной почты может содержать логическое устройство возврата, посредством которого он может удалить любое частично принятое сообщение, а затем после получения сообщения об ошибках перейти к выполнению приема дальнейших сообщений надлежащим способом.
Иногда может оказаться желательным, чтобы клиентскому компоненту электронной почты были предоставлены данные обратной связи о ходе выполнения операции копирования или синхронизации объектов данных, например сообщений электронной почты. Согласно одному из аспектов настоящего изобретения клиентский компонент 501 электронной почты наиболее новой версии может указывать, что он способен осуществлять обработку в режимах индикации хода выполнения операции, например, путем передачи в серверный компонент 502 электронной почты флага, например, РЕЖИМ_ИНДИКАЦИИ_ХОДА_ВЫПОЛНЕНИЯ (PROGRESS_MODE), при запросе синхронизации или копирования объектов данных. В ответ серверный компонент 502 электронной почты наиболее новой версии может передавать вместе с сообщениями разнообразную информацию, например данные об общем объеме всех сообщений, об общем количестве сообщений и об общем объеме каждого сообщения, либо какие-либо одни из этих данных, либо любую их совокупность.
Например, как показано на Фиг.16А, для клиентского компонента 501 электронной почты предыдущей версии в ответ на запрос (1601 и 1603) на выполнение быстрой передачи набора сообщений клиентский компонент 501 электронной почты принимает сообщения. Как показано на Фиг. 16А, сообщения получают в виде двух ответов 1604 и 1606. В клиентских компонентах 501 электронной почты предыдущих версий, использующих способ быстрой передачи, индикатор хода выполнения операции потоковой передачи сообщений клиенту отсутствует.
Однако, как показано на Фиг.16Б, в ответе 1607 на выданный клиентским компонентом электронной почты запрос на получение набора сообщений серверный компонент 502 электронной почты может предоставлять данные об общем количестве передаваемых объектов данных и об общем объеме всех передаваемых объектов данных. Эта информация изображена на Фиг. 16Б как "Pобщ" (Pall). Серверный компонент 502 электронной почты наиболее новой версии может также предоставлять данные об объеме каждого сообщения, которые обозначены на Фиг. 16Б как "P1, P2, P3, …". Кроме того, при необходимости, информация, соответствующая каждому сообщению и всей группе сообщений, может содержать дополнительную информацию о том, является ли каждое сообщение информацией, связанной с папками, (ИСП) или действительно представляет собой сообщение электронной почты. В одном из вариантов осуществления изобретения в ответ на запрос на выполнение быстрой передачи всегда осуществляют передачу информации, изображенной на Фиг.16Б как "Pобщ" (Pall), даже в случае передачи нулевых объектов данных, что обеспечивает упрощение обработки потока данных.
Пример формата данных об объеме и количестве всех передаваемых объектов данных показан в приведенной ниже таблице.
IncrSyncProgressMode (Приращение при синхронизации в режиме индикации хода выполнения передачи) |
||
Наименование атрибута | Тип атрибута | Примечания |
Версия | СЛОВО (WORD) (например, 16-битовое целое число) |
Версия этой структуры. |
cAssocMsgs | СЛОВО УДВОЕННОЙ ДЛИНЫ (DWORD) (например, 32-битовое целое число) |
Количество передаваемых объектов данных ИСП. |
IITotalAssocMsgSize | СЛОВО УЧЕТВЕРЕННОЙ ДЛИНЫ (QWORD) (например, 64-битовое целое число) |
Общий объем всех передаваемых объектов данных ИСП. |
cNormalMsgs | СЛОВО УДВОЕННОЙ ДЛИНЫ (DWORD) | Количество передаваемых сообщений электронной почты. |
IITotalNormalMsgSize | СЛОВО УЧЕТВЕРЕННОЙ ДЛИНЫ (QWORD) | Общий объем всех передаваемых сообщений электронной почты. |
Как видно из таблицы, могут быть заданы отдельные атрибуты для количества объектов данных ИСП, для общего объема всех объектов данных ИСП, для количества передаваемых сообщений электронной почты и для общего объема всех передаваемых сообщений электронной почты. При необходимости к этому формату могут быть добавлены и другие дополнительные атрибуты и их совокупности.
В приведенной ниже таблице показан формат данных об объеме и иной информации, передача которой может быть осуществлена в каждом сообщении.
IncrSyncProgressModePerMsg (Приращение при синхронизации в режиме индикации хода выполнения передачи сообщения) |
||
Наименование атрибута | Тип атрибута | Примечания |
Объем сообщения | ДЛИНА (LONG) | Объем следующего сообщения. |
Флаг ИСП | ЛОГИЧЕСКИЙ (BOOL) | Указывает, является ли следующее сообщение ИСП. |
Как видно из таблицы, формат содержит данные об объеме следующего сообщения и о том, является ли следующее сообщение ИСП или нет.
На Фиг.17А и Фиг.17Б показаны операции потоковой передачи набора сообщений соответственно для компонентов электронной почты предыдущих версий и компонентов электронной почты наиболее новой версии. Операции, показанные на Фиг.17А, аналогичны операциям 1501-1503 из Фиг.15А. На Фиг.17Б клиентским компонентом 501 электронной почты наиболее новой версии передан флаг РЕЖИМ_ИНДИКАЦИИ_ХОДА_ВЫПОЛНЕНИЯ (PROGRESS_MODE), например, вместе с ДВО. После того как выполнена подготовка набора сообщений, на этапе 1701 определяют наличие флага. В случае его наличия выполняют этап 1702, при которой осуществляют передачу данных о ходе выполнения всей операции передачи, после чего переходят к выполнению этапа 1502, на котором осуществляют потоковую передачу первого сообщения. Если флаг отсутствует, то от этапа 1701 выполняют переход непосредственно к этапу 1502.
После выполнения потоковой передачи первого сообщения переходят к выполнению операции 1703, на которой определяют доступность флага. В случае его доступности от этапа 1703 выполняют переход к этапу 1704, на котором осуществляют потоковую передачу данных о ходе выполнения операции передачи каждого сообщения. Затем переходят к выполнению этапа 1503, описание которого приведено выше. Если флаг не доступен, то от этапа 1703 выполняют переход непосредственно к этапу 1503.
Ниже приведен пример потока данных для серверного компонента наиболее новой версии, осуществляющего передачу данных в клиентский компонент наиболее новой версии. Поток данных аналогичен вышеописанному потоку данных, но дополнительно содержит теги (ptags) для данных о ходе выполнения всей операции передачи (ptagIncrSyncProgressMode), которые могут, например, иметь свойства двоичного объекта. Кроме того, в каждом сообщении предоставляют данные о ходе выполнения операции передачи каждого сообщения, например, в виде тега ptagIncrSyncProgressModePerMsg.
PtagIncrSyncProgressMode [PT_BINARY]
[Содержимое описано в таблице]
ptagMessageListStart
PtagIncrSyncProgressModePerMsg [PT_BINARY]
[Содержимое описано в таблице]
ptagMessageStart
ptagPropList
ptagSubject [PT_STRING]
"Ответ: Ваша электронная почта"
("Re: Your email")
...
ptagMessageEnd
PtagIncrSyncProgressModePerMsg [PT_BINARY]
[Содержимое описано в таблице]
ptagMessageStart
...
ptagMessageEnd
PtagIncrSyncProgressModePerMsg [PT_BINARY]
[Содержимое описано в таблице]
ptagMessageStart
...
ptagMessageEnd
ptagMessageListEnd
В продемонстрированном примере теги (ptags), содержащие данные о ходе выполнения всей операции передачи (тег "Приращение при синхронизации в режиме индикации хода выполнения передачи" (ptagIncrSyncProgressMode)) и теги (ptags) для данных о ходе выполнения передачи сообщения (тег "Приращение при синхронизации в режиме индикации хода выполнения передачи сообщения" (PtagIncrSyncProgressModePerMsg)), расположены соответственно перед перечнем сообщений и перед каждым сообщением. Однако структура потоковой передачи объектов данных может быть изменена таким образом, чтобы данные о ходе выполнения операции передачи находились внутри сообщений или внутри перечня сообщений. Кроме того, структура потоковой передачи объектов данных может быть изменена таким образом, чтобы полностью устранить теги (ptags), разграничивающие сообщения и/или перечни сообщений.
Клиентский компонент электронной почты, принимающий данные о ходе выполнения операции передачи, может использовать эти данные для определения хода синхронизации или копирования объектов данных, поступающих из серверного компонента электронной почты, и может использовать данные о ходе выполнения операции передачи сообщения для определения хода выполнения операции передачи каждого отдельного сообщения. Эта информация может быть полезной, например, для отслеживания информации о ходе выполнения операции синхронизации, поступающей в реальном масштабе времени.
Существует несколько различных наборов символов, которые могут быть использованы для сохранения сообщения электронной почты или иных объектов данных. Например, для сохранения букв на английском языке наиболее часто используют Американский стандартный код для обмена информацией (ASCII). Однако код ASCII является недостаточным для сохранения символов для всех языках, поскольку он основан на 8-битовых символах. Следовательно, код ASCII может быть использован для представления только лишь 256 символов, что является достаточным для английского языка, но недостаточным для языков, содержащих большее количество символов. С другой стороны в наборе символов типа Уникод для каждого символа используют 16 битов (два байта), и, следовательно, он может содержать большее количество символов, чем код ASCII. Уникод может содержать 65536 символов и, следовательно, может быть использован для кодирования почти всех языков мира. Уникод содержит входящий в его состав набор символов ASCII.
В общем случае, клиентские компоненты 501 электронной почты предыдущих версий содержат заданную кодовую страницу или набор символов и/или данные о соответствующем им языке. Например, клиентский компонент 501 электронной почты конкретной версии может содержать кодовую страницу немецкого языка, а клиентский компонент другой версии может содержать кодовую страницу ANSI (Американского национального института стандартизации). Иногда может оказаться желательным, чтобы клиентский компонент 501 электронной почты получал сообщения электронной почты с иными наборами символов помимо заданной кодовой страницы. Согласно одному из аспектов настоящего изобретения клиентский компонент наиболее новой версии может обеспечивать принудительную передачу всех сообщений электронной почты из серверного компонента электронной почты в формате Уникода. После получения сообщений электронной почты клиентским компонентом 501 электронной почты сообщения электронной почты, имеющие формат Уникода, могут быть преобразованы в сообщения, соответствующие кодовой странице клиента, или, в альтернативном варианте, могут быть сохранены в формате Уникод.
Для указания того, что клиентский компонент 501 электронной почты требует предоставления сообщений электронной почты в формате Уникод, клиентский компонент 501 электронной почты может, например, осуществлять передачу флага в серверный компонент 502 электронной почты, например флага ПРИНУДИТЕЛЬНАЯ_ПЕРЕДАЧА_В_ФОРМАТЕ_УНИКОД (FORCEUNICODE). Передача флага может быть осуществлена вместе с запросом, которым является, например, ДВО. Если серверный компонент 502 электронной почты является компонентом наиболее новой версии, то серверный компонент 502 электронной почты может осуществлять передачу сообщений электронной почты в формате Уникод при наличии таких сообщений или может осуществлять преобразование сообщений электронной почты из других наборов символов в Уникод.
На Фиг.20 показаны этапы предоставления конкретного набора символов для сообщения согласно одному из аспектов настоящего изобретения. Процедуру начинают с этапа 2001, на котором серверный компонент 502 электронной почты извлекает сообщение из своего запоминающего устройства данных. На этапе 2002 определяют наличие флага ПРИНУДИТЕЛЬНАЯ_ПЕРЕДАЧА_В_ФОРМАТЕ_УНИКОД (FORCEUNICODE). Если он отсутствует, то от этапа 2002 выполняют переход к этапу 2003, на котором серверный компонент 502 электронной почты предоставляет сообщение электронной почты в формате заданной кодовой страницы клиентского компонента электронной почты, при необходимости осуществляя его преобразование.
В случае наличия флага ПРИНУДИТЕЛЬНАЯ_ПЕРЕДАЧА_В_ФОРМАТЕ_УНИКОД (FORCEUNICODE) от этапа 2002 выполняют переход к этапу 2004, на котором определяют, действительно ли сообщение запомнено в формате Уникод. Если это так, то на этапе 2004 выполняют переход к этапу 2005, на котором осуществляют передачу сообщения в клиентский компонент 501 электронной почты в виде набора символов Уникода. Если сообщение сохранено не в формате Уникод, то на этапе 2004 выполняют переход к этапу 2006, на котором осуществляют преобразование сообщения в Уникод, а затем переходят к этапу 2005, на котором осуществляют передачу сообщения в клиентский компонент электронной почты в формате Уникод.
Все приведенные здесь ссылки, в том числе, на публикации, на заявки на изобретение и на патенты, тем самым включены сюда путем ссылки в том же самом объеме, как и при указании того, что каждая из этих ссылок по отдельности непосредственно включена сюда путем ссылки и изложена здесь в полном объеме.
Использование неопределенных артиклей, "определенных артиклей" и аналогичных объектов ссылок применительно к описанию изобретения (особенно применительно к приведенной ниже формуле изобретения) следует истолковывать таким образом, что они охватывают собой как единственное число, так и множественное число, если в описании не указано обратное или если это явно не противоречит контексту. Термины "содержащий", "имеющий", "в том числе" и "входящий в состав" следует истолковывать как термины, не вносящие ограничений (то есть означают "содержащий, но это не является ограничивающим признаком",), если не указано иное. Подразумевают, что приведенное здесь перечисление диапазонов значений просто служит способом краткой индивидуальной ссылки на каждое отдельное значение в пределах этого диапазона, если не указано иное, а каждое отдельное значение включено в состав описания, как будто бы здесь приведено отдельное его описание. Все описанные здесь способы могут быть выполнены в любом надлежащем порядке, если здесь не указан иной способ действий или если это явно не противоречит контексту. Подразумевают, что любой и все приведенные здесь примеры или формулировки типа "приведенный в качестве примера" ("например") используют для лучшего объяснения изобретения, и они не налагают ограничений на объем патентных притязаний изобретения, если не заявлено иное. Никакие формулировки, содержащиеся в описании, не следует истолковывать как указывающие на наличие какого-либо незаявленного признака, являющегося существенным для практического использования изобретения.
Здесь приведено описание предпочтительных вариантов осуществления настоящего изобретения, в том числе наилучший вариант его осуществления, известный авторам изобретения. Видоизменения этих предпочтительных вариантов осуществления изобретения могут стать очевидными для обычных специалистов в данной области техники после прочтения приведенного выше описания. Авторы изобретения ожидают, что эти видоизменения могут быть целесообразно использованы квалифицированными специалистами в данной области техники, и авторы изобретения полагают, что настоящее изобретение может иметь иное практическое применение, чем описанный здесь конкретный вариант его применения. Следовательно, настоящее изобретение охватывает собой все видоизменения и эквиваленты предмета изобретения, изложенные в приложенной формуле изобретения, в соответствии с соответствующими применяемыми правовыми нормами. Кроме того, под объем патентных притязаний настоящего изобретения подпадает любая совокупность вышеописанных признаков изобретения во всех возможных его видоизменениях, если не указано обратное или если это явно не противоречит контексту.
Claims (18)
1. Считываемый компьютером носитель, содержащий выполняемые компьютером команды, которые при их выполнении компьютерным устройством вынуждают это компьютерное устройство выполнять способ синхронизации папок на клиентском и серверных компонентах, содержащий этапы, на которых
поддерживают таблицу глубокой иерархии, причем каждая папка в иерархии папок имеет строку в таблице глубокой иерархии, при этом иерархия папок содержит множество папок, содержащих объекты данных электронной почты, причем упомянутое множество папок сохранено в серверном компоненте электронной почты, работающем в компьютерной системе,
обновляют строки для папок, когда содержимое этих папок модифицируется,
подписывают клиентский компонент электронной почты на таблицу глубокой иерархии,
в ответ на изменение в таблице глубокой иерархии посылают уведомление на клиентский компонент электронной почты,
принимают первый запрос, посланный клиентским компонентом электронной почты, в ответ на упомянутое уведомление,
в ответ на первый запрос посылают измененные строки в таблице глубокой иерархии на клиентский компонент электронной почты, и
после посылки измененных строк в таблице глубокой иерархии принимают второй запрос, посланный клиентским компонентом электронной почты, для синхронизации с папками серверного компонента электронной почты, которые были изменены, без синхронизации папок, которые не были изменены.
поддерживают таблицу глубокой иерархии, причем каждая папка в иерархии папок имеет строку в таблице глубокой иерархии, при этом иерархия папок содержит множество папок, содержащих объекты данных электронной почты, причем упомянутое множество папок сохранено в серверном компоненте электронной почты, работающем в компьютерной системе,
обновляют строки для папок, когда содержимое этих папок модифицируется,
подписывают клиентский компонент электронной почты на таблицу глубокой иерархии,
в ответ на изменение в таблице глубокой иерархии посылают уведомление на клиентский компонент электронной почты,
принимают первый запрос, посланный клиентским компонентом электронной почты, в ответ на упомянутое уведомление,
в ответ на первый запрос посылают измененные строки в таблице глубокой иерархии на клиентский компонент электронной почты, и
после посылки измененных строк в таблице глубокой иерархии принимают второй запрос, посланный клиентским компонентом электронной почты, для синхронизации с папками серверного компонента электронной почты, которые были изменены, без синхронизации папок, которые не были изменены.
2. Считываемый компьютером носитель по п.1, в котором клиентский компонент электронной почты автоматически подписывается в ответ на прием третьего запроса, посланного клиентским компонентом электронной почты, при этом третий запрос есть запрос на объект данных электронной почты в упомянутом множестве папок.
3. Считываемый компьютером носитель по п.2, в котором третий запрос содержит запрос на синхронизацию папки, в которой находится объект данных электронной почты, причем упомянутая папка является одной из упомянутого множества папок.
4. Считываемый компьютером носитель по п.3, в котором третий запрос содержит запрос копии объекта данных электронной почты.
5. Считываемый компьютером носитель, содержащий выполняемые компьютером команды, которые при их выполнении компьютерным устройством вынуждают это компьютерное устройство выполнять способ синхронизации папок на клиентском и серверных компонентах, содержащий этапы, на которых
подписываются на таблицу глубокой иерархии, причем каждая папка в иерархии папок имеет строку в таблице глубокой иерархии, при этом иерархия папок содержит множество папок, содержащих объекты данных электронной почты, причем упомянутое множество папок сохранено в серверном компоненте электронной почты, работающем в компьютерной системе, причем упомянутый серверный компонент электронной почты обновляет строки для папок, когда содержимое этих папок модифицируется;
принимают уведомление от серверного компонента электронной почты, когда сервер электронной почты обнаруживает, что имеет место изменение в по меньшей мере одной строке в таблице глубокой иерархии, причем упомянутая по меньшей мере одна строка соответствует по меньшей мере одной папке в упомянутом множестве папок,
в ответ на уведомление посылают первый запрос на серверный компонент электронной почты, причем первый запрос является запросом на по меньшей мере одну измененную строку,
принимают по меньшей мере одну измененную строку, и
после приема упомянутой по меньшей мере одной измененной строки посылают второй запрос на серверный компонент электронной почты, причем второй запрос является запросом на синхронизацию упомянутой по меньшей мере одной папки, которая была изменена, с серверным компонентом электронной почты.
подписываются на таблицу глубокой иерархии, причем каждая папка в иерархии папок имеет строку в таблице глубокой иерархии, при этом иерархия папок содержит множество папок, содержащих объекты данных электронной почты, причем упомянутое множество папок сохранено в серверном компоненте электронной почты, работающем в компьютерной системе, причем упомянутый серверный компонент электронной почты обновляет строки для папок, когда содержимое этих папок модифицируется;
принимают уведомление от серверного компонента электронной почты, когда сервер электронной почты обнаруживает, что имеет место изменение в по меньшей мере одной строке в таблице глубокой иерархии, причем упомянутая по меньшей мере одна строка соответствует по меньшей мере одной папке в упомянутом множестве папок,
в ответ на уведомление посылают первый запрос на серверный компонент электронной почты, причем первый запрос является запросом на по меньшей мере одну измененную строку,
принимают по меньшей мере одну измененную строку, и
после приема упомянутой по меньшей мере одной измененной строки посылают второй запрос на серверный компонент электронной почты, причем второй запрос является запросом на синхронизацию упомянутой по меньшей мере одной папки, которая была изменена, с серверным компонентом электронной почты.
6. Считываемый компьютером носитель по п.5, в котором подписка осуществляется автоматически в ответ на посылку третьего запроса, при этом третий запрос есть запрос объекта данных электронной почты в упомянутом множестве папок к серверному компоненту электронной почты.
7. Считываемый компьютером носитель по п.6, в котором второй запрос содержит запрос на синхронизацию папки, в которой находится объект данных электронной почты, причем упомянутая папка является одной из упомянутого множества папок.
8. Считываемый компьютером носитель по п.6, в котором третий запрос содержит запрос копии объекта данных электронной почты.
9. Реализуемый компьютером способ синхронизации папок на клиентском и серверных компонентах, содержащий этапы, на которых
подписываются посредством клиентского компонента электронной почты, работающего на компьютерном устройстве, на таблицу глубокой иерархии, причем каждая папка в иерархии папок имеет строку в этой таблице глубокой иерархии, при этом иерархия папок содержит множество папок, содержащих объекты данных электронной почты, причем таблица глубокой иерархии поддерживается серверным компонентом электронной почты так, что упомянутый серверный компонент электронной почты обновляет строки в таблице глубокой иерархии каждый раз, когда содержимое соответствующих папок в упомянутом множестве папок изменяется;
посылают посредством компьютерного устройства первый запрос на серверный компонент электронной почты, причем первый запрос является запросом на изменение в объекте данных электронной почты в по меньшей мере одной папке в упомянутом множестве папок,
принимают посредством компьютерного устройства уведомление, посланное серверным компонентом электронной почты, когда серверный компонент электронной почты обнаруживает, что имеет место изменение в по меньшей мере одной строке в таблице глубокой иерархии, и когда серверный компонент электронной почты обнаруживает, или что это изменение не вызвано клиентским компонентом электронной почты или что клиентский компонент электронной почты не обеспечил индикацию, чтобы подавить уведомления к клиентскому компоненту электронной почты на изменения в таблице глубокой иерархии, вызванные клиентским компонентом электронной почты, причем эта по меньшей мере одна строка соответствует по меньшей мере одной папке во множестве папок, которые были изменены, и
в ответ на уведомление посылают второй запрос на серверный компонент электронной почты, причем второй запрос является запросом на по меньшей мере одну измененную строку,
принимают упомянутую по меньшей мере одну измененную строку от серверного компонента электронной почты, и
после приема упомянутой по меньшей мере одной измененной строки посылают компьютерным устройством запрос синхронизации на серверный компонент электронной почты, причем запрос синхронизации является запросом на синхронизацию папки на клиентском компоненте электронной почты с по меньшей мере одной папкой, которая была изменена, без синхронизации неизмененных папок в упомянутом множестве папок.
подписываются посредством клиентского компонента электронной почты, работающего на компьютерном устройстве, на таблицу глубокой иерархии, причем каждая папка в иерархии папок имеет строку в этой таблице глубокой иерархии, при этом иерархия папок содержит множество папок, содержащих объекты данных электронной почты, причем таблица глубокой иерархии поддерживается серверным компонентом электронной почты так, что упомянутый серверный компонент электронной почты обновляет строки в таблице глубокой иерархии каждый раз, когда содержимое соответствующих папок в упомянутом множестве папок изменяется;
посылают посредством компьютерного устройства первый запрос на серверный компонент электронной почты, причем первый запрос является запросом на изменение в объекте данных электронной почты в по меньшей мере одной папке в упомянутом множестве папок,
принимают посредством компьютерного устройства уведомление, посланное серверным компонентом электронной почты, когда серверный компонент электронной почты обнаруживает, что имеет место изменение в по меньшей мере одной строке в таблице глубокой иерархии, и когда серверный компонент электронной почты обнаруживает, или что это изменение не вызвано клиентским компонентом электронной почты или что клиентский компонент электронной почты не обеспечил индикацию, чтобы подавить уведомления к клиентскому компоненту электронной почты на изменения в таблице глубокой иерархии, вызванные клиентским компонентом электронной почты, причем эта по меньшей мере одна строка соответствует по меньшей мере одной папке во множестве папок, которые были изменены, и
в ответ на уведомление посылают второй запрос на серверный компонент электронной почты, причем второй запрос является запросом на по меньшей мере одну измененную строку,
принимают упомянутую по меньшей мере одну измененную строку от серверного компонента электронной почты, и
после приема упомянутой по меньшей мере одной измененной строки посылают компьютерным устройством запрос синхронизации на серверный компонент электронной почты, причем запрос синхронизации является запросом на синхронизацию папки на клиентском компоненте электронной почты с по меньшей мере одной папкой, которая была изменена, без синхронизации неизмененных папок в упомянутом множестве папок.
10. Способ по п.9, в котором индикация содержит флаг, включенный в четвертый запрос, посланный клиентским компонентом электронной почты к серверному компоненту электронной почты, при этом четвертый запрос есть запрос на подписку на таблицу глубокой иерархии.
11. Способ по п.9, в котором по меньшей мере одна папка содержит объект данных электронной почты.
12. Способ по п.9, дополнительно содержащий этапы:
посылают клиентским компонентом электронной почты запрос таблицы к серверному компоненту электронной почты, причем запрос таблицы запрашивает таблицу глубокой иерархии,
принимают клиентским компонентом электронной почты текущую копию таблицы глубокой иерархии от серверного компонента электронной почты в ответ на запрос таблицы,
сравнивают клиентским компонентом электронной почты строки в текущей копии таблицы глубокой иерархии со строками в предыдущей копии таблицы глубокой иерархии, чтобы обнаружить папки в хранилище сообщений электронной почты клиентского компонента электронной почты, которые были изменены, причем предыдущая копия таблицы глубокой иерархии сохранена в клиентском компоненте электронной почты,
посылают клиентским компонентом электронной почты запрос синхронизации к серверному компоненту электронной почты, причем запрос таблицы запрашивает синхронизацию папок в хранилище сообщений электронной почты клиентского компонента электронной почты, которые были изменены.
посылают клиентским компонентом электронной почты запрос таблицы к серверному компоненту электронной почты, причем запрос таблицы запрашивает таблицу глубокой иерархии,
принимают клиентским компонентом электронной почты текущую копию таблицы глубокой иерархии от серверного компонента электронной почты в ответ на запрос таблицы,
сравнивают клиентским компонентом электронной почты строки в текущей копии таблицы глубокой иерархии со строками в предыдущей копии таблицы глубокой иерархии, чтобы обнаружить папки в хранилище сообщений электронной почты клиентского компонента электронной почты, которые были изменены, причем предыдущая копия таблицы глубокой иерархии сохранена в клиентском компоненте электронной почты,
посылают клиентским компонентом электронной почты запрос синхронизации к серверному компоненту электронной почты, причем запрос таблицы запрашивает синхронизацию папок в хранилище сообщений электронной почты клиентского компонента электронной почты, которые были изменены.
13. Считываемый компьютером носитель, содержащий выполняемые компьютером команды, которые при их выполнении компьютерным устройством вынуждают это компьютерное устройство выполнять способ синхронизации папок на клиентском и серверных компонентах, содержащий этапы, на которых
подписывают клиентский компонент электронной почты на таблицу глубокой иерархии, причем каждая папка в иерархии папок имеет строку в таблице глубокой иерархии, при этом иерархия папок содержит множество папок, содержащих объекты данных электронной почты, причем таблица глубокой иерархии поддерживается серверным компонентом электронной почты так, что серверный компонент электронной почты обновляет строки в таблице глубокой иерархии каждый раз, когда содержимое соответствующих папок в упомянутом множестве папок изменяется;
посылают первый запрос на серверный компонент электронной почты, причем первый запрос является запросом на изменение объекта данных электронной почты в по меньшей мере одной папке в упомянутом множестве папок,
принимают уведомление, посланное серверным компонентом электронной почты, когда серверный компонент электронной почты обнаруживает, что имело место изменение в по меньшей мере одной строке в таблице глубокой иерархии, и когда серверный компонент электронной почты обнаруживает, что это изменение не вызвано клиентским компонентом электронной почты или клиентский компонент электронной почты не обеспечил индикацию, чтобы подавить уведомления к клиентскому компоненту электронной почты об изменениях в таблице глубокой иерархии, вызванных клиентским компонентом электронной почты, причем эта по меньшей мере одна строка соответствует по меньшей мере одной папке во множестве папок, которые были изменены, и
в ответ на уведомление посылают второй запрос на серверный компонент электронной почты, причем второй запрос является запросом на по меньшей мере одну измененную строку,
принимают упомянутую по меньшей мере одну измененную строку от серверного компонента электронной почты, и
после приема упомянутой по меньшей мере одной измененной строки посылают третий запрос на серверный компонент электронной почты, причем третий запрос является запросом на синхронизацию папки на клиентском компоненте электронной почты с по меньшей мере одной папкой, которая была изменена, без синхронизации неизмененных папок в упомянутом множестве папок.
подписывают клиентский компонент электронной почты на таблицу глубокой иерархии, причем каждая папка в иерархии папок имеет строку в таблице глубокой иерархии, при этом иерархия папок содержит множество папок, содержащих объекты данных электронной почты, причем таблица глубокой иерархии поддерживается серверным компонентом электронной почты так, что серверный компонент электронной почты обновляет строки в таблице глубокой иерархии каждый раз, когда содержимое соответствующих папок в упомянутом множестве папок изменяется;
посылают первый запрос на серверный компонент электронной почты, причем первый запрос является запросом на изменение объекта данных электронной почты в по меньшей мере одной папке в упомянутом множестве папок,
принимают уведомление, посланное серверным компонентом электронной почты, когда серверный компонент электронной почты обнаруживает, что имело место изменение в по меньшей мере одной строке в таблице глубокой иерархии, и когда серверный компонент электронной почты обнаруживает, что это изменение не вызвано клиентским компонентом электронной почты или клиентский компонент электронной почты не обеспечил индикацию, чтобы подавить уведомления к клиентскому компоненту электронной почты об изменениях в таблице глубокой иерархии, вызванных клиентским компонентом электронной почты, причем эта по меньшей мере одна строка соответствует по меньшей мере одной папке во множестве папок, которые были изменены, и
в ответ на уведомление посылают второй запрос на серверный компонент электронной почты, причем второй запрос является запросом на по меньшей мере одну измененную строку,
принимают упомянутую по меньшей мере одну измененную строку от серверного компонента электронной почты, и
после приема упомянутой по меньшей мере одной измененной строки посылают третий запрос на серверный компонент электронной почты, причем третий запрос является запросом на синхронизацию папки на клиентском компоненте электронной почты с по меньшей мере одной папкой, которая была изменена, без синхронизации неизмененных папок в упомянутом множестве папок.
14. Способ уведомления об изменении данных электронной почты, содержащий этапы:
генерируют первым компьютерным устройством пакет данных, содержащий
первое поле данных, включающее в себя идентификационную информацию клиентского компонента электронной почты, причем упомянутый клиентский компонент электронной почты подписан на таблицу, при этом каждая папка в иерархии папок имеет строку в упомянутой таблице, иерархия папок содержит множество папок, содержащих объекты данных электронной почты, причем строка в упомянутой таблице соответствует изменению папки электронной почты в ответ на изменения, сделанные в упомянутой папке электронной почты, причем уведомление послано в клиентский компонент электронной почты в ответ на изменение, имеющее место в строке, соответствующей упомянутой папке электронной почты, и
второе поле данных, представляющее изменения, сделанные упомянутым клиентским компонентом электронной почты в объекте данных электронной почты в папке электронной почты; и
посылают индикацию, запрашивающую, чтобы уведомление не было послано в упомянутый клиентский компонент электронной почты об изменениях в упомянутой таблице, вызванных первым компьютерным устройством, и
посылают первым компьютерным устройством упомянутый пакет данных на второе компьютерное устройство.
генерируют первым компьютерным устройством пакет данных, содержащий
первое поле данных, включающее в себя идентификационную информацию клиентского компонента электронной почты, причем упомянутый клиентский компонент электронной почты подписан на таблицу, при этом каждая папка в иерархии папок имеет строку в упомянутой таблице, иерархия папок содержит множество папок, содержащих объекты данных электронной почты, причем строка в упомянутой таблице соответствует изменению папки электронной почты в ответ на изменения, сделанные в упомянутой папке электронной почты, причем уведомление послано в клиентский компонент электронной почты в ответ на изменение, имеющее место в строке, соответствующей упомянутой папке электронной почты, и
второе поле данных, представляющее изменения, сделанные упомянутым клиентским компонентом электронной почты в объекте данных электронной почты в папке электронной почты; и
посылают индикацию, запрашивающую, чтобы уведомление не было послано в упомянутый клиентский компонент электронной почты об изменениях в упомянутой таблице, вызванных первым компьютерным устройством, и
посылают первым компьютерным устройством упомянутый пакет данных на второе компьютерное устройство.
15. Способ по п.14, в котором индикация содержит флаг, включенный в запрос.
16. Считываемый компьютером носитель, содержащий выполняемые компьютером команды, которые при их выполнении компьютерным устройством вынуждают это компьютерное устройство выполнять способ синхронизации папок на клиентском и серверных компонентах, содержащий этапы, на которых
поддерживают таблицу глубокой иерархии, причем каждая папка в иерархии папок имеет строку в таблице глубокой иерархии, при этом иерархия папок содержит множество папок, содержащих объекты данных электронной почты, причем упомянутое множество папок сохранено в серверном компоненте электронной почты,
обновляют строки для папок, когда содержимое этих папок модифицируется,
подписывают множество клиентских компонентов электронной почты на таблицу глубокой иерархии,
принимают первый запрос от первого клиентского компонента электронной почты, причем упомянутый первый запрос является запросом на изменение в по меньшей мере одном из объектов электронной почты в по меньшей мере одной из множества папок, при этом первый клиентский компонент электронной почты является одним из подписанного множества клиентских компонентов электронной почты,
принимают второй запрос от первого клиентского компонента электронной почты, причем второй запрос содержит индикацию, что уведомления не должны быть посланы на первый клиентский компонент электронной почты в ответ на изменения, вызванные первым клиентским компонентом электронной почты, при этом индикация содержит флаг, включенный в упомянутый запрос, причем первый клиентский компонент электронной почты автоматически подписывается на таблицу глубокой иерархии в ответ на прием упомянутого запроса, и
в ответ на упомянутое изменение и упомянутую индикацию посылают уведомление об изменении на подписанное множество клиентских компонентов электронной почты, отличных от первого клиентского компоцента электронной почты, и не посылают уведомление на первый клиентский компонент электронной почты.
поддерживают таблицу глубокой иерархии, причем каждая папка в иерархии папок имеет строку в таблице глубокой иерархии, при этом иерархия папок содержит множество папок, содержащих объекты данных электронной почты, причем упомянутое множество папок сохранено в серверном компоненте электронной почты,
обновляют строки для папок, когда содержимое этих папок модифицируется,
подписывают множество клиентских компонентов электронной почты на таблицу глубокой иерархии,
принимают первый запрос от первого клиентского компонента электронной почты, причем упомянутый первый запрос является запросом на изменение в по меньшей мере одном из объектов электронной почты в по меньшей мере одной из множества папок, при этом первый клиентский компонент электронной почты является одним из подписанного множества клиентских компонентов электронной почты,
принимают второй запрос от первого клиентского компонента электронной почты, причем второй запрос содержит индикацию, что уведомления не должны быть посланы на первый клиентский компонент электронной почты в ответ на изменения, вызванные первым клиентским компонентом электронной почты, при этом индикация содержит флаг, включенный в упомянутый запрос, причем первый клиентский компонент электронной почты автоматически подписывается на таблицу глубокой иерархии в ответ на прием упомянутого запроса, и
в ответ на упомянутое изменение и упомянутую индикацию посылают уведомление об изменении на подписанное множество клиентских компонентов электронной почты, отличных от первого клиентского компоцента электронной почты, и не посылают уведомление на первый клиентский компонент электронной почты.
17. Считываемый компьютером носитель по п.16, в котором второй запрос содержит запрос на синхронизацию по меньшей мере одной из множества папок.
18. Считываемый компьютером носитель по п.16, в котором второй запрос содержит запрос копии по меньшей мере одного из объектов данных электронной почты.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US43786903P | 2003-01-03 | 2003-01-03 | |
US60/437,869 | 2003-01-03 | ||
US10/367,273 | 2003-02-14 | ||
US10/367,273 US7386590B2 (en) | 2003-01-03 | 2003-02-14 | System and method for improved synchronization between a server and a client |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2003138081/09A Division RU2346323C2 (ru) | 2003-01-03 | 2003-12-30 | Система и способ усовершенствованной синхронизации между сервером и клиентом |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2008127702A RU2008127702A (ru) | 2010-01-20 |
RU2421790C2 true RU2421790C2 (ru) | 2011-06-20 |
Family
ID=32511094
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2003138081/09A RU2346323C2 (ru) | 2003-01-03 | 2003-12-30 | Система и способ усовершенствованной синхронизации между сервером и клиентом |
RU2008127701/08A RU2477517C2 (ru) | 2003-01-03 | 2008-07-07 | Система и способ усовершенствованной синхронизации между сервером и клиентом |
RU2008127702/08A RU2421790C2 (ru) | 2003-01-03 | 2008-07-07 | Система и способ усовершенствованной синхронизации между сервером и клиентом |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2003138081/09A RU2346323C2 (ru) | 2003-01-03 | 2003-12-30 | Система и способ усовершенствованной синхронизации между сервером и клиентом |
RU2008127701/08A RU2477517C2 (ru) | 2003-01-03 | 2008-07-07 | Система и способ усовершенствованной синхронизации между сервером и клиентом |
Country Status (13)
Country | Link |
---|---|
US (5) | US7386590B2 (ru) |
EP (1) | EP1435585B1 (ru) |
JP (1) | JP4633365B2 (ru) |
KR (1) | KR101034421B1 (ru) |
CN (1) | CN100481821C (ru) |
AU (2) | AU2003268734B8 (ru) |
BR (1) | BR0306066A (ru) |
CA (1) | CA2452916C (ru) |
MX (1) | MXPA03011675A (ru) |
MY (1) | MY144908A (ru) |
PL (1) | PL364200A1 (ru) |
RU (3) | RU2346323C2 (ru) |
TW (1) | TWI269557B (ru) |
Families Citing this family (60)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7366760B2 (en) * | 2003-01-03 | 2008-04-29 | Microsoft Corporation | System and method for improved client server communications of email messages |
US7620688B2 (en) * | 2003-01-03 | 2009-11-17 | Microsoft Corporation | Progress mode for electronic mail component |
US7386590B2 (en) | 2003-01-03 | 2008-06-10 | Microsoft Corporation | System and method for improved synchronization between a server and a client |
US8230112B2 (en) * | 2003-03-27 | 2012-07-24 | Siebel Systems, Inc. | Dynamic support of multiple message formats |
US7373602B2 (en) * | 2003-05-28 | 2008-05-13 | Microsoft Corporation | Method for reading electronic mail in plain text |
US20050076085A1 (en) * | 2003-09-18 | 2005-04-07 | Vulcan Portals Inc. | Method and system for managing email attachments for an electronic device |
US7536440B2 (en) * | 2003-09-18 | 2009-05-19 | Vulcan Portals Inc. | Method and system for email synchronization for an electronic device |
US7921162B2 (en) * | 2004-07-19 | 2011-04-05 | The Go Daddy Group, Inc. | Notification system and method for domain name registrars |
US7546613B2 (en) * | 2004-09-14 | 2009-06-09 | Oracle International Corporation | Methods and systems for efficient queue propagation using a single protocol-based remote procedure call to stream a batch of messages |
US20060101064A1 (en) | 2004-11-08 | 2006-05-11 | Sharpcast, Inc. | Method and apparatus for a file sharing and synchronization system |
US8626719B2 (en) * | 2004-11-11 | 2014-01-07 | Emc Corporation | Methods of managing and accessing e-mail |
US8195746B2 (en) * | 2005-03-11 | 2012-06-05 | International Business Machines Corporation | Automatic off-line availability for document content linked in electronic mail messages |
US7305420B2 (en) * | 2005-05-25 | 2007-12-04 | Microsoft Corporation | Synchronizing modifiable documents with multiple clients using document subsections |
US20060277270A1 (en) * | 2005-06-03 | 2006-12-07 | Microsoft Corporation | Record and playback of server conversations from a device |
KR100640401B1 (ko) | 2005-07-13 | 2006-10-30 | 삼성전자주식회사 | 모바일 이메일 서버와 클라이언트 단말 간 동기 유지방법과 시스템 및 그 단말 |
US7610345B2 (en) * | 2005-07-28 | 2009-10-27 | Vaporstream Incorporated | Reduced traceability electronic message system and method |
US9282081B2 (en) | 2005-07-28 | 2016-03-08 | Vaporstream Incorporated | Reduced traceability electronic message system and method |
US7962585B2 (en) * | 2005-08-15 | 2011-06-14 | Microsoft Corporation | Partial item change tracking and synchronization |
US7844672B2 (en) * | 2005-08-25 | 2010-11-30 | International Business Machines Corporation | Methods, systems, and computer program products for managing email in a client-server environment |
US7454414B2 (en) * | 2005-08-30 | 2008-11-18 | International Business Machines Corporation | Automatic data retrieval system based on context-traversal history |
KR100705238B1 (ko) * | 2005-11-15 | 2007-04-06 | 엘지전자 주식회사 | 에러 체크 코드를 이용한 데이터 동기화 방법과 이를 위한이동 통신 단말기 및 서버 |
US7956358B2 (en) | 2006-02-07 | 2011-06-07 | Macronix International Co., Ltd. | I-shaped phase change memory cell with thermal isolation |
US7962566B2 (en) * | 2006-03-27 | 2011-06-14 | Sap Ag | Optimized session management for fast session failover and load balancing |
US7640249B2 (en) * | 2006-03-29 | 2009-12-29 | Sap (Ag) | System and method for transactional session management |
US9501803B2 (en) * | 2007-04-12 | 2016-11-22 | Siemens Industry, Inc. | Devices, systems, and methods for monitoring energy systems |
US10120733B2 (en) * | 2007-08-30 | 2018-11-06 | Red Hat, Inc. | Remote procedure call supporting multiple versions |
US20090327354A1 (en) * | 2008-06-26 | 2009-12-31 | Microsoft Corporation | Notification and synchronization of updated data |
US9477727B2 (en) | 2008-08-01 | 2016-10-25 | Sybase, Inc. | Abstracting data for use by a mobile device having occasional connectivity |
US8335762B2 (en) * | 2008-10-06 | 2012-12-18 | Microsoft Corporation | Resource tracking |
US20100153335A1 (en) * | 2008-12-12 | 2010-06-17 | Microsoft Corporation | Synchronizing multiple classes with disparate schemas in the same collection |
US20100268784A1 (en) * | 2009-04-17 | 2010-10-21 | Marc Henness | Data synchronization system and method |
US9336291B2 (en) * | 2009-12-30 | 2016-05-10 | Sybase, Inc. | Message based synchronization for mobile business objects |
US8788458B2 (en) | 2009-12-30 | 2014-07-22 | Sybase, Inc. | Data caching for mobile applications |
US8909662B2 (en) * | 2009-12-30 | 2014-12-09 | Sybase, Inc. | Message based mobile object with native PIM integration |
US10102242B2 (en) | 2010-12-21 | 2018-10-16 | Sybase, Inc. | Bulk initial download of mobile databases |
US8892569B2 (en) | 2010-12-23 | 2014-11-18 | Ianywhere Solutions, Inc. | Indexing spatial data with a quadtree index having cost-based query decomposition |
TWI452472B (zh) * | 2011-01-27 | 2014-09-11 | Hon Hai Prec Ind Co Ltd | 存取閘道器及其提供雲存儲服務方法 |
US9002926B2 (en) | 2011-04-22 | 2015-04-07 | Go Daddy Operating Company, LLC | Methods for suggesting domain names from a geographic location data |
US9110807B2 (en) | 2012-05-23 | 2015-08-18 | Sybase, Inc. | Cache conflict detection |
US8874682B2 (en) | 2012-05-23 | 2014-10-28 | Sybase, Inc. | Composite graph cache management |
US10057318B1 (en) | 2012-08-10 | 2018-08-21 | Dropbox, Inc. | System, method, and computer program for enabling a user to access and edit via a virtual drive objects synchronized to a plurality of synchronization clients |
US9547704B1 (en) * | 2012-10-22 | 2017-01-17 | Google Inc. | Email robustness checking |
US8806200B2 (en) * | 2012-11-30 | 2014-08-12 | Prakash Baskaran | Method and system for securing electronic data |
RU2527210C1 (ru) * | 2013-06-14 | 2014-08-27 | Общество с ограниченной ответственностью "Новые технологии презентаций" | Способ и система для передачи данных от веб-сервера клиентским терминальным устройствам посредством локальной беспроводной коммуникационной сети |
US9684918B2 (en) | 2013-10-10 | 2017-06-20 | Go Daddy Operating Company, LLC | System and method for candidate domain name generation |
US9715694B2 (en) | 2013-10-10 | 2017-07-25 | Go Daddy Operating Company, LLC | System and method for website personalization from survey data |
US10498777B2 (en) * | 2014-03-17 | 2019-12-03 | Citrix Systems, Inc. | Real-time push notifications for cloud-based applications |
US9501211B2 (en) | 2014-04-17 | 2016-11-22 | GoDaddy Operating Company, LLC | User input processing for allocation of hosting server resources |
US9660933B2 (en) | 2014-04-17 | 2017-05-23 | Go Daddy Operating Company, LLC | Allocating and accessing hosting server resources via continuous resource availability updates |
US9953105B1 (en) | 2014-10-01 | 2018-04-24 | Go Daddy Operating Company, LLC | System and method for creating subdomains or directories for a domain name |
US9779125B2 (en) | 2014-11-14 | 2017-10-03 | Go Daddy Operating Company, LLC | Ensuring accurate domain name contact information |
US9785663B2 (en) | 2014-11-14 | 2017-10-10 | Go Daddy Operating Company, LLC | Verifying a correspondence address for a registrant |
US9678799B2 (en) | 2015-02-12 | 2017-06-13 | International Business Machines Corporation | Dynamic correlated operation management for a distributed computing system |
US10587564B2 (en) * | 2015-03-05 | 2020-03-10 | Microsoft Technology Licensing, Llc | Tracking electronic mail messages in a separate computing system |
US10277549B2 (en) * | 2015-06-04 | 2019-04-30 | Apple Inc. | Prioritized email synchronization with server |
US11334596B2 (en) | 2018-04-27 | 2022-05-17 | Dropbox, Inc. | Selectively identifying and recommending digital content items for synchronization |
US11340760B2 (en) * | 2019-09-06 | 2022-05-24 | Dropbox, Inc. | Generating a customized organizational structure for uploading content to a cloud-based storage system |
US11329940B2 (en) | 2019-10-28 | 2022-05-10 | Microsoft Technology Licensing, Llc | Coordinated unread count for email applications |
CN113965580A (zh) * | 2020-06-29 | 2022-01-21 | 北京字节跳动网络技术有限公司 | 同步消息的方法和装置 |
CN114124925B (zh) * | 2020-08-25 | 2023-05-12 | 华为技术有限公司 | 一种电子邮件的同步方法及电子设备 |
Family Cites Families (76)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63205747A (ja) | 1987-02-13 | 1988-08-25 | インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン | 通信方法及びデータ処理システム |
RU2095857C1 (ru) | 1989-01-17 | 1997-11-10 | Филипс Электроникс Н.В. | Способ передачи информации с использованием носителя данных, носитель информации и устройство для воспроизведения информации с такого носителя |
US5606493A (en) | 1992-06-18 | 1997-02-25 | International Business Machines Corporation | Distributed applications processing network |
US5537551A (en) | 1992-11-18 | 1996-07-16 | Denenberg; Jeffrey N. | Data compression method for use in a computerized informational and transactional network |
US5325361A (en) | 1992-12-01 | 1994-06-28 | Legent Corporation | System and method for multiplexing data transmissions |
US5694561A (en) | 1994-12-12 | 1997-12-02 | Microsoft Corporation | Method and system for grouping and manipulating windows |
GB2300991B (en) * | 1995-05-15 | 1997-11-05 | Andrew Macgregor Ritchie | Serving signals to browsing clients |
JP3184763B2 (ja) * | 1995-06-07 | 2001-07-09 | インターナショナル・ビジネス・マシーンズ・コーポレ−ション | マルチメディア直接アクセス記憶装置及びフォーマット方法 |
US5712907A (en) * | 1995-09-18 | 1998-01-27 | Open Port Technology, Inc. | Pro-active message delivery system and method |
US5923846A (en) * | 1995-11-06 | 1999-07-13 | Microsoft Corporation | Method of uploading a message containing a file reference to a server and downloading a file from the server using the file reference |
US5923848A (en) | 1996-05-31 | 1999-07-13 | Microsoft Corporation | System and method for resolving names in an electronic messaging environment |
US6151643A (en) * | 1996-06-07 | 2000-11-21 | Networks Associates, Inc. | Automatic updating of diverse software products on multiple client computer systems by downloading scanning application to client computer and generating software list on client computer |
EP0924921A4 (en) | 1996-09-03 | 1999-12-29 | Toyota Motor Co Ltd | CONTROL FOR INFORMATION TRANSFER AND CORRESPONDING SYSTEM |
US6377978B1 (en) * | 1996-09-13 | 2002-04-23 | Planetweb, Inc. | Dynamic downloading of hypertext electronic mail messages |
US6233318B1 (en) * | 1996-11-05 | 2001-05-15 | Comverse Network Systems, Inc. | System for accessing multimedia mailboxes and messages over the internet and via telephone |
JP3318503B2 (ja) | 1997-02-27 | 2002-08-26 | 京セラ株式会社 | 無線通信システム |
JPH1168987A (ja) | 1997-08-15 | 1999-03-09 | Sony Corp | 情報通信システム、情報通信端末、サーバ装置および情報通信方法 |
US6138146A (en) * | 1997-09-29 | 2000-10-24 | Ericsson Inc. | Electronic mail forwarding system and method |
US6073137A (en) * | 1997-10-31 | 2000-06-06 | Microsoft | Method for updating and displaying the hierarchy of a data store |
AU757557B2 (en) * | 1997-11-13 | 2003-02-27 | Intellectual Ventures I Llc | File transfer system |
US6938073B1 (en) * | 1997-11-14 | 2005-08-30 | Yahoo! Inc. | Method and apparatus for re-formatting web pages |
US6324587B1 (en) * | 1997-12-23 | 2001-11-27 | Microsoft Corporation | Method, computer program product, and data structure for publishing a data object over a store and forward transport |
US6233316B1 (en) * | 1998-01-27 | 2001-05-15 | Dsc Telecom, L.P. | Voice enhanced phone card |
US6167402A (en) * | 1998-04-27 | 2000-12-26 | Sun Microsystems, Inc. | High performance message store |
FI105971B (fi) * | 1998-04-30 | 2000-10-31 | Nokia Mobile Phones Ltd | Menetelmä ja laitteisto sähköpostin käsittelemiseksi |
US6134582A (en) * | 1998-05-26 | 2000-10-17 | Microsoft Corporation | System and method for managing electronic mail messages using a client-based database |
US6438585B2 (en) * | 1998-05-29 | 2002-08-20 | Research In Motion Limited | System and method for redirecting message attachments between a host system and a mobile data communication device |
US6219694B1 (en) | 1998-05-29 | 2001-04-17 | Research In Motion Limited | System and method for pushing information from a host system to a mobile data communication device having a shared electronic address |
US20010054115A1 (en) * | 1998-05-29 | 2001-12-20 | Tabitha Ferguson | System and method for bundling information |
US6886030B1 (en) * | 1998-08-18 | 2005-04-26 | United Video Properties, Inc. | Electronic mail system employing a low bandwidth link for e-mail notifications |
CA2275840A1 (en) | 1998-08-18 | 2000-02-18 | Lucent Technologies Inc. | Generalized messaging construct |
US6505255B1 (en) * | 1999-04-29 | 2003-01-07 | Mitsubishi Electric Information Technology Center America, Inc. (Ita) | Method for formatting and routing data between an external network and an internal network |
US6639687B1 (en) * | 1998-09-08 | 2003-10-28 | International Business Machines Corporation | Progress indicator for multiple actions |
WO2000016221A1 (en) * | 1998-09-15 | 2000-03-23 | Microsoft Corporation | Interactive playlist generation using annotations |
US6324544B1 (en) * | 1998-10-21 | 2001-11-27 | Microsoft Corporation | File object synchronization between a desktop computer and a mobile device |
JP3603936B2 (ja) | 1999-01-22 | 2004-12-22 | 株式会社ソニー・コンピュータエンタテインメント | 電子メール広告システム |
US6449634B1 (en) * | 1999-01-29 | 2002-09-10 | Digital Impact, Inc. | Method and system for remotely sensing the file formats processed by an E-mail client |
WO2000057612A2 (en) | 1999-03-22 | 2000-09-28 | Webxi | Application layer protocol |
US6574657B1 (en) * | 1999-05-03 | 2003-06-03 | Symantec Corporation | Methods and apparatuses for file synchronization and updating using a signature list |
US6442748B1 (en) * | 1999-08-31 | 2002-08-27 | Accenture Llp | System, method and article of manufacture for a persistent state and persistent object separator in an information services patterns environment |
US6304898B1 (en) | 1999-10-13 | 2001-10-16 | Datahouse, Inc. | Method and system for creating and sending graphical email |
US20020055351A1 (en) * | 1999-11-12 | 2002-05-09 | Elsey Nicholas J. | Technique for providing personalized information and communications services |
JP2001197247A (ja) | 2000-01-11 | 2001-07-19 | Fuji Xerox Co Ltd | 画像データ送受信装置及び通信システム |
US6993559B2 (en) | 2000-02-14 | 2006-01-31 | Bigbow.Com, Inc. | System, method, apparatus and computer program product for operating a web site by electronic mail |
US6684088B1 (en) * | 2000-03-01 | 2004-01-27 | Axi Mobile Ltd. | System and method for displaying electronic mail messages on a low bandwidth device |
US6438584B1 (en) * | 2000-03-07 | 2002-08-20 | Letter Services, Inc. | Automatic generation of graphically-composed correspondence via a text email-interface |
US6968364B1 (en) * | 2000-03-30 | 2005-11-22 | Microsoft Corporation | System and method to facilitate selection and programming of an associated audio/visual system |
AU2001250201A1 (en) | 2000-04-10 | 2001-10-23 | Research In Motion Limited | System and method for bundling information |
JP2001339422A (ja) | 2000-05-25 | 2001-12-07 | Mitsubishi Electric Corp | メールデータ管理システム |
US6732101B1 (en) * | 2000-06-15 | 2004-05-04 | Zix Corporation | Secure message forwarding system detecting user's preferences including security preferences |
US6560883B2 (en) * | 2000-06-28 | 2003-05-13 | Snap-On Technologies, Inc. | Method and system for conducting wheel alignment |
JP2002125090A (ja) | 2000-08-01 | 2002-04-26 | Canon Inc | 通信装置、通信方法、記憶媒体およびプログラム |
WO2002021749A2 (en) | 2000-09-08 | 2002-03-14 | Plumtree Software | Providing a personalized web page by accessing different servers |
WO2002028038A1 (fr) | 2000-09-26 | 2002-04-04 | Interlex Inc. | Systeme et procede d'utilisation d'un courrier electronique comme support de publicite |
US6934734B2 (en) * | 2000-12-04 | 2005-08-23 | International Business Machines Corporation | Method and apparatus for managing and presenting changes to an object in a data processing system |
FI20002854A (fi) * | 2000-12-22 | 2002-06-23 | Nokia Corp | Etälataamisen tilaindikaattorit langattomissa lyhyen kantaman laitteissa |
CA2329891A1 (en) | 2000-12-29 | 2002-06-29 | Subsecond Technology Inc. | Method and apparatus for remote database maintenance and access |
JP2002208959A (ja) | 2001-01-09 | 2002-07-26 | Casio Comput Co Ltd | 電子メールサーバ装置、電子メール転送制御方法及び記録媒体 |
KR100997708B1 (ko) | 2001-03-22 | 2010-12-02 | 미카엘 정 | 전자메일, 인터넷 타겟/직접마케팅, 및 전자메일 배너방법 및 시스템 |
US6973481B2 (en) | 2001-03-23 | 2005-12-06 | Emailias Llc | System and method for creating and managing forwarding email address |
US7224491B2 (en) | 2001-03-28 | 2007-05-29 | Minolta Co., Ltd. | Data communication apparatus, data communication system, data communication method, control program, and computer readable storage medium stored with control program |
AUPR444601A0 (en) | 2001-04-17 | 2001-05-17 | Pro-Super Holdings Limited | Business tracking system |
JP3798263B2 (ja) | 2001-06-01 | 2006-07-19 | 三菱電機株式会社 | 電子メールサーバ及び電子メールキャッシュ方法及び電子メールキャッシュプログラム |
US20030093565A1 (en) | 2001-07-03 | 2003-05-15 | Berger Adam L. | System and method for converting an attachment in an e-mail for delivery to a device of limited rendering capability |
US7149813B2 (en) | 2001-08-14 | 2006-12-12 | Microsoft Corporation | Method and system for synchronizing mobile devices |
US20030035607A1 (en) * | 2001-08-15 | 2003-02-20 | Motorola, Inc. | Apparatus for effecting conversion between communication signals in a first signal-form and communication signals in a second signal-form and method of manufacture therefor |
US6973384B2 (en) * | 2001-12-06 | 2005-12-06 | Bellsouth Intellectual Property Corporation | Automated location-intelligent traffic notification service systems and methods |
US20030177171A1 (en) * | 2002-01-22 | 2003-09-18 | Brown Bruce Loring | Electronic mail retrieval |
US20030231207A1 (en) * | 2002-03-25 | 2003-12-18 | Baohua Huang | Personal e-mail system and method |
US7031973B2 (en) | 2002-06-10 | 2006-04-18 | Microsoft Corporation | Accounting for references between a client and server that use disparate e-mail storage formats |
US6868143B1 (en) * | 2002-10-01 | 2005-03-15 | Bellsouth Intellectual Property | System and method for advanced unified messaging |
US20040068544A1 (en) * | 2002-10-08 | 2004-04-08 | Bellsouth Intellectual Property Corporation | Multi-user e-mail client and alert schema |
US7620688B2 (en) * | 2003-01-03 | 2009-11-17 | Microsoft Corporation | Progress mode for electronic mail component |
US7366760B2 (en) * | 2003-01-03 | 2008-04-29 | Microsoft Corporation | System and method for improved client server communications of email messages |
US7386590B2 (en) | 2003-01-03 | 2008-06-10 | Microsoft Corporation | System and method for improved synchronization between a server and a client |
US9209992B2 (en) | 2009-12-28 | 2015-12-08 | International Business Machines Corporation | Method, data processing program, and computer program product for handling instant messaging sessions and corresponding instant messaging environment |
-
2003
- 2003-02-14 US US10/367,273 patent/US7386590B2/en not_active Expired - Fee Related
- 2003-12-11 AU AU2003268734A patent/AU2003268734B8/en not_active Ceased
- 2003-12-12 MY MYPI20034774A patent/MY144908A/en unknown
- 2003-12-12 CA CA2452916A patent/CA2452916C/en not_active Expired - Fee Related
- 2003-12-16 MX MXPA03011675A patent/MXPA03011675A/es active IP Right Grant
- 2003-12-18 TW TW092136044A patent/TWI269557B/zh not_active IP Right Cessation
- 2003-12-18 CN CNB2003101239257A patent/CN100481821C/zh not_active Expired - Fee Related
- 2003-12-18 BR BR0306066-7A patent/BR0306066A/pt active Search and Examination
- 2003-12-22 PL PL03364200A patent/PL364200A1/xx not_active Application Discontinuation
- 2003-12-23 EP EP03029810.3A patent/EP1435585B1/en not_active Expired - Lifetime
- 2003-12-30 RU RU2003138081/09A patent/RU2346323C2/ru not_active IP Right Cessation
-
2004
- 2004-01-02 KR KR1020040000146A patent/KR101034421B1/ko active IP Right Grant
- 2004-01-05 JP JP2004000704A patent/JP4633365B2/ja not_active Expired - Fee Related
-
2008
- 2008-04-24 US US12/109,077 patent/US7899872B2/en not_active Expired - Lifetime
- 2008-07-07 RU RU2008127701/08A patent/RU2477517C2/ru not_active IP Right Cessation
- 2008-07-07 RU RU2008127702/08A patent/RU2421790C2/ru not_active IP Right Cessation
-
2010
- 2010-03-24 AU AU2010201166A patent/AU2010201166B2/en not_active Ceased
-
2011
- 2011-01-06 US US12/985,945 patent/US8423621B2/en not_active Expired - Lifetime
-
2012
- 2012-04-20 US US13/452,216 patent/US8473560B2/en not_active Expired - Lifetime
-
2013
- 2013-04-12 US US13/861,721 patent/US9590927B2/en not_active Expired - Lifetime
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2421790C2 (ru) | Система и способ усовершенствованной синхронизации между сервером и клиентом | |
RU2342699C2 (ru) | Система и способ усовершенствованного обмена сообщениями электронной почты между клиентом и сервером | |
RU2331920C2 (ru) | Способ потоковой передачи данных между сервером и клиентом | |
AU2012200888B2 (en) | System and method for improved synchronization between a server and a client | |
AU2014200931A1 (en) | System and method for improved synchronization between a server and a client |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PC41 | Official registration of the transfer of exclusive right |
Effective date: 20150526 |
|
MM4A | The patent is invalid due to non-payment of fees |
Effective date: 20191231 |