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?刪除。
總結
- 上一篇: CodeIgniter配置之config
- 下一篇: 编译vo-aacenc遇到的问题