2010年6月8日 星期二

Distributed Window

視窗系統裡不論是網頁或各種格式的圖文件都完全是由視窗控制元件所組成,但卻是轉換成不同於記憶體中的格式(如XML)儲存,多了轉換程序當然是降低速度,為何不能直接將視窗控制物件直接map?因為基礎視窗控制物件含有指向沒有class template描述的unmanaged area的指標,無法像完全存在managed memory的objects一樣直接serialize(map data & reassign addresses)到storage,目前基礎視窗系統還未完全物件化,仍是傳統軟件。只要基礎視窗控制物件能serialize,除了免掉格式轉換程序外,視窗控制物件能在網路上直接傳輸,一個視窗就能以甭轉成以XML傳輸的方式由網路上各方的元件組成。Serializiable window直接儲存視窗物件,回載時就甭像傳統window在生成時先由base class的constructor初始化一次各屬性variable然後由sub-class(es)的constructor(s)再assign一次各屬性variable覆蓋這般多此一舉了,而是直接映射回記憶體。但如此儲存或傳輸的size會變很大,serializiable object包含sub-class與base-classes所描述的所有object fields,而XML只記載要變更的member的script,binary object field反而比textual tag script大。所以,我另外redesign了一套object機制,將object與class合併成一個sense graph,此機制使得能夠僅儲存或傳輸sub-sense,base-sense(s)僅儲存或傳輸一次而不用每遇到一個sub-sense就整個儲存或傳輸一次,如此就不會造成太多的重覆而消耗太多的資源。Serializiable window也讓distributed window成為可行,如此,以XML為基礎的Web就可以淘汰了。Distributed window目的是要取代web,免除web每換一個page就要跑一大串switch(TAG)‧‧‧ case "OOO": controls.add(new OOO())‧‧‧ switch(PARAM)‧‧‧ case "XXX": ‧‧‧ OOO.XXX = xxx‧‧‧ 拖慢速度,改以直接變更distributed controls然後才repaint,不會看到換頁時繪圖不完全的破碎殘影。Applet/Flash是將原本由本端storage載入程式機器碼改到由單一遠端伺服器載入,並不具「distributed」來自多個伺服器的特性。

沒有留言: