RIAWork介紹之一:關注界面和交互的靈活變化

          在上篇RIAWork的簡要介紹篇中,已經提及RIAWork的重要目標之一就是為界面和交互的靈活變化提供支撐,在這里來看看界面和交互在實際項目中的變化情況以及RIAWork是如何提供對于其變化的支撐的。
          界面變化
          在實際的項目中,即使是同類的項目,在各個企業甚至各個部門都有對于不同界面的需求,例如有些企業喜歡藍色、有些喜歡淡藍色等等的,有些則關注是國字形布局抑或其他各類布局,總之是各種各樣的需求都在不斷的產生,稍微的總結有以下幾種情況:
          1、界面風格的變化需求
          ????? 體現出來的有界面顏色、界面中元素的顏色、樣式等的要求。
          2、界面布局的變化需求
          ??????體現出來的有對于界面的布局的要求。
          在實際的項目中,當發生之上的兩種變化的時候,通常都要耗費極大的精力去做界面的集成,特別是象以前采用jsp的那種系統,在重新進行界面的集成時還得非常小心,才能避免重新集成界面后造成功能的影響,當然,一些做的比較好的公司能夠通過完全用css來控制界面風格、布局的方式來減少這兩種變化帶來的影響,但其實很多情況下僅僅通過css還無法完全做到足夠靈活的控制來支撐用戶對于界面的需求,RIAWork致力于解決這兩種變化帶來的集成的工作量,同時保證對于原有功能的無影響,那么RIAWork是怎么做的呢?
          在RIAWork中第一種方式也是采用css的方式來控制界面風格以及布局;
          另外一種方式則是RIAWork的特點,RIAWork強調對于html的無污染性,其實這只是一個很模糊的說法,準確的說是RIAWork強調對于界面html的無污染性,這里的區別在于界面html指的是用系統原型圖切割形成的html,而不是還需要手工編輯修改的html,這點體現了RIAWork和JSF+Facelets以及Tapestry的不同點,Tapestry以及JSF+Facelets也非常強調對于html的無污染性,但它仍然需要在html的元素上增加自定義的屬性,如jcwid這樣的屬性,而在RIAWork中則不需要,這樣的話就完全沒有了html的手工編輯的必要性,自然就將界面集成的工作幾乎降為了零,在RIAWork中可以直接采用類似riawork?page=index.htm這樣的方式來訪問index.htm,即時的看到系統的新的界面效果;這里其實也體現了RIAWork強調的靜態以及動態處理的分離上,保持了html的靜態性質,將其動態性質進行了剝離,我將這種方式稱為對于無侵入性的decorator方式,而Tapestry、JSF+Facelets的方式我稱為帶有侵入性的decorator方式,而采用tag的方式我認為根本就不是decorator的方式,而是徹底的替換方式,后兩種方式都讓html純靜態的性質被污染,導致了靜態和動態的變化產生的互相影響。
          對于RIAWork本身提供的基礎設施控件,如豐富的表格、Grid則可通過css甚至替換其html的方式來形成新的風格、布局的控件。
          交互變化
          交互變化在實際的項目中也經常出現,而這點是很頭疼的一點,因為交互的變化通常來講帶來的還不僅僅是象界面變化那樣的靜態性質的變化,有些時候還會帶來系統處理的變化,典型的如將一頁填表的方式變化為多頁向導的填表方式,這種交互變化在系統中發生時往往會很麻煩,需要對頁面、代碼通通做改變,又如用戶希望將界面上的一個下拉選擇變成彈出選擇,這也需要花費你一點時間去做到,而在RIAWork中,這些交互的變化也會變得很方便就進行調整,在RIAWork對于交互的變化一律歸入動態變化性質,對于動態變化性質的東西,均通過管理端進行調整,在管理端中可選擇界面元素的交互行為,如向導式的交互行為、下拉交互、彈出交互、鏈接式交互等等,當然,RIAWork不可能能夠提供對于所有交互行為的支撐,這就需要通過實踐來不斷的提煉交互模式,不斷的充實到RIAWork中,關于RIAWork的擴充在后續的介紹中再詳細描述。

          通過對于RIAWork對于界面以及交互變化的介紹,突出了RIAWork的一個重要特征,就是靜態性質以及動態性質的分離,不再支持象以前asp、jsp這些服務端腳本語言提供的靜態和動態一起綁定的形式,一個基本的職責分離的原則。
          對于界面以及交互變化的支撐,是RIAWork的核心目標,也是RIAWork把用戶當上帝,重界面和交互原則的重要體現。

          后續文章預告:
          RIAWork介紹之二:靜態以及動態性質的分離處理
          RIAWork介紹之三:RIAWork的擴充以及擴展
          RIAWork介紹之四:RIAWork的開放性
          RIAWork介紹之五:RIAWork的靈活性以及智能性
          RIAWork介紹之六:RIAWork的動態部件

          RIAWork進展
          進行中:Velocity for js;Roadmap。
          計劃中:成員的確定以及討論;RIAWork網站的建立;開發、部署以及演示環境的搭建;M1工作的開展。

          posted on 2006-05-10 14:54 BlueDavy 閱讀(3090) 評論(3)  編輯  收藏 所屬分類: @RIAWork

          評論

          # re: RIAWork介紹之一:關注界面和交互的靈活變化 2006-05-10 17:12 IUSR

          “無污染HTML”。不知道你在這里涉及到的HTML是指以什么角色出現的HTML,是僅僅作為頁面展示的一部分的HTML還是其他的?允許不允許這些HTML片斷自帶控制代碼——比如瀏覽器支持的script?希望能進一步解釋一下。
          如果僅僅是做頁面展示的話,HTML固然可以,但你所說的“侵入性decorator”也沒有值得指責的地方,因為大多數時候這些侵入性的decorator起到了綁定的作用,而且如果用在XHTML(Modularization)上,這甚至都談不上侵入性。
          我原先以為RIAWork會走其他RIA框架etc.的路子,使用xml等等定義控件、widgets,看來你有其他理由=) 我覺得如果只有HTML做展示,那如何做到擴展?另加描述信息?也許還是不太明白RIAWork的整體規劃,所以提出這樣的問題,見諒。
          有一個希望就是能不能提供更多有關RIAWork的信息,或者是我太懶了沒有注意到你已經列舉的信息。//bow  回復  更多評論   

          # re: RIAWork介紹之一:關注界面和交互的靈活變化 2006-05-11 09:08 guitarpoet

          既然是JavaScript RIA,客戶端的JavaScript的重要性也要體會出來,估計樓主看過Rails的AJAX方案,也許那是個比較好的方案。

          但是我還是比較看重直接進行客戶端JavaScript編程,只要實現了JavaScript的完善的包和引入機制(很遺憾,標準的JavaScript里面沒有),那么客戶端的編程完全可以采用JavaScript編程的方式進行開發,說句實話,這樣子學習曲線不會比自己發明一套框架陡,組件和可重用性也不會差而且工作量較低可測試性也比較高。

          我非常贊同非侵入式的動態HTML頁面開發,說句不好聽的,模板式的動態HTML(比如JSP)根本不適合JavaScript RIA程序的開發,不但組件寫起來非常復雜,而且使用起來也是非常復雜,還跟容器密切相關,增加調試和測試的難度。

          希望樓主能夠細致的講解一下具體的設計方案,尤其是在非侵入式動態HTML頁面開發、怎么與業務邏輯層無縫結合還有怎么進行良好的開發和配置方便的服務端頁面流和頁面導航上(這一點Tapestry做的就很不錯)。

          至于頁面風格的變化,CSS就已經很強了,還可以通過SiteMesh進行框架的修飾,這個方面應該是比較成熟的了。  回復  更多評論   

          # re: RIAWork介紹之一:關注界面和交互的靈活變化 2006-05-11 11:08 BlueDavy

          @IUSR
          "無污染Html",指的是按照正常軟件開發流程,由美工切割系統原型圖后形成的html,不允許這些html帶有script,要做到這些html只是定義了結構而已,保持web頁面的結構、表現、行為的分離。
          侵入性decorator我指責的就是侵入性decorator仍然會產生很大量的UI集成工作,這種情況在業務系統中也許碰到的不多,但在一種B/S網站式的系統中會出現很多,可以想像一下如果象sina、taobao這樣的大型B/S系統,采用侵入性decorator方式時,如果要替換一下他們的界面是多么耗工作量的事,而無侵入性decorator則可以做到直接將美工切割形成的html替換上去就OK了....
          在RIAWork中采用html作為界面,采用附加的對于html的描述來decorator出系統的動態性質,就像我所說的,保持靜態性質和動態性質的分離,而在現有的框架中,Tapestry算是一定程度上保持了靜態性質和動態性質的分離,但由于它采用的是侵入式的decorator,我還是不怎么滿意,另外Tapestry并沒有做到RIAWork所期待的交互變化的支持上.....

          @guitarpoet
          后續文章介紹中會重點講在RIAWork中如何實現靜態性質和動態性質的分離并最終將靜態html轉變為可運行的動態系統...
          Tapestry的實現我也很認同,不過它仍然沒有足夠的做到對于界面和交互的靈活變化的支撐,它的html手工編寫仍然是不可避免的,我的出發點更多的是從界面以及交互的快速變化的支撐上考慮,至于框架的擴充和擴展會在后續章節上專門介紹...
          頁面風格、布局的變化確實一定程度上都可以通過css去控制,但某些復雜情況下僅僅依靠css也是不夠的,這個時候最好是有一種直接替換html的方式,那豈不是更簡便和更靈活,^_^   回復  更多評論   

          公告

           









          feedsky
          抓蝦
          google reader
          鮮果

          導航

          <2006年5月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          統計

          隨筆分類

          隨筆檔案

          文章檔案

          Blogger's

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 武义县| 乌兰县| 永和县| 松江区| 正镶白旗| 焦作市| 仙游县| 沙湾县| 张家港市| 浮梁县| 庄浪县| 北川| 南城县| 呼图壁县| 张家港市| 桐城市| 沭阳县| 普兰店市| 睢宁县| 巴林左旗| 东城区| 凉山| 南充市| 浦城县| 宜都市| 威远县| 会昌县| 玛多县| 都江堰市| 从化市| 锡林浩特市| 射阳县| 天柱县| 凤城市| 华容县| 富平县| 澜沧| 台前县| 毕节市| 灵丘县| 遂昌县|