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