在現(xiàn)在的軟件業(yè)界,我認(rèn)為很大的問題是開發(fā)人員甚至是公司從來都沒有真正的把用戶當(dāng)成上帝,當(dāng)然,這和目前業(yè)界的項(xiàng)目有很大的關(guān)系,例如項(xiàng)目通常都是時(shí)間非常的緊張,N多開發(fā)人員投入只能盡量去保證功能、需求的實(shí)現(xiàn),在界面以及交互上往往不是那么的重視,但其實(shí)業(yè)界很多成功的產(chǎn)品都證明,功能往往不是決定性的因素,界面和交互才是用戶最為重視的,而且通常也是打敗對手的重要地方,為什么項(xiàng)目中不在重視功能的同時(shí)去重視界面和交互呢,大都是因?yàn)楝F(xiàn)在的框架在界面和交互變化的支撐上都不是很好,導(dǎo)致了每次界面的改動(dòng)都要花費(fèi)很大的成本,而交互上則一方面是現(xiàn)在交互設(shè)計(jì)師急為的缺少,另一方面是還沒引起企業(yè)足夠的重視,所以其實(shí)我覺得在web應(yīng)用開發(fā)框架上最大的目標(biāo)就是為“把用戶當(dāng)上帝”提供足夠的支持。
遵循“把用戶當(dāng)上帝,重界面和交互”的原則,本文從愿景角度闡述對于Web應(yīng)用開發(fā)框架的期望,同時(shí)從框架角度的基礎(chǔ)設(shè)施以及非功能性需求上對整個(gè)Web應(yīng)用開發(fā)框架給予說明,最后簡要的說說在架構(gòu)層次的關(guān)注點(diǎn)以及可選擇的技術(shù)體系。
1. 愿景?
?? ★ Html的純潔性?
???? 這點(diǎn)就是體現(xiàn)“把用戶當(dāng)上帝,重界面和交互”的原則,在保證了Html的純潔性的情況下,就可以在功能和頁面交互未改變的情況下無需編碼直接使用UI Design形成的html,形象的一個(gè)例子就是可以在用戶僅僅需要改變頁面的顯示樣式、布局的情況下,只需要直接讓UI工程師設(shè)計(jì)然后切割形成html放到系統(tǒng)中就可以直接用了,^_^
?? ★ 無編碼的實(shí)現(xiàn)CRUD型的應(yīng)用
??? 可以直接通過簡單的配置生成CRUD形式的應(yīng)用,這點(diǎn)還是從一個(gè)快速開發(fā)的角度來考慮的。
2. 基礎(chǔ)設(shè)施?
? 基礎(chǔ)設(shè)施是框架的重要組成部分,作為框架就需要提供一定程度的基礎(chǔ)設(shè)施。
? 從愿景角度去看,Web應(yīng)用開發(fā)框架應(yīng)提供可綁定數(shù)據(jù)源的Web控件、對綁定的數(shù)據(jù)的操作的支持、頁面元素交互行為的支持、IDE/Web管理端。
? 首先說下幾個(gè)概念,數(shù)據(jù)源是指持久化性質(zhì)的源,如數(shù)據(jù)庫、文件;頁面元素大可以是頁面,小則可以到頁面上的任意域,如文本框;交互則是指用戶與界面產(chǎn)生的互動(dòng)。
? ★ 提供基礎(chǔ)的可綁定數(shù)據(jù)源web控件?
????? 在這點(diǎn)上至少要提供樹控件、豐富的表格控件、Tab頁控件以及菜單控件,這些控件綁定的數(shù)據(jù)源既可是文件、也可以是jdbc形式的數(shù)據(jù)源、同樣還可以是ORM形式的數(shù)據(jù)源。???
? ★ 提供對綁定的數(shù)據(jù)源的操作的支持
????? 提供對綁定的數(shù)據(jù)源的通用操作的支持,減少重復(fù)勞動(dòng),如支持新增、編輯、刪除、分頁、查詢、統(tǒng)計(jì)分析、數(shù)據(jù)校驗(yàn)以及數(shù)據(jù)實(shí)例的權(quán)限控制。?
? ★ 提供基礎(chǔ)的頁面元素交互行為的實(shí)現(xiàn)?
????? 提供對頁面元素交互行為的支持,如下拉時(shí)需要下拉出綁定了數(shù)據(jù)源的web控件等等,根據(jù)之上定義的一個(gè)觀點(diǎn),元素可大至一個(gè)頁面,小至一個(gè)文本框,也就是說可以隨意定義頁面中的交互行為,在交互行為上至少支持下拉、彈出、鏈接以及Continuation四種形式。??
?? ★ 提供IDE/Web管理端?
???? IDE/Web管理端的提供主要是為了提高框架的可用性,通過管理端可導(dǎo)入一個(gè)html,對html中元素進(jìn)行動(dòng)態(tài)元素的綁定設(shè)置以及交互定義的設(shè)置。
? 在提供了這些基礎(chǔ)設(shè)施后就可以通過這套框架的快速的將UI Design產(chǎn)生html轉(zhuǎn)化為具備一定功能的系統(tǒng)運(yùn)行界面,并且不對HTML產(chǎn)生任何的污染。
3. 非功能需求?
? 作為框架而言,非功能需求也是非常重要的部分,尤其是象框架的擴(kuò)展性、開放性、智能性、穩(wěn)定性以及高效性方面。
? ★ 擴(kuò)展性?
??? 在擴(kuò)展性上采用插件以及擴(kuò)展點(diǎn)兩種策略來提供足夠的支撐,插件為框架的基礎(chǔ)設(shè)施的擴(kuò)充提供支撐,擴(kuò)展點(diǎn)為基礎(chǔ)設(shè)施本身的擴(kuò)展以及靈活提供支撐。
? ★ 開放性
???? 在系統(tǒng)的開放性上一方面采取提供AOP的機(jī)制,使得對于系統(tǒng)的流程過程可控。
???? 另一方面由于元數(shù)據(jù)表達(dá)往往容易造成信息不完整的情況,在擴(kuò)展性上特別要保證系統(tǒng)各層次的可替換性,這樣即使在框架無法支撐的應(yīng)用中也是可以在使用框架的基礎(chǔ)設(shè)施的同時(shí)自主開發(fā)部分的功能。
? ★ 智能性?
??? 智能性主要在元數(shù)據(jù)的智能性上以及框架擁有學(xué)習(xí)和記憶的功能上。智能性已經(jīng)逐步的成為了框架的重要考評點(diǎn),越智能的框架用起來必然也就最為方便,而擁有學(xué)習(xí)和記憶能力的框架就更強(qiáng)了,^_^
? ★ 穩(wěn)定性?
??? 在穩(wěn)定性上采用微核機(jī)制來提供保證,在插件崩潰的情況下仍然保證系統(tǒng)核心的穩(wěn)定運(yùn)行。?
? ★ 高效性?
??? 高效性方面主要采用緩存機(jī)制加以實(shí)現(xiàn),同時(shí)需要考慮框架在可伸縮性方面的支持。?
4. 架構(gòu)關(guān)注點(diǎn)?
? 根據(jù)框架的基礎(chǔ)設(shè)施以及非功能需求的簡單描述,在框架的架構(gòu)層次最需要解決的是這么一些問題:
? ★ 微核機(jī)制?
???? 微核機(jī)制在目前已經(jīng)有N多的方案,在目前考察的情況下決定采用eclipse的equinox。
? ★ 插件策略
???? 在采用equinox的情況下這個(gè)問題自然解決。?
? ★ 擴(kuò)展點(diǎn)策略?
???? 在采用equinox的情況下這個(gè)問題自然解決,只是在設(shè)計(jì)時(shí)也仔細(xì)的考慮基礎(chǔ)設(shè)施的擴(kuò)展點(diǎn)的定義。?
? ★ 元數(shù)據(jù)的定義
???? 元數(shù)據(jù)的定義需要圍繞基礎(chǔ)設(shè)施而進(jìn)行,同時(shí)重點(diǎn)在于保持元數(shù)據(jù)的可擴(kuò)充性,另外在系統(tǒng)的層次的開放上也需要定義到元數(shù)據(jù)級別,也就是說假設(shè)現(xiàn)在系統(tǒng)的層次為command--service,那么開發(fā)人員可以選擇在某個(gè)模塊中替換command或者service的實(shí)現(xiàn)。?
? ★ 緩存機(jī)制策略?
???? 緩存機(jī)制著眼于前端的頁面緩存、后端的處理緩存和數(shù)據(jù)緩存。
? ★ Html無污染實(shí)現(xiàn)策略?
???? Html無污染的實(shí)現(xiàn)策略采用Decorator Html的方式,采用xml描述html中元素的方式,引擎解析形成最后的頁面的形式。
? ★ 控件綁定數(shù)據(jù)源的策略?
???? 控件在綁定數(shù)據(jù)源上著眼于提供對于數(shù)據(jù)獲取形式的支持,文件形式、jdbc形式、orm形式等等,另外則是在控件對于數(shù)據(jù)源的展現(xiàn)以及控件本身的交互控制上,同時(shí)要特別注意控件的擴(kuò)展性以及開放性。
? ★ 數(shù)據(jù)源操作統(tǒng)一實(shí)現(xiàn)的策略
???? 形成統(tǒng)一實(shí)現(xiàn)的策略,同樣的需要考慮擴(kuò)展性和開放性。?
? ★ 交互行為實(shí)現(xiàn)的策略?
???? 在下拉、彈出、鏈接以及Continuation的實(shí)現(xiàn)上考慮采用適當(dāng)?shù)牟呗裕瑯拥囊攸c(diǎn)考慮擴(kuò)展性以及開放性。
這個(gè)框架有人感興趣嗎?如有志同道合的人的話準(zhǔn)備拉起隊(duì)伍,^_^