XCAP
?
?
引言
如名字所示,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 > hgs@cs.columbia.edu </ user1 >
< user2 > mss2103@cs.columbia.edu </ 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 刪除。
?
?
?
?
?
?
?
總結
- 上一篇: Android Button监听的方式
- 下一篇: 诺基亚S40手机联系人导入安卓手机