引言
如名字所示,XCAP 是一种配置访问协议。它使用 XML 文档格式来存储应用程序的配置数据,允许客户端读取、写入及修改配置数据。
XCAP映射 XML 文档的子树和元素属性到 HTTP URL ,所以这些组件可以通过 HTTP 直接获取。 XCAP 是一种映射 XML 文档和文档属性到 HTTP URL 的一种惯例,一个资源的修改如何影响其他资源的规则,数据验证的约束,访问资源时相关的授权策略。因为这种结构,普通 HTTP 能够用来操作数据。 XCAP 很大长度上借鉴了 Application Configuration Access Protocol ( ACAP ),但它不是 ACAP 的扩展,也不依赖 ACAP 。像 ACAP 一样, XCAP 支持多种应用程序配置的需要,而不只是一种。
应用程序
在很多通信应用程序中,如 VoIP, IM 和 presence ,需要网络服务器去获取 个性化 用户信息给服务请求的进程。这些 个性化 用户信息存在于网络中,但由终端用户自己管理。这些管理可通过各种获取终端完成,包括web ,无线手机,或 pc 应用程序。个性化用户信息的例子包括 presence ,授权策略和 presence lists 。 Presence lists 一个观察者需要的一些用户的 presence 。一种获取列表的 presence 信息的方法是订阅代表 presence list 的资源。在这种情况下,资源列表服务器( Resource List Server , RLS )需要获取这个列表来处理自身的 SIP 订阅请求。另一种获取用户 presence list 的方法是单独订阅每个用户。在这种情况下,可以使用一个服务器来方便地存储 list ,当客户端启动时,它从服务器获取 list 。这允许用户从不同的终端获取他们的资源列表。
更详细的解释:
SIMPLE规定允许一个用户( watcher )订阅另一个用户( presentity )来知道他的 presence 信息。
当希望订阅一个presence list 时,标准的做法是要求 watcher 创建和维护订阅到每个 presentity 的列表。对于大的列表,需要的带宽会更大,特别是在无线网络环境下。一个 SIP 事件框架的扩展是,允许 watcher 使用单一的订阅来订阅资源列表。这样的订阅需要一个叫做 Resource List Server 的服务器,这个服务器持有用户希望订阅的资源列表的 presence list 的拷贝。通过使用 XCAP ,一个终端能够展示并按需操作服务器上 presence list 。
操作概述
每个利用 XCAP的 应用程序可以指定应用程序的用法。这种应用程序的用法定义了被应用程序使用的数据的 XML模式,和其他关键信息片段。 XCAP 的首要任务就是允许客户端读、写、修改、创建和删除数据片段。这些操作支持使用 HTTP 1.1 。
一个 XCAP服务器扮演了一组 XML 文档的仓库。每个应用程序都有一组文档,每个应用程序的每个用户也都有一组文档。为了访问这些文档中的一个文档的某一组件, XCAP 定义了一个算法来构建能够指向那个组件的 URL 。组件指示了文档里的所有元素或属性。因此, XCAP 使用的 HTTP URL 指向文档或 XML 文档本身的一块信息。一个遵守此处定义的命名惯例和验证约束的 HTTP 资源就叫做 XCAP 资源。
因为 XCAP资源也是 HTTP 资源,它们可以使用 HTTP 方法获取。使用 HTTP GET 获取 XCAP 资源,用 HTTP PUT 创建或修改, HTTP DELETE 删除资源。与 HTTP 关联的资源的属性,如实体标签,也被应用到 XCAP 资源。实体标签在 XCAP 里非常有用,因为它们允许执行一组条件操作。
一个 XCAP资源不过是 XML 文档, XML 文档里的元素,关联到元素的属性。每个 HTTP GET 、 PUT 、 DELETE 方法能够执行到属于一个用户的特定应用的资源。
映射 XCAP资源到 HTTP URI 可下面方式完成:
<? xml version = "1.0" encoding = "ISO-8859-1" ?>
< xcap-caps >
< users >
< user1 > [email protected] </ user1 >
< user2 > [email protected] </ user2 >
</ users >
</ xcap-caps >
获取<user1> 的 HTTP URI 看起来是这样的:
Part1 |
Part2 |
Part3 |
HTTP Method) |
XCAP Root/Application(k)/user(m)/document(i)/~~/xcap-caps/users/user1 |
HTTP(v) |
GET/PUT/DELETE |
XML里描述资源的真实路径 |
HTTP 1.0/1.1 |
Part2详解:
服务器检索被访问的应用程序,按照 XCAP Root/Application(k) 。如前面提到的,每个应用程序和每个应用程序的用户有它们自己的目录。所以整个系统是以层次化的结构存储的,以 XCAP ROOT作为顶层,应用程序作为这个根的直接子节点,用户构成应用程序的子节点,每个用户目录下有一组 XML 文件。每个 XML 文件里面,所有元素有一个根节点,每个元素可以有一些属性。
上面的路径尝试在 XCAP服务器上 获取应用程序 k下的用户 m 的 i 文档。目前为止的这个路径( Application(k)/user(m)/document(i) )叫做文档选择器。“ ~~ ”叫路径分隔符,它分隔了文档选择器和节点选择器。路径之后的就是节点选择器,所以上面请求的节点选择器是“ xcap-caps/users/user1 ”,这告诉服务器,从文档i 的根节点 <xcap-caps> 开始,在 <xcap-caps> 里找到 <users> ,在 <users> 里找到 <user1> 。当目标被定位到时,可执行指定的方法( GET, PUT, DELETE )。
如果节点选择器为空,则HTTP 的方法将被应用到选定的文档上。
个人总结:
1、 XCAP是一种能够映射 HTTP URL 到服务器上的 XML 内部结构的协议,这些 XML 文档保存每个应用程序里的每个用户的个性化信息。
2、 一个符合XCAP 的 URL 由三部分组成,第一部分叫文档选择器,与普通 HTTP URL 类似,用于定位 XML 文档,路径结构是: Application/User/Document ;第二部分是路径分隔符: ~~ ;第三部分叫节点选择器,使用XPath 表达式来定位 XML 的元素、属性等。
3、 XCAP 服务器可以用 HTTP 协议直接访问,对于定位到的 XML 元素、属性等,可用 HTTP GET 方法查询值, HTTP PUT 创建或修改,用 HTTP DELETE 删除。