用户从 Web 浏览器访问您的自定义应用程序。
了解 Connect Web Services 架构和 API 的运作方式。
Adobe® Connect™ Web Services 是 Adobe Connect Server 应用程序套件之上的 Web 服务层。
Web 服务可帮助您构建门户或 Web 应用程序,继而将 Adobe Connect 功能和报告信息与第三方系统(如门户、客户关系管理系统和企业资源规划系统)集成。
举例来说,假设您有一个中央用户管理系统,如 LDAP 目录、Microsoft Active Directory 或其他第三方系统,而这类系统是您业务流程的必要组成部分。
您可以通过 Web 服务编写应用程序,为用户实现系统和 Adobe Connect 之间的同步操作。 通过 J2EE 平台或由您选择的其他技术,该应用程序可以从目录中拉取用户列表,将其与 Adobe Connect 用户列表作比较,然后在 Adobe Connect 用户存储库中执行经过请求的更新任务,例如添加/删除用户或用户组。
数据流
以下示意图介绍了客户端应用程序与 Adobe Connect 之间的数据流。 您编写的自定义应用程序使用 1 到 2 和 A 到 B 的路径。Adobe Connect 应用程序(如 Adobe Connect 会议、Adobe Connect Training 或 Adobe Connect 活动)可使用任意一条数据流路径。
数据流可经 SSL 加密,也可不加密。
未加密方式
如果数据流未经加密,系统会通过 HTTP 和 Adobe 实时消息传输协议 (Real Time Messaging Protocol, RTMP) 建立连接,并按下表所述的路径传输。
示意图中的编号 |
说明 |
---|---|
1 |
客户端 Web 浏览器通过端口 HTTP:80(连接路径可能不同)请求 Adobe Connect 会议或内容 URL。 |
2 |
Web 服务器通过内容传输作出响应,或向客户端浏览器提供进入 Adobe Connect 所需的信息。 |
3 |
Adobe Connect 桌面应用程序通过 RTMP:1935 和 HTTP:80 请求与 Adobe Media Server 建立连接。 |
4 |
Adobe Media Server 作出响应,之后系统打开永久连接,以串流方式向浏览器传输会议通信。 |
3a(替代方式) |
在某些情况下,Adobe Connect 桌面应用程序会请求与 Adobe Media Server 建立连接,但只能通过 RTMPT:80 获得一个隧道连接。 |
4a(替代方式) |
Adobe Media Server 作出响应,之后系统打开隧道连接,以串流方式向浏览器传输会议通信。 |
经过加密的方式
如果数据流经过加密,系统会通过 HTTPS 和 RTMPS(经 SSL 加密的实时消息传输协议)建立安全连接,如下表所示。
示意图中的编号 |
说明 |
---|---|
A |
客户端 Web 浏览器通过 HTTPS:443(连接路径可能不同)上的加密连接请求安全会议或内容 URL。 |
B |
Web/应用程序服务器通过加密内容传输作出响应,或向客户端提供与 Adobe Connect 建立加密连接所需的信息。 |
C |
Adobe Connect 桌面应用程序通过 RTMPS:443 请求与 Adobe Media Server 建立加密连接。 |
D |
Adobe Media Server 作出响应,之后系统打开永久连接,以串流方式向浏览器传输会议通信。 |
自定义应用程序
Adobe Connect Web Services 提供 XML API,因此您的应用程序定能通过 HTTP 或 HTTPS,使用 XML 来与 Adobe Connect 通信。 应用程序通过建立一个请求 URL 并向其传递一或多个参数(可以是名值对或一个 XML 文档)来调用 API。 Web Services 会返回一个 XML 响应,您可以从中提取值。
自定义应用程序从 Adobe Connect 数据库中检索元数据。 元数据包括会议或课程的名称和时间、会议室 URL、内容 URL 以及报告信息。
自定义应用程序自数据库检索元数据时所产生的数据流,会自客户端 Web 浏览器开始,依次流向客户端 Web 应用程序服务器、XML API、Adobe Connect Web 应用程序服务器和 SQL 数据库,然后再依原路径返回。
自定义应用程序与 Adobe Connect 之间的数据流会按如下方式运作:
-
-
应用程序通过 HTTP:80 或 HTTPS:443 调用 XML API。
-
Adobe Connect Web 应用程序服务器向该应用程序及其用户授权,从 SQL 数据库中检索元数据,然后再返回这些元数据。
-
在客户端一侧,Web 或应用程序服务器、XML 分析程序和软件库会处理响应并将其返回给应用程序。
-
用户继续在自定义应用程序中操作,并点击会议或内容 URL。 此时,用户会通过访问 Adobe Connect 应用程序来进入会议室,系统则开始在 Adobe Connect 应用程序与服务器之间传输典型数据流。
Adobe Connect 应用程序
和您在自定义应用程序中使用的 Web Services XML API 一样,Adobe Connect 应用程序也使用该 API 调用服务器。
通常情况下,系统会通过 HTTP 80 端口或 HTTPS 443 端口传输内容, 具体包括幻灯片、HTTP 页面、SWF 文件和通过 FileShare 窗格传输的文件。 以上都是默认的端口编号,您可对其进行配置(详情请参阅《迁移、安装和配置 Adobe Connect Server》)。
来自 Adobe Media Server 的流式实时通信会通过 RTMP 1935 端口传输。 流式通信包括音频、视频(网络摄像机和 FLV)、文件共享和网上聊天。 系统也会通过 RTMP 1935 端口来维持会议状态。
Adobe Connect 组件
Adobe Connect 由两个服务器组件构成,每个服务器都会使用一个 SQL 数据库。
Web 应用程序服务器
Web 应用程序服务器是 Adobe Connect 的控制中枢。 这个服务器包含并执行向用户递送内容所需的所有业务逻辑, 并且管理访问控制、安全功能、配额、授权,以及群集、故障转移和复制等管理功能。
此外,在您并未使用自定义应用程序或集成式第三方系统时,Web 应用程序服务器还会处理 Adobe Connect Central,您可以通过该应用程序查看和管理您单位的内容及用户。 描述内容和用户的元数据可存储在经过复制的单个或多个 SQL 数据库中。 Web 应用程序服务器是无状态的,因而近乎呈线性扩展。
Adobe Media Server
Adobe Media Server 使用 RTMP 以流播方式传输音频、视频和富媒体内容。 录制并回放会议时,需要同步音频和视频,或将内容转换并封装以用于实时屏幕共享,这项工作由 Adobe Media Server 完成。
Adobe Media Server 还会缓存经常访问的网页、流媒体和共享资料,因而在降低服务器负载方面发挥了重要作用。
SQL 数据库
Adobe Connect 使用 Microsoft SQL Server 数据库来永久存储事务性元数据和应用程序元数据,包括用户、用户组、内容和报告信息。 XML API 会检索存储在数据库中的元数据。 可使用 Microsoft SQL Server Desktop Engine (MSDE) 或完整版的 Microsoft SQL Server 2005 来对数据库执行操作。
首次尝试 API 调用
Adobe Connect Web Services 使用 servlet 框架来处理 XML API 请求。 在数据流示意图中,我们以 API 组件来表示 servlet 框架。 API servlet 从客户端接收 XML 请求,然后从 Web 应用程序服务器和数据库返回 XML 响应。
系统会将发送给 XML API 的请求格式化为 HTTP 请求 URL,由 API servlet 处理。 一个请求 URL 的名值对中会列有一个操作名称和一些参数,例如:
https://example.com/api/xml?action=sco-info&sco-id=2006334909
如果拥有 Adobe Connect 帐户的访问权限并可在其中测试 API 调用,您可以试验一下。 事实上,Adobe 建议在学习 API 和编写应用程序时,在浏览器中测试 API 调用。
开始之前,您可以安装相关工具,借此在浏览器中查看 HTTP 请求头和响应头。这个方法十分实用。
在浏览器中调用 common-info
-
(可选)启用在浏览器中查看 HTTP 头的工具。
-
打开浏览器并前往您的 Adobe Connect 登录页面。
-
在未登录状态下,删除 URL 中域名之后的部分,并添加一个对 common-info 的调用:
https://example.com/api/xml?action=common-info
来自 common-info 的响应会提供有关您与服务器会话的信息,特别是识别您会话的 Cookie:
<?xml version="1.0" encoding="utf-8" ?> <results> <status code="ok" /> <common locale="en" time-zone-id="85"> <cookie>breezbryf9ur23mbokzs8</cookie> <date>2008-03-13T01:21:13.190+00:00</date> <host>https://example.com</host> <local-host>abc123def789</local-host> <url>/api/xml?action=common-info</url> <version>connect_700_r641</version> <user-agent> Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322) </user-agent> </common> </results>
从应用程序登录用户帐户时,您需要将 Cookie 值发回服务器,用以识别用户会话(请参阅从应用程序登录)。
在浏览器中调用 principal-list
从 common-info 获得 BREEZESESSION 的 Cookie 值后,浏览器会将其添加到您下一个请求的请求头中。
-
在 Web 浏览器中,登录 Adobe Connect。 更改浏览器 URL 以调用 principal-list:
https://example.com/api/xml?action=principal-list
-
查看请求头。 这次,系统会将 BREEZESESSION 的 Cookie 值发回服务器:
GET /api/xml?action=principal-list HTTP/1.1 Accept: */* Accept-Language: en-us Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322) Host: example.com Connection: Keep-Alive Cookie: BREEZESESSION=breezbryf9ur23mbokzs8
-
查看响应,该响应列出了服务器上的所有主体,每个主体的信息都显示在各自的 principal 元素中。
<?xml version="1.0" encoding="utf-8" ?> <results> <status code="ok" /> <principal-list> <principal principal-id="624526" account-id="624520" type="user" has-children="false" is-primary="false" is-hidden="false"> <name>joe harrison</name> <login>jharrison@example.com</login> <email>jharrison@example.com</email> </principal> <principal principal-id="624550" account-id="624520" type="user" has-children="false" is-primary="false" is-hidden="false"> <name>bob jones</name> <login>bjones@example.com</login> <email>bjones@example.com</email> </principal> ... </principal-list> </results>
添加筛选器和排序工具
在执行 API 中的多种操作时,您都可以添加一个过滤器,让系统仅返回特定的响应元素,您也可以添加一个排序工具,以便按特定顺序显示响应元素。
过滤器是一个特殊参数,其开头为关键词 filter,后面跟着一个可选的修饰符,然后是一个字段名称和一个值。 以下皆为过滤器示例:
filter-name=jazz doe(会与包含确切名称 jazz doe 的结果匹配)
filter-like-name=jazz(会与名称中包含 jazz 的任何结果匹配)
filter-out-type=user(返回不具有 user 类型的任何结果)
以上只是过滤器类型中的一部分,您可以在 filter-definition 中找到更多类型。 您还可以在参考资料中(转到操作参考资料)查看相应操作,借此了解该操作的响应是否可以被过滤。 通常情况下,如果某个操作允许过滤,您就可以对任何响应元素或属性使用过滤器。
排序工具也是一种特殊参数,其开头为关键词 sort(或 sort1 或 sort2),后面跟着一个字段名称和一个关键词(asc 或 desc 中的一个),例如:
sort-name=asc(按 name 升序排列)
sort-group-id=desc(按 group-id 降序排列)
以上示例只是排序工具中的一部分。 您可以在浏览器中测试排序工具或查看 sort-definition 了解详细信息。
使用过滤器和排序工具以实现调用
-
再次调用 principal-list,使其中仅显示用户组并令其按名称的字母顺序排序:
https://example.com/api/xml?action=principal-list&filter-type=group &sort-name=asc
-
为缩小响应范围,请从列表中选择一个用户组并按其名称过滤:
https://example.com/api/xml?action=principal-list&filter-name=developers
这次,系统只返回了一个用户组:
<?xml version="1.0" encoding="utf-8" ?> <results> <status code="ok" /> <principal-list> <principal principal-id="2007105030" account-id="624520" type="group" has-children="true" is-primary="false" is-hidden="false"> <name>developers</name> <login>developers</login> </principal> </principal-list> </results>
能力拓展
至此,您可以继续在浏览器中测试调用,并观察调用的运作方式。 这是学习 XML API 最好最简单的方法。 如需了解更多信息,请使用以下资源: