javascript
什么是jsf_为什么应该避免JSF
什么是jsf
長期以來,對我而言,JSF只是另一個我不太在乎的Web框架。 這改變了。 在被迫使用了幾個月之后,我認為幾乎在所有情況下這都是主要的項目風險。 在這里,我介紹作出這一裁決的理由。
UI和處理邏輯的糾纏不清。 官方教程聲稱以下有關JSF的好處 :
Java Server Faces技術的最大優點之一是,它為Web應用程序的行為和表示提供了清晰的分隔。
情況恰恰相反。 Facelets是JSF的首選呈現技術,乍一看就像普通的模板技術一樣,例如老式的JSP或Thyme Leaf 。 但是,如果您近距離看,恐懼會變得很明顯。 在構造HTML的同一位置,您還將邏輯放置在操作上應更新UI的哪些部分。 我的書中明顯違反關注點分離原則。
更好的是, 立即屬性可以改變服務器端的生命周期! 如果這還不夠,則可以根據使用的標簽以不同的方式進行處理。 你不能做這樣的事情。
它嘗試抽象您不能抽象的內容。 除了一些奇怪的邊緣情況外,Web應用程序的客戶端和服務器位于完全不同的計算機上,并通過某種網絡隔開。 由此得出一個簡單的事實:客戶端與服務器之間的通信緩慢且不可靠。 JSF試圖抽象化客戶端和服務器的分離。 它以難以控制的方式處理后端上的所有內容,從而在客戶端和服務器之間進行瘋狂的通信。 結果是,由于使用了JSF,各種故障場景都將突然出現。 對我來說,最煩人的就是這個:如果您打開一個JSF頁面,比方說一個簡單的搜索頁面,等待一個小時,然后單擊“提交”按鈕,您將得到一個異常,因為服務器端狀態已過期。 WAT? 為什么平凡的搜索頁面的服務器狀態沒有任何意義? (是的,我知道您可以使用最新版本的JSF更改該行為,但是它仍然是JSF的設計工作方式。)盡管所有人都從EJB中學到了知識:如果您想對事實進行抽象,如果應用程序有兩個部分,是否在同一臺計算機上運行,??您必須假設它們不在同一臺計算機上。 其他所有問題都隱藏了問題,直到問題變得如此之大,以至于您可以吃掉您的項目作為早餐。
使事情變得復雜和復雜,從一開始就很容易。 萬維網的體系結構很簡單 。 簡單含義:它由一小部分概念組成,且交互作用有限。 這就是它取得如此廣泛成功的原因。 對于初學者來說,如何使用它來實現某些功能也不是一件容易的事。 我確定我們大多數人都記得他們第一次嘗試在沒有會話狀態的情況下實現購物車之類的功能。 但是幾乎所有這些問題的解決方案都是眾所周知的,也是眾所周知的。 您所需要的只是一點閱讀,而您所獲得的是對如何解決此類問題的深刻概念理解。 同樣,基礎非常簡單:您將請求發送到URL,并使用HTTP動詞發送一些標頭和內容。 然后,您將通過一些包含鏈接和標頭的資源進行回復。 而且您在服務器會話中沒有狀態。 使負載平衡和故障轉移相當簡單。 使可添加書簽的網址變得無關緊要。 使您的網站可零成本搜索。 使您的網站易于訪問。 允許用戶根據需要使用其后退按鈕,歷史記錄和標簽。 擁有精美的網址變得微不足道
將其與JSF的實時周期模型進行比較:用戶提交請求的頁面將與服務器端的模型同步,然后驗證,轉換,生成和處理提交的值。 如上所述,事物發生的順序以及發生的一切都由隱藏在偽裝為標記的文檔中的XML標簽控制。 除了幾乎沒有人能完全理解所有這些內容之外( BalusC似乎是Interweb中唯一的一種 ),它對您的應用程序具有以下影響:URL變得丑陋。 您將看到來源資源的URL,而不是您正在查看的資源的URL,因此使這些URL像在膝蓋上的門把手一樣有用。 與緩存,故障轉移,負載平衡等相同。
當然,您可以在這里使用一些約定以及那里的其他庫來修復它。 當您從事物品破碎業務時,哪一種當然是最合理的選擇,所以人們必須為修理它付費。 我個人更喜歡幫助解決實際問題。
阻礙可測試性:我不能說大多數框架,但可以將Spring MVC與JSF進行比較。 讓我告訴你這一點:如果有人告訴你JSF可以很好地測試,那么他可能不知道自動測試。 使用JSF,您可以使用單元測試來測試后端bean。 您可以通過將應用程序部署到服務器上并使用Selenium來測試整個UI。 基本上就是這樣。
萬一您想知道還有什么可以測試:在瀏覽器中加載頁面的靜態版本并使用Selenium進行測試,以便測試客戶端UI行為。 測試您生成的標記,而無需啟動功能完備的應用程序服務器。 測試屬性/參數到bean方法的映射。 在不引導整個應用程序的情況下測試您生成的標記。 使用Spring MVC以及可能使用許多其他合理的服務器端框架,而使用JSF,這一切都是完全可能的。
再說一次:我知道有許多問題的修復程序,但是最簡單的修復程序是> 不要使用JSF 。
翻譯自: https://www.javacodegeeks.com/2014/11/why-you-should-avoid-jsf.html
什么是jsf
總結
以上是生活随笔為你收集整理的什么是jsf_为什么应该避免JSF的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何恢复微信聊天记录如何在电脑上找回聊天
- 下一篇: 电脑显示器的HDMI和VGA接口哪个好?