考慮一下從客戶端傳輸到服務器的數據量有多大。從可用性的角度來看,用戶在一個薄客戶端瀏覽器上獲得了富用戶界面,無需安裝任何東西。但是,當在服務器端擴展這些應用程序時就要付出代價了。AJAX應用程序的典型容量規劃數可能會是標準Web應用程序的3到4倍。
有人可能會問:這對WebLogic Server有何影響?每個發送給WebLogic的HTTP請求都要使用一個執行線程。根據AJAX編程的性質以及許多短期的請求會以輪詢的形式不斷發送的情況,該行為模式可能造成大量客戶端請求不斷沖擊服務器的局面。多年來,WebLogic都將這一問題考慮在內,并構建了一個相當棒的特性,即FutureResponseServlet。該范型構建于異步servlet理念的基礎之上。從版本6.1開始,該功能就允許開發人員提供真正異步的來自服務器的通知,而無需對事件進行客戶端輪訓并在服務器端使用執行線程。在9.x之前,BEA還不急于公開該類。
如何在現實中利用該類呢?我們來看一個例子。假定業務需求是要構建一個基于Web的應用程序,該應用程序以近乎實時的方式向服務器發送數據而無需刷新瀏覽器。這樣的應用程序可以向服務器提交一魴枰ê艸な奔浯淼那肭,而葎蚧能箚距]盞焦賾諂渥刺囊觳絞錄⒓嗵錄。从茧H踅嵌壤純,这有写夃实现方法。其中一种方法就是使用一个与Java Servlet通信的Java Applet來獲得異步信息。這是一種不錯的方法,但是對于用戶來說有些不太方便,因為他們必須下載一個JVM,還要下載一個applet到瀏覽器。此外,還必須維護一個從客戶端到服務器的持久性套接字連接,以便接收異步消息。設想一下,如果有1000個用戶使用該applet,那么就有1000個執行線程幾乎是在空等著發送事件通知到客戶端。當然了,還有其它方法,比如從applet或AJAX應用程序構建輪詢機制來定期檢查新數據。而如果不經常接收到數據,那么輪詢就顯得無用了,而且還浪費了服務器資源,占用了執行線程。反之,服務器可以定期輪詢,將事件傳播回客戶端,并維護套接字線程,而無需使用持久性執行線程。這非常類似于Java NIO的運行方式。理想情況下,我們都希望構建一個從服務器“異步”接收事件通知而無需在服務器端使用持久性執行線程的應用程序,不管它是一個applet還是一個基于AJAX的薄Web應用程序。
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/