RU2377640C2 - Architecture for extensible system for real time interoperation - Google Patents

Architecture for extensible system for real time interoperation Download PDF

Info

Publication number
RU2377640C2
RU2377640C2 RU2004131024/09A RU2004131024A RU2377640C2 RU 2377640 C2 RU2377640 C2 RU 2377640C2 RU 2004131024/09 A RU2004131024/09 A RU 2004131024/09A RU 2004131024 A RU2004131024 A RU 2004131024A RU 2377640 C2 RU2377640 C2 RU 2377640C2
Authority
RU
Russia
Prior art keywords
objects
endpoint
real
application
action
Prior art date
Application number
RU2004131024/09A
Other languages
Russian (ru)
Other versions
RU2004131024A (en
Inventor
Адриан ПОТРА (US)
Адриан ПОТРА
Кришнамуртхи ГАНЕСАН (US)
Кришнамуртхи ГАНЕСАН
Му ХАН (US)
Му ХАН
Нихил П. БОБДЕ (US)
Нихил П. БОБДЕ
Original Assignee
Майкрософт Корпорейшн
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/918,855 external-priority patent/US8321506B2/en
Application filed by Майкрософт Корпорейшн filed Critical Майкрософт Корпорейшн
Publication of RU2004131024A publication Critical patent/RU2004131024A/en
Application granted granted Critical
Publication of RU2377640C2 publication Critical patent/RU2377640C2/en

Links

Images

Landscapes

  • Information Transfer Between Computers (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Computer And Data Communications (AREA)

Abstract

FIELD: physics; computer engineering.
SUBSTANCE: group of inventions relates to apparatus for a unified application programming interface for writing application programs which use communication protocols. The architecture has action objects, terminal point objects and several multimedia stacks. These objects can use different communication protocols, such as Session Initiating Protocol or Real-time Transport Protocol, for sending and receiving messages. Each of the action objects, terminal point objects and several multimedia stacks has one or more application programming interfaces (API), which an application developer can use to access or provide functionalities related to interoperation. These objects display API on a basic realisation provided by other objects. Use of action objects enables a developer to provide less amount of application logic than would have been required in a different case to provide complex interoperation services.
EFFECT: provision for additional functions for interoperation in an application in real time.
17 cl, 5 dwg

Description

Перекрестные ссылки на связанные заявкиCross references to related applications

По настоящей заявке испрашивается приоритет предварительной патентной заявки США 60/513790 от 23.10.2003, заявки 60/599807 от 06.08.2004, заявки 10/918333 от 13.08.2004 и заявки 10/918855 от 14.08.2004.This application claims the priority of provisional patent application US 60/513790 from 10.23.2003, application 60/599807 from 08/06/2004, application 10/918333 from 08/13/2004 and application 10/918855 from 08/14/2004.

Область техникиTechnical field

Описываемая технология в целом относится к передаче данных и, более конкретно, к архитектуре для расширяемой системы совместной работы в реальном времени.The technology described generally relates to data transmission and, more specifically, to the architecture for an extensible real-time collaboration system.

Предшествующий уровень техникиState of the art

Различные коммуникационные приложения и протоколы обеспечивают связь между программами программного обеспечения или пользователями. В качестве примера, приложения коммуникаций в реальном времени, такие как MICROSOFT WINDOWS MESSENGER (сервис сообщений компании Microsoft Windows) и Voice over Internet Protocol (передача голоса по Интернет-протоколу) (VoIP), обеспечивают связь между пользователями, посылающими друг другу текстовые, видео- или речевые данные. Эти приложения могут использовать различные протоколы, такие как SIP (Протокол Инициирования Сеанса), RTP (Протокол Передачи в Реальном Времени), RTCP (Протокол Управления в Реальном Времени), для установления сеансов и для пересылки относящейся к передачам информации. Протокол SIP является протоколом управления уровня приложений, который устройства могут использовать для обнаружения друг друга и для установления, модификации и завершения сеансов между устройствами. Протокол RTP является протоколом для доставки аудио- и видеоданных через Интернет и часто используется в потоковых мультимедийных системах и в системах видеоконференцсвязи во взаимосвязи с другими протоколами, такими как RTCP и Н.323. Протокол RTCP представляет собой протокол, который обеспечивает возможность клиентскому приложению контролировать и управлять данными, передаваемыми или принимаемыми с использованием протокола RTP, и используется вместе с протоколом RTP. Протоколы SIP и RTP/RTCP являются стандартами, предложенными для сети Интернет. Их спецификации “RFC 3261” и “RFC 3550” доступны через Интернет по адресу www.ietf.org на /rfc/rfc3261.txt и по адресу www.faqs.org на /rfcs/rfc3550.html соответственно и включены в настоящий документ во всей своей полноте посредством ссылки.Various communication applications and protocols provide communication between software programs or users. As an example, real-time communication applications, such as MICROSOFT WINDOWS MESSENGER (Microsoft Windows messaging service) and Voice over Internet Protocol (VoIP), provide communication between users sending text, video to each other - or voice data. These applications can use various protocols, such as SIP (Session Initiation Protocol), RTP (Real-Time Transmission Protocol), RTCP (Real-Time Control Protocol), to establish sessions and to transfer information related to transmissions. SIP is an application layer control protocol that devices can use to discover each other and to establish, modify, and end sessions between devices. RTP is a protocol for delivering audio and video data over the Internet and is often used in streaming multimedia systems and video conferencing systems in conjunction with other protocols such as RTCP and H.323. RTCP is a protocol that enables a client application to control and manage data transmitted or received using the RTP protocol and is used in conjunction with the RTP protocol. SIP and RTP / RTCP are the standards proposed for the Internet. Their specifications “RFC 3261” and “RFC 3550” are available online at www.ietf.org at /rfc/rfc3261.txt and at www.faqs.org at /rfcs/rfc3550.html, respectively, and are incorporated into this document by in its entirety by reference.

Приложения могут дополнительно использовать другие протоколы. Приложения могут использовать усовершенствованные версии вышеуказанных протоколов или другие отличающиеся протоколы, которые предназначены для пересылки специализированных данных. В качестве примера, когда становится доступным новый или усовершенствованный протокол для пересылки информации видеоконференцсвязи, разработчику приложения, создающему или модифицирующему приложение, может оказаться желательным использовать новый или усовершенствованный протокол, например, для улучшения рабочих показателей или предоставления дополнительных функций. Для использования нового или усовершенствованного протокола разработчику приложения может потребоваться модифицировать части приложения, которые взаимодействуют с коммуникационными протоколами, поскольку усовершенствование протокола или новый протокол могут иметь интерфейс, отличающийся от того, который ранее использовался. В качестве примера, хотя протокол может иметь интерфейс NewSession (новый сеанс) для создания нового сеанса, усовершенствованная версия может включать в себя метод StartSession (запуск сеанса), который создает и запускает сеанс и получает дополнительные параметры. Поскольку StartSession получает дополнительные параметры, его интерфейс отличается от NewSession, и поэтому приложение, использующее NewSession, может потребовать модификации для использования StartSession. Если протокол имеет отличающийся интерфейс, разработчикам приложений может потребоваться изучить этот отличающийся интерфейс и модифицировать свои приложения для использования этого интерфейса, чтобы применять протокол.Applications may optionally use other protocols. Applications can use enhanced versions of the above protocols or other different protocols that are designed to send specialized data. As an example, when a new or improved protocol for sending video conferencing information becomes available, it may be desirable for an application developer creating or modifying an application to use a new or improved protocol, for example, to improve performance or provide additional features. To use a new or improved protocol, the application developer may need to modify parts of the application that interact with communication protocols, since a protocol improvement or a new protocol may have an interface that is different from the one that was previously used. As an example, although the protocol may have a NewSession interface for creating a new session, the enhanced version may include the StartSession method, which creates and starts a session and receives additional parameters. Since StartSession receives additional parameters, its interface is different from NewSession, and therefore an application using NewSession may require modification to use StartSession. If the protocol has a different interface, application developers may need to examine this different interface and modify their applications to use this interface to apply the protocol.

Разработчикам приложений может потребоваться изучение детальных особенностей каждого из множества коммуникационных протоколов, которые они используют в разрабатываемых приложениях. В качестве примера, если разработчик приложения использует протокол SIP или RTP/RTCP, разработчику приложения может потребоваться изучить все три протокола, чтобы обеспечить программную логику, связанную с этими протоколами. Разработчику приложения, не знакомому со всеми тремя протоколами, может потребоваться дополнительное обучение и время для знакомства со всеми этими протоколами. Кроме того, если приложение должно модифицироваться для работы с дополнительными или усовершенствованными протоколами, разработчику приложения может потребоваться пересмотреть или дополнить логику программирования, чтобы приложение могло функционировать с этими протоколами. Это может привести к дополнительным расходам и трудностями в разработке.Application developers may need to study the detailed features of each of the many communication protocols that they use in developing applications. As an example, if the application developer uses the SIP or RTP / RTCP protocol, the application developer may need to study all three protocols in order to provide the programming logic associated with these protocols. An application developer who is not familiar with all three protocols may need additional training and time to become familiar with all of these protocols. In addition, if an application needs to be modified to work with additional or enhanced protocols, the application developer may need to revise or supplement the programming logic so that the application can function with these protocols. This can lead to additional costs and development difficulties.

Кроме того, различные протоколы представляют множество сложностей. Например, для обеспечения функции видеоконференцсвязи в приложении, разработчику приложения потребовалось бы ознакомиться с рядом протоколов и обеспечить логику для координации этих протоколов для дополнения возможностей видеоконференцсвязи. Дополнение к приложению других возможностей совместной работы, таких как передача текстовых сообщений, передача речевых сообщений и т.д. представляет другие подобные проблемы.In addition, various protocols present many complexities. For example, in order to provide video conferencing functionality in an application, an application developer would need to familiarize themselves with a number of protocols and provide logic to coordinate these protocols to complement the capabilities of video conferencing. Addition to the application of other collaboration features, such as text messaging, voice messaging, etc. presents other similar problems.

Таким образом, весьма полезной была бы архитектура для расширенной системы совместной работы в реальном времени, которая облегчает добавление функций обеспечения совместной работы в приложение без существенных инвестиций в подготовку разработчиков.Thus, the architecture for an advanced real-time collaboration system would be very useful, which would make it easy to add collaboration features to the application without significant investment in developer training.

Сущность изобретенияSUMMARY OF THE INVENTION

Предложена архитектура для расширенной системы совместной работы в реальном времени. Эта архитектура представляет унифицированный интерфейс программирования приложений (API) для написания прикладных программ, которые используют коммуникационные протоколы. Архитектура имеет объекты действий, объекты конечных точек и множество мультимедийных стеков. Эти объекты могут использовать различные коммуникационные протоколы, такие как SIP (Протокол Инициирования Сеанса), RTP (Протокол Передачи в Реальном Времени), для передачи и приема сообщений, содержащих информацию. Объекты действий, объекты конечных точек и множество мультимедийных стеков могут иметь каждый один или более интерфейсов программирования приложений (API), которые разработчик приложения может использовать для доступа или обеспечения функциональных возможностей совместной работы. Эти объекты отображают API на базовые реализации, обеспечиваемые другими объектами. Использование объектов действий позволяет разработчику обеспечивать меньший объем логики приложения, чем это было бы необходимо в ином случае для обеспечения сложных сервисов совместной работы.An architecture is proposed for an advanced real-time collaboration system. This architecture provides a unified application programming interface (API) for writing application programs that use communication protocols. Architecture has action objects, endpoint objects, and many multimedia stacks. These objects can use various communication protocols, such as SIP (Session Initiation Protocol), RTP (Real-Time Transmission Protocol), to send and receive messages containing information. Action objects, endpoint objects, and many multimedia stacks can have each one or more application programming interfaces (APIs) that an application developer can use to access or provide collaboration functionality. These objects map the API to the underlying implementations provided by other objects. Using action objects allows the developer to provide less application logic than would otherwise be necessary to provide complex collaboration services.

Краткое описание чертежейBrief Description of the Drawings

Фиг.1 - блок-схема, иллюстрирующая компоненты архитектуры для расширяемой системы совместной работы в реальном времени согласно возможному варианту осуществления.1 is a block diagram illustrating architecture components for an extensible real-time collaboration system according to a possible embodiment.

Фиг.2 - блок-схема, иллюстрирующая компоненты объекта конечной точки расширяемой системы совместной работы в реальном времени согласно возможному варианту осуществления.FIG. 2 is a block diagram illustrating components of an endpoint object of an expandable real-time collaboration system according to a possible embodiment.

Фиг.3 - блок-схема, иллюстрирующая объекты действий расширяемой системы совместной работы в реальном времени согласно возможному варианту осуществления.FIG. 3 is a block diagram illustrating objects of actions of an expandable real-time collaboration system according to a possible embodiment.

Фиг.4 - блок-схема, иллюстрирующая процедуру "Создание серверной конечной точки" согласно возможному варианту осуществления.FIG. 4 is a flowchart illustrating a “Server Endpoint Creation” procedure according to a possible embodiment.

Фиг.5 - блок-схема, иллюстрирующая архитектуру расширяемой системы совместной работы в реальном времени согласно возможному варианту осуществления.5 is a block diagram illustrating the architecture of an extensible real-time collaboration system according to a possible embodiment.

Детальное описаниеDetailed description

В возможном варианте осуществления предусмотрена архитектура для расширяемой системы совместной работы в реальном времени. Архитектура обеспечивает высокоуровневый интерфейс программирования приложений (API) для написания прикладных программ, которые используют коммуникационные протоколы для обеспечения сервисов совместной работы. Разработчик приложения может добавить сервисы совместной работы к приложению с использованием интерфейса API без необходимости изучения сложностей, связанных с различными базовыми протоколами, которые реализуют сервисы совместной работы.In a possible embodiment, an architecture is provided for an extensible real-time collaboration system. The architecture provides a high-level application programming interface (API) for writing application programs that use communication protocols to provide collaboration services. An application developer can add collaboration services to an application using an API without having to learn the complexities associated with the various underlying protocols that implement collaboration services.

Эта архитектура содержит объекты действий, объекты конечных точек и множество мультимедийных стеков. Эти объекты могут использовать различные коммуникационные протоколы, такие как SIP или RTP/RTCP, для передачи и приема сообщений. Каждый из объектов действий, объектов конечных точек и множества мультимедийных стеков может иметь один или более интерфейсов API, которые могут использоваться разработчиком приложения для доступа к функциям или обеспечения функций, предоставляемых объектами. Разработчик приложения может выбрать вариант обеспечения логики приложения, которая использует интерфейсы API, предоставляемые объектами конечных точек или мультимедийными стеками, или может выбрать вариант обеспечения логики приложения, которая использует интерфейс API, обеспечиваемый объектом действия. За счет использования интерфейсов API, обеспечиваемых объектами конечных точек или мультимедийными стеками, разработчик приложения получает возможность проявить высокую степень гибкости, но должен обеспечивать существенно больший объем логики приложения, чем в случае использования только интерфейса API объекта действия. Разработчик приложения может выбрать вариант использования интерфейса API объекта действия по различным причинам. Интерфейс API объекта действия обеспечивает более высокоуровневый интерфейс, чем интерфейсы API объекта конечной точки и мультимедийных стеков. Кроме того, объекты действий координируют объект конечной точки и мультимедийный стек и, таким образом, для выполнения координации не потребуется создание логики приложения.This architecture contains action objects, endpoint objects, and many multimedia stacks. These entities can use various communication protocols, such as SIP or RTP / RTCP, to send and receive messages. Each of the action objects, endpoint objects, and a plurality of multimedia stacks can have one or more APIs that can be used by the application developer to access the functions or provide the functions provided by the objects. An application developer can choose an option for providing application logic that uses the APIs provided by endpoint objects or multimedia stacks, or can choose an option for providing application logic that uses the API provided by the action object. Through the use of APIs provided by endpoint objects or multimedia stacks, the application developer is able to show a high degree of flexibility, but must provide a significantly larger amount of application logic than if only the action object's API is used. An application developer can choose to use the action object's API for various reasons. The action object API provides a higher level interface than the endpoint object and multimedia stack APIs. In addition, action objects coordinate the endpoint object and the multimedia stack, and thus, application logic is not required to perform coordination.

Объекты действий обеспечивают сервисы для приложений и других объектов. Объекты действий представляют собой объекты, которые позволяют приложению участвовать в множестве различных действий и могут включать в себя, например, мгновенную передачу сообщений, телеконференцсвязь, видеоконференцсвязь, совместное использование приложений и другие действия. Объекты действий могут рассматриваться как объекты «в оболочке», которые обеспечивают функции лежащих в их основе (базовых) объектов, включая объекты конечных точек и мультимедийные стеки. В частности, объекты действий координируют объекты конечных точек и мультимедийные стеки для обеспечения непрерывного и интегрированного сеанса связи с другими объектами, использующими объекты действий, такими как приложения.Action objects provide services for applications and other objects. Action objects are objects that allow an application to participate in many different actions and may include, for example, instant messaging, teleconferencing, video conferencing, application sharing, and other actions. Objects of actions can be considered as objects “in the shell” that provide functions of the underlying (basic) objects, including endpoint objects and multimedia stacks. In particular, action objects coordinate endpoint objects and multimedia stacks to provide a continuous and integrated communication session with other objects using action objects, such as applications.

В качестве примера выгоды от использования объекта действия может служить следующее. Разработчику приложения может оказаться желательным обеспечить возможности видеоконференцсвязи в приложении. Для этого разработчик приложения должен был бы сначала познакомиться с протоколом сигнализации, таким как протокол SIP, и мультимедийным протоколом, таким как протокол RTP/RTCP. Затем разработчик приложения должен был бы обеспечить логику приложения для создания сеанса, определить, имеется ли в текущий момент онлайновый контакт с лицом, с которым желательна видеоконференцсвязь, послать приглашение присоединиться к видеоконференции, согласовать различные параметры, касающиеся видеоконференции, получить аудио- и видеоданные от аппаратных средств получения аудио- и видеоданных и, наконец, осуществить обмен аудио- и видеоданными с использованием протокола RTP/RTCP. В противоположность этому, при использовании объекта действия, соответствующего видеоконференцсвязи, согласно предложенной архитектуре, многие из этих этапов исключаются, поскольку этот объект действия, соответствующий видеоконференцсвязи, специально предназначается для консолидации логики прикладной программы в несколько высокоуровневых интерфейсов. Предложенная архитектура имеет подобные объекты действий для ряда других действий, связанных с совместной работой. Кроме того, эта архитектура обеспечивает поддержку для дополнительных объектов действий, которые должны дополнительно вводиться в будущем.The following may serve as an example of the benefits of using an action object. An application developer may wish to provide video conferencing capabilities within the application. To do this, the application developer would first need to become familiar with the signaling protocol, such as the SIP protocol, and the multimedia protocol, such as the RTP / RTCP protocol. Then, the application developer would have to provide the application logic for creating the session, determine whether there is currently an online contact with the person with whom video conferencing is desired, send an invitation to join the video conferencing, agree on various parameters regarding the video conferencing, receive audio and video data from the hardware means for receiving audio and video data and, finally, to exchange audio and video data using the RTP / RTCP protocol. In contrast, when using an action object corresponding to video conferencing according to the proposed architecture, many of these steps are excluded, since this action object corresponding to video conferencing is specifically designed to consolidate the application logic into several high-level interfaces. The proposed architecture has similar action objects for a number of other actions related to collaboration. In addition, this architecture provides support for additional action objects, which should be additionally introduced in the future.

Объект конечной точки обеспечивает сервисы администрирования, такие как сигнализация. Объект конечной точки включает в себя компоненты профиля, публикации/подписки, сигнализации и стека протоколов. Компонент профиля может обеспечивать абстрактное описание пользователя посредством интерфейса API. Компонент публикации/подписки обеспечивает интерфейсы для отслеживания информации присутствия и доступности, относящейся к пользователям. Компонент сигнализации может использоваться для обеспечения или приема редких транзакционных сообщений, относящихся к установлению или управлению сеансами связи. Компонент сигнализации может также использоваться для согласования, например, параметров среды передачи, например лимита ширины полосы. Компонент стека протоколов используется компонентами профиля, публикации/подписки и сигнализации для посылки или приема данных и поддерживает различные протоколы, включая протокол SIP.The endpoint object provides administration services, such as signaling. An endpoint object includes the components of a profile, publish / subscribe, signaling, and protocol stack. A profile component can provide an abstract description of a user through an API. The publish / subscribe component provides interfaces for tracking presence and availability information related to users. The signaling component can be used to provide or receive rare transactional messages related to establishing or managing communication sessions. The signaling component may also be used to match, for example, transmission medium parameters, for example, a bandwidth limit. The protocol stack component is used by the profile, publish / subscribe, and signaling components to send or receive data and supports various protocols, including SIP.

Как описано выше, объект действия обеспечивает инструмент для разработчиков приложений, позволяющий простым способом дополнительно вводить сервисы совместной работы в приложения. В качестве примера, разработчик приложения, желающий добавить функцию видеоконференцсвязи в приложение, может обеспечить логику для создания (или «реализации») объекта действия, соответствующего видеоконференцсвязи. Объект действия, соответствующий видеоконференцсвязи, может затем создать объект конечной точки для сигнализации (например, объект конечной точки протокола SIP) и мультимедийный стек для передачи сообщений, чтобы осуществить пересылку аудио/видеоданных. В процессе последующих действий видеоконференцсвязи (например, при посылке или приеме потока аудио/видеоданных) объект действий может координировать объекты при их создании или реализации (создании экземпляра). В одном варианте осуществления приложение может создавать объекты и дополнительно обеспечивать индикацию объектов для объекта действия. В таком случае объекту действия не требуется создавать эти объекты.As described above, the action object provides a tool for application developers that allows you to easily add collaboration services to applications in a simple way. As an example, an application developer desiring to add a video conferencing function to an application can provide logic for creating (or “implementing”) an action object corresponding to a video conferencing. An action object corresponding to video conferencing can then create an endpoint object for signaling (for example, an SIP endpoint object) and a multimedia message stack to send audio / video data. In the process of subsequent videoconferencing actions (for example, when sending or receiving an audio / video stream), an action object can coordinate objects when they are created or implemented (creating an instance). In one embodiment, the application can create objects and further provide an indication of objects for the action object. In this case, the action object does not need to create these objects.

Объекты мультимедийного стека обеспечивают сервисы передачи содержимого, такие как обработка потока аудио/видеоданных. В качестве примера, объект мультимедийного стека может использовать протокол RTP/RTCP для посылки или приема аудиовизуальной информации, относящейся к видеоконференции.The multimedia stack objects provide content transfer services, such as audio / video stream processing. As an example, a multimedia stack object may use the RTP / RTCP protocol to send or receive audiovisual information related to video conferencing.

На фиг.1 показана блок-схема, иллюстрирующая компоненты архитектуры для расширяемой системы совместной работы в реальном времени согласно возможному варианту осуществления. Архитектура для расширяемой системы совместной работы в реальном времени содержит объект 102 сервиса совместной работы, множество объектов 104 конечных точек, объекты 106 действий и множество мультимедийных стеков 108. Одно или более приложений 110 могут использовать архитектуру путем доступа к различным методам, свойствам и событиям, связанным с архитектурой. Разработчик приложения, создающий приложение, может использовать архитектуру путем применения унифицированного интерфейса API вместо необходимости изучения и реализации различных интерфейсов API для каждого мультимедийного стека, протокола или другого компонента, который может использовать приложение или архитектура.1 is a block diagram illustrating architecture components for an extensible real-time collaboration system according to a possible embodiment. The architecture for an extensible real-time collaboration system includes a collaboration service object 102, a plurality of endpoint objects 104, action objects 106 and a plurality of multimedia stacks 108. One or more applications 110 can use the architecture by accessing various methods, properties, and events related with architecture. The application developer creating the application can use the architecture by applying a unified API instead of having to learn and implement different APIs for each multimedia stack, protocol, or other component that the application or architecture can use.

Объект 102 сервиса совместной работы обеспечивает инструмент для приложений, чтобы совместно использовать множество объектов конечных точек, и может обеспечивать совместимые интерфейсы API для ряда объектов конечных точек. В качестве примера, если объект 1 конечной точки обеспечивает интерфейс, связанный с приемом (или посылкой) информации, объект 2 конечной точки аналогичным образом обеспечивает интерфейс, связанный с приемом (или посылкой) информации, но два интерфейса используют различные имена, однако выполняют сходные функции, то объект сервиса совместной работы может обеспечить общее имя для обоих интерфейсов. Если разработчик приложения использует это общее имя в приложении, то разработчику приложения не нужно пересматривать приложение в случае, когда новый или модифицированный объект, который обеспечивает интерфейс с отличающимся именем, используется с объектом сервиса совместной работы.The collaboration service object 102 provides a tool for applications to share multiple endpoint objects, and can provide compatible APIs for a number of endpoint objects. As an example, if the endpoint object 1 provides an interface associated with receiving (or sending) information, the endpoint object 2 similarly provides an interface associated with receiving (or sending) information, but the two interfaces use different names, however, they perform similar functions , then the collaboration service object can provide a common name for both interfaces. If the application developer uses this common name in the application, then the application developer does not need to revise the application when a new or modified object that provides an interface with a different name is used with the collaboration service object.

Объекты 104 конечных точек обеспечивают инструмент для сигнализации о других объектах. Сигнализация может быть использована между двумя объектами конечных точек, для которых имеет место сеанс, например, так что объект конечной точки может пригласить или запросить другой объект конечной точки осуществить действие или обменяться информацией, связанной с сеансом. В качестве примеров, объект конечной точки может пригласить другой объект конечной точки к диалогу с мгновенной передачей сообщений и затем может передать текстовые сообщения, относящиеся к диалогу. Объекты конечных точек описаны ниже более детально со ссылкой на фиг.2.Objects 104 endpoints provide a tool for signaling other objects. Signaling can be used between two endpoint objects for which a session is taking place, for example, so that the endpoint object can invite or request another endpoint object to take an action or exchange information related to the session. As examples, an endpoint object may invite another endpoint object to a conversation with instant messaging and then can send text messages related to the conversation. The endpoint objects are described in more detail below with reference to FIG.

Объекты действий являются компонентами, которые обеспечивают возможность приложению участвовать в различных действиях, связанных с совместной работой. Эти компоненты обеспечивают интерфейс API, который разработчик приложения может использовать для координации объектов конечных точек и мультимедийных стеков. Объекты 106 действий описаны ниже более детально со ссылкой на фиг.3.Action objects are components that enable an application to participate in various collaborative activities. These components provide an API that an application developer can use to coordinate endpoint objects and multimedia stacks. Action objects 106 are described in more detail below with reference to FIG.

Объект 108 мультимедийного стека обеспечивает сервисы передачи содержимого, такие как обработка потоков данных, и обеспечивает интерфейс API для других объектов для посылки или приема данных. Архитектура может поддерживать виртуально бесконечное количество мультимедийных стеков ввиду того, что архитектуре не требуется проводить различия между различными типами данных или сред передачи. В результате новые мультимедийные стеки могут быть добавлены, или мультимедийные стеки могут быть модифицированы, по мере того как изменяются требования. Примером мультимедийного стека является протокол RTP/RTCP. Этот мультимедийный стек может быть использован для посылки аудиовизуальной информации.The multimedia stack object 108 provides content transfer services, such as processing data streams, and provides an API for other objects to send or receive data. An architecture can support a virtually infinite number of multimedia stacks because the architecture does not need to distinguish between different types of data or media. As a result, new multimedia stacks can be added, or multimedia stacks can be modified as requirements change. An example of a multimedia stack is the RTP / RTCP protocol. This multimedia stack can be used to send audiovisual information.

На фиг.2 показана блок-схема, иллюстрирующая компоненты объекта конечных точек расширяемой системы совместной работы в реальном времени, согласно одному варианту осуществления. Объекты конечных точек обеспечивают сервисы администрирования, например, инструмент для сигнализации о других объектах. Сигнализация может быть использована между двумя объектами конечных точек, для которых имеет место сеанс, например, так что объект конечной точки может пригласить или запросить другой объект конечной точки осуществить действие или обменяться информацией, связанной с сеансом. В качестве примеров, объект конечной точки может пригласить другой объект конечной точки в сеансе к диалогу с мгновенной передачей сообщений и затем может передать текстовые сообщения, относящиеся к диалогу.2 is a block diagram illustrating components of an endpoint object of an extensible real-time collaboration system according to one embodiment. Endpoint objects provide administration services, for example, a tool for signaling about other objects. Signaling can be used between two endpoint objects for which a session is taking place, for example, so that the endpoint object can invite or request another endpoint object to take an action or exchange information related to the session. As examples, an endpoint object may invite another endpoint object in a session to a conversation with instant messaging and then can send text messages related to the conversation.

Данная архитектура может поддерживать различные объекты конечных точек, и каждый объект конечной точки может быть реализован многократно. В качестве примера, может иметься объект конечной точки, относящийся к персональной пользовательской учетной записи провайдера Интернет-сервиса (например, MSN.COM), и другой объект конечной точки, относящийся к корпоративной пользовательской учетной записи Интернет (например, MICROSOFT.COM). Пользователь может зарегистрироваться у провайдеров сервисов с использованием персональной учетной записи на множестве устройств (например, на портативном вычислительном устройстве и на настольном вычислительном устройстве), а также может зарегистрироваться с использованием корпоративной учетной записи на некоторых из устройств (например, на настольном вычислительном устройстве). Таким образом, может иметься два экземпляра, относящиеся к указателю URI (универсальный идентификатор ресурса), связанному с персональной учетной записью. Индивидуальные экземпляры объектов конечных точек могут быть затем уникальным образом идентифицированы посредством комбинации универсального идентификатора ресурса (URI) и идентификатора конечной точки (EID). В качестве примера, объект конечной точки может быть идентифицирован с помощью URI вида user@MSN.COM и с помощью EID вида “1234”. Как описано выше, идентификатор EID может быть использован для конкретного различения экземпляра объекта конечной точки от другого экземпляра объекта конечной точки, который связан с тем же самым указателем URI.This architecture can support various endpoint objects, and each endpoint object can be implemented multiple times. As an example, there may be an endpoint object related to a personal user account of an Internet service provider (e.g. MSN.COM) and another endpoint object related to a corporate user account of an Internet service (e.g. MICROSOFT.COM). A user can register with service providers using a personal account on multiple devices (e.g., a portable computing device and a desktop computing device), and can also register using a corporate account on some of the devices (e.g., a desktop computing device). Thus, there may be two instances related to a URI (universal resource identifier) associated with a personal account. Individual instances of endpoint objects can then be uniquely identified by a combination of a universal resource identifier (URI) and an endpoint identifier (EID). As an example, an endpoint object can be identified using a URI of the form user@MSN.COM and an EID of the form “1234”. As described above, an EID can be used to specifically distinguish an instance of an endpoint object from another instance of an endpoint object that is associated with the same URI.

Объект конечной точки может обеспечить интерфейс «данные» и интерфейс «сигнализация». Интерфейс данных может включать в себя методы, события, свойства, относящиеся к данным, которые опубликованы или абонированы объектом конечной точки. Путем публикации или подписки на данные приложение может обеспечивать данные или уведомляться об изменениях в данных. Интерфейс сигнализации может обеспечивать способы, события и свойства, относящиеся к управлению сигнализацией для объекта конечной точки. В качестве примера, характеристики сигнализации могут включать в себя создание или присоединение к сеансам, вхождение в диалог или выход из диалога, принятие приглашений или отказ от приглашений и другие сигналы.An endpoint object can provide a data interface and an alarm interface. The data interface may include methods, events, properties related to data that are published or subscribed to by the endpoint object. By publishing or subscribing to data, an application can provide data or be notified of changes in data. The signaling interface may provide methods, events, and properties related to signaling management for an endpoint object. As an example, signaling characteristics may include creating or joining sessions, entering or leaving a dialog, accepting invitations, or rejecting invitations and other signals.

Показанный на чертеже объект 200 конечной точки содержит компонент 201 профиля, компонент 202 публикации и подписки, компонент 204 сигнализации и компонент 206 стека протоколов.The endpoint object 200 shown in the drawing comprises a profile component 201, a publish and subscribe component 202, a signaling component 204, and a protocol stack component 206.

Компонент профиля может обеспечивать абстрактное описание пользователя посредством интерфейса API. Он поддерживает сервисно-связанную информацию для пользователя, такую как электронный адрес (например, URI), мандат (учетная запись с параметрами доступа пользователя, сформированными после его успешной аутентификации), используемый для провайдера сервиса, статус провайдера сервиса, возможности и стратегии. Пользователи могут иметь более одного профиля на провайдера сервиса. Компонент профиля может быть использован при создании сеансов связи с другими пользователями, например, для обеспечения пользовательского URI. Компонент профиля обеспечивает методы для входа в систему или выхода из системы для пользователя в связи с провайдером сервисов.A profile component can provide an abstract description of a user through an API. It supports service-related information for the user, such as an email address (e.g., a URI), a credential (an account with user credentials generated after successful authentication) used for the service provider, the status of the service provider, capabilities and strategies. Users can have more than one profile per service provider. The profile component can be used to create communication sessions with other users, for example, to provide a custom URI. The profile component provides methods for logging in or logging out for the user in connection with the service provider.

Компонент публикации и подписки обеспечивает интерфейсы для отслеживания информации присутствия и доступности, относящейся к пользователям. Информация доступности связана с тем, присутствует ли пользователь на конкретном вычислительном устройстве. Информация доступности связана с тем, доступен ли присутствующий пользователь для приема сообщения или желает ли он этого. В качестве примера, пользователь сотового телефона может быть присутствующим, когда его сотовый телефон включен, но может быть недоступным для сеанса связи с передачей сообщения, когда пользователь участвует в телефонном вызове. Аналогичным образом, пользователь, установивший индикацию «занято» в MICROSOFT WINDOWS MESSENGER, может присутствовать, но быть недоступным для передачи сообщений.The publishing and subscribing component provides interfaces for tracking presence and accessibility information related to users. Accessibility information relates to whether a user is present on a particular computing device. Accessibility information is related to whether the present user is available to receive the message or whether he wants it. As an example, a cell phone user may be present when his cell phone is turned on, but may not be available for a messaging session when the user participates in a phone call. Similarly, a user who has set the busy indication in MICROSOFT WINDOWS MESSENGER may be present but not be available to send messages.

В качестве еще одного примера, объект присутствия может обеспечивать информацию, относящуюся к пользователю, который присутствует и доступен для участия в диалоге MICROSOFT WINDOWS MESSENGER с использованием вычислительного устройства, а также доступен для участия в телеконференции с использованием сотового телефона. Если пользователь больше не зарегистрирован в MICROSOFT WINDOWS MESSENGER, объект присутствия может обновить эту информацию, так чтобы приложение, использующее объект присутствия, могло определять, что пользователь больше не присутствует или не доступен для участия в диалоге MICROSOFT WINDOWS MESSENGER. Таким образом, информация присутствия указывает, присутствуют ли пользователи или другие объекты. Различные провайдеры сервисов или протоколы могут использовать различные механизмы для формирования или обеспечения информации присутствия. Для того чтобы разработчику приложения не требовалось знать о множестве путей выработки или обеспечения информации присутствия, разработчик приложения может использовать объект конечной точки для выработки или использования информации присутствия.As another example, a presence object may provide information related to a user who is present and available to participate in the MICROSOFT WINDOWS MESSENGER dialog using a computing device, and is also available to participate in a teleconference using a cell phone. If the user is no longer registered with MICROSOFT WINDOWS MESSENGER, the presence object can update this information so that the application using the presence object can determine that the user is no longer present or is not available to participate in the MICROSOFT WINDOWS MESSENGER dialog. Thus, presence information indicates whether users or other objects are present. Different service providers or protocols may use different mechanisms to generate or provide presence information. So that the application developer does not need to know about the many ways of generating or providing presence information, the application developer can use the endpoint object to generate or use the presence information.

Компонент публикации/подписки обеспечивает интерфейс подписки для создания подписки на публикацию другого объекта, интерфейс публикации для обеспечения подписок на другие объекты и интерфейс уведомления для приема уведомлений, связанных с сервисами, на публикации которых была осуществлена подписка. Эти интерфейсы позволяют приложению использовать компонент для обеспечения, приема или отслеживания информации присутствия. В качестве примера, если пользователь участвует в диалоге MICROSOFT WINDOWS MESSENGER с использованием персонального компьютера и участвует в телеконференции с использованием сотового телефона, компонент публикации/подписки может обнаруживать и сообщать о присутствии пользователя в обоих местоположениях. Указатель URI и идентификатор EID могут совместно уникальным образом идентифицировать экземпляры объектов конечных точек. Поскольку пользователь может присутствовать во множестве местоположений одновременно, указатель URI пользователя может быть указан как присутствующий в этом множестве местоположений. Добавление идентификатора EID во взаимосвязи с заданным указателем URI обеспечивает механизм однозначно определенной идентификации конкретного экземпляра присутствия.The publishing / subscribing component provides a subscription interface for creating a subscription to the publication of another object, a publishing interface for providing subscriptions to other objects, and a notification interface for receiving notifications related to services for which the subscription has been subscribed. These interfaces allow the application to use the component to provide, receive, or track presence information. As an example, if a user participates in a MICROSOFT WINDOWS MESSENGER dialog using a personal computer and participates in a teleconference using a cell phone, the publish / subscribe component can detect and report the presence of the user at both locations. The URI and EID can jointly uniquely identify instances of endpoint objects. Since a user can be present in multiple locations at the same time, a user URI may be indicated as being present in this multiple locations. Adding an EID in conjunction with a given URI provides a mechanism for uniquely identifying a particular presence instance.

Уведомления могут быть обеспечены в связи с различной информацией. В качестве примера, могут быть обеспечены уведомления в отношении того, является ли пользователь интерактивным, занятым, доступным, отсутствующим на время обеда и т.д. Уведомления могут также обеспечиваться в связи с территориальным местоположением пользователя (например, как это обеспечивается Системой глобального позиционирования GPS), контактной информацией, календарной информацией, сообщениями вне офиса, аудио/видеорежимом и т.д.Notifications may be provided in connection with various information. As an example, notifications can be provided regarding whether the user is interactive, busy, available, absent at lunch time, etc. Notifications can also be provided in connection with the user's territorial location (for example, as provided by the GPS Global Positioning System), contact information, calendar information, messages outside the office, audio / video mode, etc.

Компонент сигнализации может также использоваться для обеспечения или приема нечастых транзакционных сообщений, относящихся к установлению или управлению сеансами связи. Этот компонент может также использоваться для согласования, например, параметров среды передачи, таких как число кадров в секунду.The signaling component may also be used to provide or receive infrequent transactional messages related to establishing or managing communication sessions. This component can also be used to match, for example, transmission medium parameters, such as the number of frames per second.

Объект стека протоколов отвечает за передачу и прием информации с использованием протокола. В качестве примера, протокол SIP может использоваться для посылки или приема информации сигнализации. В различных вариантах осуществления равным образом могут быть использованы другие протоколы. В одном варианте осуществления объект конечной точки может быть совместимым с множеством протоколов. В таком случае объект конечной точки может иметь возможность использовать, например, множество протоколов, если необходимо, для посылки и приема информации. Альтернативно, архитектура может поддерживать множество комбинаций объектов конечных точек и протоколов в качестве отдельных объектов конечных точек. В таком случае один объект конечной точки может использоваться для протокола SIP, а другой - для некоторого другого протокола.The protocol stack object is responsible for transmitting and receiving information using the protocol. As an example, SIP can be used to send or receive signaling information. In various embodiments, other protocols may equally be used. In one embodiment, the endpoint entity may be compatible with multiple protocols. In this case, the endpoint object may be able to use, for example, many protocols, if necessary, to send and receive information. Alternatively, an architecture may support multiple combinations of endpoint objects and protocols as separate endpoint objects. In this case, one endpoint object can be used for SIP, and the other for some other protocol.

На фиг.3 показана блок-схема, иллюстрирующая объекты действий расширяемой системы совместной работы в реальном времени согласно возможному варианту осуществления. Объекты действий обеспечивают сервисы для приложений и других объектов. Объекты действий являются объектами, которые позволяют приложению участвовать во множестве конкретных действий и могут включать в себя, в качестве примера, мгновенную передачу сообщений, телеконференцсвязь, видеоконферненцсвязь, совместное использование приложений и другие действия. Объекты действий могут рассматриваться как объекты «оболочки», которые обеспечивают функциональность базовых объектов, включая объекты конечных точек и мультимедийные стеки. В частности, объекты действий координируют объекты конечных точек и мультимедийные стеки для обеспечения непрерывного сеанса связи с объектами, использующими объекты действий, такие как приложения.FIG. 3 is a flowchart illustrating objects of actions of an expandable real-time collaboration system according to a possible embodiment. Action objects provide services for applications and other objects. Action objects are objects that allow an application to participate in many specific actions and may include, for example, instant messaging, teleconferencing, video conferencing, application sharing, and other actions. Action objects can be thought of as shell objects that provide the functionality of basic objects, including endpoint objects and multimedia stacks. In particular, action objects coordinate endpoint objects and multimedia stacks to provide a continuous communication session with objects using action objects, such as applications.

Каждый объект действия обеспечивает функциональность, которая позволяет приложению, использующему объект, принимать участие во множестве действий. В качестве примера, объект действий может инкапсулировать информацию сигнализации и среды передачи. При этом объект действий может служить мостом между сигнализацией и средой передачи, так что приложение, использующее объект действий, обеспечивается в интегрированном виде. Например, разработчику приложения необходимо просто запросить видеоконференцию, а не устанавливать отдельные соединения и сеансы связи протоколов SIP и RTP/RTCP. Иллюстративные примеры действий описаны ниже.Each action object provides functionality that allows an application using the object to participate in a variety of actions. As an example, an action entity may encapsulate signaling information and transmission media. In this case, the action object can serve as a bridge between the alarm system and the transmission medium, so that the application using the action object is provided in an integrated form. For example, the application developer just needs to request a video conference, and not establish separate connections and SIP and RTP / RTCP protocols. Illustrative examples of actions are described below.

Объект 304 действия сеанса совместной работы позволяет приложению обеспечивать сервисы совместной работы для пользователей приложения. В качестве примера, объект действия сеанса совместной работы может позволить двум пользователям, применяющим два разных компьютера, совместно работать над созданием совместно используемого документа.A collaboration session action object 304 allows an application to provide collaboration services for application users. As an example, the action object of a collaboration session can allow two users using two different computers to work together to create a shared document.

Объект 310 действия совместного использования приложения позволяет приложению, использующему объект действия совместного использования приложения, обеспечивать функциональность, относящуюся к совместному использованию приложений между пользователями, применяющими различные вычислительные устройства. В качестве примера, два пользователя могут совместно использовать приложение «белая доска», с использованием которой пользователь может обеспечивать визуальную информацию, которую может просматривать и которой может манипулировать другой пользователь.An application sharing action object 310 allows an application using an application sharing action object to provide functionality related to application sharing between users using different computing devices. As an example, two users can share a whiteboard application, with which the user can provide visual information that can be viewed and manipulated by another user.

Объект 306 действия передачи сообщений позволяет приложениям обеспечивать возможности передачи сообщений для пользователей приложения. В качестве примера, разработчику приложения может оказаться желательным разрешить передачу сообщений в приложении, которое создает разработчик. В качестве примера, когда два пользователя совместно работают над документом путем одновременного редактирования документа, пользователям может оказаться желательным иметь возможность посылать текстовые сообщения друг другу или участвовать в видеоконференции в процессе совместной работы. В таком случае разработчик приложения может использовать объект действия сеанса совместной работы, а также объекты действий передачи сообщений и видеоконференцсвязи для обеспечения возможности пользователям осуществлять совместную работу и обмениваться сообщениями друг с другом в процессе совместной работы.Message passing action object 306 allows applications to provide message passing capabilities to application users. As an example, an application developer may wish to allow messaging in an application that the developer creates. As an example, when two users work together on a document by editing the document at the same time, it may be desirable for users to be able to send text messages to each other or participate in a video conference in a collaborative process. In this case, the application developer can use the object of the action of the collaboration session, as well as the objects of the action of sending messages and video conferencing to enable users to collaborate and exchange messages with each other in the process of collaboration.

Объект 308 действия видеоконференцсвязи обеспечивает инструменты видеоконференцсвязи для приложения. Видеоконференцсвязь может предусматривать посылку и прием аудиовизуальной информации.A video conferencing action object 308 provides video conferencing tools for an application. Video conferencing may include sending and receiving audiovisual information.

Также возможны и другие объекты действий, которые представлены как объекты 312 действий.Other action objects that are represented as action objects 312 are also possible.

Разработчик приложения может использовать объекты архитектуры, описанные выше (и те, что не перечислены или не описаны), путем использования интерфейсов API, обеспечиваемых этими объектами. Эти объекты могут обеспечивать простой для использования интерфейс API, так что разработчику приложения не требуется ссылаться на интерфейсы API, обеспечиваемые базовыми компонентами, которые предоставляют сервисы, связанные с объектами действий. В качестве примера, провайдер сервиса передачи сообщений может обеспечить интерфейс API, который разработчик может использовать. Для этого разработчику может потребоваться потратить время на изучение этого интерфейса API, который может быть довольно сложным. Вместо этого разработчику может оказаться желательным использовать более простой интерфейс API, обеспечиваемый объектом архитектуры. Кроме того, объект может инкапсулировать этапы, которые могут потребоваться для использования множества других объектов. В качестве примера, разработчику приложения, желающему обмениваться сообщениями с двумя компьютерами, может потребоваться использовать интерфейс API, обеспечиваемый протоколом SIP, а также интерфейс API, предоставляемый другим объектом низкого уровня, который обеспечивает услугу передачи сообщений. В противоположность этому, разработчику приложения следовало бы использовать только объект действия, соответствующий передаче сообщений, и тем самым иметь возможность добавить функцию передачи сообщений к приложению намного более простым путем. Кроме того, архитектура может действовать для координирования множества объектов, тем самым требуя от разработчика приложения создания меньшего объема логики программирования.An application developer can use the architecture objects described above (and those not listed or described) by using the APIs provided by these objects. These objects can provide an easy-to-use API, so the application developer does not need to refer to the APIs provided by the core components that provide the services associated with the action objects. As an example, a messaging service provider can provide an API that a developer can use. To do this, the developer may need to spend time exploring this API, which can be quite complex. Instead, it may be desirable for the developer to use the simpler API provided by the architecture object. In addition, an object may encapsulate steps that may be required to use many other objects. As an example, an application developer who wants to exchange messages with two computers may need to use the API provided by SIP, as well as the API provided by another low-level entity that provides a messaging service. In contrast, the application developer should use only the action object corresponding to the message transfer, and thereby be able to add the message transfer function to the application in a much simpler way. In addition, the architecture can act to coordinate multiple objects, thereby requiring the application developer to create less programming logic.

В одном варианте осуществления сеанс совместной работы содержит и использует объекты действий.In one embodiment, the collaboration session contains and uses action objects.

На фиг.4 показана блок-схема, иллюстрирующая процедуру "Создание серверной конечной точки" согласно возможному варианту осуществления. Процедура вызывается приложением для создания объекта конечной точки, которая соединяется с сервером. Когда создана конечная точка, которая соединяется с сервером, информация, которую он публикует, может быть доступной для объектов, имеющих на это подписку, даже после того как созданная конечная точка больше не функционирует.Таким образом, конечная точка, соединенная с сервером, может обеспечить информацию «на каждый URI», что означает, что информация остается доступной после истечения срока жизни объекта.FIG. 4 is a flowchart illustrating a “Server Endpoint Creation” procedure according to a possible embodiment. The procedure is called by the application to create an endpoint object that connects to the server. When an endpoint is created that connects to the server, the information that it publishes may be accessible to entities that have subscribed to it, even after the created endpoint no longer functions. Thus, the endpoint connected to the server can provide information "per URI", which means that the information remains available after the expiration of the life of the object.

Процедура начинается на этапе 402. На этапе 404 процедура создает новый объект конечной точки и указывает, что конечная точка связана с приложением. Указанное приложение может быть обеспечено как параметр для создания функции, которая действует для создания конечной точки. При создании конечной точки может быть обеспечено «дружественное» (удобное) имя, чтобы можно было ссылаться на эту конечную точку по этому удобному имени. Альтернативно, на вновь созданную конечную точку можно ссылаться по уникальному идентификатору, связанному с конечной точкой. Этот уникальный идентификатор может генерироваться системой, когда объект создан.The procedure begins at step 402. At step 404, the procedure creates a new endpoint object and indicates that the endpoint is associated with the application. The specified application can be provided as a parameter to create a function that acts to create the endpoint. When creating an endpoint, a “friendly” (convenient) name can be provided so that you can refer to this endpoint by this convenient name. Alternatively, a newly created endpoint can be referenced by a unique identifier associated with the endpoint. This unique identifier can be generated by the system when an object is created.

На этапе 406, после создания конечной точки, приложение может зарегистрировать вновь созданный объект конечной точки для сервера, чтобы обеспечить возможность серверу маршрутизировать сообщения к этой конечной точке. После приема запроса регистрации от объекта конечной точки сервер может направить запрос аутентификации к конечной точке. Запрос аутентификации может содержать «область», используемую сервером. Область может указывать имя домена, связанное с сервером. В качестве примера, сервер может направить запрос аутентификации с областью “MICROSOFT.com.”At 406, after the endpoint is created, the application can register the newly created endpoint object for the server to enable the server to route messages to that endpoint. After receiving the registration request from the endpoint object, the server can forward the authentication request to the endpoint. The authentication request may contain a “scope” used by the server. The scope may indicate the domain name associated with the server. As an example, a server can send an authentication request with the scope “MICROSOFT.com.”

На этапе 408 процедура отвечает на запрос аутентификации предоставлением мандата (например, ИД и пароля пользователя), связанного с приложением. Этот мандат может быть введен пользователем или предоставлен автоматически. Сервер может подтвердить подлинность мандата, который выдает процедура. Мандат может быть связан с областью. Например, если приложение обеспечивает мандат, который не связан с областью сервера (“MICROSOFT.com.”), сервер может не аутентифицировать приложение.At 408, the procedure responds to the authentication request by providing a credential (e.g., user ID and password) associated with the application. This credential can be entered by the user or provided automatically. The server can authenticate the credential issued by the procedure. A mandate may be associated with an area. For example, if an application provides a credential that is not associated with a server area (“MICROSOFT.com.”), The server may not authenticate the application.

Если регистрация успешна, то конечная точка может быть готова к приему сообщений от других объектов. В противном случае, конечная точка может оказаться неспособной к приему сообщений.If registration is successful, then the endpoint may be ready to receive messages from other entities. Otherwise, the endpoint may not be able to receive messages.

На этапе 412 процедура возвращается к своему инициатору.At step 412, the procedure returns to its initiator.

В возможном варианте осуществления сервер может разрешить конечной точке, которая не была успешно зарегистрирована, передавать сообщения, но не принимать сообщения. Альтернативно, в модели с более низким уровнем защиты сервер может разрешить любой конечной точке посылать или принимать сообщения.In a possible embodiment, the server may allow an endpoint that has not been successfully registered to send messages but not receive messages. Alternatively, in a lower security model, the server may allow any endpoint to send or receive messages.

В одном варианте осуществления сервер может направить запрос аутентификации конечной точке, когда конечная точка пытается послать сообщение, но не когда она принимает сообщения.In one embodiment, the server may send an authentication request to the endpoint when the endpoint attempts to send a message, but not when it receives the messages.

Альтернативная процедура (не показана) может создавать одноранговую конечную точку. Одноранговая конечная точка представляет собой такую конечную точку, которая не ассоциирована с сервером. Когда конечная точка не ассоциирована с сервером, информация, которую публикует конечная точка, может оказаться недоступной, когда конечная точка прекратит функционирование.An alternative procedure (not shown) may create a peer-to-peer endpoint. A peer endpoint is an endpoint that is not associated with a server. When the endpoint is not associated with a server, the information that the endpoint publishes may not be available when the endpoint ceases to function.

На фиг.5 показана схема архитектуры, иллюстрирующая архитектуру расширяемой системы совместной работы в реальном времени согласно возможному варианту осуществления. Архитектура содержит объект 502 действия, объект 504 конечной точки и объекты 506 мультимедийных стеков. Эти объекты описаны выше детально. Схема архитектуры показывает соотношение между объектом действия, объектом конечной точки и объектом мультимедийных стеков в возможном варианте осуществления. Более конкретно, схема архитектуры показывает, что функциональность, обеспечиваемая объектом действия, включает в себя функциональность, обеспечиваемую объектами конечной точки и мультимедийных стеков.5 is an architecture diagram illustrating the architecture of an extensible real-time collaboration system according to a possible embodiment. The architecture comprises an action object 502, an endpoint object 504, and multimedia stack objects 506. These objects are described above in detail. The architecture diagram shows the relationship between the action object, the endpoint object, and the multimedia stack object in a possible embodiment. More specifically, the architecture diagram shows that the functionality provided by the action object includes the functionality provided by the endpoint and multimedia stack objects.

В одном варианте осуществления множество объектов действий могут быть использованы с соответствующими объектами мультимедийных стеков.In one embodiment, a plurality of action objects may be used with corresponding multimedia stack objects.

Приложения могут вызывать методы объектов архитектуры или могут непосредственно вызывать методы базовых объектов, которые реализуют соответствующую функцию. За счет вызова методов объектов архитектуры от разработчика приложения может потребоваться обеспечить меньший объем логики и может не потребоваться пересмотр логики приложения, когда базовые компоненты изменяются.Applications can call methods of objects of architecture or can directly call methods of base objects that implement the corresponding function. By invoking methods of architecture objects from the application developer, it may be necessary to provide a smaller amount of logic and it may not be necessary to revise the application logic when the underlying components change.

Ниже представлены некоторые приложения API, обеспечиваемые архитектурой.Below are some of the API applications provided by the architecture.

Приложение может создать объект конечной точки путем создания новой «КонечнойТочкиСовместнойРаботы». Приложение может обеспечить следующие параметры: URI, относящийся к объекту конечной точки, сервер, связанный с объектом конечной точки, и указание мандата сети.An application can create an endpoint object by creating a new “Collaborative Endpoint”. An application can provide the following parameters: the URI associated with the endpoint object, the server associated with the endpoint object, and an indication of the network credential.

Метод «МандатСети» обеспечивает указание мандата сети. Этот метод принимает в качестве параметров указание учетной записи пользователя, пароль и домен, с которым связана учетная запись.The Network Mandate method provides an indication of the network mandate. This method takes as parameters the user account, password and domain with which the account is associated.

Метод «Ввести» регистрирует конечную точку и обеспечивает указание успеха или неудачи. Этот метод не требует параметров.The Enter method registers the endpoint and provides an indication of success or failure. This method does not require parameters.

Метод «Опубликовать» публикует информацию присутствия. В качестве примера, приложение может показать, что пользователь является интерактивным, занят, говорит по телефону и т.д. Архитектура является довольно гибкой для обеспечения виртуально неограниченного числа указаний присутствия. Например, приложение может выбрать вариант публикации местоположения пользователя, определенного системой GPS.The Publish method publishes presence information. As an example, the application can show that the user is interactive, busy, talking on the phone, etc. The architecture is quite flexible to provide a virtually unlimited number of presence indications. For example, an application may choose to publish the user's location as determined by GPS.

В противоположность этому метод «Подписаться» осуществляет подписку на публикацию объекта конечной точки.In contrast, the Subscribe method subscribes to publish an endpoint object.

Метод «Пригласить» приглашает пользователя к сеансу совместной работы. Этот метод получает указание URI, которому должно быть направлено приглашение.The Invite method invites the user to a collaboration session. This method receives the indication of the URI to which the invitation should be sent.

Метод «Принять» принимает приглашение. И наоборот, метод «Отклонить» отклоняет приглашение.The Accept method accepts the invitation. Conversely, the Reject method rejects the invitation.

Объект действия передачи сообщений может быть создан из класса «ДействиеМгновеннойПередачиСообщений». Этот объект действия поддерживает различные методы, включая, например, метод для посылки сообщений «ПослатьСообщение».The messaging action object can be created from the Instant Messaging Action class. This action object supports various methods, including, for example, the method for sending “Send Message” messages.

Метод «ПослатьСообщение» посылает сообщение. Он получает последовательность сообщения в качестве параметра.The Send Message method sends a message. It receives the message sequence as a parameter.

Методы могут быть обеспечены множеством объектов архитектуры. Архитектура может дополнительно обеспечивать методы, свойства и события, относящиеся к извлечению пользовательских свойств, добавлению пользователя к списку контактов, добавлению или удалению участников из диалогов т.д.Methods can be provided by a variety of architectural objects. An architecture may further provide methods, properties, and events related to retrieving user properties, adding a user to a contact list, adding or removing participants from dialogs, etc.

Вычислительное устройство, на котором может быть реализована данная архитектура, включает в себя центральный процессорный блок, память, устройства ввода (например, клавиатуру и указательные устройства), устройства вывода (например, устройства отображения) и запоминающие устройства (например, накопители на дисках). Устройства памяти и запоминающие устройства представляют собой машиночитаемые носители, которые могут содержать команды, которые реализуют систему. Кроме того, структуры данных и структуры сообщений могут храниться или передаваться по среде передачи данных, например, посредством сигнала или коммуникационного канала. Могут использоваться различные коммуникационные каналы, например сеть Интернет, локальная сеть, глобальная сеть, двухточечное коммутируемое соединение.The computing device on which this architecture can be implemented includes a central processing unit, memory, input devices (e.g., keyboards and pointing devices), output devices (e.g., display devices), and storage devices (e.g., disk drives). Memory devices and storage devices are computer-readable media that may contain instructions that implement the system. In addition, data structures and message structures can be stored or transmitted over a data medium, for example, via a signal or a communication channel. Various communication channels may be used, for example, the Internet, a local area network, a wide area network, a point-to-point dial-up connection.

Архитектура может быть реализована в различных операционных средах, включая вычислительные устройства, исполняющие операционную систему MICROSOFT WINDOWS. Эта операционная среда является лишь одним примером подходящей операционной среды и не предусматривает никакого ограничения в отношении объема использования функциональных возможностей системы. Другие хорошо известные вычислительные системы, среды и конфигурации, которые подходят для использования, могут включать персональные компьютеры, серверные компьютеры, портативные или настольные устройства, включая «интеллектуальные» сотовые телефоны, мультипроцессорные системы, системы на основе микропроцессоров, программируемые приборы бытовой электроники, сетевые персональные компьютеры, универсальные вычислительные машины, распределенные вычислительные среды, которые включают в себя любые из вышеупомянутых систем или устройств и тому подобное.The architecture can be implemented in a variety of operating environments, including computing devices running the MICROSOFT WINDOWS operating system. This operating environment is just one example of a suitable operating environment and does not impose any restriction on the amount of use of system functionality. Other well-known computing systems, environments, and configurations that are suitable for use may include personal computers, server computers, portable or desktop devices, including smart cell phones, multiprocessor systems, microprocessor based systems, programmable consumer electronics, network personal Computers, general purpose computers, distributed computing environments that include any of the above systems or devices TV and the like.

Архитектура может быть описана в общем контексте команд, исполняемых компьютером, таких как программные модули, исполняемые одним или более компьютеров или других устройств. В общем случае программные модули включают в себя стандартные подпрограммы, программы, объекты, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или реализуют определенные абстрактные типы данных. В типовом случае функциональность программных модулей может быть объединена или распределена, как это необходимо в различных средах.An architecture may be described in the general context of computer-executable instructions, such as program modules, being executed by one or more computers or other devices. In general, program modules include standard routines, programs, objects, components, data structures, etc. that perform specific tasks or implement certain abstract data types. In a typical case, the functionality of the software modules can be combined or distributed, as is necessary in various environments.

Из вышеизложенного понятно, что конкретные варианты осуществления изобретения, описанные выше, представлены для иллюстрации, и что различные модификации могут быть осуществлены без отклонения от сущности и объема изобретения. Таким образом, изобретение ограничивается только прилагаемой формулой изобретения.From the foregoing, it is understood that the specific embodiments of the invention described above are provided to illustrate, and that various modifications can be made without departing from the spirit and scope of the invention. Thus, the invention is limited only by the attached claims.

Claims (17)

1. Способ, выполняемый в вычислительной системе, для обеспечения сервисов совестной работы в реальном времени в приложении, заключающийся в том, что
создают экземпляр объекта действия (106, 300, 502), причем объект действия предоставляет функциональность объекта конечной точки (104, 200, 504) и объекта мультимедийного стека (108, 506), оба из которых являются базовыми для объекта действия, и содержит интерфейс программирования приложения для обеспечения сервиса совместной работы, и
активизируют методы интерфейса программирования приложения,
причем активизированные методы обеспечивают сервисы администрирования объекта конечной точки, который предоставляет абстракцию пользователя на вычислительном устройстве и идентифицируется комбинацией электронного адреса пользователя и идентификатором конечной точки, причем сервисы администрирования включают предоставление информации присутствия, относящейся к тому, присутствует ли пользователь на вычислительном устройстве; и
причем активизированные методы дополнительно обеспечивают сервисы передачи содержимого объекта мультимедийного стека между приложениями (110), которые осуществляют передачу информации сервиса совместной работы.
1. The method performed in the computing system to provide real-time collaboration services in the application, which consists in the fact that
create an instance of the action object (106, 300, 502), and the action object provides the functionality of the endpoint object (104, 200, 504) and the multimedia stack object (108, 506), both of which are basic for the action object, and contains a programming interface applications for providing a collaboration service, and
invoke application programming interface methods,
moreover, the activated methods provide administration services for an endpoint object that provides an abstraction of a user on a computing device and is identified by a combination of a user's email address and an endpoint identifier, wherein the administration services include providing presence information related to whether the user is present on the computing device; and
moreover, the activated methods additionally provide services for transmitting the contents of a multimedia stack object between applications (110) that transmit information of a collaboration service.
2. Способ по п.1, в котором объект конечной точки использует Протокол Инициирования Сеанса.2. The method of claim 1, wherein the endpoint entity uses a Session Initiation Protocol. 3. Способ по п.2, в котором объект мультимедийного стека использует Протокол Передачи в Реальном Времени.3. The method according to claim 2, in which the multimedia stack object uses the Real-Time Transmission Protocol. 4. Способ по п.2, в котором объект мультимедийного стека использует Протокол Управления в Реальном Времени.4. The method according to claim 2, in which the multimedia stack object uses the Real-Time Control Protocol. 5. Способ по любому из пп.1-4, в котором сервисы передачи содержимого включают в себя обеспечение среды передачи.5. The method according to any one of claims 1 to 4, in which the content transfer services include providing a transmission medium. 6. Расширяемая система совместной работы в реальном времени, содержащая множество объектов мультимедийных стеков (108, 506);
объект конечной точки (104, 200, 504) для обеспечения или получения информации сигнализации, причем объект конечной точки предоставляет абстракцию пользователя на вычислительном устройстве и идентифицируется комбинацией электронного адреса пользователя и идентификатором конечной точки, и
множество объектов действий (106, 300, 502), причем объекты действий обеспечивают функциональность множества объектов мультимедийных стеков и объекта конечной точки, все из которых являются базовыми для множества объектов действия, обеспечивают интерфейс программирования приложения для приложений и используют множество объектов мультимедийных стеков и объект конечной точки для обеспечения сервисов совместной работы, при этом сервисы совместной работы включают предоставление информации присутствия, относящейся к тому, присутствует ли пользователь на вычислительном устройстве,
причем приложение использует интерфейс программирования приложения и не требует обеспечивать логику для координации объектов мультимедийного стека и объекта конечной точки.
6. An expandable real-time collaboration system containing many multimedia stack objects (108, 506);
an endpoint object (104, 200, 504) for providing or receiving signaling information, wherein the endpoint object provides an abstraction of a user on a computing device and is identified by a combination of a user's email address and an endpoint identifier, and
a plurality of action objects (106, 300, 502), and the action objects provide the functionality of a plurality of multimedia stack objects and an endpoint object, all of which are basic for a plurality of action objects, provide an application programming interface for applications and use a plurality of multimedia stack objects and an end object points for providing collaboration services, while collaboration services include providing presence information related to whether user on a computing device,
moreover, the application uses the application programming interface and does not require providing logic for coordinating the objects of the multimedia stack and the endpoint object.
7. Расширяемая система совместной работы в реальном времени по п.6, в которой интерфейс программирования приложения обеспечивает совместимое имя интерфейса, даже если два базовых объекта, реально обеспечивающих ассоциированную функциональность, используют отличающиеся имена интерфейсов.7. The expandable real-time collaboration system according to claim 6, wherein the application programming interface provides a compatible interface name, even if two base objects that actually provide associated functionality use different interface names. 8. Расширяемая система совместной работы в реальном времени по п.6, в которой один из сервисов совместной работы представляет собой передачу сообщений (306).8. An expandable real-time collaboration system according to claim 6, in which one of the collaboration services is messaging (306). 9. Расширяемая система совместной работы в реальном времени по п.6, в которой один из сервисов совместной работы представляет собой видеоконференцсвязь (308).9. The expandable real-time collaboration system according to claim 6, wherein one of the collaboration services is video conferencing (308). 10. Расширяемая система совместной работы в реальном времени по п.6, в которой один из сервисов совместной работы представляет собой совместное использование приложения (310).10. The expandable real-time collaboration system according to claim 6, wherein one of the collaboration services is application sharing (310). 11. Расширяемая система совместной работы в реальном времени по п.6, добавляющая объекты мультимедийных стеков.11. The expandable real-time collaboration system according to claim 6, adding multimedia stack objects. 12. Расширяемая система совместной работы в реальном времени по п.6, в которой объект конечной точки включает в себя компонент профиля (201), предоставляющий абстракцию пользователя на вычислительном устройстве, компонент публикации и подписки (202), предоставляющий интерфейсы для предоставления информации присутствия, компонент сигнализации (204), адаптированный для предоставления транзакционных сообщений, относящихся к установлению или управлению сеансом совместной работы в реальном времени, и компонент стека протоколов (206), предназначенный для передачи и приема информации с использованием протокола.12. An extensible real-time collaboration system according to claim 6, wherein the endpoint object includes a profile component (201) providing a user abstraction on a computing device, a publishing and subscribing component (202) providing interfaces for providing presence information, a signaling component (204) adapted to provide transactional messages related to establishing or managing a real-time collaboration session, and a protocol stack component (206) designed to th for transmitting and receiving information using the protocol. 13. Расширяемая система совместной работы в реальном времени по п.12, в которой компонент стека протоколов использует Протокол Инициирования Сеанса.13. The expandable real-time collaboration system of claim 12, wherein the protocol stack component uses a Session Initiation Protocol. 14. Расширяемая система совместной работы в реальном времени по п.12, в которой компонент стека протоколов использует протокол сигнализации.14. The expandable real-time collaboration system of claim 12, wherein the protocol stack component uses a signaling protocol. 15. Расширяемая система совместной работы в реальном времени по любому из пп.6-14, в которой один из множества объектов мультимедийных стеков использует Протокол Передачи в Реальном Времени.15. An expandable real-time collaboration system according to any one of claims 6-14, wherein one of the plurality of multimedia stack objects uses a Real-time Transmission Protocol. 16. Расширяемая система совместной работы в реальном времени по п.15, в которой объекты действия координируют множество объектов мультимедийных стеков и объект конечной точки под управлением приложения.16. The expandable real-time collaboration system of claim 15, wherein the action objects coordinate a plurality of multimedia stack objects and an endpoint object under application control. 17. Машиночитаемый носитель, имеющий исполняемые компьютером инструкции для выполнения способа по любому из пп.1-5. 17. A computer-readable medium having computer-executable instructions for executing a method according to any one of claims 1-5.
RU2004131024/09A 2003-10-23 2004-10-22 Architecture for extensible system for real time interoperation RU2377640C2 (en)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US51379003P 2003-10-23 2003-10-23
US60/513,790 2003-10-23
US59980704P 2004-08-06 2004-08-06
US60/599,807 2004-08-06
US10/918,333 2004-08-13
US10/918,855 US8321506B2 (en) 2003-10-23 2004-08-14 Architecture for an extensible real-time collaboration system
US10/918,855 2004-08-14

Publications (2)

Publication Number Publication Date
RU2004131024A RU2004131024A (en) 2006-04-10
RU2377640C2 true RU2377640C2 (en) 2009-12-27

Family

ID=36458519

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2004131024/09A RU2377640C2 (en) 2003-10-23 2004-10-22 Architecture for extensible system for real time interoperation

Country Status (1)

Country Link
RU (1) RU2377640C2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2529641C2 (en) * 2010-05-06 2014-09-27 Рикох Компани, Лтд. Transmission terminal, transmission method and computer-readable recording medium storing transmission programme

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2529641C2 (en) * 2010-05-06 2014-09-27 Рикох Компани, Лтд. Transmission terminal, transmission method and computer-readable recording medium storing transmission programme

Also Published As

Publication number Publication date
RU2004131024A (en) 2006-04-10

Similar Documents

Publication Publication Date Title
EP1526695B1 (en) Architecture for an extensible real-time collaboration system
US8589547B2 (en) Side channel for membership management within conference control
US20050089023A1 (en) Architecture for an extensible real-time collaboration system
US8250141B2 (en) Real-time event notification for collaborative computing sessions
RU2345495C2 (en) Method and device for conferencing data sharing
EP2067302B1 (en) Distributable, scalable, pluggable conferencing architecture
US7983201B2 (en) Coordinated invitations to a conference call
US8514842B1 (en) Systems and methods for enabling communication between users of common virtual spaces
US20030014488A1 (en) System and method for enabling multimedia conferencing services on a real-time communications platform
US7769809B2 (en) Associating real-time conversations with a logical conversation
US20080043091A1 (en) Rich media communication client device, method and computer program product
JP2002533023A (en) Announced session description
RU2428807C2 (en) Session communication
US20060161620A1 (en) Extensible activities within collaboration sessions
RU2377640C2 (en) Architecture for extensible system for real time interoperation
AU2011253547B2 (en) Distributable, scalable, pluggable conferencing architecture
Wu et al. A Web-services based conference control framework for heterogenous A/V collaboration
Trossen Scalable group communication in tightly coupled environments
Taha Architecture for a SIP-based conferencing server
Gupta A Floor Control Protocol For SIP-Based Multimedia Conferences
Mortada et al. Internet telephony signaling
Kalasapur Component-based framework for conferencing applications
Mullery et al. Audio/Video Stream Binding in a Pan-European Service Management Platform
Hawwa Floor control for multiparty sessions in 3G networks
Romano MEDIACTRL A. Amirante Internet-Draft University of Napoli Expires: January 12, 2012 T. Castaldi L. Miniero Meetecho

Legal Events

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

Effective date: 20121023