ESRI為什么選擇JSF
在正式開講之前,我們來探討一下為什么要使用JSF來實現SERVER ADF,這也是很多開發商跟我討論時經常會問到的問題。
世界上有300種Java的framework,這個數字是我幾個月前聽到的,現在可能已經不止這個數了。我曾經用過的framework包括 Structs,Hibernate,Spring。這些framework不但能加速開發,而且會帶來全新的程序設計理念。我當時的感覺是:原來程序還可以這樣寫! 當然,這些framework都是開源免費,你不用擔心自己的良心受到譴責,也不用擔心比爾蓋茨半夜敲門收錢。
在這300多種framework中,ESRI為什么選擇JSF?各個framework有各個framework的好處。JSF***的優點就是:像 Swing 和 AWT 一樣,JSF 是一個可以提供一組標準的、可重用的 GUI 組件的開發框架。
選擇JSF的原因: 行為與表示的完全分離。
行為和表現不分離的一個典型例子是普通的JSP 技術,這一技術很好,因為很容易在 HTML(和類 HTML)頁面中混合 Java 代碼。這樣我們就可以使用強大的Java API的功能。當然,很明顯的壞處是行為表現黏合在一起。而且代碼不容易重用。這讓我想起剛使用JSP技術時,在文本編輯器下寫JSP頁面,讀寫數據庫,并且在同一個頁面上顯示出來的痛苦回憶。
Model1架構的出現使開發人員可以用javabean的方式進行開發,舒服多了。當然,還有更好的。
這就不得不提到著名的MVC結構,(MVC) model-view-controller架構提供了一系列的設計模式,這些模式讓你可以輕松地應用于程序地開發,特別是有界面程序的開發。現在又有多少的程序是沒有界面的呢?
Model包裝了商業邏輯,也包含了數據持久的代碼,包括存取數據庫或者存取文件。Model***不要跟View有任何關系,它***不要知道誰將顯示結果,是一個Swing界面,還是JSF界面,還是普通的JSP界面。為了做到這一點,事先的規劃要花一些時間,但是相信我,這些花的時間帶來的價值將超過你的想象。如果設計得當,許多用ArcGIS Engine開發的代碼可以輕松在Server中使用,不需要修改任何代碼。.net也是一樣。
View只用來顯示顯示邏輯,不能有任何商務邏輯。controller是view和model的橋梁,它和model進行交互,并且把結果顯示在 Model中。顯示頁面的選擇也由controller進行選擇。我會在后面的講座中詳細解釋JSF中的Controller的實現。
Structs,Spring都實現了MVC的架構。但是它們都沒有像JSF這樣,提供一個事件驅動的組件對象模型。大家可以想一想,一個平常在HTML 中使用的標簽, <input type="text" name="q">,在JSF框架中變成了一個組件,這個組件還可以有事件,而且可以對這個事件可以進行編程。這是多么得激動人心啊! GIS程序需要和用戶進行良好地交互,選擇一個事件驅動的framework,可以更加容易編程和實現。
這是ESRI選擇JSF的重要原因之一
【編輯推薦】