Windows实时通信技术的应用
Tom Fout
Microsoft Corporation
January 15, 2002
摘要:Windows XP RTC的客户端API使得开发人员能够在自己的应用程序中实现实时通信。本文介绍了RTC技术和应用这一技术所必须的组件。
目录:绪论
RTC-Enabled 应用
RTC-Enabled应用场合
RTC客户端应用程序接口
RTC对象
Profiles and Provisioning
客户端事件
RTC接口
更多信息
绪论
今天,我们可以采取很多方法和我们的伙伴、客户、支持者、家庭和朋友进行交流。E-mail已经成为一个普遍深入的交流方式,但是它的实时性不强。电话被证明是一种好的交流方式并且具有实时性,但是它也有局限性,比如只有声音的交流,并且它缺乏一种机制来使我们知道是否我们交流的另一方已经准备好接听我们的电话。
走进实时通信
Real-Time Communications (RTC)提供了丰富的与现场信息相结合的通信和协作特征,使你能够知道在何时何地找到你的联系人。RTC的许多特征以另外的形式或者在其他的应用中有所体现,但是这些特征从未被结合为一个单独的实现。
例如,Instant Messaging (IM)即时消息是发展最快的Internet通信机制之一,因为它实现简单并且效率高。IM具有实时性,而且具有现场能力,使你知道何时能找到你的联系人。但是它不具备另外一些特征,例如音频和视频会议以及在线合作等。
Microsoft® Windows® XP在Microsoft® Windows Messenger中包含了所有的实时通信功能。Windows Messenger使你能与你的客户和同事通过使用文本、音频(语音电话可以在PC到PC、PC到电话、电话到电话之间建立)、视频、共享白板和应用程序的方式进行交流。你可以建立一个联系人清单,通过现场信息得知你的联系人何时在线何时可以联系得到。并且,这些能力并非只限于Windows Messenger,通过使用RTC客户端API可用来丰富其他的应用程序。
RTC-Enabled应用程序
Windows Messenger客户端支持Windows XP的RTC客户端组件。这一客户端在一个单独的应用程序中体现了所有RTC能力。然而,在许多情况下,因为通信的负担很重,往往需要一个第二方程序。
RTC基于网络技术和协议标准,这使得其他的设备和应用程序能使用这一技术与Windows Messenger进行通信。
Windows XP的RTC客户端的实现也提供了一个开放的应用程序接口,因此,基于Windows平台的应用程序可增加RTC功能。例如,一个基于web的购买程序可包含一个即时求助按钮。点击该按钮之后,应用程序就会打开一个在客户与技术支持人员之间建立的IM会话。
RTC-Enabled应用场合
Windows Messenger在一个单独的应用中包含了RTC的许多功能。这一解决方案有许多用处并且在许多场合可能是最好的解决方案。很多情况下,在你的应用程序中包含这些功能会使事情变得更容易,更完善,更棒。
下面是一些将RTC功能包含进应用程序的例子。使用这一技术的其他例子还有很多。
客户关系管理——桌面远程帮助
Jim想在在线书店购买一本书,但是他的信用卡好像有点问题。通过点击网页上的一个按钮,他立即与Amazon(书店的名字)的代表建立了IM会话。通过即时消息和应用程序的共享,代表发现了并解决了问题。这本书也被定购了。若没有这种实时帮助的能力,Jim很可能就放弃了这次购买,这笔生意也就丢掉了。
知识管理——团队和项目的通信站点
产品研发团队的站点有责任的分工(例如客户机或者服务器团队)。通过浏览不同的责任区域,用户能够找到一个列出了团队所有成员以及他们在场与否的面板。通过点击相关的连接,用户能够立即看到团队里的成员。这种即时知识的出现减少了E-mail和电话的数量,减少了失败。
电子商务——合作伙伴/供应商的通信
一个庞大的制造厂商有很多供应商,这些供应商连接到不同的外部网络中。不采用发送电子邮件等方式来讨论订单,他们可以使用RTC的客户端API开发一个应用程序,用该程序传达特定信息。例如,制造商可以使用IM发一个1000个器具订单,并且能够立即确认订单已经传送到了供应商一方并且进入了供应商的系统。随着订单的增长,订单发送的状况可以在需要的时候随时取得。
系统警告——发送至用户PC机桌面或者移动设施
一个公司已经开发了一个E-mail服务器。为了使技术支持的电话能减少,他们开发了一个小的应用程序,这个程序能通知所有某一特定的E-mail服务器用户(使用IM)说这个服务器将要暂停以便进行例行的维护保养。即使E-mail服务器已经不能上线,用户也能收到消息,使得技术支持人员得以清静。
游戏
大多数的多人游戏都包括了和对手以及同伴聊天的机制。但是你能想象在你将要结束你的朋友的游戏的时候看到他的脸么?
其他用处
在应用程序中RTC的功能还有很多其他潜在的用处。通过将RTC集成到现存的商业软件中可以实现即时通信和协作,这导致了生产力的提高,为很多行业和部门,包括金融、制造业、卫生保健和人力资源等带来了好处。
RTC客户端应用程序接口
为了获得与在Windows Messenger中实现的同样的RTC客户端功能,Windows XP通过RTC客户端API开放了RTC。这一API使应用程序能够创建从PC-PC, PC-phone或者 phone-phone的呼叫。应用程序能够增添在Internet或者Intranet上创建IM会话的功能。在PC机用户之间,语音和视频呼叫都可以建立。应用程序能获得并显示一系列联系人的现场信息。通过增加应用程序和白板的共享的功能,可以加强双方的合作。
谁可以使用这些接口呢?内部的开发团体可以使用这些API增加内部工具的功能。软件公司可以使用RTC API将RTC功能集成到自己的应用程序中,或者建立用于出售的专门软件,或者用来满足客户的需要。电话服务提供者可为住宅或者公司用户建立应用程序。想要出售RTC服务的电信提供者可通过使用这些APIs为他们的客户建立客户端应用程序。可使用C++和Microsoft® Visual Basic®建立应用程序。
RTC对象
RTC的基本编码模型是COM。在RTC中用于通信的对象分别是Client客户端、Session会话对象和Participant参加者对象。插图见连接:
图1.RTC客户端COM对象
Client对象:Client对象实现了IRTCClient接口,并且为会话建立了允许的类型和参数,比如首选设备、媒体类型和比特率和其他的媒体属性,比如音量和回波抵消。这个接口也被用于创建会话对象。
Session对象: Session对象通过IRTCClient::CreateSession方法创建,被用于管理一个会话。这个对象实现了IRTCSession接口,这一接口用于初始化、回复或者终止一个会议,增加参加者和其他的会议管理。这个对象支持IM 和其他的会话类型。Session对象可用于,例如,创建一个与你的朋友的IM会议,或者开始一个与Web站点代表的音频呼叫。
Participant对象:Participant对象由IRTCSession::AddParticipant方法创建,包含了与会议参加者有关的所有方法。它包括了参加者的姓名和当前状态。IRTCParticipant接口 由该对象实现。
现场信息由Buddy 和Watcher对象管理。这些对象提供接口,用于管理得到的与联系人和现场成员有关的信息。
Buddy对象:Buddy对象用于管理、设置和取回与联系人相关的信息。Buddy object is created 当通过IRTCClientPresence::AddBuddy方法添加了一个联系的时候,一个Buddy对象被创建(IRTCClientPresence由Client 对象实现)。诸如联系人的姓名和状态的信息可由IRTCBuddy接口获得。
Watcher对象:Watcher用于获取一个watcher的信息, watcher把你添加为联系人。这个对象也可使用AddWatcher方法通过IRTCClientPresence接口添加。Watcher的状态和其他信息使用在IRTCWatcher接口中实现的方法获得。
构造文档(profile)和设置
一个构造文档(profile)对象用于维护客户端的设置。一个构造文档(profile)对象包括了客户端的显示、用户姓名、支持的会议类型和客户端RTC提供者的信息。这一信息可以获得网络资源的情况,并且能用于设置呼叫或者处理出席信息。构造文档对象(profile)由IRTCClientProvisioning接口(在Client对象中实现)创建。
客户端创建了一个构造文档来存储信息,用于客户进入网络上的服务。一个客户端应用程序必须创建一个XML文档来保存客户端的配置。个别的构造文档(profile)可使用设不同的提供者、代理服务器或者网关提供给客户端不同类型的服务。
初始化RTC之后,客户端应用程序创建并且激活一个构造文档(profile)对象。
客户端事件
RTC的客户端API允许通过不同的客户端事件通知应用程序,包括消息事件、会话状态变化、参与者状态变化、出席状态变化、设备变化和网络质量变化等。在具体实现中,应用程序通过IRTCClien接口设置一个事件过滤器,并且在应用程序A中注册一个IRTCEventNotification事件接口。当感兴趣的事件发生时,将事件类型和对象提供给A,A的事件函数进行处理。
RTC接口
上文所讨论的RTC对象的几个接口已经实现了。这些接口可用于添加期望的RTC功能到应用程序中。RTC的接口和相关方法在SDK中有详细的文档描述。
更多信息
要想获得关于XP的最新信息,请参阅Windows XP home page。
要想获得关于RTC客户端API的详细信息,请参考SDK里的Real-Time Communications (RTC) Client documentation。