Web 行為是非常偉大的因為它們允許程式設計師把自定義的功能“連線”到現有的元素和控制項,而不是必須讓用戶下載二進制檔案(例如ActiveX 控制項)來完成這個功能。Web 行為還是推薦的擴展IE對象模型和控制項集的方法。微軟在它的開發者站點上的DHTML 行為庫欄目里提供了幾個定製的Web行為。我會在本文中討論一個比較新的Web 行為:WebService行為。
Web 服務是通過一個開放的簡單對象訪問協定(SOAP)來傳遞參數和接收返回值,以便在Web上提供接口無關的軟體服務的方法。在Internet上有許多例子和文章幫助你創建Web 服務並從傳統的基於視窗表單的應用程式或者在伺服器端來使用這些Web 服務,但是也可以使用WebService 行為也可以在客戶瀏覽器上使用Web 服務。
從客戶瀏覽器調用一個Web 服務的好處包括能夠得到伺服器更快的回響時間,結果是生成互動能力更強的頁面並讓用戶用起來更高興。與傳統的將表單發回伺服器然後接收一個新的頁面不同的是(這個過程包括重新下載圖片和其它的內容),WebService行為使用XMLHTTP在後台只傳送和接收與事務處理過程相關的內容,然後這些內容又可以通過DHTML和腳本進行顯示。
我所知道的目前支持Web 行為的唯一一個瀏覽器是IE;開發者們知道避免使用只能在IE上使用的功能。但是W3C在工作草案里有這個CSS的擴展以作為未來的標準。
如果你決定現在就使用Web 行為,你可以使用下面的JavaScript函式來檢測客戶端是否支持這個功能:
function canUseBehaviors() {
var ua = window.navigator.userAgent;
var msiePos = ua.indexOf('MSIE');
var msieVer = 0;
var behaviorsAvailable = false;
var iHandle = 0;
if (msiePos >= 0) {
msieMajorVer = parseInt(ua.charAt(msiePos + 5));
msieMinorVer = parseInt(ua.charAt(msiePos + 7));
if (msieMajorVer >= 5) {
if (((msieMajorVer == 5) && (msieMinorVer >= 5)) ||
(msieMajorVer > 5)) {
behaviorsAvailable = true;
}
}
}
return behaviorsAvailable;
}
使用上面的函式,你可以在運行時確定是否能夠使用WebService 行為來調用Web 服務並使用IE的DHTML功能來顯示結果或者是把這個表單傳送給伺服器讓伺服器來完成必要的操作,然後再次生成一個完整的頁面。使用CSS語法來為一個元素添加WebService行為不會影響不支持特定CSS屬性的瀏覽器。
微軟提供了一個很好的參考,程式設計師可以用它更好的熟悉從客戶端訪問Web 服務。開發者還可以在微軟的站點上找到必要的HTML 組件(*.htc)檔案。
有了客戶端工具包中的WebService行為,開發者們可以為Web 消費者創建更豐富更具互動性的頁面,它們與使用大型主機提供的Web 服務或者基於表單視窗的應用程式的企業用戶的功能是一樣的。這將幫助消除冗餘的代碼並能通過為服務提供的特定功能提高回響時間來增強用戶體驗的快感。