《電子技術應用》
您所在的位置:首頁 > 通信与网络 > 业界动态 > 和欣操作系统的XML-Glue编程范式

和欣操作系统的XML-Glue编程范式

2008-05-09
作者:陈 果,陈 榕

  摘 要: 和欣操作系統是基于CAR構件技術" title="構件技術">構件技術、支持構件化應用的嵌入式操作系統" title="嵌入式操作系統">嵌入式操作系統。分析了當前嵌入式應用開發" title="應用開發">應用開發模式所存在的問題,提出了基于CAR構件技術的腳本語言加CAR構件的XML-Glue編程范式。它一方面充分利用了現有系統的特點,另一方面采用腳本語言的強大功能使得開發更加簡單高效,并提供了對將來新興網絡業務" title="網絡業務">網絡業務應用的必要的支持,將成為和欣嵌入式操作系統中更適合應用開發的編程范式,進而推動人們對構件化編程思想的理解與應用。
  關鍵詞: 和欣操作系統 元數據" title="元數據">元數據 CAR技術 腳本語言


  面向構件編程技術是從面向過程和面向對象編程技術發展而來,它使得軟件工廠的理想成為可能。而隨著互聯網上新興網絡業務的逐漸興起,對傳統的軟件運行方式提出了新的要求和挑戰。不論是采取面向過程、面向對象的開發應用,還是采取面向構件技術的開發應用,一旦它們被安裝、固化到操作系統中,除了修改源代碼、重新編譯和重新安裝以外將不能對其進行修改。在這樣的背景下,完全采用構件技術的應用開發將有如下幾個缺點:
  (1)如果一個應用程序僅需要改變應用的表現層(UI),而不需要大量修改構件的功能,傳統開發模式所要經過的修改-編譯-安裝-運行的過程就顯得效率低下,開發周期長且不能隨需求靈活變化的弱點就會暴露出來。
  (2)完全采用強類型語言(如C/C++等)實現功能構件并將這些構件組裝成應用程序,造成了構件之間強耦合的關系。雖然這些程序運行效率比較高,但是會使得開發與維護的難度加大。
  (3)在未來網絡無所不在的情況下,運行在網絡中的嵌入式設備(如3G手機)將要與運營商所提供的服務經常打交道,服務并不是一定要固化到用戶的手機中,而是有可能來自網絡,現有技術并不能做到接收來自網絡的服務并在客戶機上自動運行,從而很難滿足新興網絡業務的需求。
  為了實現構件間的松散耦合,提高開發維護的效率和適應需求變化的能力并支持新興網絡業務,有必要在應用的開發中引入新的開發模式。考慮到腳本語言的語法簡單、功能強大、易學易用的特點,本文基于CAR(Component Assembly Runtime)構件技術[1],提出了新的XML[2]+CAR+其他腳本語言(JavaScript等)的XML-Glue編程范式,并應用于和欣嵌入式操作系統中,實現了更為靈活的構件組裝機制,這為將來在和欣平臺上的應用開發提供了更加快速和靈活的編程范式。
1 CAR技術與和欣嵌入式操作系統
1.1 CAR技術

  CAR是一個具有國內自主知識產權的先進的構件系統。它規定了一組構件間相互調用的標準,使得二進制構件能夠自描述,能夠在運行時動態鏈接,并且實現軟件的目標代碼級的重用。其主要目的是從操作系統層面上引入構件的概念,所有的服務均由構件來提供,從而為網絡編程和Web Services提供強大的支持。
1.2 和欣嵌入式操作系統
  和欣嵌入式操作系統(Elastos)是面向SOA(Service-Oriented Architecture)設計的,是一個采用CAR技術并基于構件化軟件模型的系統。構件化軟件設計思想貫穿于整個系統的設計和實現,系統實現本身就是采用構件模式。系統提供了構件自動尋址、自動加載的機制,用戶不必知道調用的構件是本地的還是來自于網上的,也就是說,構件運行環境對用戶透明。構件化系統的實現使得操作系統本身具有高度的靈活性和可擴展性。
2 XML-Glue編程范式
  XML-Glue是和欣操作系統上的一個Rich Client應用的MVC(Model-View-Controller,模型-視圖-控制器)編程范式,其核心思想是使用XML和其他腳本語言描述應用,由CAR構件封裝應用的邏輯,然后由XMLGlue完成二者的組裝,形成一個完整的應用。這個思想在桌面應用中已經得到了較廣的應用,如Mozilla的XUL,Microsoft的XAML等。XML-Glue也為嵌入式操作系統提供了相應的技術支持,為嵌入式應用的開發注入了新的活力。
2.1 XML-Glue的特點
  (1)采用符合W3C文法的XML標記和多種腳本語言描述應用。XML描述了整個應用的架構、構件及構件間的關系,而其他腳本語言則彌補了XML在描述邏輯上的缺陷,進一步增強了運行在客戶端的XML-Glue程序的表現力。
  (2)設計了通用的構件組裝機制。這一機制從理論上使任何可被擴展的腳本語言可以實現對構件的操作,從而使得這些腳本語言具有粘合構件的能力。目前已經采用這一機制實現了XML和JavaScript對構件的粘合。
  (3)XML-Glue支持MVC模型,如圖1所示。XML和其他腳本語言用來描述應用(View),CAR構件封裝應用的邏輯(Model),然后由XMLGlue完成二者的組裝(Controller)。除了作為Model的CAR構件是用強類型的C++語言編寫外,其余的View和Controller都可以用腳本編寫,簡化了開發的難度,提高了開發效率。


2.2 XML-Glue的實現
  XML-Glue是基于CAR構件技術發展起來的。它對外提供了XML-Glue應用的運行環境以及多種腳本語言,使開發人員能更方便、更快捷地開發應用,對內則在腳本語言和CAR構件系統之間搭起了通信的橋梁,實現了以腳本方式完成構件組裝。
2.2.1 XML-Glue的架構
  完整的XML-Glue架構如圖2所示。


  (1)最外層是XML-Glue運行環境(Runtime),負責初始化和釋放XML-Glue應用所需資源。
  (2)內部頂層是腳本語言及其配套設施。這一層相當于提供了對MVC中View的支持。
  XML/JavaScript/Other Scripts提供了多種描述XML-Glue應用的形式,讓開發人員能夠靈活利用各種腳本語言。
  Script Adapter是各個腳本語言中實現ISCIParameterNormalizer接口的構件(稱為SCIParamConvertor)的總稱。這些構件負責將其對應腳本代碼中弱類型方法的參數轉換為CAR中的強類型方法的參數,而在構件方法返回的時候將返回值封裝成腳本可識別的數據類型。
  Error Interpreter是每種腳本語言中負責翻譯調用構件方法的出錯信息的翻譯器的總稱,它將CAR中方法調用發生錯誤后返回的HRESULT值翻譯成文本,并以腳本語言特定的錯誤機制(如JavaScript中的異常)通知開發人員和使用人員。
  (3)SCI(Script Callable Interface)是腳本語言與CAR構件系統通信的橋梁。這一層相當于提供了對MVC中Controller的支持,在下一節會詳細敘述。
  (4)CAR構件系統。它是服務的提供者。這一層相當于提供了對MVC中Model的支持。
2.2.2 XML-Glue的構件組裝機制的實現
  Model由CAR構件系統支持,View由腳本語言支持,作為Controller的構件組裝則是XML-Glue的核心工作。XML-Glue利用腳本語言的眾多優點,實現了一種新的適合于嵌入式系統的構件組裝機制,使得應用開發方便快捷。XML-Glue中構件組裝機制的實現過程如圖3所示。


  (1)腳本發起調用;
  (2)SCI通過SCIModule或者SCIObjectFactory獲取相應的構件模塊并創建腳本所請求的構件實例,封裝成SCIObject;
  (3)SCIObject使用Script Adapter進行腳本弱類型參數向構件強類型參數的轉換;
  (4)SCIObject向實際的構件實例發起調用請求;
  (5)構件實例的方法運行結束并返回;
  (6)SCIObject調用Script Adapter將返回值進行相應的封裝,提供給腳本語言;
  (7)腳本語言通過Script Adapter獲取返回值,完成調用。
  實現這一機制的關鍵是解決腳本與構件間的交互問題。從圖3可以看出,SCI處于腳本語言與構件系統之間,是腳本語言與構件系統通信的橋梁。SCI最主要的功能是調用構件類實例的成員方法,所以其主要工作除了封裝構件類實例外,就是將腳本參數轉換為構件參數。這一轉換過程是通過CAR構件技術對元數據的支持來實現的。元數據中存放了描述所有類、接口、方法和參數的數據。通過對元數據的分析計算,SCI能夠找到所需接口方法的入口點以及參數信息,使得以腳本方式操作構件成為可能。參數轉換過程大致分為如下三個步驟:
  (1)由腳本語言引擎分析腳本從而獲得原始的參數。
  (2)將腳本語言對應的SCIParamConvertor作為參數傳遞給SCIObject的Invoke方法。在Invoke過程中,SCIObject根據內部構件實例方法的元數據,調用SCIParamConvertor的Normalize方法向腳本語言提出轉換請求(如果在XML中只有字符型數據〈METHOD1 b="“100”/" a="“50”"〉,而構件中方法的聲明為HRESULT Method1(int a,int b);則需要將“50”,“100”轉換成int類型)。SCIParamConvertor就根據元數據中描述的參數類型要求將腳本參數轉換成CAR中的強類型參數。這個階段稱為參數正規化。
  (3)將正規化后的參數轉換為機器棧參數壓入堆棧,調用內部構件的目標方法,完成方法調用。這一步依賴目標編譯器的棧機制,對整個系統概念無影響,這里不做討論。
  SCI由三個模塊組成,其描述如表1所示。


  本文提出了一種基于面向構件編程模型的XML-Glue編程范式,它將應用的表現層和邏輯層分離開,服務提供商只需提供功能獨立的正確構件,應用開發人員就可以根據需求的變化快速更改構件之間的關聯關系,從而降低了服務提供者和使用者的耦合程度,并且提供了對將來新興網絡業務應用的必要的支持,將成為和欣嵌入式操作系統中更適合應用開發的編程范式。從目前的實際運行情況來看,XML-Glue基本上能夠支持各種應用的開發,下一階段的主要任務是提高XML-Glue對應用的支撐能力,使其能夠支持更復雜的應用開發,并優化XML-Glue的性能。
參考文獻
1 科泰世紀.和欣1.1資料大全[EB/OL].http://www.koretide.com.cn/download/download.php?id=2
2 Didier Martin著,李 譯.XML高級編程[M].北京:機械工業出版社,2001
3 Munindar P Singh,Michael N Huhns.Service-Oriented Com-puting:Semantics,Processes,Agents[M].Wiley,2005
4 MVC[EB/OL].http://ootips.org/mvc-pattern.html
5 Andre Deienno Pansani.XUL and the building processe of a UI[EB/OL].http://luxor-xul.sourceforge.net/download/qatar.pdf
6 Brent Rector.Controls and XAML[EB/OL].http://msdn.mi-crosoft.com/library/default.asp?url=/library/en-us/dnintlong/html/longhornch03.asp

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 久久九九精品99国产精品| 日本不卡二区| 欧美日韩一道本| 欧美日韩精品不卡| 国产福利久久| 国产精品亚洲a| 日本精品一区二区三区高清 久久 日本精品久久久久中文字幕 | 国产午夜大地久久| 久久视频国产精品免费视频在线| 国产精品美女久久久久av福利| 中文字幕久久一区| 日韩免费在线播放| 中文字幕精品在线播放| 亚洲午夜久久久影院伊人| 日韩av免费看网站| 精品激情国产视频| 无码无遮挡又大又爽又黄的视频| 欧美中文字幕视频在线观看| 国产一区二区色| 日韩wumaV| 国产精品免费久久久久久| 欧美日韩一区二区三区在线观看免| 久久av在线播放| 久久777国产线看观看精品| 91精品久久久久久久久久久久久| 精品国模在线视频| 日韩av一区二区三区在线| 国产精品成人一区二区| 欧美一区二区中文字幕| 日韩中文字幕av| 久章草在线视频| 一区不卡视频| 国产精品av免费| 久久久久久国产精品久久| 欧美大香线蕉线伊人久久| 欧美激情网友自拍| 久久精品美女| 国产精品一区在线播放| 久久av中文字幕| 91|九色|视频| 中文字幕av导航|