Tangram開源版本發佈

 
Tangram開源版本發佈
經過一段難忘的忙碌,Tangram的第一個完整版本殺青了。回想來到北京的幾年,可謂感慨萬千,開發產品是心志的磨練,這話沒錯!經歷身體與身心的煎熬,使我深刻的意識到勇者有畏,但也無畏。這一段難忘的經歷更加堅定了我的信心。其實,用心去完成一個心願是非常艱難的事情。計劃中的Tangram分3個版本,分別是Open Source版、自由版(Free Edition)以及商業版,剛剛提交了開源版本,下載地址是:
         https://sourceforge.net/projects/tangramproject;
         http://www.codeplex.com/Tangram
國內下載地址:  http://www.zdnet.com.cn/download/windows/swinfo/0,2008005031,39289318s,00.htm
自由版本的Tangram於下週內發佈。
Tangram,從詞義上解釋就是來自中國的一個民間智力遊戲:七巧板。其基本的出發點是用最簡單的7種幾何圖形,組合出複雜的幾何圖案。這個簡單的遊戲,透視出古代中國人對複雜世界的樸素的認識。事實上,中國古代的先哲們很早就體現了對物質世界的基本認識,因此,也就有“金”、“木”、“水”、“火”、“土”等五行演繹世界的說法,此外,“太極生兩儀、兩儀生四象”等八卦論也體現了異曲同工之妙,這就是所謂的“五行八卦”。面對今天的軟件世界,由於長時間的積累,比起10年前,今天可以說是一個多彩的世界,20世紀90年代中期,第一代互聯網的崛起,使得人們充分領略了軟件改變世界的魔力,特別是Java、COM、.NET、HTML等軟件表現方式的成熟,使得今天的世界裏人們越發感覺到,這些最初很神祕的東西,已經成爲人們日常生活、工作裏的一部分。從許多方面看,軟件開發並不是什麼高科技的因素,因此,尋求更有效的軟件構造方式,一直是人們追求的目標。正像人們探索物質世界的奧祕所經歷的那樣,從分子論,到原子論,人們總結出了門捷列夫元素週期表,這一優秀的工作,使得人們從一個新的角度看到了物質世界的結構秩序,同時,也向人們展示了一個認識世界的基本方法,那就是,在複雜的現象面前,要對相互獨立的對象進行“彙集”,以形成一個基本的“基”,在這個“基”的基礎上,尋找相關現象的演繹規則。Tangram框架就是這樣思考的產物,針對Windows平臺上軟件的開發,傳統的COM技術、日漸普及的.NET技術,還有經典的C++技術一直都在自己的軌跡上發展着,都有各自忠實的擁護羣體,毋庸置疑,每個領域都有各自的強項,因此,沒有跡象表明誰會退出歷史的舞臺。Tangram的基本構思點是,允許開發者將以上三個方面進行一定意義上的自由組合:我們期待來自C++的CView對象、來自COM的ActiveX對象以及來自.NET的託管對象形成一個公共的軟件“基”,允許開發者以一致的描述方式形成可描述的軟件組合方案,這就是Tangram框架的基本出發點。
從軟件開發的方式上考慮,Tangram的構想並不是要淘汰什麼,其要點是企圖簡化構造軟件的方式,我們看一個基本的軟件框架:
如果我們立足於常規的C++開發方案,我們不難想象這個構架的開發過程,從一定程度上看,這個框架的開發並沒有技術上的難度,但毫無疑問,肯定是非常繁瑣的工作,從今天的角度看,大多數開發者還不能擺脫代碼的侷限來構造如此複雜的軟件框架。
         如同現代工業衝擊手工作坊一樣,新的思考方法一定會帶來新的變化,這種變化使得人們相信,以今天的建築工藝,蓋起一座幾十層的大廈,並不是一件很了不起的事情,也不是一個很了不起的工藝。同樣,解決問題的關鍵不是代碼的技術突破,而是描述方案的進步,經過仔細的觀察,我們發現,如上圖示的軟件框架,是完全可以通過可讀性很強的XML進行描述的,因此,思考的重點自然改變了,這種改變如同XSLT改變xml技術的面貌一樣,Tangram的關鍵構思之一就是,如何解釋一個XML描述,使之轉化爲一個真正的GUI,這個邏輯,徹底的解除了代碼怪圈的束縛,使得人們從軟件大廈的深度上得以解脫。
         使用Tangram的最初的障礙也許是“思想”方面的問題,對於一個長期處於Coding狀態的開發者而言,Tangram的構思可能是思維方面的一個盲點,也許,開發者很難意識到描述方案的改進將極大地簡化他們的開發工作,同時也會極大的拓展他們的駕馭空間。XML非常適合描述帶有層次性的結構,這是一個不爭的事實,從Web開發方面的實踐看,許多複雜的網站,基本都是通過XML技術實現的,特別是XSLT技術的出現使得XML的地位日漸鞏固。一般來說,針對一個“平面用戶區”,開發者通常的想法是用兩種類型的結構對其進行“規劃”:一種是“分割窗體”;另外一種是各種風格的“分頁”窗體。對現代開發者而言,用這兩類構架行爲的窗體對一個特定的用戶區域進行“架構”並不十分陌生。我們看到在類似Eclipse、Visual Studio等大型軟件框架已經在大量的使用這類手段以增強軟件的綜合表現力。在框架行爲方面,如果能夠將這兩類具有架構行爲的結構“規則化”,那麼,基本的技術路線就大致奠定了。基於這樣的考慮,我們首先構造一個最基本的Tangram XML節點,這個節點描述如下:
     <TangramNode Name="ObjName"
Caption="Obj Caption"
ID="ObjID"
CnnID="TangramLiteTabWnd.TangramConnector"
VBA="0"
VBAID="0"
Width="446"
Heigh="143"
Tag=""
/>
這個XML段落給出了一個最基本的Tangram元素的結構,名稱屬性給出一個Tangram節點的名稱,以便開發環節檢索對象,這個名稱是唯一的,ID屬性用來表示對象的ID值,無論是COM框架,還是.NET框架,都需要這個ID進行對象的創建,CnnID屬性是給C++對象準備的,這個屬性標示一個對象庫,裏面可以包含任意數目的C++ CView對象,其餘的屬性我們將陸續的進行解釋。對於具有“切割”功能的切分窗體,我們可以採用XML子節點的模式進行描述,一個典型的切分窗體可以描述如下:
     <TangramNode Name="sp2" ID="TangramSplitter" CnnID="TangramConnector" Caption="sp2" >
         <Row>
              <TangramNode Name="fm2" ID="ID" Width="596" Heigh="77" ></TangramNode>
              <TangramNode Name="fm3" ID="ID2" Width="596" Heigh="109"></TangramNode>
         </Row>
         <Row>
              <TangramNode Name="fm4" ID="ID" Width="596" Heigh="77" ></TangramNode>
              <TangramNode Name="fm5" ID="ID2" Width="596" Heigh="109"></TangramNode>
         </Row>
     </TangramNode>
從這個節點看,這是一個2行2列的切分窗體,xml可以使得這個窗體的描述變得十分清晰,並且可以進一步清晰的給出每個位置的對象的精確描述,對於各種風格的“分頁”結構,可以採用類似的描述辦法,事實上,一個分頁窗體(Tabbed Window),可以在抽象意義上看做是一個1行n列的切分窗體,只不過在幾何表示方面體現的UI風格不同而已,在Tangram框架的內部,分頁窗體就是一種特殊的切分窗體。由以上的分析,我們可以看到,技術上只需處理如上兩類節點即可形成一個原始的基礎,現在一個關鍵的技術問題是:我們如何處理這些節點的迭代、複合,如果在技術上,將各種分頁結構看作是切分窗體的特例,那麼,技術的關鍵是切分窗體的“複合結構”,一旦這個問題得以解決,那麼,只要給出足夠多的分頁風格,一個豐富多彩的UI框架世界,就歸結爲一個描述規則的建立,這是Tangram框架的一個關鍵的環節,也是使得UI架構邏輯擺脫代碼約束的關鍵所在。
         對一個沒有子節點的Tangram節點,我們可以將其看作是Tangram“原子”,相當於一個基礎的幾何元件,這樣,Tangram的動機就非常清晰了,一個基本的出發點就是,這些原子要複合出衆多紛紜的UI世界,這既是一個樸素的想法,又是一個極富野心的創意。在Tangram的邏輯中,切分窗體體現着一種複合結構,也是一種“廣義”的抽象,即其中已經包容了風格迥異的各種“Tabbed”窗體。在Tangram的世界裏,由這類“廣義”的切分複合形成的XML描述,我們將之稱爲“Tangram框架”,這種框架在獨立的場合,將被轉化爲通常意義下的CFrameWnd對象,在其他場合,也許會被實現爲另一個框架的一個局部,或者,被動態的創建於另外一個原子所在的“Site”,從這個意義上看,Tangram是一個動態的對接世界。切分窗體在技術上的實現體現了一種基於描述的動態遞歸的想法,在Tangram引擎的內部,這個地方是XML技術的絕好體現。Tangram對“框架”的構造,是從一個最原始的“原子”開始的,這個構造過程,體現爲一個“所見即所得”的可視化設計過程,既然擺脫了代碼的羈絆,我們也不能讓開發者陷入複雜的XML寫作邏輯,因此,所有的一切,伴隨着設計過程的完結,相關的XML描述也就自然的形成了。
         從結構方面看,Tangram裏最關鍵的兩個對象是:
1、Tangram“原子”,我們將其稱爲基本的Tangram元素,在真實的軟件世界,這些原子,將被實現爲各種C++的視圖對象、ActiveX控件對象或者是.NET對象。這些林林種種的東西,將會形成一個豐富多彩的軟件世界;
2、Tangram“框架”,框架本質上是切分窗體的複合體,框架以及框架複合形成的複合框架,相當於支撐這個世界的風格各異的建築,開發者沒有必要關心這些框架是如何產生的,只需關心這些框架能夠提供什麼方面的服務,如此,那些原子級別的元素就成爲開發者必須關心的“事物”。
在Tangram引擎中,作爲複合結構的Tangram框架體現爲一個軟件功能單元的“集合”,通常情況下,我們將其對應於VC++意義下的一個“文檔模板”對象,因此,作爲一種文檔的體現形式,這類對象被保存在一種特殊的XML文件之中,我們將這類文件稱爲xtml文件,形式上,這類文件與html文件很類似,框架之間的複合行爲與HTML文件中的超鏈接行爲也很相似,在Tangram內部,框架的複合型爲是通過“Asynchronous Pluggable Protocols”實現的,我們通過一致的提供這種軟件“超鏈接”能力,希望能夠本質上提高軟件組件之間的組合能力,以便形成一個公共的、內容外延廣泛的公共軟件資源空間,從新的層面提高軟件的構造能力。
         Tangram能夠改變開發者的軟件構造模式?這是一個微妙的問題,從動機上看,我們希望達到這個效果,從結果上看,大量的代碼被風格清晰的xml描述替代,不容否認,事實上已經產生了改變,讓我們看看Tangram帶來的效果吧:
1、 幾乎不需要Coding,你就可以生成表現力豐富的軟件框架:
2、 用Web開發模式看待軟件複合-功能強大的軟件超級鏈接功能:
3、 基於Internet的軟件擴展能力,一個特例,IE Band擴展:
4、 一個靈活健壯的桌面“Side Bar”系統:
開源版本的Tangram框架由於授權協議的限制,只能包含Tangram全部功能的一個子集,例如,無法提供對Microsoft Visual Basic for Application的支持,作爲一個精簡的框架,Tangram OpenSource 版僅僅提供了COM技術的支持,但足以確保開發者開發出強大、健壯的應用系統,以下是開源版本的屏幕截圖:
歡迎各位開發者對Tangram系統提出寶貴意見。
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章