發(fā)布于:2021-02-20 00:00:29
0
448
0
我最近受命為大型的基于Web的應(yīng)用程序(超過1000個(gè)視圖!)推薦并指定瘦客戶端體系結(jié)構(gòu)的組件。它必須基于Java,所以突然出現(xiàn)的第一個(gè)顯而易見的問題是用Java構(gòu)建如此大的Web應(yīng)用程序的最佳方法是什么?……又可以分解為當(dāng)今世界上有哪些便利Web應(yīng)用程序開發(fā)的最佳框架是什么?又可以是分解為就技術(shù),功能和商業(yè)標(biāo)準(zhǔn)而言,哪個(gè)框架最合適?-顯然,這3個(gè)條件類別中的每一個(gè)都可以進(jìn)一步分解為詳細(xì)的獨(dú)立層次結(jié)構(gòu)。 哪種框架會(huì)導(dǎo)致代碼/工件結(jié)構(gòu)合理且可維護(hù)。哪個(gè)框架將支持眾所周知的可用性模式。哪種開發(fā)方法最合適?可以進(jìn)一步細(xì)分為哪個(gè)框架將保證高水平的生產(chǎn)力…哪些可以進(jìn)一步細(xì)分為哪種框架/工具(集)支持以下方面的明確 分離:以及UI設(shè)計(jì)和編碼問題的順利交接?……可以進(jìn)一步細(xì)分為哪個(gè)框架將允許工作流并行化?
因此,簡(jiǎn)而言之,人們只需要選擇最好的“技術(shù)功能商業(yè)”框架,這也可以確保以可接受的成本交付應(yīng)用程序!
聽起來很簡(jiǎn)單嗎?……嗯,如果只需要從2個(gè)或3個(gè)UI框架中進(jìn)行選擇,并且是2020年的話,也許是吧!
如今,如果人們?cè)贗nternet上掃描UI框架,發(fā)現(xiàn)的信息將不堪重負(fù),并且很難有效地瀏覽。從人們對(duì)諸如“ UI框架比較”之類的關(guān)鍵詞進(jìn)行的google搜索次數(shù)來看,從519萬(wàn)起,UI框架難題本身也是一個(gè)相當(dāng)相關(guān)的問題。
因此,這是一種可以幫助解決UI框架難題的方法的第一手資料。提醒您,沒有任何一個(gè)“最佳”解決方案。只有(明智地)考慮并理解了您已經(jīng)做出和未做出的所有選擇的理由之后,對(duì)于給定的需求而言,只有最合適和可以接受的東西!
我使用了處理復(fù)雜性/信息超載的古老原則-“抽象”。
用Wikipedia引用–“抽象是通過減少概念或可觀察到的現(xiàn)象的信息內(nèi)容而進(jìn)行的概括過程或結(jié)果,通常只保留與特定目的相關(guān)的信息”。
遵循這一原理,可以輕松地得出一些“ UI框架抽象”,并開始將可用的框架/工具包/技術(shù)放入/分類到這些“抽象桶”中。
1. Web 1.0技術(shù)(JavaScript,DOM,HTML和CSS)
這些僅解決客戶端的需求。這本質(zhì)上是2004年前的Web應(yīng)用程序構(gòu)建方式,具有以下特點(diǎn):
開放標(biāo)準(zhǔn)
無異步調(diào)用,因此–完成頁(yè)面刷新。
沒有豐富的小部件庫(kù)。
需要一個(gè)良好的服務(wù)器端MVC框架。
2.輕量級(jí)Ajax工具包
同樣,這些僅解決客戶端的需求。Ajax本身并不是一項(xiàng)技術(shù),而是諸如HTML,CSS,Javascript,DOM,XML,JSON之類的一組技術(shù),以及一種用于在瀏覽器和服務(wù)器之間異步交換數(shù)據(jù)的方法,從而避免了完整的頁(yè)面重裝。這種框架類型的主要特點(diǎn)是:
正確應(yīng)用了Ajax,通過避免完整的頁(yè)面刷新來提高應(yīng)用程序的響應(yīng)能力。
它基于上述開放標(biāo)準(zhǔn)。
它通常提供了一個(gè)豐富的窗口小部件庫(kù),如果沒有,則可以與其他窗口小部件庫(kù)結(jié)合使用。
屏幕開發(fā)人員使用HTML和JavaScript編寫代碼,并通過API支持小部件和通過異步服務(wù)器調(diào)用進(jìn)行的數(shù)據(jù)交換。
需要一個(gè)良好的服務(wù)器端MVC框架。
3.基于Java組件的Ajax工具包
這些解決了客戶端和服務(wù)器端的需求。這些框架實(shí)質(zhì)上使Java Swing或Eclipse SWT編程模型適應(yīng)了Web。它們與輕量級(jí)Ajax工具包的不同之處在于:
開發(fā)語(yǔ)言是Java。開發(fā)人員僅在特殊情況下才需要編碼HTML,Javascript。
該框架將用Java編寫的屏幕布局和行為代碼編譯為瀏覽器呈現(xiàn)的Javascript。
服務(wù)器端應(yīng)用程序開發(fā)也是由框架驅(qū)動(dòng)的。無需單獨(dú)的服務(wù)器端MVC框架。
它通常提供了一個(gè)豐富的窗口小部件庫(kù),如果沒有,則可以與其他窗口小部件庫(kù)結(jié)合使用。
工具包
這些可同時(shí)滿足客戶端和服務(wù)器端的需求。這些是由Adobe,Microsoft和Sun等公司推廣的完整的Web應(yīng)用程序工具包。他們的USP是使用快速開發(fā)工具的豐富Internet應(yīng)用程序。其他主要功能包括:
需要在每個(gè)瀏覽器中將運(yùn)行時(shí)解釋程序作為插件安裝。
它通?;谧远x腳本和布局語(yǔ)言以及數(shù)據(jù)交換格式。
框架推動(dòng)了客戶端和服務(wù)器端應(yīng)用程序組件的開發(fā)。無需單獨(dú)的MVC服務(wù)器端框架。
5.僅限服務(wù)器端的UI框架
這些僅解決服務(wù)器端的需求。這是一籃子框架,這些框架不僅有助于開發(fā)接受和處理Web請(qǐng)求的應(yīng)用程序組件,而且還可以匯總頁(yè)面視圖并將其呈現(xiàn)給瀏覽器。它們應(yīng)與Lightweight Ajax Toolkits或Web 1.0 Technologies結(jié)合使用。
5A.查看技術(shù)
盡管這本質(zhì)上是服務(wù)器端框架/組件,并且代表MVC框架的“ V”部分,但由于該領(lǐng)域中的可用選擇多種多樣,因此值得單獨(dú)使用。View技術(shù)的主要職責(zé)是管理動(dòng)態(tài)Web內(nèi)容。這可能涉及完全動(dòng)態(tài)HTML生成或?qū)?dòng)態(tài)內(nèi)容與靜態(tài)HTML + Javascript合并。
流行的View技術(shù)包括:
JSP(Java服務(wù)器頁(yè)面)+ JSTL(JSP標(biāo)準(zhǔn)標(biāo)記庫(kù))
Velocity和Freemarker(模板引擎)
XSLT(Xml –> HTML)
5Aa.ViewAggregation Technology
本質(zhì)上是一種網(wǎng)頁(yè)布局和裝飾框架,可提供一致的外觀,導(dǎo)航和布局方案。它可以在5A中提到的任何View技術(shù)之上運(yùn)行。
從體系結(jié)構(gòu)的角度來看,這引發(fā)了許多有趣的組合或樣式。一些有效的是:
A.傳統(tǒng)和保守–(1)Web 1.0技術(shù)+(5)僅服務(wù)器端UI框架
B.現(xiàn)代而保守–(2)輕量級(jí)Ajax工具包+(5)僅服務(wù)器端UI框架
C.現(xiàn)代且不太保守–(3)基于Java組件的Ajax工具包
D.現(xiàn)代與前沿–(4)RIA工具包
那么我該選擇哪種組合/風(fēng)格呢?還是我可以做出2個(gè)選擇?當(dāng)我做出選擇時(shí)需要權(quán)衡哪些選擇?特定的樣式會(huì)有助于實(shí)現(xiàn)我的目標(biāo)(繼承)嗎?尋找靈魂的問題,對(duì)不對(duì)?
我們正在處理的抽象級(jí)別只能幫助消除或擱置“樣式”,而這是“不舒服的”。例如:
樣式A可能已完全被其他樣式取代,確實(shí)應(yīng)該考慮隨著時(shí)代的變化而進(jìn)行現(xiàn)代化。
我們中有些人可能會(huì)“感覺到”,樣式C實(shí)際上是信念的飛躍–作為一般做法,您怎么能指望我不要碰Javascript和HTML,基本上我不相信Java-to-Javascript編譯器足以處理我多年來使用DHTML完成的所有工作。這可能會(huì)吸引一種稍微保守的樣式B,盡管它會(huì)失去樣式C的BIG好處,即用Java語(yǔ)言本身編碼的UI元素布局和行為的細(xì)粒度組件化。使用強(qiáng)類型語(yǔ)言(如Java)比使用Java進(jìn)行調(diào)試,重構(gòu)和代碼維護(hù)要好得多,并且請(qǐng)記住,在大型企業(yè)業(yè)務(wù)應(yīng)用程序中,至少需要35%的精力用于UI層開發(fā),并且在其中至少有70%用于屏幕布局和行為開發(fā)。
我們當(dāng)中有些人可能不想屈服于風(fēng)格D的專有(許可)IDE驅(qū)動(dòng)的方法,因?yàn)槿藗冋娴男枰褂肐DE來獲得它所帶來的生產(chǎn)率收益。但是,RIA Toolkits提供的UI功能的豐富性遠(yuǎn)遠(yuǎn)超過其他任何Styles所提供的,并且僅此一項(xiàng)可能會(huì)偏愛Style D,尤其是在競(jìng)爭(zhēng)對(duì)手的產(chǎn)品已經(jīng)提供的情況下。
樣式B是向前邁出的一小步,我認(rèn)為大多數(shù)企業(yè)都希望將其用于后臺(tái)應(yīng)用程序。與其他任何樣式相比,它具有更多的運(yùn)動(dòng)部件,并且樣式B本身內(nèi)可能存在許多子組合。不過,由于依賴于經(jīng)過時(shí)間考驗(yàn)的設(shè)計(jì)模式,因此它是最可靠的。尤其在大型應(yīng)用程序中,一個(gè)日益嚴(yán)重的大問題是“ Javascript Mayhem”。太多的內(nèi)容被簡(jiǎn)單地寫入,很快就變得笨拙,難以管理,跨多個(gè)屏幕重復(fù)并且難以更改,測(cè)試和重構(gòu)。在這方面,一切都不會(huì)丟失??梢圆扇∶嫦?qū)ο蟮姆绞絹磉M(jìn)行前瞻性的思考和努力來構(gòu)造Javascript的使用。
因此,我們有了它,可以選擇幾種建筑風(fēng)格??赡苓€有更多,請(qǐng)分享您的想法和評(píng)論。選擇樣式后,下一步就是評(píng)估Dojo和YUI或Struts 2和Spring MVC或GWT和Wicket之間的樣式中的框架?;ヂ?lián)網(wǎng)上充斥著這樣的比較,因此應(yīng)該使用自己的PoC進(jìn)行備份。
作者介紹
熱門博客推薦