|
原著:Tom Fout
' G7 w. j- U, Y7 d翻译:孟谨$ q* Y5 b( _* R& N3 ~& o7 p
原文出处:MSDN Library January 15, 2002+ l( t, U6 A0 V+ W( e
5 S& v# b: c7 Z- h1 j' _1 p9 o
% J8 p, h9 C/ M4 I
3 }7 T& J. ]4 v, B( Y摘要! U8 L5 u( M- ^8 H% v4 B7 u+ T
Windows XP RTC 的客户端 API 使得开发人员能够在自己的应用程序中实现实时通信。本文介绍了 RTC 技术和应用这一技术所必须的组件。4 I* _4 `* w& X. q
3 U- H5 ]$ D/ M% D# P; ?4 C# z( O* ]) q7 ?4 ^7 g5 D
5 C- Q1 w- `& m& v, |/ E0 a n& `目录
6 u' j3 s# d' ]4 O2 y$ z I7 } x
! R y# j# L/ ?' J9 S* S0 @绪论
7 Z. Z/ ^- I; l3 b1 r( t具有 RTC 功能的应用程序
" F( y0 N; D+ O2 o9 j2 I1 M+ ^RTC 程序的应用场合8 U' A n5 u" a2 X0 }& L$ j, `
RTC客户端应用程序接口
! u/ z, ]) o j0 V# y5 PRTC对象
" `4 U" a% x. m6 L配置文件和设置
+ y% \& p/ a& H/ k+ V. E: `7 p! f客户端事件& V( Q" M9 p$ H+ w
RTC接口' e0 Y+ @. M0 B( I( ^" z
更多信息
" B. S( ^) j3 m8 D9 b3 Y" a: |
6 Z# u" W" G) s N, c. {; P- b% K7 a
o4 e ^) P; K) t; e
绪论* ]( I/ Y+ N0 @% Z& |& N
今天,我们可以采取很多方法和我们的伙伴、客户、支持者、家庭和朋友进行交流。E-mail已经成为一个普遍深入的交流方式,但是它的实时性不强。电话被证明是一种好的交流方式并且具有实时性,但是它也有局限性,比如只有声音的交流,并且它缺乏一种机制来使我们知道是否我们交流的另一方已经准备好接听我们的电话。3 m! M* k3 _" ^9 Z/ J
2 J# C1 R# T* l3 C走进实时通信! O7 k. R8 p- [ S2 \
Real-Time Communications (RTC)提供了丰富的与现场信息相结合的通信和协作特征,使你能够知道在何时何地找到你的联系人。RTC的许多特征以另外的形式或者在其他的应用中有所体现,但是这些特征从未被结合为一个单独的实现。1 p0 V) ~* e9 W" k# z- D
例如,Instant Messaging (IM)即时消息是发展最快的Internet通信机制之一,因为它实现简单并且效率高。IM具有实时性,而且具有现场能力,使你知道何时能找到你的联系人。但是它不具备另外一些特征,例如音频和视频会议以及在线合作等。
1 v' \ d9 {" \6 F/ d& p( f- S5 @ Microsoft Windows XP 在 Microsoft Windows Messenger 中包含了所有的实时通信功能。Windows Messenger使你能与你的客户和同事通过使用文本、音频(语音电话可以在PC到PC、PC到电话、电话到电话之间建立)、视频、共享白板和应用程序的方式进行交流。你可以建立一个联系人清单,通过现场信息得知你的联系人何时在线何时可以联系得到。并且,这些能力并非只限于Windows Messenger,通过使用RTC客户端API可用来丰富其他的应用程序。0 G! V% Y: L* c, t9 a6 S K
5 A, G6 }1 o* n3 {
8 m8 R' \" k/ p' A3 o, H
具有 RTC 功能的应用程序9 F3 U2 X s, B d( d7 w
Windows Messenger 客户端利用 Windows XP 的 RTC 客户端组件。这一客户端在一个单独的应用程序中体现了所有 RTC 能力。然而,在许多情况下,需要辅助程序进行通信颇显累赘。* E: g: f3 o* D- v* q/ N
RTC 是基于 Internet 技术和协议标准的,这使得其它设备和应用程序能使用这一技术与 Windows Messenger 进行沟通。
+ l& Q) k- z/ Y P/ r% ] Windows XP RTC 客户端实现还提供了一个开放的应用程序接口,因此,基于 Windows 平台的应用程序可增加这些 RTC 功能。例如,一个基于 Web 的购买程序可包含一个即时求助按钮。点击该按钮之后,应用程序就会打开一个在客户与技术支持人员之间建立的 IM 会话。
6 [# Q4 p' M4 e7 W) {- v. }1 q+ _8 b" d% y; Y% j8 Z- q$ X
7 P n7 ?3 m8 J: e; U% G, e; w9 }; Q( FRTC 程序的应用场合# ^ R) _# N: u3 F6 R: O p
Windows Messenger 在一个单独的应用中包含了 RTC 的许多功能。这一解决方案有许多用处并且在许多场合可能是最好的解决方案。很多情况下,在你的应用程序中包含这些功能会使事情变得更容易,更完善,更棒。
5 B9 B9 S9 W7 k' G" }! G6 B6 _ 下面是一些将 RTC 功能包含进应用程序的例子。使用这一技术的其它例子还有很多。
4 C: t8 w8 O j' W0 d0 _
' [+ E( T" M/ u$ R: p客户关系管理-——桌面远程帮助' L; z( Y3 a, ~& |2 A
Jim 想通过在线书店购买一本书,但是他的信用卡好像有点问题。通过点击网页上的一个按钮,他立即与 Amazon(书店的名字)的销售代表建立了 IM 会话。通过 IM 和应用程序共享,该销售代表发现并解决了问题。这本书也被定购了。若没有这种实时帮助的能力,Jim 很可能就放弃了这次购买,这笔生意也就丢掉了。
) N% Q# `$ C4 ?6 t) s7 Y" @% {! J4 J! { q& h, J/ C
知识管理--团队和项目的通信站点3 E0 z$ v' m+ Y! F" r
产品研发团队的站点有几个责任功能区(例如,客户端和服务器团队)。通过导航到相关的责任区域,用户能够找到一个列出了团队所有成员以及他们在场与否的面板。通过点击相关成员的联系方式,用户能够立即与该团队的那个成员通信。这种即时出席信息减少了潜在的 E-mail 和电话数量,也减少了失败。! x3 W# e) X) j
% L8 o6 M+ R1 w' ?7 Q& T电子商务--合作伙伴/供应商的通信( _( Q# z. D6 e" i
一个大型制造厂商有很多供应商,这些供应商连接到不同的外部网络中。不采用发送电子邮件等方式来讨论订单,他们可以使用 RTC 的客户端 API 开发一个应用程序,用该程序传达特定信息。例如,制造厂商可以使用 IM 发一个 1000 个零部件订单,并使用 IM 能够立即确认订单已经传送到了供应商一方并且进入了供应商的系统。在该订单的处理过程中,状态信息可以根据需要被自动获取。
; X! H2 X7 e- \: S8 I0 Z2 ^4 o0 @7 k$ g
系统警告--发送至用户桌面 PC 机或者移动设备
6 r+ A: q" d1 |. k1 s f 某个公司已经开发了一个 E-mail 服务器。为了使技术支持的电话能减少,他们开发了一个小型应用程序,这个程序能通知某一特定 E-mail 服务器的所有用户(使用 IM)该服务器将要暂停以便进行例行的维护保养。即使 E-mail 服务器已经不在线,用户也能收到该消息,使得技术支持人员得以清静。% s/ d( Q% f: ]# k1 |; \
6 Q$ d: n4 Y5 ^; }0 v( x游戏! n) h9 f s1 i( I* ?
大多数的多人游戏都包括了和对手以及同伴聊天的机制。但是你能想象在你将要结束你的朋友的游戏的时候看到他的脸么?( E$ h1 Q) v K. r
, Z7 M; d6 T4 K g: L其它用处5 j5 J; c) Q- F; q
在应用程序中 RTC 的功能还有很多其它潜在的用处。通过将 RTC 集成到现存的商业软件中可以实现即时通信和协作,这将提高生产力。使很多行业和部门,包括金融、制造业、医疗保健和人力资源等等从中受益。
' @ D* l' s/ j6 G# m3 m
9 d( X" q# ^# T$ F6 n2 Z8 @0 [; X+ C# T
RTC客户端应用程序接口
0 M3 a {: L7 s; _6 R- `$ i 为了获得与在 Windows Messenger 中实现的同样的 RTC 客户端功能,Windows XP 通过 RTC 客户端 API 开放了 RTC。这些 API 使应用程序能够创建从 PC-PC, PC-phone 或者 phone-phone 的呼叫。应用程序能够增添在 Internet 或者 Intranet 上创建 IM 会话的功能。在 PC 机用户之间,语音和视频呼叫都可以建立。应用程序能获得并显示一系列联系人的现场信息。通过增加应用程序和白板的共享的功能,可以加强双方的合作。
7 t6 ? M' i2 H$ T 谁可以使用这些接口呢?内部的开发团体可以使用这些 API 增加内部工具的功能。软件公司可以使用 RTC API 将 RTC 功能集成到自己的应用程序中,或者建立用于出售的专门软件,或者用来满足客户的需要。电话服务提供者可为住宅或者公司用户建立应用程序。想要出售 RTC 服务的电信提供者可通过使用这些 APIs 为他们的客户建立客户端应用程序。可使用 C++ 和 Microsoft Visual Basic建立应用程序。1 {# j2 ^8 t; v" C& a9 f |
: h% ]8 |, M; r, k, l: ^8 v* P! w
, \! ^7 Y. I4 w) h7 ?; B: M
RTC 对象' N0 W6 r+ M! [1 D: q$ c
RTC 的基本编码模型是 COM。在 RTC 中用于通信的对象分别是 Client、Session 对象和Participant 对象。+ t1 A. O7 G' K) x7 k. S
- E5 O$ g1 k, h- l
& F. x7 v* J+ P2 \+ N1 o- e" h. M图一 RTC客户端COM对象
5 [# V& I! }( b+ e5 `0 b) P7 @Client 对象:Client 对象实现了 IRTCClient 接口,并且为会话建立了允许的类型和参数,比如首选设备、媒体类型和比特率以及其它的媒体属性,比如音量和回波抵消。这个接口也被用于创建会话对象。
$ V+ S; R1 v* [$ f7 R; WSession 对象:Session 对象通过 IRTCClient::CreateSession 方法创建,被用于管理一个会话。这个对象实现了 IRTCSession 接口,这一接口用于初始化、回复或者终止一个会议,增加参加者和其它的会议管理。这个对象支持 IM 和其它的会话类型。Session 对象可用于,例如,创建一个与你的朋友的IM会议,或者开始一个与 Web 站点代表的音频呼叫。 & |( \# T0 O2 J% `! N
Participant 对象:Participant 对象由 IRTCSession::AddParticipant 方法创建,包含了与会议参加者有关的所有方法。它包括了参加者的姓名和当前状态。IRTCParticipant 接口由该对象实现。 # P8 ~0 L5 s5 A1 q: R+ z9 q
出席信息由 Buddy 和 Watcher 对象管理。这些对象提供接口,用于管理获取与联系人和出席成员有关的信息。 " |2 H8 h. b: [, F
Buddy 对象:Buddy 对象用于管理、设置和获取与联系人相关的信息。当通过 IRTCClientPresence::AddBuddy 方法添加 某个联系人时(IRTCClientPresence 由 Client 对象实现),Buddy 对象便被创建。诸如联系人姓名和状态这样的信息可由 IRTCBuddy 接口获得。
" l* V' F: a! Y$ d t VWatcher 对象:Watcher 用于获取与某个看守人有关的状态(watcher)信息, 看守人就是将你添加为联系人的某人。这个对象也可使用 AddWatcher 方法通过 IRTCClientPresence 接口添加。Watcher 的状态和其 它信息使用在 IRTCWatcher 接口中实现的方法获得。
0 n& S& b$ q% D& `- O+ E) b1 s' r, V. [6 r1 `0 i
配置文件和设置. H: z4 C5 f7 e3 a" c; t0 a
配置文件对象用于维护客户端的设置。一个配置文件对象包括了客户端的显示、用户姓名、支持的会议类型和客户端 RTC 提供者的信息。通过这一信息可以获得网络资源情况,并且能用于设置呼叫或者处理出席信息。 配置文件对象由 IRTCClientProvisioning 接口(在 Client 对象中实现)创建。
2 @6 Z; U O. [, y 客户端创建了一个配置文件来存储信息,用于客户进入网络上的服务。一个客户端应用程序必须创建一个 XML 文档来保存客户端的配置。配置文件可 被用于单独设置不同的提供者、代理服务器或者网关给客户端所提供的不同的服务类型。
9 ^2 D, F! I. ]5 c5 Y8 M& U! O 初始化 RTC 之后,客户端应用程序创建并且激活一个配置文件。/ L) Q2 \. r, [, X' l# G9 A5 N' U0 Q
2 _. |: Z/ v' c
4 E2 @0 I: p+ }! L& F客户端事件9 u9 c o q! X! }
RTC 的客户端 API 允许通过不同的客户端事件通知应用程序,包括消息事件、会话状态变化、参与者状态变化、出席状态变化、设备变化和网络质量变化等。在具体实现中,应用程序通过 IRTCClien 接口 建立一个事件过滤器(以屏蔽码形式),并且在应用程序事件接收对象中注册一个 IRTCEventNotification 事件接口。当感兴趣的事件发生时,事件类型和对象 将被提供给客户端的Event 方法进行处理。; M; e, c' J/ {+ x2 `
# ] ~ F0 ?4 B& @+ G1 C
3 f3 ?8 ?: j( S5 V- i/ |
RTC 接口
# s2 }2 `# v! R, C' y3 x3 X 上文所讨论了 RTC 对象实现的几个接口。利用这些接口可添加期望的 RTC 功能到某个应用程序中。这些 RTC 接口及其相关方法在 SDK 中有详细的文档描述。0 N1 r# I* A# T
4 ^8 u( \5 S7 `% E
' B! ?$ U2 f8 ^6 x6 `更多信息: H# v p2 R4 q
要想获得关于 XP 的最新信息,请参阅 Windows XP 主页。
7 r' @# [) G& b8 L要想获得关于 RTC 客户端 API 的详细信息,请参考 SDK 里的 Real-Time Communications (RTC) Client documentation。 |
|