top
Loading...
J2EE表現層設計思考
設計表現層時需要考慮的幾個問題

開發者在設計表現層時,可以使用不同的模型,這時需要考慮一些相關的設計問題。這些問題和模型關系的緊密程度也各有不同,它們可以影響系統的各個方面,包括有安全、數據完整性、可管理性和擴展性。雖然這些設計問題大部分都可以用模型的形式表示,但我們不打算這樣做,因為這樣更為抽象,我們選擇以非正式的文檔形式表示。我們只是根據不同的模型,將每個需要考慮的問題列出來。

Session管理

用戶Session指的是跨越一個客戶和服務器多個請求間的一個對話。我們將在以下部分根據用戶Session的概念討論這個問題。

客戶端的Session狀態

在客戶端保存Session的狀態指的是將Session的狀態串行化并且嵌入到返回給客戶的HTML頁面中。

在客戶端保存Session的狀態有這以下的好處:

. 它實現起來相對容易

. 在保存少量的狀態信息時,它工作得很好

此外,這個策略還消除了跨越多個服務器復制狀態的問題,例如多個服務器間實現負載均衡時就會遇到這種情況。

在客戶端保存Session狀態通常有兩個方法--HTML的隱藏字段和HTTP cookies--我們將在下面討論這些策略。第三個策略則是在每個頁面的URL中嵌入Session狀態信息,例如<form action=someServlet?var1=x&var2=y method=GET>。雖然第三個方法比較少見,但它也有著其它兩個方法的許多限制。

HTML的隱藏字段(HTML Hidden Fields)

雖然這個方法實現起來相對容易,不過使用HTML隱藏字段在客戶端保存Session狀態仍然有著許多的缺點。這些缺點在保存大量的狀態時尤為突出。保存大量的狀態將會對性能有很大的影響。因為每次發出請求和響應時,都需要在網絡中傳送這些狀態信息。

此外,當你利用隱藏的字段來保存Session狀態時,這些持久的狀態值只能是字符串值,因此所有的對象引用都必須被“字符串化”,而這些信息除非經過特別的加密,否則都是以明文的形式顯示在HTML的源代碼中。

HTTP Cookies

與隱藏字段的方法一樣,使用HTTP Cookies的方式也是相對簡單的。不幸的是,這兩個方法有著許多相同的缺點。特別是,在保存大量的狀態信息時將會對性能產生很大的影響,因為在每次的請求和響應時,都必須在網絡上傳送全部的Session狀態信息。

在客戶端保存Session狀態時,我們也會遇到大小和類型的局限問題。cookie headers的大小是有限制的,這樣就限制了可以被持久保存的數據量,而且和隱藏字段的方法一樣,當你使用cookies來保存Session狀態時,這些持久的狀態信息只能使用字符串值。

在客戶端保存Session狀態會帶來的安全問題

當你在客戶端保存Session狀態時,你必須考慮到由此帶來的安全問題。如果你不想數據暴露給客戶端,你就需要一些方法來加密數據,從而保證數據的安全。

雖然在客戶端保存Session狀態相對容易實現,不過它有著很多的缺點,這些都要我們花費時間去解決。對于需要處理大量數據的項目,特別是企業的系統,使用這種方式是得不償失的。
作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗