XCAP
?
?
引言
如名字所示,XCAP 是一種配置訪問(wèn)協(xié)議。它使用 XML 文檔格式來(lái)存儲(chǔ)應(yīng)用程序的配置數(shù)據(jù),允許客戶端讀取、寫(xiě)入及修改配置數(shù)據(jù)。
?
XCAP映射 XML 文檔的子樹(shù)和元素屬性到 HTTP?URL ,所以這些組件可以通過(guò) HTTP 直接獲取。 XCAP 是一種映射 XML 文檔和文檔屬性到 HTTP?URL 的一種慣例,一個(gè)資源的修改如何影響其他資源的規(guī)則,數(shù)據(jù)驗(yàn)證的約束,訪問(wèn)資源時(shí)相關(guān)的授權(quán)策略。因?yàn)檫@種結(jié)構(gòu),普通 HTTP 能夠用來(lái)操作數(shù)據(jù)。 XCAP 很大長(zhǎng)度上借鑒了 Application?Configuration?Access?Protocol ( ACAP ),但它不是 ACAP 的擴(kuò)展,也不依賴 ACAP 。像 ACAP 一樣, XCAP 支持多種應(yīng)用程序配置的需要,而不只是一種。
?
應(yīng)用程序
在很多通信應(yīng)用程序中,如 VoIP, IM 和 presence ,需要網(wǎng)絡(luò)服務(wù)器去獲取 個(gè)性化 用戶信息給服務(wù)請(qǐng)求的進(jìn)程。這些 個(gè)性化 用戶信息存在于網(wǎng)絡(luò)中,但由終端用戶自己管理。這些管理可通過(guò)各種獲取終端完成,包括web ,無(wú)線手機(jī),或 pc 應(yīng)用程序。個(gè)性化用戶信息的例子包括 presence ,授權(quán)策略和 presence?lists 。 Presence?lists 一個(gè)觀察者需要的一些用戶的 presence 。一種獲取列表的 presence 信息的方法是訂閱代表 presence?list 的資源。在這種情況下,資源列表服務(wù)器( Resource?List?Server? , RLS )需要獲取這個(gè)列表來(lái)處理自身的 SIP? 訂閱請(qǐng)求。另一種獲取用戶 presence?list 的方法是單獨(dú)訂閱每個(gè)用戶。在這種情況下,可以使用一個(gè)服務(wù)器來(lái)方便地存儲(chǔ) list ,當(dāng)客戶端啟動(dòng)時(shí),它從服務(wù)器獲取 list 。這允許用戶從不同的終端獲取他們的資源列表。
?
更詳細(xì)的解釋:
SIMPLE規(guī)定允許一個(gè)用戶( watcher )訂閱另一個(gè)用戶( presentity )來(lái)知道他的 presence 信息。
?
當(dāng)希望訂閱一個(gè)presence?list 時(shí),標(biāo)準(zhǔn)的做法是要求 watcher 創(chuàng)建和維護(hù)訂閱到每個(gè) presentity 的列表。對(duì)于大的列表,需要的帶寬會(huì)更大,特別是在無(wú)線網(wǎng)絡(luò)環(huán)境下。一個(gè) SIP 事件框架的擴(kuò)展是,允許 watcher 使用單一的訂閱來(lái)訂閱資源列表。這樣的訂閱需要一個(gè)叫做 Resource?List?Server 的服務(wù)器,這個(gè)服務(wù)器持有用戶希望訂閱的資源列表的 presence?list? 的拷貝。通過(guò)使用 XCAP ,一個(gè)終端能夠展示并按需操作服務(wù)器上 presence?list 。
?
?
操作概述
每個(gè)利用 XCAP的 應(yīng)用程序可以指定應(yīng)用程序的用法。這種應(yīng)用程序的用法定義了被應(yīng)用程序使用的數(shù)據(jù)的 XML模式,和其他關(guān)鍵信息片段。 XCAP 的首要任務(wù)就是允許客戶端讀、寫(xiě)、修改、創(chuàng)建和刪除數(shù)據(jù)片段。這些操作支持使用 HTTP?1.1 。
?
一個(gè) XCAP服務(wù)器扮演了一組 XML 文檔的倉(cāng)庫(kù)。每個(gè)應(yīng)用程序都有一組文檔,每個(gè)應(yīng)用程序的每個(gè)用戶也都有一組文檔。為了訪問(wèn)這些文檔中的一個(gè)文檔的某一組件, XCAP 定義了一個(gè)算法來(lái)構(gòu)建能夠指向那個(gè)組件的 URL 。組件指示了文檔里的所有元素或?qū)傩浴R虼?#xff0c; XCAP 使用的 HTTP?URL 指向文檔或 XML 文檔本身的一塊信息。一個(gè)遵守此處定義的命名慣例和驗(yàn)證約束的 HTTP? 資源就叫做 XCAP 資源。
?
因?yàn)?/span> XCAP資源也是 HTTP 資源,它們可以使用 HTTP 方法獲取。使用 HTTP?GET 獲取 XCAP 資源,用 HTTP?PUT 創(chuàng)建或修改, HTTP?DELETE 刪除資源。與 HTTP 關(guān)聯(lián)的資源的屬性,如實(shí)體標(biāo)簽,也被應(yīng)用到 XCAP 資源。實(shí)體標(biāo)簽在 XCAP 里非常有用,因?yàn)樗鼈冊(cè)试S執(zhí)行一組條件操作。
?
一個(gè) XCAP資源不過(guò)是 XML 文檔, XML 文檔里的元素,關(guān)聯(lián)到元素的屬性。每個(gè) HTTP?GET 、 PUT 、 DELETE 方法能夠執(zhí)行到屬于一個(gè)用戶的特定應(yīng)用的資源。
?
映射 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 看起來(lái)是這樣的:
| Part1? | Part2? | Part3? |
| HTTP?Method) | XCAP?Root/Application(k)/user(m)/document(i)/~~/xcap-caps/users/user1 | HTTP(v)? |
| GET/PUT/DELETE | XML里描述資源的真實(shí)路徑 | HTTP?1.0/1.1 |
?
?
Part2詳解:
服務(wù)器檢索被訪問(wèn)的應(yīng)用程序,按照 XCAP?Root/Application(k) 。如前面提到的,每個(gè)應(yīng)用程序和每個(gè)應(yīng)用程序的用戶有它們自己的目錄。所以整個(gè)系統(tǒng)是以層次化的結(jié)構(gòu)存儲(chǔ)的,以 XCAP?ROOT作為頂層,應(yīng)用程序作為這個(gè)根的直接子節(jié)點(diǎn),用戶構(gòu)成應(yīng)用程序的子節(jié)點(diǎn),每個(gè)用戶目錄下有一組 XML 文件。每個(gè) XML 文件里面,所有元素有一個(gè)根節(jié)點(diǎn),每個(gè)元素可以有一些屬性。
?
上面的路徑嘗試在 XCAP服務(wù)器上 獲取應(yīng)用程序 k下的用戶 m 的 i 文檔。目前為止的這個(gè)路徑( Application(k)/user(m)/document(i) )叫做文檔選擇器。“ ~~ ”叫路徑分隔符,它分隔了文檔選擇器和節(jié)點(diǎn)選擇器。路徑之后的就是節(jié)點(diǎn)選擇器,所以上面請(qǐng)求的節(jié)點(diǎn)選擇器是“ xcap-caps/users/user1 ”,這告訴服務(wù)器,從文檔i 的根節(jié)點(diǎn) <xcap-caps> 開(kāi)始,在 <xcap-caps> 里找到 <users> ,在 <users> 里找到 <user1> 。當(dāng)目標(biāo)被定位到時(shí),可執(zhí)行指定的方法( GET,?PUT,?DELETE )。
?
如果節(jié)點(diǎn)選擇器為空,則HTTP 的方法將被應(yīng)用到選定的文檔上。
?
?
?
個(gè)人總結(jié):
1、 XCAP是一種能夠映射 HTTP?URL 到服務(wù)器上的 XML 內(nèi)部結(jié)構(gòu)的協(xié)議,這些 XML 文檔保存每個(gè)應(yīng)用程序里的每個(gè)用戶的個(gè)性化信息。
2、 一個(gè)符合XCAP 的 URL 由三部分組成,第一部分叫文檔選擇器,與普通 HTTP?URL 類(lèi)似,用于定位 XML 文檔,路徑結(jié)構(gòu)是: Application/User/Document ;第二部分是路徑分隔符: ~~ ;第三部分叫節(jié)點(diǎn)選擇器,使用XPath 表達(dá)式來(lái)定位 XML 的元素、屬性等。
3、 XCAP 服務(wù)器可以用 HTTP 協(xié)議直接訪問(wèn),對(duì)于定位到的 XML 元素、屬性等,可用 HTTP?GET 方法查詢值, HTTP?PUT 創(chuàng)建或修改,用 HTTP?DELETE 刪除。
?
?
?
?
?
?
?
總結(jié)
- 上一篇: Android Button监听的方式
- 下一篇: 诺基亚S40手机联系人导入安卓手机