歡迎您光臨本站 註冊首頁

使用最佳的開源客戶端框架進行雲計算

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  
探討使用 Adobe® Flex 和 OpenLaszlo 的優點和缺點 —— 這是兩種領先的客戶端富 Internet 應用程序 (RIA) 開發語言,對於構建雲計算的軟體即服務應用程序尤其有用。

學習如何構建富軟體即服務(SaaS)應用程序的價值不言而喻。但是選擇哪條路來提高構建這種軟體所需的技能呢?過去,SaaS 開發意味著選擇一種語言,負責在調用相應的 URL 時在瀏覽器中呈現必要的 HTML,然後選擇一個資料庫根據需要存儲數據。與此相反,現代 SaaS 應用程序開發需要您做出很多其他決定,如圖 1 所示。其中一個決定就是使用哪種客戶端語言或以 RIA 為中心的框架。儘管客戶端語言和服務端平台之間存在通信,但客戶端與服務端應用程序是獨立運行的。


圖 1. SaaS 的 4 個層次以及每個層次使用的技術
 

術語軟體即服務(Software as a Service)的含義與富 Internet 應用程序 的含義有很大的相似性。畢竟,目前大部分 SaaS 產品和服務都是使用 RIA 技術構建的。實際上,在如今的計算中,只有使用 RIA 技術構建的 SaaS 才會成功,因為 RIA 方法以用戶體驗設計 (UXD) 的概念為中心。因此,在本文中,我將成功的 SaaS 定義為提供豐富用戶友好體驗且最終允許用戶更加有效工作的應用程序。

評估標準

每一種可用於 RIA 和 SaaS 的主要客戶端開發框架都有自己的優缺點。因此,必須建立一組指南和標準來評估每一種框架。最重要的一點是,必須採用一種公正的方法,評估時只用事實和數字說話,不要帶有個人的喜好。

第一個標準是,框架必須是開源的。關於 JavaFX 是否是開源產品爭議較大,JavaFX FAQ 也沒有提供一個明確的回答。但有一件事情很清楚:Sun Microsystems 提到該技術時使用了將來時態:“JavaFX 終有一天將會完全開源。” 考慮到它對開源平台的大力支持,Sun 在這一點上應該不會食言。儘管 JavaFX 的社區做了很多貢獻,但這項技術在 2010 年以前可能不會完全開放。

該標準將我們的選擇集中到兩個主要的競爭者:Adobe Flex 和 Laszlo Systems' OpenLaszlo。有趣的是,這兩項技術都可以編譯為 SWF 格式,主要的區別在於,Flex 基於 Adobe ActionScript,而 OpenLaszlo 以 JavaScript/Asynchronous JavaScript + XML (Ajax) 為基礎。必須注意的一點是,儘管 OpenLaszlo 編譯為 SWF 格式,但它也可以在支持標準 Dynamic HTML (DHTML) 的瀏覽器中運行,不需要從 SWF 運行。

圖 2 中對 Flex 和 OpenLaszlo 進行了進一步比較。您的目標是確定 4 種主要的客戶端 RIA 中哪一種最適於 SaaS 開發。


圖 2. 開源開發框架的基本比較圖


用於評估這些客戶端開發框架的其他標準包括:

  • 成熟度
  • Web 服務支持
  • 開發所需工作量
  • 社區參與度
  • 軟體要求




成熟度

成熟度使用框架當前版本以及框架的開發所花費的時間長度來度量。

Flex

Flex 框架的開發在 2002 年由 Macromedia 啟動。Adobe 在 2004 年收購了 Macromedia,也繼承了 Flex。Flex SDK 在 2006 年隨 Flex V2 一起發布到開源社區。Flex V4 SDK 的 beta 版本於 2009 年 6 月 1 日發布,在本文編寫之時,預計 2009 年底將結束 beta 版本。

OpenLaszlo

OpenLaszlo 2001 年隨著 Laszlo Presentation Server (LPS) 的開發開始,由 Laszlo Systems Inc 創建。2004 年 10 月,Laszlo Systems 在 GNU Public License (GPL) 的基礎上發布了 LPS 源代碼,啟動了 OpenLaszlo 項目。2005 年隨著 V3 的發布,LPS 更名為 OpenLaszlo。OpenLaszlo 當前穩定版本為 V4.4。

領先者:OpenLaszlo

嚴格的說,OpenLaszlo 的開發在 Flex 之前,儘管它使用的是另一個名稱,Laszlo Systems 的發行版一直在 Adobe 之前。Flex SDK 在第 4 次更替開發時還是 beta 版本,而 OpenLaszlo 已經有一個統一的發布計劃 — 當前為 V4.4 — 這使 OpenLaszlo 略勝於 Flex。





Web 服務支持

在比較客戶端開發技術時,Web 服務支持是一個重要的考慮因素,因為支持的協議在很大程度上會影響 UI 的反應速度。例如,JavaScript Object Notation (JSON) 和 Action Message Format (AMF) 消息的有線傳輸一般比 Representational State Transfer (REST) 和基於 SOAP 的服務要快,因為數據被壓縮為二進位格式。這會使用戶感覺到性能大大提升,因為數據的檢索和處理速度變得更快。這就是說,客戶端開發技術支持各種通信協議非常重要。

關於通信另一件要記住的事情是,開發人員並非總是控制發送和接收數據的方式。很多情況下,這是由伺服器端開發人員預先確定好的,也可能掛鉤預先存在的 web 服務,而該服務只支持某種特定的協議。這也是理想的客戶端開發工具應該支持所有現有通信協議的另一個原因。

Flex

Flex 在支持幾乎所有 Web 服務協議上花了很多精力。ActionScript Virtual Machine (AVM) 本身就支持 Adobe 自己的 AMF 和 Real Time Message Protocol (RTMP),大大簡化了 Flex 應用程序以及任何支持這兩種協議的伺服器端語言之間的快速二進位數據傳輸。如果項目中包含 AS3CoreLib ActionScript 庫,那麼還將支持 JSON。值得注意的是,AMF 和 RTMP 是開放協議,大部分伺服器端語言通過使用插件、庫和 API 支持 AMF。Flex 還支持標準的 HTTP 服務和通過 HTTP 的 XML。這在對真正 RESTful 服務的內部支持方面會造成一定的限制,但是通常可以很好地集成任何通信協議。

OpenLaszlo

OpenLaszlo 以兩種模式運行:Proxied 模式 和 SOLO。在 Proxied 模式中,客戶端直接耦合 Java™ servlet 並在 servlet 容器內部或者 Java 2 Platform, Enterprise Edition (J2EE) 應用程序伺服器(如 Apache Tomcat、IBM® WebSphere® 或 JBoss)中運行。在該模式下,SOAP、XML-RPC 和 Java Data Transfer Object (DTO) 映射都可以使用。在第二種模式 — SOLO — 下,客戶端應用程序獨立於 OpenLaszlo 代理伺服器運行。只支持通過 HTTP 上的 XML 傳輸數據。

領先者:Flex

OpenLaszlo 在 Web 服務支持方面遠遠落後於 Flex,因為它需要配合 OpenLaszlo Java servlet 才能支持 SOAP 和 XML-RPC。考慮到它對 Ajax 的依賴,以 SOLO 模式運行時,OpenLaszlo 以 Web 服務的 XMLHTTPRequest 對象為基礎構建。不幸的是,與幾乎每個伺服器端語言都是用的 Adobe 二進位 AMF 相比,請求—— 響應時間要慢的多。因此,我不得不宣布 Flex 在這個標準中遠遠領先。





開發所需的工作量

Flex 和 OpenLaszlo 框架實現其自己的基於 XML 的對象聲明語言。具體來說,Flex 使用 MXML 聲明 ActionScript 對象和屬性,OpenLaszlo 使用 LZX 聲明 JavaScript 對象和屬性。MXML 和 LZX 使用相同的基 XML 對象符號 — 唯一的不同在於所使用的 DTD 結構和 XML 架構。它們的核心目的是相同的:加快客戶端應用程序和 UI 的開發速度。

Flex

Flex 使用 MXML 作為其聲明性標記語言,它遵循基本的 XML(像所有的聲明性語言一樣)。大部分時間,Flex 應用程序包括 MXML 和 ActionScript 類。但是,編譯 MXML 文件時,聲明的對象在編譯為單個二進位 SWF 文件之前轉換為 ActionScript。列表 1 中的代碼示例演示了 Flex DataGrid 組件的 MXML 標記。有趣的是,您可以將 ActionScript 代碼放在對象屬性引號內部的大括弧 ({}) 之間,如 dataProvider 屬性所示。


列表 1. Flex DataGrid 組件的 MXML 示例代碼
				  <mx:DataGrid id="peopleGrid"      dataProvider="{_controller.contactData}" editable="false"       itemClick="dispatchItemClick(event);" >     <mx:columns>        <mx:DataGridColumn id="contact_id" headerText="ID" dataField="id" width="50" />        <mx:DataGridColumn id="last_name" headerText="Last Name" dataField="last_name" />        <mx:DataGridColumn id="first_name" headerText="First Name" dataField="first_name" />        <mx:DataGridColumn id="grid_email" headerText="Email" dataField="grid_email" />     </mx:columns>  </mx:DataGrid>  

OpenLaszlo

記住,OpenLaszlo 使用 LZX 作為其聲明性標記語言,與任何組成良好的 XML 一樣,這也需要遵守相同的基本原則。使用 LZX,您可以將 JavaScript 函數放在 <method /> 標記內並給該方法分配自己的 ID。列表 2 所做的事情與列表 1 中的 Flex 代碼一樣,創建一個網格顯示錶格數據。


列表 2. OpenLaszlo 網格組件的 LZX 示例代碼
				  <canvas width="800" bgcolor="0xeaeaea">      <bluestyle name="bluecolors"/>      <dataset name="contactsData" request="true"       type="http" src="http:contactsdata.xml"/>            <grid datapath="contactsData:/*" sizetoheader="false">        <gridtext editable="false" width="50"          datapath="position()" resizable="false"          sortable="false"> ID </gridtext>       <gridtext datapath="@firstname"> First </gridtext>       <gridtext datapath="@lastname">Last </gridtext>       <gridtext datapath="@displayname"> Fullname </gridtext>       </grid>    </canvas>  


[火星人 ] 使用最佳的開源客戶端框架進行雲計算已經有495次圍觀

http://coctec.com/docs/linux/show-post-68757.html