ОБМЕН СООБЩЕНИЯМИ ДЛЯ ОСНОВАННЫХ НА УВЕДОМЛЕНИЯХ КЛИЕНТОВ
MESSAGING FOR NOTIFICATION-BASED CLIENTS

УРОВЕНЬ ТЕХНИКИ
Системы связи клиент-сервер могут отличаться в зависимости от того, когда сервер может отправлять передачу данных клиенту. Например, передачи данных между веб-сайтом (сервером) и клиентом могут следовать модели запрос-ответ. В этой модели клиент может быть доступен с сервера, если клиент отправляет запрос на сервер. В противном случае клиент может быть недоступен. Таким образом, сервер может только отправлять передачи данных клиенту в ответ на запрос клиента. В этой модели запрос клиента может привести к открытому сетевому соединению, через которое сервер может отправлять передачи данных.
Эта модель отличается от традиционных систем обмена сообщениями. Традиционные системы обмена сообщениями предполагали существование соединения между клиентами и серверами. Вследствие того, что соединение сохраняется, сервер может отправлять передачу данных клиенту в любое время.
С увеличивающимся числом платформ, например, мобильных устройств, поддержание сетевых соединений требует значительных ресурсов. Например, мобильные устройства могут быстро потреблять энергию батареи, пытаясь поддерживать сетевое соединение. Таким образом, эти платформы могут не поддерживать сетевые соединения, когда клиентские приложения неактивны.
Поддержанию сетевого соединения могут дополнительно препятствовать ограничения самих сетей. В некоторых случаях сети могут не быть надежными. Например, сотовые телефоны теряют свои сетевые соединения в областях без надлежащих сотовых вышек.
Типичные подходы к решению этих типов проблем соединения по-прежнему полагаются на создание открытых сетевых соединений между клиентом и сервером. Зависимость от открытых сетевых соединений для передач данных (осуществления связи) между клиентами и серверами увеличивает потребность в ограниченных ресурсах увеличивающегося количества клиентских устройств.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Нижеследующее представляет упрощенную сущность изобретения, чтобы обеспечить базовое понимание некоторых аспектов, описанных в материалах настоящей заявки. Эта сущность изобретения не является исчерпывающим обзором заявленного изобретения. Она не предназначена ни для определения ключевых или критических элементов заявленного изобретения, ни для очерчивания объема изобретения. Ее единственная цель состоит в том, чтобы представить некоторые принципы заявленного изобретения в упрощенной форме в качестве вводной части к более подробному описанию, которое представлено ниже по тексту.
Предмет изобретения относится к способу и системе для передачи данных (осуществления связи) с клиентом, который не соединен с сервером. Клиент может регистрировать информацию канала уведомления с сервером. Сервер может отправить сообщение клиенту с использованием канала уведомления. Сообщения могут быть включены в сообщение уведомления клиенту. Альтернативно, сообщение может быть отправлено с использованием метода прямого соединения.
В одном варианте осуществления клиент может подписаться на приятелей, службы или сети. Посредством подписки, клиент может быть автоматически уведомлен о соответствующих обновлениях по каналам уведомления. Последующее описание и прилагаемые чертежи подробно излагают некоторые иллюстративные аспекты заявленного изобретения. Однако эти аспекты указывают лишь на немногие из различных способов, с помощью которых могут быть использованы принципы изобретения, и подразумевается, что заявленное изобретение включает в себя все такие аспекты и их эквиваленты. Другие преимущества и новые (отличительные) признаки заявленного изобретения станут очевидными из последующего подробного описания изобретения при рассмотрении совместно с чертежами.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Фиг.1 представляет собой структурную схему системы в соответствии с заявленным изобретением;
Фиг.2 представляет собой схему процесса способа связи для клиентов в соответствии с заявленным изобретением;
Фиг.3 представляет собой схему передачи сообщений для создания сущности клиента в сети в соответствии с заявленным изобретением;
Фиг.4 представляет собой схему передачи сообщений для отправки сообщения в соответствии с заявленным изобретением;
Фиг.5 представляет собой схему передачи сообщений для подписки в соответствии с заявленным изобретением;
Фиг.6 представляет собой схему передачи сообщений для запроса присутствия приятеля в соответствии с заявленным изобретением;
Фиг.7 представляет собой схему передачи сообщений для удаления сущности клиента в соответствии с заявленным изобретением;
Фиг.8 представляет собой схему передачи сообщений для разговора между многими сторонами в соответствии с заявленным изобретением;
Фиг.9 представляет собой структурную схему примерного сетевого окружения, где могут быть использованы аспекты заявленного изобретения; и
Фиг.10 представляет собой структурную схему примерного рабочего окружения для реализации различных аспектов заявленного изобретения.
ПОДРОБНОЕ ОПИСАНИЕ
Заявленное изобретение описано со ссылкой на чертежи, на которых одинаковые номера ссылок используются для указания идентичных элементов. В последующем описании, в целях пояснения, многочисленные характерные детали изложены для того, чтобы обеспечить исчерпывающее понимание изобретения. Однако, может быть очевидно, что заявленное изобретение может быть реализовано на практике без этих характерных деталей. В иных случаях, хорошо известные структуры и устройства показаны в форме структурной схемы, чтобы облегчить описание изобретения.
Как использовано в материалах настоящей заявки, термины "компонент", "система", "клиент" и т.п. предназначены для обозначения связанной с компьютером сущности, либо аппаратного обеспечения, программного обеспечения (например, при исполнении) и/или программно-аппаратного обеспечения, либо их сочетания. Например, компонент может представлять собой процесс, работающий на процессоре, объект, исполняемый файл, программу, функцию, библиотеку, подпрограмму и/или компьютер или сочетание программного обеспечения и аппаратного обеспечения.
В качестве иллюстрации, как приложение, работающее на сервере, так и сервер, могут быть компонентом. Один или более компонентов могут постоянно размещаться внутри процесса, и компонент может быть локализован на одном компьютере и/или распределен между двумя или более компьютерами. Термин "процессор", как правило, понимается как аппаратный компонент, такой как блок обработки вычислительной системы.
Кроме того, заявленное изобретение может быть реализовано в качестве способа, устройства или изделия с использованием стандартных методов программирования и/или проектирования для обеспечения программного обеспечения, программно-аппаратного обеспечения, аппаратного обеспечения или любого их сочетания, чтобы управлять компьютером для реализации раскрытого изобретения. Термин "изделие", в качестве используемого в материалах настоящей заявки, подразумевается охватывающим компьютерную программу, доступную с любого невременного считываемого компьютером устройства или носителя.
Невременные считываемые компьютером носители данных могут включать в себя, но не ограничены ими, магнитные запоминающие устройства (например, жесткий диск, гибкий магнитный диск, магнитные полосы, и т.д.), оптические диски (например, компакт диск (CD), цифровой универсальный диск (DVD), и т.д.), смарт-карты и устройства флэш-памяти (например, карту, карту памяти и накопитель-ключ, и т.д.). В противоположность этому, считываемый компьютером носитель, как правило, (т.е., не обязательно носитель данных) может дополнительно включать в себя среду связи, например, среду передачи для беспроводных сигналов и тому подобное.
Конечно, специалисты в данной области техники распознают, что многие модификации могут быть сделаны по отношению к этой конфигурации, не выходя из объема или сущности заявленного изобретения. Более того, слово "примерный" используется в материалах настоящей заявки в значении «служащий в качестве примера, экземпляра или иллюстрации». Любой аспект или конструкция, описанные в материалах настоящей заявки как "примерные", не обязательно должны истолковываться в качестве предпочтительных или преимущественных над другими аспектами или конструкциями.
Для увеличивающегося числа мобильных платформ системы обмена сообщениями могут использовать открытые сетевые соединения между клиентом и сервером, чтобы позволить серверу отправлять сообщения клиенту. Однако когда клиент не может установить долговременное соединение, соединение может быть эмулировано.
Как указывалось ранее, мобильные платформы представляют проблемы относительно поддержания соединения между клиентом и сервером, в том числе: 1) вследствие природы канала связи, например, беспроводного, соединение может не быть надежным, 2) поддержание соединения с сервером потребляет ресурсы батареи, которые являются ограниченными на этих платформах, и 3) беспроводные соединения могут быть более ограничены с точки зрения пропускной способности, чем проводные соединения.
Для решения этих проблем системы обмена сообщениями могут уменьшать потребление полосы частот и добавлять логику отказоустойчивости к транспортному уровню протокола связи. Добавление логики отказоустойчивости к транспортному уровню, как правило, позволяет системам обмена сообщениями восстанавливаться из проблем с промежуточной связностью.
Фиг.1 представляет собой структурную схему системы 100 в соответствии с заявленным изобретением. Система 100 включает в себя клиента 102, сеть 104, служба 108 уведомлений и систему 110 обмена сообщениями. Клиент 102 может быть устройством с клиентским приложением, которое осуществляет связь по сети 104 с системой 110 обмена сообщениями. Клиент 102 может быть любым типом устройства связи или вычислительного устройства, например, мобильным телефоном, персональным цифровым помощником, настольным компьютером и т.д. Платформа, на которой работает клиент 102, может включать в себя набор API (программный интерфейс приложений) для взаимодействия со службой 108 уведомлений. Служба 108 уведомлений может быть другой облачной службой, предоставляемой платформой, на которой работает клиент 102. Например, на Windows Phone служба 108 уведомлений может быть службой push-уведомлений Microsoft (MPN). Клиент iPhone может использовать службу push-уведомлений Apple (APN). Для клиентов 102, которые работают на платформе, которая не предоставляет родных API служб уведомлений, система 110 обмена сообщениями может предоставить альтернативу.
Служба 108 уведомлений может предоставить один или более каналов уведомления, которые облачная служба может использовать для отправки информации клиенту 102, который a) может продлить время работы батареи и b) может быть выполнен с возможностью преодоления присущих сети проблем, описанных выше по тексту, например, прерывистой связностью с сетью 104. Обычно соединению от клиента 102 со службой 108 уведомлений может быть разрешено быть открытым, чтобы сохранять ресурсы клиента.
Сеть 104 может быть любой сетью или совокупностью сетей, способных поддерживать связь между клиентом 102 и системой 110 обмена сообщениями. Сеть 104 может быть Интернетом, глобальной сетью, локальной сетью и т.д. Интернет также называют в материалах настоящей заявки облаком.
Служба 108 уведомлений может быть использована в качестве части системы 110 обмена сообщениями, используемой для передачи сообщений от системы 110 обмена сообщениями клиенту 102. Таким образом, система 110 обмена сообщениями может обеспечить типичную функциональность системы обмена сообщениями, включающую в себя: обмен сообщениями, сигнализацию, присутствие, аудио, видео и т.д. В одном варианте осуществления эта функциональность может быть предоставлена в отсутствие соединения между клиентом 102 и системой 110 обмена сообщениями.
Присутствие может представлять доступность и возможности клиента 102 в заданный момент для некоторых операций. В типичных системах обмена сообщениями доступность клиента 102 тесно связана с состоянием соединения. Когда нет соединения, предполагается, что клиент 102 недоступен. В вариантах осуществления изобретения, когда нет соединения, клиент 102 может быть доступен через службу 108 уведомлений.
Вместо связи через открытое сетевое соединение, система 110 обмена сообщениями может осуществлять связь с клиентом 102, используя службу 108 уведомлений. Система 110 обмена сообщениями может использовать протокол, который исходно поддерживает службу 108 уведомлений как часть схемы соединения клиента. В одном варианте осуществления протокол может поддерживать этот тип клиента 102, т.е., основанного на уведомлениях клиента, как объект первого класса, и предоставлять структуры, которые исходно подходят к различным платформам для клиента 102.
В таком варианте осуществления система 110 обмена сообщениями может использовать режим клиента с отсутствующим соединением. В этом режиме клиентский объект может быть предоставлен облачной службой без необходимости иметь открытую сетевую сессию. Клиент 102 может быть доступен с использованием других средств, например, службы 108 уведомлений.
Протокол может включать в себя команды для регистрации и отмены регистрации клиентов, обновления клиентов, отправки сообщений, подписки на списки приятелей, запросов приятелей, запросов и доставки сообщений и поддержки связей со многими сторонами. Эти команды более подробно описаны на Фиг.4-9.
Некоторые отличия этого протокола от существующих протоколов включают в себя: 1) удаление сессии в качестве условия существования клиентского объекта в облаке, и 2) использование режима с отсутствующим соединением в качестве способа взаимодействия с облачной службой.
Облачная служба может хранить данные о службе 108 уведомлений. Служба 108 уведомлений или открытая сетевая сессия (если она существует) могут быть использованы для осуществления связи обратно к клиенту 102. Этот протокол может естественно поддерживать различные платформы уведомлений. Используя этот протокол, система 110 обмена сообщениями может также предоставлять службы уведомления клиентам, которые не предоставляют служб уведомления, например, веб-клиентам. В одном варианте осуществления это может быть сделано с использованием той же семантики, которая определена другими службами уведомления на постоянной службе транспортного уровня.
В одном варианте осуществления система 110 обмена сообщениями может генерировать маркер (token) аутентификации в качестве способа для аутентификации клиента и управления временем жизни клиентского объекта в облаке. Система 110 обмена сообщениями может хранить информацию канала уведомления, которая должна быть использована для осуществления связи обратно к клиенту 102. Канал уведомления представляет собой способ для системы 110 обмена сообщениями отправлять сообщение клиенту 102, используя службу 108 уведомлений. Кроме того, система 110 обмена сообщениями может хранить информацию о любой потенциальной открытой сетевой сессии, если такое соединение существует. Эта информация соединения может быть использована как альтернативный способ для осуществления связи обратно к клиенту 102. Клиент 102 может отправлять маркер аутентификации с каждым запросом, ожидая принять ответы отказа аутентификации и быть способным заново аутентифицироваться в системе 110 обмена сообщениями.
Когда клиент 102 отправляет сообщения в систему 110 обмена сообщениями, клиент может использовать соединенные или несоединенные средства. В одном варианте осуществления клиент 102 может использовать несоединенный канал. В альтернативных несоединенных средствах клиент 102 может открывать временный канал для связи ad-hoc и использовать основанные на TCP команды. Это может быть сделано без явного соединения или повторного соединения с системой 110 обмена сообщениями.
С точки зрения соединенных средств, клиент 102 может явно соединяться с системой 110 обмена сообщениями на время одного или более разговоров. Клиент 102 может быть ограничен единственным соединением к облаку в любое заданное время, что может быть осуществлено системой 110 обмена сообщениями.
Протокол может не определять статус присутствия клиента в облаке, а скорее механизм, в котором клиент 102 может обновлять свою характерную информацию присутствия, например, доступность и возможности. Протокол может также предоставлять способ для тех, кто обладает отношением к пользователю (например, соединение на социальном или профессиональном веб-сайте), чтобы принимать обновления, когда это применимо. Из-за ограничений связности и привилегии процесса, клиент 102 может неточно обновлять свое присутствие. Вместо этого, протокол может предполагать, что бизнес-логика в системе 110 обмена сообщениями обновляет присутствие клиента. Это может быть сделано на основе временного интервала (т.е., "минута с последней активности"), статуса канала уведомления (т.е., "периодический пинг-тест" или "ошибочные ответы") или явного обновления клиентом 102 самого себя, когда это возможно.
Протокол может поддерживать один способ регистрации или отмены регистрации клиентского объекта. Однако система 110 обмена сообщениями может не осуществлять регистрацию или отмену регистрации клиента 102 с использованием протокола. Могут быть другие способы добавления клиентских объектов в систему 110 обмена сообщениями. Например, система 110 обмена сообщениями может опросить внешний заслуживающий доверия источник, например, другую облачную службу, которая отслеживает клиентов 102. Пока клиент 102 представляет достоверный маркер, система 110 обмена сообщениями может обслуживать запросы. Проблемы безопасности, которые являются следствием этого подхода, могут быть решены с использованием защищенного канала связи.
Чтобы дополнительно сэкономить время работы батареи и уменьшить потребление полосы частот, протокол может освобождать клиента 102 от выгрузки каких-либо данных, которые уже существуют в любом заслуживающем доверия объекте в облаке. Вместо этого клиент 102 может просто выгружать характерные для клиента и временные данные. Система 110 обмена сообщениями может хранить ограниченное количество информации состояния для каждого клиента. Это состояние может включать в себя, например, информацию канала уведомления, списки управления доступом (ACL), доступность и возможности, подписки, кэшированные мгновенные сообщения (IM) или уведомления и информацию времени последней активности.
Фиг.2 представляет собой диаграмму процесса способа 200 связи для клиентов 102 в соответствии с заявленным изобретением. В одном варианте осуществления система обмена сообщениями может выполнять способ 200.
Способ 200 начинается на этапе 202, где служба 108 уведомлений может генерировать маркер уведомления. Маркер уведомления может быть использован системой 110 обмена сообщениями для идентификации получателя уведомлений, которые она отправляет через службу 108 уведомлений. Клиент 102 может выгружать маркер уведомления в систему 110 обмена сообщениями вдобавок к информации службы уведомлений.
На этапе 204 система 110 обмена сообщениями может регистрировать клиента 102 для приема передач данных от системы 110 обмена сообщениями. Регистрация клиента 102 может включать в себя сохранение информации маркера и службы уведомлений для клиента 102. Информация канала уведомления вместе с маркером уведомления может предоставлять адрес для контакта с клиентом 102 через службу 108 уведомлений.
Однако, если клиент 102 не соединен с системой обмена сообщениями, и есть сообщение от сервера для клиента 102, на этапе 206 система 110 обмена сообщениями может отправить сообщение клиенту 102 с отсутствующим соединением, используя службу уведомлений.
Фиг.3-8 представляют собой схемы передачи сообщений для типичных сценариев передачи данных согласно протоколу, описанному выше по тексту, в соответствии с заявленным изобретением. Эти команды могут быть выполнены при реализации протокола, описанного выше по тексту. На этих фигурах аббревиатура EP, сокращение от «конечная точка», является ссылкой на клиента 102.
Команды этого протокола могут поддерживаться стандартными способами HTTP. Например, сценарии, проиллюстрированные на Фиг.3-8, показывают примерную реализацию команд с использованием стандартных способов HTTP. Стандартные способы HTTP могут включать в себя: OPTIONS, GET, HEAD, PUT, POST, DELETE, TRACE, и CONNECT.
Как указывалось ранее, протокол может включать в себя набор команд для связывания, подписки, отправки сообщений, запроса и обновления информации присутствия, установления двусторонних и разговоров со многими сторонами и т.д.
Команда регистрации может создавать клиентский объект в системе 110 обмена сообщениями и возвращать маркер аутентификации клиенту. Команда отмены регистрации может удалять клиентский объект из системы 110 обмена сообщениями. В одном варианте осуществления клиент 102 может определять, чтобы другие клиентские объекты были удалены согласно указанным разрешениям.
Как только клиентский объект зарегистрирован в системе 110 обмена сообщениями, соответствующий клиент 102 может опубликовать свое присутствие, используя команду обновить клиент. Параметры, указанные в команде, могут включать в себя информацию канала уведомления для каждой операции, которую поддерживает клиент 102. Параметры также могут включать в себя тип уведомления, который определяет, как уведомления доставляются клиенту 102. Один тип уведомления может определять, что команда включена в полезные данные уведомления. Другой тип может определять, что команда не включена в состав, например, прямое соединение.
Один вариант осуществления может включать в себя команду для отправки сообщения приятелю без установления соединения с облаком. Канал уведомления или команда системе 110 обмена сообщениями могут быть использованы для получения поставленного в очередь сообщения из системы 110 обмена сообщениями.
Команда для подписки может быть использована для того, чтобы дать возможность клиенту подписаться на приятелей. Подписка на приятелей дает клиенту 102 возможность быть автоматически уведомленным об обновлениях в статусах присутствия приятелей. Клиент 102 может только определить фильтр, который должен быть применен к списку приятелей для подписки, чтобы подписаться на поднабор приятелей. Система 110 обмена сообщениями может извлекать списки контактов из другой облачной службы, которая поддерживает список приятелей клиента. Клиент 102 может использовать эту команду, чтобы подписаться на определенного приятеля. Клиент 102 может подобным образом отписаться от приятелей, служб, и т.д.
Команда запросить присутствие приятеля может дать возможность клиенту 102 определить статус присутствия одного или более контактов пользователя. Список приятелей может быть использован для определения того, статус присутствия какого контакта следует принять. Например, пустой список контактов может привести к тому, что система 110 обмена сообщениями будет выбирать статус присутствия всех контактов пользователя. В одном варианте осуществления выборы фильтра и представления могут быть использованы для улучшения точности ответа, уменьшения размера пакета ответов. Например, опции представления могут включать в себя различные элементы присутствия, такие как доступность для обмена сообщениями, доступность для видео-звонков и т.д. Опции фильтрации могут быть использованы для того, чтобы отфильтровать скрытые контакты, группы, контакты, находящиеся оффлайн, и т.д.
Команда сообщения может доставлять сообщения клиенту. В одном варианте осуществления типичные команды отправить сообщение могут быть выполнены с возможностью поддержки службы 108 уведомлений и уменьшения потребления пропускной способности. Например, клиент 102 может принимать эти команды в полезных данных уведомления или в теле ответа на команду получить поставленные в очередь сообщения. Это может быть основано на предпочтениях клиента.
Команда получить поставленные в очередь сообщения может быть использована для извлечения поставленных в очередь уведомлений и сообщений. В одном варианте осуществления клиент 102 может отправлять опрос системы 110 обмена сообщениями до тех пор, пока все кэшированные уведомления не будут извлечены. Протокол может предоставлять команду для получения поставленных в очередь сообщений и отдельную команду для удаления этих сообщений из системы 110 обмена сообщениями.
Набор команд для создания временного разговора со многими сторонами, приглашения приятелей, отправки сообщений, обновления и получения информации присутствия в контексте этого разговора со многими сторонами может быть использован для разрешения типичных операций разговора со многими сторонами.
Фиг.3 представляет собой схему 300 передачи сообщений для создания клиентского объекта в системе 110 обмена сообщениями в соответствии с заявленным изобретением. Схема 300 передачи сообщений включает в себя сообщения 304, 306. Сообщения 304 могут авторизовать доступ клиента к системе 110 обмена сообщениями. В ответ на запрос от клиента 102 система 110 обмена сообщениями может извлекать список доступа из облачной службы, который поддерживает списки 302 управления доступом приятелей клиента, и может генерировать маркер аутентификации клиента, который отправляется клиенту 102.
Сообщения 306 могут регистрировать клиента 102 в системе 110 обмена сообщениями для уведомлений в несоединенном режиме. Запрос регистрации, включающий в себя маркер уведомления, может быть отправлен в систему 110 обмена сообщениями. Это приводит к тому, что маркер уведомления и данные присутствия клиента хранятся системой 110 обмена сообщениями. Маркер уведомления предоставляет адрес, который система 110 обмена сообщениями может использовать для отправки сообщений из системы 110 обмена сообщениями клиенту 102, когда (он) не соединен. На Фиг.3 маркер Аутентификации не включен в сообщения 306 регистрации. В одном варианте осуществления маркер аутентификации может быть включен в состав.
Сообщения, описанные со ссылкой на Фиг.3-8, могут быть переданы по обычным каналам связи. Тип канала связи для любого конкретного сообщения может меняться в зависимости от отправителя и получателя сообщения.
В одном варианте осуществления клиент 102 может отправлять команду регистрации с маркером авторизации, например, пользовательский билет, в систему 110 обмена сообщениями. Альтернативно конечная точка может отправлять пакет регистрации и другие команды, чтобы минимизировать вызовы от клиента к системе 110 обмена сообщениями. Клиент 102 может не поддерживать соединение с системой 110 обмена сообщениями во время процесса регистрации, аутентификации и установки начальной информации присутствия.
Система 110 обмена сообщениями может аутентифицировать клиента, используя маркер авторизации. Система 110 обмена сообщениями может создать клиентский объект, привязать пользователя к клиенту и отправить обратно маркер аутентификации клиента. Клиент 102 может использовать маркер аутентификации для идентификации самого себя в системе 110 обмена сообщениями для будущих передач данных.
Как только клиентский объект создан, клиент 102 может публиковать свое присутствие (доступность, возможности, и т.д.) в системе 110 обмена сообщениями. Альтернативно система 110 обмена сообщениями может поддерживать присутствие клиента.
Путем регистрации в системе 110 обмена сообщениями клиент 102 может принимать уведомления об изменениях присутствия и сообщениях. Клиент 102 может также задать, не включают ли уведомления фактический пакет в полезных данных уведомления, т.е., прямое соединение.
Фиг.4 представляет собой схему 400 передачи сообщений для отправки сообщения в соответствии с заявленным изобретением. Схема 400 передачи сообщений включает в себя сообщения 404, 406. Сообщения 404 могут, при отсутствии соединения, позволять клиенту 102 отправлять сообщение, используя маркер аутентификации. Сообщения 406 могут дать возможность клиенту 102 принимать мгновенные сообщения от других клиентов 102. Как показано, команда получить поставленные в очередь сообщения может быть использована для извлечения сообщений из очереди 206.
Фиг.5 представляет собой схему 500 передачи сообщений для подписки в соответствии с заявленным изобретением. Клиент 102 может подписаться на присутствие контакта путем отправки команды подписки со списком, определенным в теле команды. Система 110 обмена сообщениями может извлекать списки приятелей из другой облачной службы, который поддерживает список 502 приятелей клиента.
Уведомления о присутствии могут быть отправлены в систему 110 обмена сообщениями клиента. Как только система 110 обмена сообщениями получает уведомление о присутствии приятеля, система 110 обмена сообщениями может отправить уведомление службе 108 уведомлений и идентифицировать целевого клиента, используя маркер уведомления.
В одном варианте осуществления система 110 обмена сообщениями может кэшировать уведомление и просто отправлять уведомление о прямом соединении службе 108 уведомлений. В таком варианте осуществления клиент 102 может извлекать кэшированное уведомление путем отправки команды получить поставленные в очередь сообщения в систему 110 обмена сообщениями.
Фиг.6 представляет собой схему 600 передачи сообщений для запроса присутствия приятеля в соответствии с заявленным изобретением. Как показано, клиент 102 может опрашивать присутствие приятеля, используя маркер аутентификации.
Фиг.7 представляет собой схему 700 передачи сообщений для отмены регистрации клиентского объекта в соответствии с заявленным изобретением. Запрос может определять маркер аутентификации в команде отмены регистрации в систему 110 обмена сообщениями. Система 110 обмена сообщениями может удалять клиентский объект, представленной маркером аутентификации клиента, из облака.
Чтобы отменить регистрацию клиента 102 в системе 110 обмена сообщениями, система 110 обмена сообщениями может устанавливать состояние клиента в недоступное. Таким образом, любые дальнейшие сообщения клиенту 102 могут быть удалены с ошибкой, возвращенной отправителю.
Фиг.8 представляет собой схему 800 передачи сообщений для разговора со многими сторонами в соответствии с заявленным изобретением. Для разговора со многими сторонами список состава может быть размещен на хосте 802. Хост 802 может быть компонентом системы 110 обмена сообщениями. Разговор может быть идентифицирован как временная группа.
Как указывалось ранее, существующие системы обмена сообщениями могут быть изменены, чтобы обеспечить режим с отсутствующим соединением, описанный выше по тексту. Эти изменения могут представлять проблемы с распределением нагрузки, регулировкой и гео-хостингом. В одном варианте осуществления система 110 обмена сообщениями может использовать различные методы распределения нагрузки, чтобы реагировать на изменение в режиме соединения клиента. Глобальная система распределения нагрузки может быть использована для распределения нагрузки по нескольким географическим облачным местоположениям.
Кроме того, система 110 обмена сообщениями может использовать различные методы регулирования, чтобы управлять использованием ее ресурсов клиентами и чтобы защищать себя от вредоносного использования.
Фиг.9 представляет собой структурную схему примерного сетевого окружения 900, где аспекты заявленного изобретения могут быть использованы. Кроме того, примерное сетевое окружение 900 может быть использовано для реализации системы и способа связи с клиентами с отсутствующим соединением.
Сетевое окружение 900 включает в себя одного или более клиента(ов) 910. Клиентом(ами) 910 могут быть аппаратное обеспечение и/или программное обеспечение (например, потоки, процессы, вычислительные устройства). В качестве примера клиентом(ами) 910 могут быть компьютеры, предоставляющие доступ к серверам через инфраструктуру 940 связи, такую как Интернет.
Окружение 900 также включает в себя один или более сервер(ов) 920. Сервером(ами) 920 могут быть аппаратное обеспечение и/или программное обеспечение (например, потоки, процессы, вычислительные устройства). Сервер(ы) 920 могут включать в себя сетевые системы хранения. К серверу(ам) может осуществлять доступ клиент(ы) 910.
Одна возможная передача данных между клиентом 910 и сервером 920 может быть в форме пакета данных, приспособленного, чтобы передаваться между двумя или более компьютерными процессами. Окружение 900 включает в себя инфраструктуру 940 связи, которая может быть использована, чтобы содействовать передачам данных между клиентом(ами) 910 и сервером(ами) 920.
Клиент(ы) 910 функционально соединены с одним или более клиентским хранилищем(ами) 950 данных, которые могут быть использованы, чтобы сохранять информацию локально по отношению к клиенту(ам) 910. Клиентское хранилище(а) 950 данных может быть расположено на клиенте(ах) 910 или удаленно, например, в облачном сервере. Подобным образом, сервер(ы) 920 функционально соединены с одним или более серверным хранилищем(ами) 930 данных, которые могут быть использованы для хранения информации, локальной по отношению к серверам 920.
На Фиг.10 показано примерное рабочее окружение 1000 для реализации различных аспектов заявленного изобретения. Примерное рабочее окружение 1000 включает в себя компьютер 1012. Компьютер 1012 включает в себя блок 1014 обработки, системную память 1016 и системную шину 1018.
Системная шина 1018 присоединяет системные компоненты, в том числе, но без ограничения, системную память 1016, к блоку 1014 обработки. Блок 1014 обработки может быть любым из различных доступных процессоров. В качестве блока 1014 обработки также могут использоваться сдвоенные микропроцессоры и другие многопроцессорные архитектуры.
Системная шина 1018 может представлять собой любую из нескольких типов шинных структур(ы), включающих в себя шину памяти или контроллер памяти, периферийную шину или внешнюю шину, и/или локальную шину, используя любое многообразие доступных шинных архитектур, известных специалисту в данной области техники. Системная память 1016 содержит невременный считываемый компьютером носитель данных, который включает в себя энергозависимую память 1020 и энергонезависимую память 1022.
Базовая система ввода/вывода (BIOS), содержащая базовые процедуры для передачи информации между элементами в пределах компьютера 1012, например, во время запуска, хранится в энергонезависимой памяти 1022. В качестве иллюстрации, а не ограничения, энергонезависимая память 1022 может включать в себя постоянное запоминающее устройство (ПЗУ, ROM), программируемое ПЗУ (ППЗУ, PROM), электрически программируемое ПЗУ (ЭППЗУ, EPROM), электрически стираемое программируемое ПЗУ (ЭСППЗУ, EEPROM), или флэш-память.
Энергозависимая память 1020 включает в себя оперативное запоминающее устройство (ОЗУ, RAM), которое действует в качестве внешней кэш-памяти. В качестве иллюстрации, но не ограничения, ОЗУ доступно во многих формах, например статическое ОЗУ (СОЗУ, SRAM), динамическое ОЗУ (ДОЗУ, DRAM), синхронное ДОЗУ (СДОЗУ, SDRAM), СДОЗУ с двойной скоростью передачи данных (DDR СДОЗУ), улучшенное СДОЗУ (ESDRAM), SynchLink™ ДОЗУ (SLDRAM), Rambus прямое ОЗУ (RDRAM), прямое Rambus динамическое ОЗУ (DRDRAM) и Rambus динамическое ОЗУ (RDRAM).
Компьютер 1012 также включает в себя другие невременные считываемые компьютером носители, например, удаляемые/неудаляемые, энергозависимые/энергонезависимые компьютерные запоминающие носители. Фиг.10 показывает, например, дисковое запоминающее устройство 1024. Дисковое запоминающее устройство 1024 включает в себя, но без ограничения, устройства, подобные накопителю на магнитных дисках, накопителю на гибких дисках, лентопротяжному устройству, дисководу диска Jaz, дисководу диска Zip, приводу LS-100, карте флэш-памяти или карте памяти.
Кроме того, дисковое запоминающее устройство 1024 может включать в себя запоминающие носители отдельно или в сочетании с другими запоминающими носителями, в том числе, но без ограничения, оптический дисковод, например, устройство ПЗУ на компакт-диске (CD-ROM), дисковод записываемых CD-дисков (дисковод CD-R), дисковод перезаписываемых CD-дисков (дисковод CD-RW) или дисковод ПЗУ на цифровом универсальном диске (DVD-ROM). Чтобы содействовать соединению дисковых запоминающих устройств 1024 с системной шиной 1018, как правило, используется съемный или несъемный интерфейс, например, интерфейс 1026.
Следует отметить, что Фиг.10 описывает программное обеспечение, которое действует в качестве посредника между пользователями и основными компьютерными ресурсами, описанными в подходящей рабочей среде 1000. Такое программное обеспечение включает в себя операционную систему 1028. Операционная система 1028, которая может храниться на дисковом запоминающем устройстве 1024, действует, чтобы управлять и распределять ресурсы компьютерной системы 1012.
Системные приложения 1030 используют преимущество управления ресурсами посредством операционной системы 1028 через программные модули 1032 и программные данные 1034, хранимые либо в системной памяти 1016, либо на дисковом запоминающем устройстве 1024. Следует отметить, что заявленное изобретение может быть реализовано с различными операционными системами или сочетаниями операционных систем.
Пользователь вводит команды или информацию в компьютер 1012 через устройство(а) 1036 ввода. Устройства 1036 ввода включают в себя, но без ограничения, указательное устройство (например, мышь, шаровой манипулятор, стило или тому подобное), клавиатуру, микрофон, джойстик, спутниковую тарелку, сканер, карту ТВ-тюнера, цифровую фотокамеру, цифровую видеокамеру, веб-камеру и/или тому подобное. Устройства 1036 ввода соединяются с блоком 1014 обработки через системную шину 1018 через интерфейсный порт(ы) 1038. Интерфейсный порт(ы) 1038 включают в себя, например, последовательный порт, параллельный порт, игровой порт и универсальную последовательную шину (USB).
Устройство(а) 1040 вывода используют некоторые из тех же самых типов портов, что и устройство(а) 1036 ввода. Таким образом, например, USB-порт может быть использован для предоставления входных данных компьютеру 1012 и вывода информации из компьютера 1012 на устройство 1040 вывода.
Выходной адаптер 1042 предоставлен, чтобы проиллюстрировать, что есть несколько устройств 1040 вывода, подобных мониторам, динамикам и принтерам, в числе других устройств 1040 вывода, которые доступны через адаптеры. Выходные адаптеры 1042 включают в себя в качестве иллюстрации, а не ограничения, видео и звуковые карты, которые предоставляют средство соединения между устройством 1040 вывода и системной шиной 1018. Должно быть отмечено, что другие устройства и/или системы устройств предоставляют возможности как ввода, так и вывода, например, удаленный компьютер(ы) 1044.
Компьютер 1012 может представлять собой сервер, размещающий различные программные приложения в сетевом окружении с использованием логических соединений с одним или более удаленными компьютерами, например удаленным компьютером(ами) 1044. Удаленный компьютер(ы) 1044 могут быть клиентскими системами, выполненными с веб-браузерами, приложениями ПК, приложениями мобильного телефона и тому подобным.
Удаленный компьютер(ы) 1044 может быть персональным компьютером, сервером, маршрутизатором, сетевым ПК, рабочей станцией, основанным на микропроцессоре устройством, мобильным телефоном, одноранговым устройством или другим общим сетевым узлом и тому подобным, и, как правило, включает в себя многие или все из элементов, описанных относительно компьютера 1012.
В целях краткости, только запоминающее устройство 1046 памяти проиллюстрировано с удаленным компьютером(ами) 1044. Удаленный компьютер(ы) 1044 логически соединен с компьютером 1012 через сетевой интерфейс 1048, а затем физически соединен через соединение 1050 связи.
Сетевой интерфейс 1048 охватывает проводные и/или беспроводные сети связи, например, локальные сети (LAN) и глобальные сети (WAN). Технологии LAN включают в себя Fiber Distributed Data Interface (Распределенный Интерфейс Передачи Данных по Волоконно-Оптическим Каналам, FDDI), Copper Distributed Data Interface (Распределенный Интерфейс Проводной Передачи Данных, CDDI), Ethernet, Token Ring (Маркерное Кольцо) и тому подобное. Технологии WAN включают в себя, но не ограничены ими, каналы связи точка-точка, сети с коммутацией каналов, такие как Цифровые Сети с Комплексными Услугами (ISDN) и их разновидности, сети с коммутацией пакетов и Цифровые Абонентские Линии (DSL).
Соединение(я) 1050 связи относится к аппаратному обеспечению/программному обеспечению, используемым для соединения сетевого интерфейса 1048 с шиной 1018. Несмотря на то, что соединение 1050 связи показано для иллюстративной ясности внутри компьютера 1012, оно также может быть внешним по отношению к компьютеру 1012. Аппаратное обеспечение/программное обеспечение для подключения сетевого интерфейса 1048 могут включать в себя, только в целях примера, внутренние и внешние технологии, например, коммутаторы мобильных телефонов, модемы, включая обычные телефонные модемы, кабельные модемы и DSL модемы, адаптеры ISDN и карты Ethernet.
Примерный блок 1014 обработки для сервера может быть вычислительным кластером, содержащим процессоры Intel Xeon. Дисковое запоминающее устройство 1024 может содержать корпоративную систему хранения данных, например, содержащую тысячи представлений.
То, что было описано выше по тексту, включает в себя примеры изобретения. Конечно, невозможно описать каждую мыслимую комбинацию компонентов или методологий в целях описания заявленного изобретения, но специалист в данной области техники может осознать, что возможны многочисленные дополнительные комбинации и перестановки изобретения. Соответственно, заявленное изобретение предназначено для охвата всех тех изменений, модификаций и вариантов, которые подпадают под объект и объем прилагаемой формулы изобретения.
В частности и относительно различных функций, выполняемых вышеописанными компонентами, устройствами, схемами, системами и т.п., термины (включая ссылку на "средства"), используемые для описания таких компонентов, предназначены, чтобы соответствовать, если не указано иное, любому компоненту, который выполняет указанную функцию описанного компонента (например, функциональный эквивалент), даже если он не эквивалентен структурно раскрытой структуре, которая выполняет функцию в проиллюстрированных в материалах настоящей заявки примерных аспектах заявленного изобретения. В связи с этим также будет признано, что изобретение включает в себя систему, а также считываемый компьютером носитель данных, содержащий исполняемые компьютером инструкции для выполнения действий и/или событий различных способов заявленного изобретения.
Существует множество способов реализации изобретения, например, соответствующий API, набор инструментальных средств, код драйвера, операционная система, управляющий, отдельный или скачиваемый программный объект и т.д., которые дают возможность приложениям и службам использовать методы, описанные в материалах настоящей заявки. Заявленное изобретение рассматривает использование с точки зрения API (или другого программного объекта), а также с программного или аппаратного объекта, который работает согласно методам, изложенным в материалах настоящей заявки. Таким образом, различные реализации изобретения, описанные в материалах настоящей заявки, могут иметь аспекты, которые полностью в аппаратном обеспечении, частично в аппаратном и частично в программном обеспечении, а также в программном обеспечении.
Вышеупомянутые системы были описаны в отношении взаимодействия между несколькими компонентами. Следует понимать, что такие системы и компоненты могут включать в себя эти компоненты или указанные подкомпоненты, некоторые из указанных компонентов или подкомпонентов, и/или дополнительные компоненты, и согласно различным перестановкам и комбинациям вышеуказанного. Подкомпоненты также могут быть реализованы в качестве компонентов, соединенных с возможностью связи с другими компонентами, вместо того, чтобы быть включенными в состав родительских компонентов (иерархически).
Кроме того, следует отметить, что один или более компоненты могут быть объединены в единый компонент, предоставляющий совокупную функциональность, или разделен на несколько отдельных подкомпонентов, и любой один или более из средних уровней, например, уровень управления, может быть предоставлен для соединения с возможностью связи с такими подкомпонентами, чтобы предоставить комплексную функциональность. Любые компоненты, описанные в материалах настоящей заявки, также могут взаимодействовать с одним или более другими компонентами, конкретно не описанными в материалах настоящей заявки, но в целом известными специалистам в данной области техники.
Кроме того, хотя конкретный отличительный признак изобретения, возможно, был раскрыт относительно только одной из нескольких реализаций, этот отличительный признак может быть объединен с одним или более другими отличительными признаками других реализаций, что может быть желательно и предпочтительно для любого заданного или конкретного приложения. Кроме того, в пределах, в которых термины "включает в себя", "включающий", "имеет", "содержит", их варианты и другие подобные слова используются либо в подробном описании, либо в формуле изобретения, эти термины подразумеваются инклюзивными, подобно термину "содержащий" как открытое переходное слово без исключения любых дополнительных или других элементов.