第三章 情境感知系統
第五節 後端資料管理系統
在此節將會針對本系統中的後端管理系統做介紹,在此部分系統主要是在 處理前端使用者透過 Socket 傳回的資料作處理,除了透過本身所提供的服務之 外還可以跟所參考的 Web Services 要求服務,除了這些服務,另外還提供了簡 單的介面可讓後端的系統管理者可以直接透過 Web Services 的 WSDL 檔案來直 接引用 Web Services 的服務,讓後端的管理者可以更有彈性的來引用這些網路 服務,其流程如圖 3.11 所示:
56
圖 3.11 後端資料管理概念圖
在使用者部分主要是利用情境資料中的 ID_context 的 RFID 屬性的值來存 取後端的資料 data.xml 裡面的資料,不管是上述的“person"的情境透或是
“goods"的情境,都是將資料儲存在同一個檔案裡面,以增加管理上的方便,
透過該資料可以啟用使用者偏好瀏覽的網頁以及將啟用情境感知系統的資料呈 現在使用者端格,該檔案裡面資料格式如表 3.4 所示:
表 3.4 使用者個人資料表
標籤 說明
<tag> 使用者 RFID 卡號
<kind> 描述使用者類型
<link> 描述使用者偏好連結
<music> 描述使用者偏好音樂
<start_location> 描述使用者起點
<end_location> 描述使用者終點
經由表 3.4 的資料,系統主要透過標籤中的“kind"的種類來判定使用者 身份類別,依據身分的不同,系統會去參考不同標籤的資料,在本系統預設的 情境中,若使用者是使用“person"這個類別,則接下來會參考“kind、link、
music"這三個標籤中的資料來搭配情境資料作呈現,若使用者是使用“kind"
這個類別,則系統接著會參考“start_location"、“end_location"這兩個標籤 中的資料搭配使用者所提供的情境資料呈現給使用者利用,最後系統運算過後 的資料會透過.NET Framework 的 Socket 的方式將資料透過網路傳輸回使用者 端。
另一方面,在系統裡也提供了讓後端管理者方便新增 Web Services 的方 式,透過直接參考該網路服務的 WSDL 檔案來存取 Web Services,在此方法中,
一開始要先取得該 Web Services 的 WSDL 檔案的 URL,透過 VB.NET 的工具
XMLReader 來解析該 WSDL 檔案,基本的 WSDL 檔案如圖 3.12 所示:
58
圖 3.12 WSDL 描述圖
透過解析該 WSDL 檔案可以了解該 Web Services 提供了什麼服務以及哪一 個服務要什麼變數還有變數型態,這些資料都會在 WSDL 這檔案中詳加描述。
當系統解析過該檔案以後,經由使用者可以自己選擇要引用哪一個方法,
此時系統會透過 Soap Toolkit 這個工具將使用者的要求包成 Soap Request 以 後,在將要求送出到遠端的 Web Services,當遠端的網路服務收到 Soap Request 以後,針對要求的內容以適當的 Soap Response 回應給要求端,最後 Soap Request 端透過解析 Soap Response 的訊息來取的該 Web Services 的服務,這個方法可 以讓使用者不用透過修改程式碼來隨意的新增網路服務,已下圖示將會說明
Soap 訊息的封包格式傳送過程:
圖 3.13 為封裝成 Soap 格式的 Soap Request:
圖 3.13 Soap Request
圖 3.14 為封裝成 Soap 格式的 Soap Response:
圖 3.14 Soap Response POST /aspws/Service.asmx HTTP/1.1
Host: 140.122.184.44
Content-Type: text/xml; charset=utf-8 Content-Length: length
SOAPAction: "http://tempuri.org/HelloWorld"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8 Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<HelloWorldResponse xmlns="http://tempuri.org/">
<HelloWorldResult>string</HelloWorldResult>
60