|
一定要選擇單一技術嗎? --做出明智的業(yè)務決策?;?Java 技術、功能強大的基礎技術和工具構建 Web 應用程序架構
將某一特定框架作為應用程序架構是個具有潛在風險的決定,原因是以后再作改變可能要付出昂貴的代價。同時,隨著可供我們使用的技術的不斷發(fā)展,以及新技術的不斷實用化,我們希望在不浪費以前所有投資的情況下,能把這些新技術融合到現(xiàn)有的應用程序中去。因此,選擇基礎技術(如 Web 應用程序框架結構)的評判因素之一就是在新技術變得可用時所選的框架是否包容這些新技術。 Struts 框架從幾個不同的方面說明了新技術概念的接受程度。 Struts 與模型層的實現(xiàn)策略無關。在這一層使用任何 Java 技術都是可以的。在控制器層,為了易于定制和專業(yè)化, Struts 控制器實現(xiàn)方面的新近創(chuàng)新集中于調整現(xiàn)行的設計實踐以使之適用于容器上,尤其是要把復雜的操作分解成易于組合的幾部分。與此同時,操作的標準組合使向后兼容性得到了維持。在視圖層, Struts 早就基于自定義標簽提供了可選的視圖層,也是使用類似腳本的表達式來把輸入輸出綁定到模型層中相應的屬性值的早期改革者。隨著 JSP 技術的發(fā)展, Struts 已包含了它們。 JSP 標準標簽庫( JSTL )的發(fā)展引進了一種標準表達式語言語法,它比最初的 Struts 表達式語言更為強大簡潔。作為回應, Struts 添加了一組軟件通用型的標簽庫,這些標簽庫提供了常見的功能,但允許使用那些與 JSTL 標簽(現(xiàn)在,隨著 JSP 2.0 的出現(xiàn),可用在 JSP 頁面的任何地方)完全相同的表達式。 可插性 JavaServer Faces ( JSF )的標準化產生了一個愿望(就應用程序架構師而言):能夠在基于 Struts 的現(xiàn)有應用程序的 JSP 頁面中使用 JSF 組件。這個愿望正在通過 Struts-Faces 集成庫的開發(fā)而得以實現(xiàn)。 Struts-Faces 集成庫的設計中心是要利用 JSF 中的可插性接口,并在必要時提供軟件通用型 JSF 組件,以便現(xiàn)有的應用程序能夠在視圖層使用 JSF 組件,一次一頁,同時對應用程序的控制器層和模型層基本上不作改變。(因此,實現(xiàn) MVC 結構所鼓勵的有意義的分離鍵值之一;通過使變更僅在一層中發(fā)生來在一層中最大限度地降低實施變更的成本。)在大多數(shù)情況下,需要的惟一變更是對 JSP 頁面自身,以及配置文件中邏輯映射。 一起部署時, JSF 接收并處理每一個請求(就像只基于 JSF 的應用程序中的情況一樣)。如果請求發(fā)送給服務器只是為了改變某一 UI 組件的狀態(tài)(例如,在數(shù)據(jù)表中滾動行,或者在樹組件中展開一個節(jié)點), JSF 將在不干擾模型層的情況下,設法改變組件的狀態(tài)并重新顯示當前頁。這對視圖層的狀態(tài)變化完全適用。另一方面,如果請求是通過激活提交按鈕觸發(fā)的,則該庫集成到 JSF 請求處理生命周期中將導致標準 Struts 請求處理生命周期的調用,包括原來描述的所有行為。 通過經濟上可行的遷移來采用這種新技術(因為人們沒有時間去徹底重寫基于新框架的非平凡應用程序)的可能性對于其現(xiàn)有應用程序是基于 Struts 的開發(fā)者和組織來說,顯然頗具吸引力。不過,在 JSF 沒有提供相應功能(如對客戶端和服務器端表單確認的支持)的情況下,它也支持利用 Struts 力量的可能性。 為 Web 應用程序選擇應用程序架構時,檢查框架適應不斷變化的技術的歷史應是選擇標準之一。 在 Web 應用程序架構的發(fā)展過程中,我們希望把注意力主要集中到技術細節(jié)上: API 、標準,以及如果用手寫代碼,代碼會是個什么樣子。確實,由于若干原因,手寫這樣的應用程序現(xiàn)在已經變得比較容易了。視圖層頁面設計者只需知道較少的(或根本不需要知道) Java 語言語法就可以加入動態(tài)內容。將動態(tài)內容元素綁定到模型層數(shù)據(jù)所需的語法變得更簡單了,而功能也更強大了,并且隨著 JSF 的出現(xiàn),這種語法已經消除了在應用于用戶界面的字符串與通常用在模型中的原生數(shù)據(jù)類型之間進行顯式轉換的必要性??蚣芤呀浛梢韵龖贸绦驅ψ陨砜刂破鲗舆M行開發(fā)和維護的必要性。編寫 適配器類 (如 Struts 中的操作,或 JSF 中的操作方法等)變得簡單多了,限制(如需要的基類)也減少了。 可視化 所有這些趨勢都有助于提高那些使用文本編輯器之類工具的現(xiàn)有開發(fā)人員的工作效率。不過,有非常多的開發(fā)人員都更愿意在可以對各種組件進行可視化操作而無需手工編碼的環(huán)境下進行開發(fā)。這樣的工具將把開發(fā)者從大量通常所需的細節(jié)中解放出來,包括從了解 JSP 頁面中的 HTML 元素語法到了解配置文件中的 XML 語法的各種事情。 在 Struts 框架投入實際應用的這些年里,很多 IDE 都增加了生成基于 Struts 的應用程序的能力。典型的增值特性包括 JSP 頁面的可視化構建、頁面導航層次結構的可視化管理、配置文件的透明生成和維護。這樣的開發(fā)工具大大擴展了潛在的開發(fā)人員群體。他們能夠基于 Struts 構建出高質量的 Web 應用程序。 今天,我們看到提供 JSF 組件的同類功能的工具已經開始得到使用。從某種意義上說,看到工具的這么快就得到使用并不足以大驚小怪—— JSF 對工具開發(fā)人員(其中很多都參加了導致 JSF 產生的專家組)來說設計得很友好,標準組件 API 的出現(xiàn)使組件提供者得以將其組件最大限度地應用于更多工具中。但是,我們也看到 Java 平臺作為一個整體的激動人心的時刻的開始——將新的開發(fā)人員吸引到 Java 。 全球各地大大小小的組織中,專業(yè)的軟件開發(fā)人員通常以受雇(或簽約)方式開發(fā)支持該組織核心功能的任務關鍵型應用程序。但一般來說,開發(fā)供內部使用(特別是用于一小部分員工,如一個部門)的軟件是信息技術( IT )部門的職責,并且?guī)缀踉诿總€環(huán)境中該部門都肩負著太多的責任,而開發(fā)和維護內部應用程序的人員又太少。因此這類部門中越來越多的員工以及很多工作組都開始親自學習關于開發(fā) Web 應用程序的足夠的知識以創(chuàng)建供內部使用的應用程序。 傳統(tǒng)上,這樣的開發(fā)人員都已經使用了簡單的工具和腳本語言,幾乎總是在某種可視的開發(fā)環(huán)境下進行開發(fā)。在很多情況下, Java 平臺對于這些開發(fā)人員來說難于理解或使用,因此他們不太愛用基于 Java 技術的解決方案。不過, Web 應用程序框架的成熟和標準化的 Java API (如 JSF )的出現(xiàn),為構建能夠滿足這些開發(fā)人員需要且基于 Java 的工具創(chuàng)造了機會。 Sun Java Studio Creator 是面向這一開發(fā)群體的最典型的一個 IDE 工具。 Java Studio Creator 具有使這些開發(fā)人員即刻提高開發(fā)效率的獨特特性:由 JSF 組件構成的 JSP 頁面的可視化構建;頁面導航規(guī)則的可視化構建; JSF 組件到后端數(shù)據(jù)源的拖放式綁定,這些數(shù)據(jù)源包括關系數(shù)據(jù)庫、 Web 服務和現(xiàn)有的模型層組件,它們通過 JavaBean 屬性來顯示信息;每個可視( JSP )頁面與包含組件引用和事件處理程序的對應的 Page bean 的自動關聯(lián),以及輕松訪問整個應用程序基礎設施的便利方法;在編輯應用程序的可視化視圖和相應的源代碼之間來回轉換的能力。在一個視圖中所作的改變將在另一個視圖中如實地同步進行。 標準化過程促生了功能日益強大、使用日益方便的 API ?,F(xiàn)在,應用程序整體結構的最佳實踐概念已被封裝到功能強大的框架中,使得開發(fā)人員能夠把精力集中到應用程序所需的特定邏輯上,而不是內部的仔細推敲上。在可視化的開發(fā)工具中,對看似復雜的內部概念提供高度抽象以及使那些已經熟悉了 Java 的人能夠更快地創(chuàng)建應用程序的并行發(fā)展,為開發(fā)新手提供了創(chuàng)建應用程序的能力?;A技術力量不斷增長的趨勢,以及開發(fā)工具的不斷提高的易用性,必定會在今后繼續(xù)下去。決定將 Web 應用程序架構建立在 Java 技術基礎之上,現(xiàn)在是將來也將一直是一個明智的業(yè)務決策,同時也是一個有利的技術決策。 本文摘自“基于 Java 技術的 Web 應用程序架構的發(fā)展”。 原文出處 http://www./javapro/2005_03/magazine/features/cmcclanahan/
|
|||||||
|
|