2.在無線網絡瀏覽中使用XML 的優缺點
可擴展標記語言(XML: eXtensible MarkupLanguage) 是用來描述其它語言的元語言,定義了應用間傳遞數據的結構, 是能用任何編輯器讀取的文本。利用這種機制,程序員可制定底層數據交換的規范,并在此基礎上開發整個系統的各個模塊,模塊間傳輸符合既定規則的數據,適合計算機間傳送結構化數據。
每種瀏覽器內置的文檔解析器是最核心的部分之一,影響瀏覽器的運行效率和空間效率。由于XML 統一定義了其文檔解析器的標準接口規范——DOM( Document Object Model),即文檔對象模型,使得應用程序可按需選擇、更換合適的解析器,無須對程序本身做大的改動。在瀏覽模型中, 將HTML 解析等計算量大的任務交由中間層服務器完成, 客戶端進行較為簡單的XML 解析, 符合瘦客戶機/ 服務器的信息應用體系模式。當前使用XML 最大的問題是支持XML 的應用程序還不多, 許多具體應用還需要開發人員自行設計。
3.中間層實現的機制和原理
選擇VC++ 6.0 為中間層的集成開發環境,中間層運行在后臺服務器上, 采用模塊化的設計。每個模塊作為一個常規動態鏈接庫( Regular DLL )單元, 由后臺服務器需要時動態加載。
(1) 數個無線MODEM通過多串口卡連接在后臺服務器上構成無線MODEM 池,為多個移動終端用戶提供服務。客戶端與服務器建立連接時, 先申請MODEM 池中的空閑資源并建立與后臺服務器連接, 發送客戶端瀏覽器服務請求,任務完成后釋放MODEM 資源。如沒有可用資源,等待一定時間后重新申請。
(2) 后臺服務器通過有線網絡接入Internet,使用標準WWW 協議棧(HTTP、TCP/IP 等)。與WEB 服務器通訊時主要使用CInternetSession,CHttpConnection 和ChttpFile 等3 個MFC 類。核心代碼如下:
C I n t e r n e t S e s s i o n s e s s i o n ;
C H t t p C o n n e c t i o n * p S e r v e r = N U L L ;
C H t t p F i l e * p F i l e = N U L L ;
AfxParseURL(pURL,…);
初始化完成后, 將客戶端的服務請求轉化為標準統一資源定位符( URL : Uniform ResourceLocator ), 并調用全局函數AfxParseURL 分析映射此URL。
pServer = session.GetHttpConnection();
pFile = pServer->OpenRequest();
pFile->AddRequestHeaders();
pFile->SendRequest();
打開客戶端請求特定HTTP 連接,向WEB 服務器發送相應HTTP 請求消息。
pFile->ReadString();
WEB 服務器返回響應消息, 調用CHttpFile類ReadString 函數取得返回數據, 完成與WEB 服務器通訊。
(3) 選擇Dillo project 瀏覽器中的解析引擎作為解析過濾和組裝模塊的核心, 流程如圖2。
HTML 解析部分對輸入的HTML 數據流按HTML 語法特點逐字符分解成三類:
① Space 數據類型: 所有ASCII 碼值在0x09- 0x0d 或0x20 的字符代表空格或占位信息。經Space_proces 部分處理,以確定其長度。為保持HTML 排版格式基本不變,此類數據全部保存在生成的XML 文件中。
② Tag 數據類型: 表示HTML 數據流中的所有標簽。由于HTML 語法規則的限制,必須檢查標簽的有效性,例如 標簽必須存在于