前言
在J2EE中,客戶端常用的兩中方式是Html和基於application的applet,因為采用的技術不同,這兩個方式都有其優缺點,在考慮采用何種技術(或者兩種都用),需要根據兩種技術的特點,以及此項目的應用范圍來綜合考慮。以下分“易用性”,“性能”,“維護、擴展”,“交互”,“安全”五部分來說明各自的特點,並針對客戶,開發人員角色闡明一下個人觀點。
易用性
客戶對於易用性要求非常的高,往往因為易用性不足,開發人員對代碼的重寫,有些易用性的不足,甚至導致設計人員對項目部分結構進行重新設計。下面說明各技術在易用性方面的特點:
1、web方式已經得到大家認可,相對於c/s模式,可以減少用戶的掌握該軟件時間
2、web界面豐富,能得到用戶的喜愛;
web界面可以由多種技術支持,如applet,Flash,二進制圖片,Javascript等,而且,在美觀界面上,web方式從不缺乏相關資源。美觀的界面,能得到用戶的喜愛;
3、由於client有較強的 交互性,在某些客戶的特殊要求上,clIEnt有絕對優勢,帶來了很好的易用性
client方式是基於組建的,美觀上很難同web方式比較,但是,由於采用application的clIEnt端有很好的交互性(見下所述),能完成Html不能完成的界面,如在網管軟件中最常用的圖形管理,即通過圖來看網,管網。這是基於web方式幾乎無法完成的。
性能
性能也是用戶關心的一個重點,它取決於很多方面,如體系設計,訪問方式,甚至是編寫代碼的質量,僅僅考慮客戶端使用, 關鍵在於一下兩點:
1、web方式
經典的J2EE模式如下:
html-----servlet -----ejb ----database,由於采用Html,每次頁面更新都需要刷新頁面,很顯然導致服務器端於用戶響應變慢。另外由於中間還采用了servlet,同樣也使響應變慢。
2、在clIEnt保留靜態數據,提高速度
采用application的clIEnt通過直接訪問數據(database 或者 bean)可以提高響應速度,它也不需要刷新頁面,一次裝載就可以了。另外,在項目中,常常有些靜態數據(staticdata)可以保留到客戶端內存中或者是本地數據庫中,極大的改善了系統性能,而web方式卻是沒法做到的。
維護,擴展
對於采用swing來開發一個客戶端是及其痛苦的事,1)是集成環境不好;2)是開發人員往往不了解,不熟悉swing,導致開發中頻頻出錯,3)是swing 可供使用的資源太少。這是在我一系統中深刻體會,不言而喻,帶來的結果就是,代碼難以維護,擴展,十分不便。而web方式則不同,界面定制者可以很容易按照客戶需求做出合適的界面,如果需要某某資源(如源碼),也很容易找到。
交互
這裡的交互指得是應用程序之間的交互而非用戶與應用程序的交互。兩者都有大量相似的控鍵和技術來完成程序間的交互,但以下兩點二者有明顯的不同:
1、同步
為了動態響應其他客戶端對資源作的修改,或者是為了響應服務器發送給客戶端的消息,以web方式的客戶端最常用的是沒隔一定時間就刷新頁面。從服務器端消息隊列取的新消息或者數據庫裡取到修改後的資源,這是非動態,及時的一個策略。在對同步要求高的項目中,這個是不可取的,采用application,在Java中使用jms很顯然就可以完全可以達到理想的同步要求。
2、圖形界面
很多網管系統都開始采用圖形來看網,管網。采用web方式,最多只能靜態的放映出圖形,無法進行事件響應,很難具備交互功能,而采用application則不同,用戶可以在圖形上進行拖拉,點擊,並觸發相應操作等操作。
安全
這裡只是從系統集成的角度出發考慮安全,由於遠程application通常都是通過rmi/iiop直接訪問bean來獲得信息,而bean是在受防火牆保護的應用服務器上,必然導致防火牆開發某些端口,允許某些信息進入防火牆內,這樣就導致了系統的不安全性,另外,在客戶端,要使用applet,必須給它一定權限,如采用本地數據庫技術,則需要給applet訪問本地數據的權限,為了采用jms獲得同步,則又需要開發其端口權限以便接受消息。如果applet訪問策略配置不正確,都將會導致客戶端的不安全采用基於http協議的web方式則同時避免以上兩種情況。